00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef KYRA_TILE_INCLUDED
00034 #define KYRA_TILE_INCLUDED
00035
00036 #include "image.h"
00037 #include "tileresource.h"
00038
00039
00040 struct KrPaintInfo;
00041 class KrTileResource;
00042 union KrRGBA;
00043
00044
00061 class KrTile : public KrImage
00062 {
00063 public:
00064 KrTile( KrTileResource* resource );
00065 virtual ~KrTile();
00066
00077 enum eROTATION {
00078 ROTATION_NONE = 0,
00079 ROTATION_90CW,
00080 ROTATION_180CW,
00081 ROTATION_270CW,
00082 ROTATION_NONE_HFLIP,
00083 ROTATION_90CW_HFLIP,
00084 ROTATION_180CW_HFLIP,
00085 ROTATION_270CW_HFLIP,
00086 ROTATION_MAX
00087 };
00088
00089 void SetRotation( int rotation );
00090 int GetRotation() { return rotation; }
00091
00093 int Size() const { return resource->Size(); }
00094
00095
00096 virtual void Draw( KrPaintInfo* paintInfo,
00097 const grinliz::Rectangle2I& clip,
00098 int window );
00099
00100 virtual KrImNode* Clone();
00101
00102 virtual bool HitTest( int x, int y, int flags, std::vector<KrImage*>* results, int window );
00103
00104 virtual void CalcTransform( int window );
00105 virtual void QueryBoundingBox( grinliz::Rectangle2I* boundingBox, int window = 0 );
00106
00107 virtual KrTile* ToTile() { return this; }
00108 virtual KrResource* Resource() { return resource; }
00109 KrTileResource* TileResource() { return resource; }
00110
00111 protected:
00112 KrTileResource* resource;
00113
00114 private:
00115 int rotation;
00116 };
00117
00118
00119 #endif