00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __CS_CSPIXMAP_H__
00021 #define __CS_CSPIXMAP_H__
00022
00023 #include "ivideo/graph3d.h"
00024 #include "ivideo/texture.h"
00025 #include "iengine/texture.h"
00026
00028 #define PIXMAP_TOP 0
00029 #define PIXMAP_LEFT 0
00030 #define PIXMAP_CENTER 1
00031 #define PIXMAP_BOTTOM 2
00032 #define PIXMAP_RIGHT 2
00033
00041 class csPixmap
00042 {
00043 public:
00045 virtual ~csPixmap() {}
00046
00048 virtual int Width() = 0;
00050 virtual int Height() = 0;
00052 virtual void Advance(csTicks ElapsedTime) = 0;
00054 virtual iTextureHandle *GetTextureHandle() = 0;
00055
00057 virtual void DrawScaled (iGraphics3D* g3d, int sx, int sy, int sw, int sh,
00058 uint8 Alpha = 0) = 0;
00060 inline void DrawScaledAlign (iGraphics3D* g3d, int sx, int sy, int sw,
00061 int sh, int alnx, int alny, uint8 Alpha = 0)
00062 { DrawScaled (g3d, sx - alnx * sw / 2, sy - alny * sh / 2, sw, sh, Alpha); }
00064 inline void Draw (iGraphics3D* g3d, int sx, int sy, uint8 Alpha = 0)
00065 { DrawScaled (g3d, sx, sy, Width(), Height(), Alpha); }
00067 inline void DrawAlign (iGraphics3D* g3d, int sx, int sy, int alnx, int alny,
00068 uint8 Alpha = 0)
00069 { DrawScaledAlign (g3d, sx, sy, Width(), Height(), alnx, alny, Alpha); }
00070
00077 virtual void DrawTiled (iGraphics3D* g3d, int sx, int sy, int sw, int sh,
00078 int orgx, int orgy, uint8 Alpha = 0) = 0;
00080 inline void DrawTiled (iGraphics3D* g3d, int sx, int sy, int w, int h,
00081 uint8 Alpha = 0)
00082 { DrawTiled (g3d, sx, sy, w, h, sx, sy, Alpha); }
00083 };
00084
00086 class csSimplePixmap : public csPixmap
00087 {
00088 protected:
00089 iTextureHandle *hTex;
00090 int tx, ty, tw, th;
00091
00092 public:
00094 csSimplePixmap (iTextureHandle *hTexture);
00096 csSimplePixmap (iTextureHandle *hTexture, int x, int y, int w, int h);
00098 virtual ~csSimplePixmap ();
00099
00101 void SetTextureHandle (iTextureHandle *hTexture);
00103 inline void SetTextureRectangle (int x, int y, int w, int h)
00104 { tx = x; ty = y; tw = w; th = h; }
00105
00106
00107 virtual void DrawScaled (iGraphics3D* g3d, int sx, int sy, int sw, int sh,
00108 uint8 Alpha = 0);
00109 virtual void DrawTiled (iGraphics3D* g3d, int sx, int sy, int sw, int sh,
00110 int orgx, int orgy, uint8 Alpha = 0);
00111 virtual int Width ();
00112 virtual int Height ();
00113 virtual void Advance(csTicks ) {}
00114 virtual iTextureHandle *GetTextureHandle ();
00115 };
00116
00117 #endif // __CS_CSPIXMAP_H__