Main Page   Class Hierarchy   Compound List   File List   Compound Members  

tileresource.h

00001 /*--License:
00002         Kyra Sprite Engine
00003         Copyright Lee Thomason (Grinning Lizard Software) 2001-2002
00004         www.grinninglizard.com/kyra
00005         www.sourceforge.net/projects/kyra
00006 
00007         Kyra is provided under 2 licenses:
00008 
00009         - The GPL, with no additional restrictions.
00010         - The LGPL, provided you display the Kyra splash screen, described below.
00011 
00012 
00013 --- GPL License --
00014         This program is free software; you can redistribute it and/or
00015         modify it under the terms of the GNU General Public License
00016         as published by the Free Software Foundation; either version 2
00017         of the License, or (at your option) any later version.
00018 
00019         This program is distributed in the hope that it will be useful,
00020         but WITHOUT ANY WARRANTY; without even the implied warranty of
00021         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00022         GNU General Public License for more details.
00023 
00024         You should have received a copy of the GNU General Public License
00025         along with this program; if not, write to the Free Software
00026         Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
00027 
00028         The full text of the license can be found in license.txt
00029 
00030 
00031 --- LGPL License --
00032   **Provided you kindly display the Kyra splash screen (details below), 
00033         you     may use the LGPL license:**
00034 
00035     This library is free software; you can redistribute it and/or
00036     modify it under the terms of the GNU Lesser General Public
00037     License as published by the Free Software Foundation; either
00038     version 2.1 of the License, or (at your option) any later version.
00039 
00040     This library is distributed in the hope that it will be useful,
00041     but WITHOUT ANY WARRANTY; without even the implied warranty of
00042     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00043     Lesser General Public License for more details.
00044 
00045     You should have received a copy of the GNU Lesser General Public
00046     License along with this library; if not, write to the Free Software
00047     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00048 
00049         The full text of the license can be found in lgpl.txt
00050 
00051 
00052 --- Kyra Splash Screen.
00053 
00054         It would be appreciate if you display the Kyra splash screen when using
00055         either license, however it is only required for the LGPL. All the
00056         resources for the splash are compiled into the library, and it can be
00057         accessed through the following API:
00058 
00059                 KrEngine::StartSplash
00060                 KrEngine::UpdateSplash
00061                 KrEngine::EndSplash
00062 
00063         Full documentation is provided with the KrEngine class. The splash screen
00064         should be displayed for 2 seconds.
00065 
00066         Thank you.
00067 */
00068 
00069 
00070 #ifndef KYRA_TILERESOURCE_INCLUDED
00071 #define KYRA_TILERESOURCE_INCLUDED
00072 
00073 #include "kyraresource.h"
00074 #include "../engine/krmath.h"
00075 #include "pixelblock.h"
00076 
00080 class KrTileResource : public KrResource
00081 {
00082   public:
00083         // Create by reading from a .dat file
00084         KrTileResource( U32 size, SDL_RWops* data );
00085 
00086         KrTileResource( const std::string& name,
00087                                         KrPaintInfo* surface,
00088                                         int x, int y, int size );
00089 
00090         virtual ~KrTileResource();
00091 
00092         virtual U32 Type()                                              { return KYRATAG_TILE; }
00093         virtual const std::string&      TypeName()      { return tileName; }
00094         virtual KrTileResource* ToTileResource(){ return this; }
00095 
00097         int     Size() const                                    { return pixelBlock[0]->Width(); }
00099         bool    Alpha()                                                 { return pixelBlock[0]->Alpha(); }
00100 
00101         // -- internal -- //
00102         void Draw( KrPaintInfo* paintInfo,
00103                            const KrMatrix2& matrix,
00104                            int rotation, 
00105                            const KrColorTransform& cForm,
00106                            const KrRect& clipping,
00107                            int quality,
00108                            int openGLZ );
00109 
00110         /*  Do a HitTest (see KrImageTree::HitTest) in transformed 
00111                 coordinates. So the tree object that made this call
00112                 has already transformed the x and y into local pixel coords.
00113         */
00114         bool HitTestTransformed( int rotation, int x, int y, int hitFlags );
00115 
00116         void CalculateBounds( const KrMatrix2&, KrRect* bounds ) const;
00117         
00118         virtual void CacheScale( GlFixed xScale, GlFixed yScale );
00119         virtual bool IsScaleCached( GlFixed xScale, GlFixed yScale );
00120         virtual void FreeScaleCache();
00121 
00122         virtual void Save( KrEncoder* );
00123 
00124   private:
00125         struct CachedBlock
00126         {
00127                 GlFixed xScale,
00128                                 yScale;
00129                 KrPixelBlock* pixelBlock;
00130 
00131                 bool operator==( const CachedBlock& rhs )       { GLASSERT( 0 ); return false; }        // be nice to buggy compilers.
00132         };
00133         GlDynArray< CachedBlock > cache;
00134         
00135         void CalcSourceAndPitch( KrPixelBlock* pblock, int rotation, KrRGBA** source, int* sPitchX, int* sPitchY );
00136 
00137         static const std::string tileName;
00138         KrPixelBlock*   pixelBlock[4];  
00139 };
00140 
00141 
00142 #endif

Generated on Mon Sep 15 12:01:11 2003 for Kyra by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001