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