00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057 #ifndef GCN_SCROLLAREA_HPP
00058 #define GCN_SCROLLAREA_HPP
00059
00060 #include <string>
00061
00062 #include "guichan/basiccontainer.hpp"
00063 #include "guichan/mouselistener.hpp"
00064 #include "guichan/platform.hpp"
00065
00066 namespace gcn
00067 {
00077 class GCN_CORE_DECLSPEC ScrollArea:
00078 public BasicContainer,
00079 public MouseListener
00080 {
00081 public:
00082
00086 ScrollArea();
00087
00093 ScrollArea(Widget *content);
00094
00104 ScrollArea(Widget *content, unsigned int hPolicy, unsigned int vPolicy);
00105
00109 virtual ~ScrollArea();
00110
00116 virtual void setContent(Widget* widget);
00117
00123 virtual Widget* getContent();
00124
00131 virtual void setHorizontalScrollPolicy(unsigned int hPolicy);
00132
00139 virtual unsigned int getHorizontalScrollPolicy();
00140
00147 virtual void setVerticalScrollPolicy(unsigned int vPolicy);
00148
00155 virtual unsigned int getVerticalScrollPolicy();
00156
00165 virtual void setScrollPolicy(unsigned int hPolicy, unsigned int vPolicy);
00166
00172 virtual void setVerticalScrollAmount(int vScroll);
00173
00178 virtual int getVerticalScrollAmount();
00179
00185 virtual void setHorizontalScrollAmount(int hScroll);
00186
00192 virtual int getHorizontalScrollAmount();
00193
00200 virtual void setScrollAmount(int hScroll, int vScroll);
00201
00207 virtual int getHorizontalMaxScroll();
00208
00214 virtual int getVerticalMaxScroll();
00215
00221 virtual void setScrollbarWidth(int width);
00222
00228 virtual int getScrollbarWidth();
00229
00234 virtual void setLeftButtonScrollAmount(int amount);
00235
00240 virtual void setRightButtonScrollAmount(int amount);
00241
00246 virtual void setUpButtonScrollAmount(int amount);
00247
00252 virtual void setDownButtonScrollAmount(int amount);
00253
00260 virtual int getLeftButtonScrollAmount();
00261
00268 virtual int getRightButtonScrollAmount();
00269
00276 virtual int getUpButtonScrollAmount();
00277
00284 virtual int getDownButtonScrollAmount();
00285
00286
00287
00288
00289 virtual void showWidgetPart(Widget* widget, Rectangle area);
00290
00291 virtual Rectangle getChildrenArea();
00292
00293 virtual Widget *getWidgetAt(int x, int y);
00294
00295
00296
00297
00298 virtual void draw(Graphics *graphics);
00299
00300 virtual void drawBorder(Graphics* graphics);
00301
00302 virtual void logic();
00303
00304 virtual void setWidth(int width);
00305
00306 virtual void setHeight(int height);
00307
00308 virtual void setDimension(const Rectangle& dimension);
00309
00310
00311
00312
00313 virtual void mousePress(int x, int y, int button);
00314
00315 virtual void mouseRelease(int x, int y, int button);
00316
00317 virtual void mouseMotion(int x, int y);
00318
00319 virtual void mouseWheelUp(int x, int y);
00320
00321 virtual void mouseWheelDown(int x, int y);
00322
00323
00333 enum
00334 {
00335 SHOW_ALWAYS,
00336 SHOW_NEVER,
00337 SHOW_AUTO
00338 };
00339
00340 protected:
00347 virtual void drawBackground(Graphics *graphics);
00348
00354 virtual void drawUpButton(Graphics *graphics);
00355
00361 virtual void drawDownButton(Graphics *graphics);
00362
00368 virtual void drawLeftButton(Graphics *graphics);
00369
00375 virtual void drawRightButton(Graphics *graphics);
00376
00382 virtual void drawVBar(Graphics* graphics);
00383
00389 virtual void drawHBar(Graphics* graphics);
00390
00396 virtual void drawVMarker(Graphics* graphics);
00397
00403 virtual void drawHMarker(Graphics* graphics);
00404
00408 virtual void checkPolicies();
00409
00415 virtual Rectangle getUpButtonDimension();
00416
00422 virtual Rectangle getDownButtonDimension();
00423
00429 virtual Rectangle getLeftButtonDimension();
00430
00436 virtual Rectangle getRightButtonDimension();
00437
00443 virtual Rectangle getVerticalBarDimension();
00444
00450 virtual Rectangle getHorizontalBarDimension();
00451
00457 virtual Rectangle getVerticalMarkerDimension();
00458
00464 virtual Rectangle getHorizontalMarkerDimension();
00465
00466 int mVScroll;
00467 int mHScroll;
00468 int mScrollbarWidth;
00469 unsigned int mHPolicy;
00470 unsigned int mVPolicy;
00471 bool mVBarVisible;
00472 bool mHBarVisible;
00473 bool mUpButtonPressed;
00474 bool mDownButtonPressed;
00475 bool mLeftButtonPressed;
00476 bool mRightButtonPressed;
00477 bool mVerticalMarkerPressed;
00478 int mVerticalMarkerMousePosition;
00479 bool mHorizontalMarkerPressed;
00480 int mHorizontalMarkerMousePosition;
00481 int mUpButtonScrollAmount;
00482 int mDownButtonScrollAmount;
00483 int mLeftButtonScrollAmount;
00484 int mRightButtonScrollAmount;
00485 };
00486 }
00487
00488 #endif // end GCN_SCROLLAREA_HPP