WoopsiGfx 1.4
Nintendo DS 2D Graphics Library
libwoopsigfx/include/bufferedbitmap.h
00001 #ifndef _BUFFERED_BITMAP_H_
00002 #define _BUFFERED_BITMAP_H_
00003 
00004 #include <nds.h>
00005 #include "woopsiarray.h"
00006 #include "mutablebitmapbase.h"
00007 
00008 namespace WoopsiGfx {
00009 
00010     class Graphics;
00011 
00024     class BufferedBitmap : public MutableBitmapBase {
00025     public:
00026 
00032         BufferedBitmap(u16 width, u16 height);
00033 
00037         virtual inline ~BufferedBitmap() {
00038             delete[] _bitmap;
00039             delete[] _buffer;
00040         };
00041         
00048         const u16 getPixel(s16 x, s16 y) const;
00049 
00056         void setPixel(const s16 x, const s16 y, const u16 colour);
00057 
00062         inline const u16* getData() const { return _bitmap; };
00063 
00071         const u16* getData(s16 x, s16 y) const;
00072 
00078         Graphics* newGraphics();
00079 
00087         void blit(const s16 x, const s16 y, const u16* data, const u32 size);
00088 
00096         void blitFill(const s16 x, const s16 y, const u16 colour, const u32 size);
00097 
00110         void copy(s16 x, s16 y, u32 size, u16* dest) const;
00111         
00116         void buffer();
00117         
00122         void unbuffer();
00123         
00128         inline const u16 getWidth() const { return _width; };
00129 
00134         inline const u16 getHeight() const { return _height; };
00135 
00136     protected:
00137         u16* _bitmap __attribute__ ((aligned (4)));     
00138         u16* _buffer __attribute__ ((aligned (4)));     
00139         u16 _width;                                     
00140         u16 _height;                                    
00145         inline BufferedBitmap(const BufferedBitmap& bitmap) { };
00146     };
00147 }
00148 
00149 #endif