Forums
This is the online documentation for Colossus Entertainments Pixie Game Engine

Bitmap.h

Go to the documentation of this file.
00001 
00019 #ifndef __Bitmap_H__
00020 #define __Bitmap_H__
00021 
00022 // Includes
00023 #include "ColorHelper.h"
00024 
00025 // External classes
00026 class Image;
00027 class Asset;
00028 
00029 // Bitmap
00030 class Bitmap
00031    {
00032    public:
00033       Bitmap();
00034 
00035       Bitmap(
00036          const Asset& asset
00037          );
00038 
00043       Bitmap(
00044          int width,  
00045          int height  
00046          );
00047 
00053       Bitmap(
00054          const Image& image   
00055          );
00056 
00057       ~Bitmap();
00058 
00065       unsigned short* GetData();
00066 
00071       void Clear();
00072 
00082       void Fill(
00083          int x1,  
00084          int y1,  
00085          int x2, 
00086          int y2, 
00087          unsigned short color,   
00088          unsigned char alpha = 255 
00089          );
00090                      
00091       void Fill(
00092          unsigned short color,   
00093          unsigned char alpha = 255 
00094          );
00095 
00105       enum Orientation
00106          {
00107          Rotate_0,   
00108          Rotate_90,  
00109          Rotate_180, 
00110          Rotate_270, 
00111          Mirror_X,   
00112          Mirror_Y,   
00113          Orientations_Count   
00114          };
00115 
00116 
00122       int GetWidth(
00123          Orientation orientation = Rotate_0 
00124          ) const;
00125       
00126 
00132       int GetHeight(
00133          Orientation orientation = Rotate_0  
00134          ) const;
00135 
00136 
00142       unsigned short  GetPixel(
00143          int x,   
00144          int y 
00145          ) const;
00146 
00154       unsigned short  GetPixel(
00155          int x,   
00156          int y,   
00157          Orientation orientation 
00158          ) const;
00159 
00165       void SetPixel(
00166          int x,   
00167          int y,   
00168          unsigned short color,   
00169          Orientation orientation 
00170          );
00171 
00175       void SetPixel(
00176          int x,   
00177          int y,   
00178          unsigned short color 
00179          );
00180 
00187       void BlendPixel(
00188          int x,   
00189          int y,   
00190          unsigned short color,   
00191          unsigned char alpha, 
00192          Orientation orientation 
00193          );
00194 
00199       void BlendPixel(
00200          int x,   
00201          int y,   
00202          unsigned short color,   
00203          unsigned char alpha  
00204          );
00205 
00210       void Blit(
00211          Bitmap* target, 
00212          int x,   
00213          int y,   
00214          unsigned short modulate = 0xffff,   
00215          unsigned char alpha = 255, 
00216          Orientation orientation = Rotate_0  
00217          ) const;
00218 
00224       void Blit(
00225          int x1, 
00226          int y1,  
00227          int x2,  
00228          int y2,  
00229          Bitmap* target, 
00230          int x,   
00231          int y,   
00232          unsigned short modulate = 0xffff,   
00233          unsigned char alpha = 255, 
00234          Orientation orientation = Rotate_0 
00235          ) const;
00236 
00237       void Save(Asset& asset) const;
00238       void Load(const Asset& asset);
00239 
00240       void WriteToAsset(Asset* asset) const;
00241       void ReadFromAsset(const Asset* asset);
00242 
00243    private:
00247       void TransformCoordinates(
00248          int& x, 
00249          int& y, 
00250          Orientation orientation 
00251          ) const;
00252 
00257       void Blit_Rotate0(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY) const;
00258       void Blit_Rotate0_Modulate(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY, unsigned short modulate) const;
00259       void Blit_Rotate0_Alpha(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY, unsigned char alpha) const;
00260       void Blit_Rotate0_Modulate_Alpha(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY, unsigned short modulate, unsigned char alpha) const;
00261 
00262       void Blit_Rotate90(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY) const;
00263       void Blit_Rotate90_Modulate(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY, unsigned short modulate) const;
00264       void Blit_Rotate90_Alpha(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY, unsigned char alpha) const;
00265       void Blit_Rotate90_Modulate_Alpha(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY, unsigned short modulate, unsigned char alpha) const;
00266 
00267       void Blit_Rotate180(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY) const;
00268       void Blit_Rotate180_Modulate(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY, unsigned short modulate) const;
00269       void Blit_Rotate180_Alpha(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY, unsigned char alpha) const;
00270       void Blit_Rotate180_Modulate_Alpha(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY, unsigned short modulate, unsigned char alpha) const;
00271 
00272       void Blit_Rotate270(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY) const;
00273       void Blit_Rotate270_Modulate(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY, unsigned short modulate) const;
00274       void Blit_Rotate270_Alpha(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY, unsigned char alpha) const;
00275       void Blit_Rotate270_Modulate_Alpha(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY, unsigned short modulate, unsigned char alpha) const;
00276 
00277       void Blit_MirrorX(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY) const;
00278       void Blit_MirrorX_Modulate(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY, unsigned short modulate) const;
00279       void Blit_MirrorX_Alpha(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY, unsigned char alpha) const;
00280       void Blit_MirrorX_Modulate_Alpha(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY, unsigned short modulate, unsigned char alpha) const;
00281 
00282       void Blit_MirrorY(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY) const;
00283       void Blit_MirrorY_Modulate(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY, unsigned short modulate) const;
00284       void Blit_MirrorY_Alpha(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY, unsigned char alpha) const;
00285       void Blit_MirrorY_Modulate_Alpha(int sourceX, int sourceY, int sourceWidth, int sourceHeight, Bitmap* target, int targetX, int targetY, unsigned short modulate, unsigned char alpha) const;
00286    public:
00287       unsigned short* data_;  
00288       int width_;    
00289       int height_;   
00290    };
00291 
00292 
00293 
00294 
00295 #endif /* __Bitmap_H__ */
00296