Woopsi 1.0
GUI Framework for Nintendo DS Homebrew
|
00001 #ifndef _GRAPHICS_PORT_H_ 00002 #define _GRAPHICS_PORT_H_ 00003 00004 #include <nds.h> 00005 #include "gadget.h" 00006 #include "woopsiarray.h" 00007 #include "graphics.h" 00008 00009 namespace WoopsiUI { 00010 00011 class FontBase; 00012 class FrameBuffer; 00013 class BitmapBase; 00014 00044 class GraphicsPort { 00045 public: 00046 00089 GraphicsPort(const s16 x, const s16 y, const u16 width, const u16 height, const bool isEnabled, FrameBuffer* bitmap, const WoopsiArray<Rect>* clipRectList, const Rect* clipRect); 00090 00094 virtual inline ~GraphicsPort() { 00095 delete _graphics; 00096 }; 00097 00107 void setClipRect(const Rect& clipRect); 00108 00116 void getClipRect(Rect& rect) const; 00117 00122 inline const s16 getX() const { return _rect.x; }; 00123 00128 const s16 getY() const { return _rect.y; }; 00129 00136 void drawPixel(s16 x, s16 y, u16 colour); 00137 00146 void drawFilledRect(s16 x, s16 y, u16 width, u16 height, u16 colour); 00147 00156 void drawRect(s16 x, s16 y, u16 width, u16 height, u16 colour); 00157 00167 void drawBevelledRect(s16 x, s16 y, u16 width, u16 height, u16 shineColour, u16 shadowColour); 00168 00176 virtual void drawXORPixel(s16 x, s16 y, u16 colour); 00177 00186 virtual void drawXORHorizLine(s16 x, s16 y, u16 width, u16 colour); 00187 00196 virtual void drawXORVertLine(s16 x, s16 y, u16 height, u16 colour); 00197 00207 virtual void drawXORRect(s16 x, s16 y, u16 width, u16 height, u16 colour); 00208 00218 virtual void drawFilledXORRect(s16 x, s16 y, u16 width, u16 height, u16 colour); 00219 00225 virtual void drawXORPixel(s16 x, s16 y); 00226 00233 void drawXORHorizLine(s16 x, s16 y, u16 width); 00234 00241 void drawXORVertLine(s16 x, s16 y, u16 height); 00242 00250 void drawXORRect(s16 x, s16 y, u16 width, u16 height); 00251 00259 void drawFilledXORRect(s16 x, s16 y, u16 width, u16 height); 00260 00268 void drawText(s16 x, s16 y, FontBase* font, const WoopsiString& string); 00269 00281 void drawText(s16 x, s16 y, FontBase* font, const WoopsiString& string, s32 startIndex, s32 length, u16 colour); 00282 00293 void drawText(s16 x, s16 y, FontBase* font, const WoopsiString& string, s32 startIndex, s32 length); 00294 00306 void drawBaselineText(s16 x, s16 y, FontBase* font, const WoopsiString& string, s32 startIndex, s32 length); 00307 00320 void drawBitmap(s16 x, s16 y, u16 width, u16 height, const BitmapBase* bitmap, s16 bitmapX, s16 bitmapY); 00321 00338 void drawBitmap(s16 x, s16 y, u16 width, u16 height, const BitmapBase* bitmap, s16 bitmapX, s16 bitmapY, u16 transparentColour); 00339 00354 virtual void drawBitmapGreyScale(s16 x, s16 y, u16 width, u16 height, const BitmapBase* bitmap, s16 bitmapX, s16 bitmapY); 00355 00364 void drawLine(s16 x1, s16 y1, s16 x2, s16 y2, u16 colour); 00365 00380 void copy(s16 sourceX, s16 sourceY, s16 destX, s16 destY, u16 width, u16 height); 00381 00398 void scroll(s16 x, s16 y, s16 xDistance, s16 yDistance, u16 width, u16 height, WoopsiArray<Rect>* revealedRects); 00399 00407 void dim(s16 x, s16 y, u16 width, u16 height); 00408 00416 void greyScale(s16 x, s16 y, u16 width, u16 height); 00417 00426 virtual void drawEllipse(s16 xCentre, s16 yCentre, s16 horizRadius, s16 vertRadius, u16 colour); 00427 00436 virtual void drawFilledEllipse(s16 xCentre, s16 yCentre, s16 horizRadius, s16 vertRadius, u16 colour); 00437 00438 private: 00439 WoopsiArray<Rect> _clipRectList; 00440 Rect _rect; 00441 bool _isEnabled; 00442 Graphics* _graphics; 00443 bool _isTopScreen; 00445 void convertPortToScreenSpace(s16* x, s16* y); 00446 void addClipRect(const Rect& clipRect); 00447 }; 00448 } 00449 00450 #endif