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 
00036 
00037 
enum {
00038   
SCROLLBAR_VERTICAL   = 0,             
00039   
SCROLLBAR_HORIZONTAL = 0x00020000,    
00040   
SCROLLBAR_WHEELJUMP  = 0x00040000     
00041   };
00042 
00043 
00044 
00045 
00046 
00047 
00048 
00049 
00050 
00051 
00052 
00053 
00054 
00055 
00056 
00057 
00058 
00059 
00060 
00061 
class FXAPI FXScrollBar : 
public FXWindow {
00062   FXDECLARE(FXScrollBar)
00063 protected:
00064   FXint      range;           
00065   FXint      page;            
00066   FXint      line;            
00067   FXint      pos;             
00068   FXint      thumbsize;       
00069   FXint      thumbpos;        
00070   FXColor    hiliteColor;     
00071   FXColor    shadowColor;     
00072   FXColor    borderColor;     
00073   FXColor    arrowColor;      
00074   FXint      dragpoint;       
00075   FXuchar    mode;            
00076 protected:
00077   FXScrollBar();
00078   
void drawButton(
FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXbool down);
00079   
void drawLeftArrow(
FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXbool down);
00080   
void drawRightArrow(
FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXbool down);
00081   
void drawUpArrow(
FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXbool down);
00082   
void drawDownArrow(
FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXbool down);
00083 protected:
00084   enum {
00085     MODE_NONE,
00086     MODE_INC,
00087     MODE_DEC,
00088     MODE_PAGE_INC,
00089     MODE_PAGE_DEC,
00090     MODE_DRAG,
00091     MODE_FINE_DRAG
00092     };
00093 
private:
00094   FXScrollBar(
const FXScrollBar&);
00095   FXScrollBar &operator=(
const FXScrollBar&);
00096 
public:
00097   
long onPaint(
FXObject*,FXSelector,
void*);
00098   
long onMotion(
FXObject*,FXSelector,
void*);
00099   
long onMouseWheel(
FXObject*,FXSelector,
void*);
00100   
long onLeftBtnPress(
FXObject*,FXSelector,
void*);
00101   
long onLeftBtnRelease(
FXObject*,FXSelector,
void*);
00102   
long onMiddleBtnPress(
FXObject*,FXSelector,
void*);
00103   
long onMiddleBtnRelease(
FXObject*,FXSelector,
void*);
00104   
long onRightBtnPress(
FXObject*,FXSelector,
void*);
00105   
long onRightBtnRelease(
FXObject*,FXSelector,
void*);
00106   
long onUngrabbed(
FXObject*,FXSelector,
void*);
00107   
long onTimeWheel(
FXObject*,FXSelector,
void*);
00108   
long onAutoScroll(
FXObject*,FXSelector,
void*);
00109   
long onCmdSetValue(
FXObject*,FXSelector,
void*);
00110   
long onCmdSetIntValue(
FXObject*,FXSelector,
void*);
00111   
long onCmdGetIntValue(
FXObject*,FXSelector,
void*);
00112   long onCmdSetIntRange(
FXObject*,FXSelector,
void*);
00113   
long onCmdGetIntRange(
FXObject*,FXSelector,
void*);
00114 
public:
00115   
enum{
00116     ID_TIMEWHEEL=FXWindow::ID_LAST,
00117     ID_AUTOSCROLL,
00118     ID_LAST
00119     };
00120 
public:
00121 
00122 
00123   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);
00124 
00125 
00126   
virtual FXint getDefaultWidth();
00127 
00128 
00129   
virtual FXint getDefaultHeight();
00130 
00131 
00132   
virtual void layout();
00133 
00134 
00135   
void setRange(FXint r);
00136 
00137 
00138   FXint getRange()
 const { 
return range; }
00139 
00140 
00141   
void setPage(FXint p);
00142 
00143 
00144   FXint getPage()
 const { 
return page; }
00145 
00146 
00147   
void setLine(FXint l);
00148 
00149 
00150   FXint getLine()
 const { 
return line; }
00151 
00152 
00153   
void setPosition(FXint p);
00154 
00155 
00156   FXint getPosition()
 const { 
return pos; }
00157 
00158 
00159   
void setHiliteColor(FXColor clr);
00160 
00161 
00162   FXColor getHiliteColor()
 const { 
return hiliteColor; }
00163 
00164 
00165   
void setShadowColor(FXColor clr);
00166 
00167 
00168   FXColor getShadowColor()
 const { 
return shadowColor; }
00169 
00170 
00171   
void setBorderColor(FXColor clr);
00172 
00173 
00174   FXColor getBorderColor()
 const { 
return borderColor; }
00175 
00176 
00177   
void setArrowColor(FXColor clr);
00178 
00179 
00180   FXColor getArrowColor()
 const { 
return arrowColor; }
00181 
00182 
00183   FXuint getScrollbarStyle() const;
00184 
00185 
00186   
void setScrollbarStyle(FXuint style);
00187 
00188 
00189   virtual 
void save(
FXStream& store) const;
00190 
00191 
00192   virtual 
void load(
FXStream& store);
00193 
00194 
00195   virtual ~FXScrollBar();
00196   };
00197 
00198 
00199 
00200 class FXAPI 
FXScrollCorner : public 
FXWindow {
00201   FXDECLARE(
FXScrollCorner)
00202 protected:
00203   
FXScrollCorner();
00204 private:
00205   FXScrollCorner(const FXScrollCorner&);
00206   FXScrollCorner &operator=(const FXScrollCorner&);
00207 public:
00208   
long onPaint(
FXObject*,FXSelector,
void*);
00209 public:
00210 
00211 
00212   FXScrollCorner(
FXComposite* p);
00213 
00214 
00215   virtual 
void enable();
00216 
00217 
00218   virtual 
void disable();
00219   };
00220 
00221 }
00222 
00223 #endif