Woopsi 1.0
GUI Framework for Nintendo DS Homebrew

scrollingpanel.h

00001 #ifndef _SCROLLING_PANEL_H_
00002 #define _SCROLLING_PANEL_H_
00003 
00004 #include <cstdlib>
00005 #include <nds.h>
00006 #include "gadget.h"
00007 #include "scrollablebase.h"
00008 #include "gadgetstyle.h"
00009 
00010 namespace WoopsiUI {
00011 
00017         class ScrollingPanel : public Gadget, public ScrollableBase {
00018         public:
00019 
00032                 ScrollingPanel(s16 x, s16 y, u16 width, u16 height, u32 flags, GadgetStyle* style = NULL);
00033 
00039                 virtual void scroll(s32 dx, s32 dy);
00040                 
00046                 virtual void jump(s32 x, s32 y);
00047 
00052                 inline bool allowsVerticalScroll() const { return _allowVerticalScroll; };
00053 
00058                 inline bool allowsHorizontalScroll() const { return _allowHorizontalScroll; };
00059 
00064                 virtual inline const s32 getCanvasX() const { return _canvasX; };
00065                 
00070                 virtual inline const s32 getCanvasY() const { return _canvasY; };
00071 
00076                 virtual inline const s32 getCanvasWidth() const { return _canvasWidth; };
00077                 
00082                 virtual inline const s32 getCanvasHeight() const { return _canvasHeight; };
00083 
00088                 inline void setAllowsVerticalScroll(bool allow) { _allowVerticalScroll = allow; };
00089 
00094                 inline void setAllowsHorizontalScroll(bool allow) { _allowHorizontalScroll = allow; };
00095 
00105                 inline void setContentScrolled(bool scrolled) { _isContentScrolled = scrolled; };
00106 
00112                 inline bool IsContentScrolled() { return _isContentScrolled; };
00113 
00118                 virtual inline void setCanvasWidth(const s32 width) { _canvasWidth = width; };
00119                 
00124                 virtual inline void setCanvasHeight(const s32 height) { _canvasHeight = height; };
00125 
00126         protected:
00127                 s32 _canvasX;                                           
00128                 s32 _canvasY;                                           
00129                 s32 _canvasWidth;                                       
00130                 s32 _canvasHeight;                                      
00131                 bool _allowVerticalScroll;                      
00132                 bool _allowHorizontalScroll;            
00133                 bool _isContentScrolled;                        
00143                 virtual void drawContents(GraphicsPort* port);
00144 
00151                 virtual void drawBorder(GraphicsPort* port);
00152 
00160                 virtual void onDrag(s16 x, s16 y, s16 vX, s16 vY);
00161                 
00167                 virtual void onClick(s16 x, s16 y);
00168 
00175                 void scrollChildren(s32 dx, s32 dy);
00176                 
00181                 void drawChildren(Rect clipRect);
00182 
00186                 virtual ~ScrollingPanel() { };
00187 
00191                 inline ScrollingPanel(const ScrollingPanel& scrollingPanel) : Gadget(scrollingPanel) { };
00192         };
00193 }
00194 
00195 #endif