Main Page   Data Structures   File List   Data Fields   Globals   Related Pages  

bitmap.h

Go to the documentation of this file.
00001 #ifndef BITMAP_H
00002 #define BITMAP_H
00003 
00004 // blitMode constants
00005 // (in canonical logic table order)
00006 //
00007 #define  BLT_CLEAR         0  // 0
00008 #define  BLT_NOR           1  // ~(src | dst)
00009 #define  BLT_NOTAND        2  // ~src & dst
00010 #define  BLT_NOTCOPY       3  // ~src
00011 #define  BLT_ANDNOT        4  // src & ~dst
00012 #define  BLT_NOT           5  // ~dst
00013 #define  BLT_XOR           6  // src ^ dst
00014 #define  BLT_NAND          7  // ~(src & dst)
00015 #define  BLT_AND           8  // src & dst
00016 #define  BLT_NEXOR         9  // ~(src ^ dst)
00017 #define  BLT_NOP          10  // dst
00018 #define  BLT_NOTOR        11  // ~src | dst
00019 #define  BLT_COPY         12  // src
00020 #define  BLT_ORNOT        13  // src | ~dst
00021 #define  BLT_OR           14  // (src | dst)
00022 #define  BLT_SET          15  // 1
00023 
00024 // DPI <-> PelsPerMeter conversion
00025 //
00026 #define  DPI2PPM(dpi)  ((100.0/2.54)*dpi)
00027 #define  PPM2DPI(ppm)  ((ppm/(100.0/2.54))
00028 
00029 // Green LCD theme
00030 //
00031 #define  BMP_BGCOLOR  0x96ff00
00032 #define  BMP_FGCOLOR  0x182800
00033 
00034 // Midnight Blue
00035 //
00036 //#define  BMP_BGCOLOR  0x000040
00037 //#define  BMP_FGCOLOR  0xC0C0FF
00038 
00039 // Black n' White
00040 //
00041 //#define  BMP_BGCOLOR  0xFFFFFF
00042 //#define  BMP_FGCOLOR  0x000000
00043 
00044 
00053 typedef struct
00054 {
00055   // BITMAPFILEHEADER
00056   short   bfType;                 // 0x4D42, 'BM'
00057   long    bfSize;                 // bits + 62
00058   short   bfReserved1;
00059   short   bfReserved2;
00060   long    bfOffBits;              // 62
00061 
00062   // BITMAPINFOHEADER
00063   long    biSize;                 // 40 bytes
00064   long    biWidth, biHeight;
00065   short   biPlanes, biBitCount;
00066   long    biCompression;
00067   long    biSizeImage;
00068   long    biXPelsPerMeter;
00069   long    biYPelsPerMeter;
00070   long    biClrUsed;
00071   long    biClrImportant;
00072 
00073   // RGBQUADS
00074   unsigned long color0, color1;
00075 
00076 } BitmapFileHeader;
00077 
00078 
00093 typedef struct Bitmap {
00094   int       width, height;
00095   unsigned  bmBitsSize;
00096   char      bmBits[];
00097 } Bitmap;
00098 
00099 
00100 typedef (BM_BlitFunc)(
00101   char *dst,   int dstwidth,
00102   char *src,   int srcwidth,
00103   int   width, int pages,
00104   char  shift, char fbm, char lbm
00105 );
00106 
00107 
00108 extern "C" {
00109   BM_BlitFunc  BM_Blit_Copy,   BM_Blit_NotCopy;
00110   BM_BlitFunc  BM_Blit_And,    BM_Blit_Nand;
00111   BM_BlitFunc  BM_Blit_NotAnd, BM_Blit_AndNot;
00112   BM_BlitFunc  BM_Blit_Or,     BM_Blit_Nor;
00113   BM_BlitFunc  BM_Blit_NotOr,  BM_Blit_OrNot;
00114   BM_BlitFunc  BM_Blit_Xor,    BM_Blit_Nexor;
00115 }
00116 
00117 
00127 inline char BM_GetPixel(Bitmap *bm, int x, int y)
00128 {
00129   if (x<0 || x>=bm->width || y<0 || y>=bm->height)
00130     return 0;
00131   if (bm->bmBits[x+(y>>3)*bm->width] & (1<<(y&7)))
00132     return 1;
00133   else
00134     return 0;
00135 }
00136 
00137 
00147 inline void BM_PutPixel(Bitmap *bm, int x, int y, char color)
00148 {
00149   if (x<0 || x>=bm->width || y<0 || y>=bm->height)
00150     return;
00151   if (color)
00152     bm->bmBits[x+(y>>3)*bm->width] |= 1<<(y&7);
00153   else
00154     bm->bmBits[x+(y>>3)*bm->width] &= ~(1<<(y&7));
00155 }
00156 
00157 
00164 extern  Bitmap *BM_Alloc( int w, int h );
00165 extern  void    BM_Free( Bitmap *bm );
00166 extern  Bitmap *BM_Copy( Bitmap *bm );
00167 
00168 extern  void    BM_Clear( Bitmap *bm, char pattern=0x00 );
00169 extern  void    BM_Invert( Bitmap *bm );
00170 extern  void    BM_Scroll( Bitmap *bm, int dx, int dy );
00171 
00172 extern  Bitmap *BM_Load( char *fn );
00173 extern  void    BM_Save( Bitmap *bm, char *fn );
00174 
00175 extern  void    BM_Blit( Bitmap *dst, int x,    int y,
00176                          Bitmap *src, int u=0,  int v=0,
00177                          int w=-1,    int h=-1, int mode=BLT_COPY );
00178 
00179 extern  void    BM_FastBlit( Bitmap *dst, int x,    int y,
00180                              Bitmap *src, int u=0,  int v=0,
00181                              int w=-1,    int h=-1, int mode=BLT_COPY );
00182 
00183 #endif

Generated on Sun Aug 4 21:47:26 2002 for k/os mp3v2 by doxygen1.2.16