00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef FXSCROLLBAR_H
00025 #define FXSCROLLBAR_H
00026
00027 #ifndef FXWINDOW_H
00028 #include "FXWindow.h"
00029 #endif
00030
00031
00032 namespace FX {
00033
00034
00035
00037 enum {
00038 SCROLLBAR_VERTICAL = 0,
00039 SCROLLBAR_HORIZONTAL = 0x00020000,
00040 SCROLLBAR_WHEELJUMP = 0x00040000
00041 };
00042
00043
00044
00064 class FXAPI FXScrollBar : public FXWindow {
00065 FXDECLARE(FXScrollBar)
00066 protected:
00067 FXlong range;
00068 FXint page;
00069 FXint line;
00070 FXlong pos;
00071 FXint barsize;
00072 FXint thumbsize;
00073 FXint thumbpos;
00074 FXColor hiliteColor;
00075 FXColor shadowColor;
00076 FXColor borderColor;
00077 FXColor arrowColor;
00078 FXlong dragpoint;
00079 FXuchar mode;
00080 protected:
00081 FXScrollBar();
00082 void drawButton(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXbool down);
00083 void drawLeftArrow(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXbool down);
00084 void drawRightArrow(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXbool down);
00085 void drawUpArrow(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXbool down);
00086 void drawDownArrow(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXbool down);
00087 protected:
00088 enum {
00089 MODE_NONE,
00090 MODE_INC,
00091 MODE_DEC,
00092 MODE_PAGE_INC,
00093 MODE_PAGE_DEC,
00094 MODE_DRAG,
00095 MODE_FINE_DRAG
00096 };
00097 private:
00098 FXScrollBar(const FXScrollBar&);
00099 FXScrollBar &operator=(const FXScrollBar&);
00100 public:
00101 long onPaint(FXObject*,FXSelector,void*);
00102 long onMotion(FXObject*,FXSelector,void*);
00103 long onMouseWheel(FXObject*,FXSelector,void*);
00104 long onLeftBtnPress(FXObject*,FXSelector,void*);
00105 long onLeftBtnRelease(FXObject*,FXSelector,void*);
00106 long onMiddleBtnPress(FXObject*,FXSelector,void*);
00107 long onMiddleBtnRelease(FXObject*,FXSelector,void*);
00108 long onRightBtnPress(FXObject*,FXSelector,void*);
00109 long onRightBtnRelease(FXObject*,FXSelector,void*);
00110 long onUngrabbed(FXObject*,FXSelector,void*);
00111 long onTimeWheel(FXObject*,FXSelector,void*);
00112 long onAutoScroll(FXObject*,FXSelector,void*);
00113 long onCmdSetValue(FXObject*,FXSelector,void*);
00114 long onCmdSetIntValue(FXObject*,FXSelector,void*);
00115 long onCmdGetIntValue(FXObject*,FXSelector,void*);
00116 long onCmdSetIntRange(FXObject*,FXSelector,void*);
00117 long onCmdGetIntRange(FXObject*,FXSelector,void*);
00118 public:
00119 enum{
00120 ID_TIMEWHEEL=FXWindow::ID_LAST,
00121 ID_AUTOSCROLL,
00122 ID_LAST
00123 };
00124 public:
00125
00127 FXScrollBar(FXComposite* p,FXObject* tgt=NULL,FXSelector sel=0,FXuint opts=SCROLLBAR_VERTICAL,FXint x=0,FXint y=0,FXint w=0,FXint h=0);
00128
00130 virtual FXint getDefaultWidth();
00131
00133 virtual FXint getDefaultHeight();
00134
00136 virtual void layout();
00137
00139 void setRange(FXlong r);
00140
00142 FXlong getRange() const { return range; }
00143
00145 void setPage(FXint p);
00146
00148 FXint getPage() const { return page; }
00149
00151 void setLine(FXint l);
00152
00154 FXint getLine() const { return line; }
00155
00157 void setPosition(FXlong p);
00158
00160 FXlong getPosition() const { return pos; }
00161
00163 void setHiliteColor(FXColor clr);
00164
00166 FXColor getHiliteColor() const { return hiliteColor; }
00167
00169 void setShadowColor(FXColor clr);
00170
00172 FXColor getShadowColor() const { return shadowColor; }
00173
00175 void setBorderColor(FXColor clr);
00176
00178 FXColor getBorderColor() const { return borderColor; }
00179
00181 void setArrowColor(FXColor clr);
00182
00184 FXColor getArrowColor() const { return arrowColor; }
00185
00187 void setScrollBarStyle(FXuint style);
00188
00190 FXuint getScrollBarStyle() const;
00191
00193 void setBarSize(FXint size);
00194
00196 FXint getBarSize() const { return barsize; }
00197
00199 virtual void save(FXStream& store) const;
00200
00202 virtual void load(FXStream& store);
00203
00205 virtual ~FXScrollBar();
00206 };
00207
00208
00210 class FXAPI FXScrollCorner : public FXWindow {
00211 FXDECLARE(FXScrollCorner)
00212 protected:
00213 FXScrollCorner();
00214 private:
00215 FXScrollCorner(const FXScrollCorner&);
00216 FXScrollCorner &operator=(const FXScrollCorner&);
00217 public:
00218 long onPaint(FXObject*,FXSelector,void*);
00219 public:
00220
00222 FXScrollCorner(FXComposite* p);
00223
00225 virtual void enable();
00226
00228 virtual void disable();
00229 };
00230
00231 }
00232
00233 #endif