00001 #ifndef _BITMAP_H_ 00002 #define _BITMAP_H_ 00003 00004 #include <nds.h> 00005 #include "woopsiarray.h" 00006 00007 namespace WoopsiUI { 00008 00009 class FontBase; 00010 00014 class Bitmap { 00015 public: 00016 00022 Bitmap(u16 width, u16 height); 00023 00027 virtual inline ~Bitmap() { 00028 delete[] _bitmap; 00029 }; 00030 00037 const u16 getPixel(s16 x, s16 y) const; 00038 00043 inline const u16* getBitmap() const { return _bitmap; }; 00044 00049 inline const u16 getWidth() const { return _width; }; 00050 00055 inline const u16 getHeight() const { return _height; }; 00056 00063 virtual void drawPixel(s16 x, s16 y, u16 colour); 00064 00073 virtual void drawFilledRect(s16 x, s16 y, u16 width, u16 height, u16 colour); 00074 00082 virtual void drawHorizLine(s16 x, s16 y, u16 width, u16 colour); 00083 00091 virtual void drawVertLine(s16 x, s16 y, u16 height, u16 colour); 00092 00101 virtual void drawRect(s16 x, s16 y, u16 width, u16 height, u16 colour); 00102 00111 virtual void drawLine(s16 x1, s16 y1, s16 x2, s16 y2, u16 colour); 00112 00120 virtual void drawCircle(s16 x0, s16 y0, u16 radius, u16 colour); 00121 00129 virtual void drawFilledCircle(s16 x0, s16 y0, u16 radius, u16 colour); 00130 00138 virtual void drawText(s16 x, s16 y, FontBase* font, const char* string); 00139 00148 virtual void drawText(s16 x, s16 y, FontBase* font, const char* string, u16 colour); 00149 00162 virtual void drawBitmap(s16 x, s16 y, u16 width, u16 height, const u16* bitmap, s16 bitmapX, s16 bitmapY, u16 bitmapWidth, u16 bitmapHeight); 00163 00170 virtual void floodFill(s16 x, s16 y, u16 newColour); 00171 00180 virtual void drawEllipse(s16 xCentre, s16 yCentre, s16 horizRadius, s16 vertRadius, u16 colour); 00181 00190 virtual void drawFilledEllipse(s16 xCentre, s16 yCentre, s16 horizRadius, s16 vertRadius, u16 colour); 00191 00192 protected: 00193 u16 _width; 00194 u16 _height; 00195 u16* _bitmap __attribute__ ((aligned (4))); 00204 bool popStack(s16* x, s16* y, WoopsiArray<s32>* stack); 00205 00212 void pushStack(s16 x, s16 y, WoopsiArray<s32>* stack) ; 00213 00221 bool clipBitmapCoordinates(s16* x, s16* y, u16* width, u16* height); 00222 00226 inline Bitmap(const Bitmap& bitmap) { }; 00227 }; 00228 } 00229 00230 #endif