sgdk
bmp.h
Go to the documentation of this file.
00001 
00022 #include "maths.h"
00023 #include "vdp.h"
00024 #include "pal.h"
00025 
00026 #ifndef _BMP_H_
00027 #define _BMP_H_
00028 
00029 
00030 #define BMP_PLANE_WIDTH_SFT         planeWidthSft
00031 #define BMP_PLANE_HEIGHT_SFT        planeHeightSft
00032 
00036 #define BMP_PLANE_WIDTH             64
00037 
00041 #define BMP_PLANE_HEIGHT            64
00042 
00043 #define BMP_TILE_WIDTH_SFT          5
00044 
00048 #define BMP_TILE_WIDTH              (1 << BMP_TILE_WIDTH_SFT)
00049 #define BMP_TILE_WIDTH_MASK         (BMP_TILE_WIDTH - 1)
00050 
00054 #define BMP_TILE_HEIGHT             20
00055 
00056 #define BMP_TILE_XOFFSET            (((screenWidth >> 3) - BMP_TILE_WIDTH) / 2)
00057 #define BMP_TILE_YOFFSET            (((screenHeight >> 3) - BMP_TILE_HEIGHT) / 2)
00058 
00059 #define BMP_XPIXPERTILE_SFT         3
00060 #define BMP_YPIXPERTILE_SFT         3
00061 
00065 #define BMP_XPIXPERTILE             (1 << BMP_XPIXPERTILE_SFT)
00066 
00070 #define BMP_YPIXPERTILE             (1 << BMP_YPIXPERTILE_SFT)
00071 #define BMP_XPIXPERTILE_MASK        (BMP_XPIXPERTILE - 1)
00072 #define BMP_YPIXPERTILE_MASK        (BMP_YPIXPERTILE - 1)
00073 
00074 #define BMP_WIDTH_SFT               (BMP_TILE_WIDTH_SFT + BMP_XPIXPERTILE_SFT)
00075 
00079 #define BMP_WIDTH                   (1 << BMP_WIDTH_SFT)
00080 
00084 #define BMP_HEIGHT                  (BMP_TILE_HEIGHT * BMP_YPIXPERTILE)
00085 #define BMP_WIDTH_MASK              (BMP_WIDTH - 1)
00086 
00087 #define BMP_PITCH_SFT               (BMP_TILE_WIDTH_SFT + 2)
00088 
00092 #define BMP_PITCH                   (1 << BMP_PITCH_SFT)
00093 #define BMP_PITCH_MASK              (BMP_PITCH - 1)
00094 
00099 #define BMP_GENBMP16_WIDTH(genbmp16)    ((genbmp16)[0])
00100 
00104 #define BMP_GENBMP16_HEIGHT(genbmp16)   ((genbmp16)[1])
00105 
00109 #define BMP_GENBMP16_PALETTE(genbmp16)  (&((genbmp16)[2]))
00110 
00114 #define BMP_GENBMP16_IMAGE(genbmp16)    (&((genbmp16)[18]))
00115 
00119 #define BMP_GETPIXEL(x, y)          _Pragma("GCC error \"This method is deprecated, use BMP_getPixelFast(..) instead.\"")
00120 
00123 #define BMP_SETPIXEL(x, y, col)     _Pragma("GCC error \"This method is deprecated, use BMP_setPixelFast(..) instead.\"")
00124 
00125 
00126 #define BMP_BASE_TILE_INDEX         TILE_USER_INDEX
00127 
00128 #define BMP_FB0_TILE_INDEX          BMP_BASE_TILE_INDEX
00129 #define BMP_FB1_TILE_INDEX          (BMP_BASE_TILE_INDEX + (BMP_TILE_WIDTH * BMP_TILE_HEIGHT))
00130 
00131 #define BMP_FB0_END_TILE_INDEX      (BMP_FB0_TILE_INDEX + (BMP_TILE_WIDTH * BMP_TILE_HEIGHT))
00132 #define BMP_FB1_END_TILE_INDEX      (BMP_FB1_TILE_INDEX + (BMP_TILE_WIDTH * BMP_TILE_HEIGHT))
00133 #define BMP_END_TILE_INDEX          BMP_FB1_END_TILE_INDEX
00134 
00135 #define BMP_BASE_ADDR               (BMP_BASE_TILE_INDEX * 32)
00136 #define BMP_FB0_ADDR                (BMP_FB0_TILE_INDEX * 32)
00137 #define BMP_FB1_ADDR                (BMP_FB1_TILE_INDEX * 32)
00138 #define BMP_END_ADDR                (BMP_END_TILE_INDEX * 32)
00139 
00140 
00160 typedef struct
00161 {
00162     u16 compression;
00163     u16 w;
00164     u16 h;
00165     const Palette *palette;
00166     const u8 *image;
00167 } Bitmap;
00168 
00179 typedef struct
00180 {
00181     Vect2D_s16 pt;
00182     u16 col;
00183 } Pixel;
00184 
00197 typedef struct
00198 {
00199     Vect2D_s16 pt1;
00200     Vect2D_s16 pt2;
00201     u16 col;
00202 } Line;
00203 
00218 typedef struct
00219 {
00220     Vect2D_s16 pt1;
00221     Vect2D_s16 pt2;
00222     Vect2D_s16 pt3;
00223     u16 col;
00224 } Triangle;
00225 
00226 
00230 extern u8 *bmp_buffer_read;
00234 extern u8 *bmp_buffer_write;
00235 
00236 
00260 void BMP_init(u16 double_buffer, VDPPlane plane, u16 palette, u16 priority);
00267 void BMP_end(void);
00274 void BMP_reset(void);
00286 void BMP_setBufferCopy(u16 value);
00311 u16 BMP_flip(u16 async);
00312 
00317 void BMP_clear(void);
00318 
00331 u8*  BMP_getWritePointer(u16 x, u16 y);
00344 u8*  BMP_getReadPointer(u16 x, u16 y);
00345 
00346 
00351 u16  BMP_hasFlipRequestPending(void);
00356 void BMP_waitWhileFlipRequestPending(void);
00361 u16  BMP_hasFlipInProgess(void);
00367 void BMP_waitFlipComplete(void);
00368 
00380 void BMP_drawText(const char *str, u16 x, u16 y);
00392 void BMP_clearText(u16 x, u16 y, u16 w);
00400 void BMP_clearTextLine(u16 y);
00401 
00409 void BMP_showFPS(u16 float_display);
00410 
00423 u8   BMP_getPixel(u16 x, u16 y);
00436 u8   BMP_getPixelFast(u16 x, u16 y);
00451 void BMP_setPixel(u16 x, u16 y, u8 col);
00466 void BMP_setPixelFast(u16 x, u16 y, u8 col);
00479  void BMP_setPixels_V2D(const Vect2D_u16 *crd, u8 col, u16 num);
00492  void BMP_setPixelsFast_V2D(const Vect2D_u16 *crd, u8 col, u16 num);
00502  void BMP_setPixels(const Pixel *pixels, u16 num);
00512  void BMP_setPixelsFast(const Pixel *pixels, u16 num);
00513 
00524 u16   BMP_clipLine(Line *l);
00533 void BMP_drawLine(Line *l);
00546 u16 BMP_isPolygonCulled(const Vect2D_s16 *pts, u16 num);
00561 u16 BMP_drawPolygon(const Vect2D_s16 *pts, u16 num, u8 col);
00562 
00583 void BMP_drawBitmapData(const u8 *data, u16 x, u16 y, u16 w, u16 h, u32 pitch);
00606 bool BMP_drawBitmap(const Bitmap *bitmap, u16 x, u16 y, bool loadpal);
00634 bool BMP_drawBitmapScaled(const Bitmap *bitmap, u16 x, u16 y, u16 w, u16 h, bool loadpal);
00635 
00640 #define BMP_loadBitmapData(data, x, y, w, h, pitch)             _Pragma("GCC error \"This method is deprecated, use BMP_drawBitmapData(..) instead.\"")
00641 
00645 #define BMP_loadBitmap(bitmap, x, y, loadpal)                   _Pragma("GCC error \"This method is deprecated, use BMP_drawBitmap(..) instead.\"")
00646 
00650 #define BMP_loadAndScaleBitmap(bitmap, x, y, w, h, loadpal)     _Pragma("GCC error \"This method is deprecated, use BMP_drawBitmapScaled(..) instead.\"")
00651 
00656 #define BMP_getBitmapPalette(bitmap, pal)                       _Pragma("GCC error \"This method is deprecated, use bitmap->palette instead.\"")
00657 
00682 void BMP_scale(const u8 *src_buf, u16 src_wb, u16 src_h, u16 src_pitch, u8 *dst_buf, u16 dst_wb, u16 dst_h, u16 dst_pitch);
00683 
00684 
00685 #endif // _BMP_H_
00686 
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Defines