Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members

/home/jeroen/FOX/fox/fox-1.7.33/include/FXScrollBar.h
00001 /********************************************************************************
00002 *                                                                               *
00003 *                       S c r o l l   B a r   W i d g e t                       *
00004 *                                                                               *
00005 *********************************************************************************
00006 * Copyright (C) 1997,2012 by Jeroen van der Zijp.   All Rights Reserved.        *
00007 *********************************************************************************
00008 * This library is free software; you can redistribute it and/or modify          *
00009 * it under the terms of the GNU Lesser General Public License as published by   *
00010 * the Free Software Foundation; either version 3 of the License, or             *
00011 * (at your option) any later version.                                           *
00012 *                                                                               *
00013 * This library is distributed in the hope that it will be useful,               *
00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of                *
00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                 *
00016 * GNU Lesser General Public License for more details.                           *
00017 *                                                                               *
00018 * You should have received a copy of the GNU Lesser General Public License      *
00019 * along with this program.  If not, see <http://www.gnu.org/licenses/>          *
00020 ********************************************************************************/
00021 #ifndef FXSCROLLBAR_H
00022 #define FXSCROLLBAR_H
00023 
00024 #ifndef FXWINDOW_H
00025 #include "FXWindow.h"
00026 #endif
00027 
00028 
00029 namespace FX {
00030 
00031 
00032 
00034 enum {
00035   SCROLLBAR_VERTICAL   = 0,             
00036   SCROLLBAR_HORIZONTAL = 0x00020000,    
00037   SCROLLBAR_WHEELJUMP  = 0x00040000     
00038   };
00039 
00040 
00041 
00061 class FXAPI FXScrollBar : public FXWindow {
00062   FXDECLARE(FXScrollBar)
00063 protected:
00064   FXint      range;           // Scrollable range
00065   FXint      page;            // Page size
00066   FXint      line;            // Line size
00067   FXint      pos;             // Position
00068   FXint      barsize;         // Bar size
00069   FXint      thumbsize;       // Thumb size
00070   FXint      thumbpos;        // Thumb position
00071   FXColor    hiliteColor;     // Hightlight color
00072   FXColor    shadowColor;     // Shadow color
00073   FXColor    borderColor;     // Border color
00074   FXColor    arrowColor;      // Arrow color
00075   FXint      dragpoint;       // Point where grabbed
00076   FXuchar    mode;            // Current mode of control
00077 protected:
00078   FXScrollBar();
00079   void drawButton(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXbool down);
00080   void drawThumb(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
00081   void drawLeftArrow(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXbool down);
00082   void drawRightArrow(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXbool down);
00083   void drawUpArrow(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXbool down);
00084   void drawDownArrow(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXbool down);
00085 protected:
00086   enum {
00087     MODE_NONE,
00088     MODE_INC,
00089     MODE_DEC,
00090     MODE_PAGE_INC,
00091     MODE_PAGE_DEC,
00092     MODE_DRAG,
00093     MODE_FINE_DRAG
00094     };
00095 private:
00096   FXScrollBar(const FXScrollBar&);
00097   FXScrollBar &operator=(const FXScrollBar&);
00098 public:
00099   long onPaint(FXObject*,FXSelector,void*);
00100   long onMotion(FXObject*,FXSelector,void*);
00101   long onMouseWheel(FXObject*,FXSelector,void*);
00102   long onLeftBtnPress(FXObject*,FXSelector,void*);
00103   long onLeftBtnRelease(FXObject*,FXSelector,void*);
00104   long onMiddleBtnPress(FXObject*,FXSelector,void*);
00105   long onMiddleBtnRelease(FXObject*,FXSelector,void*);
00106   long onRightBtnPress(FXObject*,FXSelector,void*);
00107   long onRightBtnRelease(FXObject*,FXSelector,void*);
00108   long onUngrabbed(FXObject*,FXSelector,void*);
00109   long onTimeWheel(FXObject*,FXSelector,void*);
00110   long onAutoScroll(FXObject*,FXSelector,void*);
00111   long onCmdSetValue(FXObject*,FXSelector,void*);
00112   long onCmdSetIntValue(FXObject*,FXSelector,void*);
00113   long onCmdGetIntValue(FXObject*,FXSelector,void*);
00114   long onCmdSetLongValue(FXObject*,FXSelector,void*);
00115   long onCmdGetLongValue(FXObject*,FXSelector,void*);
00116   long onCmdSetIntRange(FXObject*,FXSelector,void*);
00117   long onCmdGetIntRange(FXObject*,FXSelector,void*);
00118 public:
00119   enum{
00120     ID_AUTOSCROLL=FXWindow::ID_LAST,
00121     ID_TIMEWHEEL,
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 
00142   void setRange(FXint r,FXbool notify=false);
00143 
00145   FXint getRange() const { return range; }
00146 
00151   void setPage(FXint p,FXbool notify=false);
00152 
00154   FXint getPage() const { return page; }
00155 
00161   void setPosition(FXint p,FXbool notify=false);
00162 
00164   FXint getPosition() const { return pos; }
00165 
00167   void setLine(FXint l);
00168 
00170   FXint getLine() const { return line; }
00171 
00173   void setHiliteColor(FXColor clr);
00174 
00176   FXColor getHiliteColor() const { return hiliteColor; }
00177 
00179   void setShadowColor(FXColor clr);
00180 
00182   FXColor getShadowColor() const { return shadowColor; }
00183 
00185   void setBorderColor(FXColor clr);
00186 
00188   FXColor getBorderColor() const { return borderColor; }
00189 
00191   void setArrowColor(FXColor clr);
00192 
00194   FXColor getArrowColor() const { return arrowColor; }
00195 
00197   void setScrollBarStyle(FXuint style);
00198 
00200   FXuint getScrollBarStyle() const;
00201 
00203   void setBarSize(FXint size);
00204 
00206   FXint getBarSize() const { return barsize; }
00207 
00209   virtual void save(FXStream& store) const;
00210 
00212   virtual void load(FXStream& store);
00213 
00215   virtual ~FXScrollBar();
00216   };
00217 
00218 
00220 class FXAPI FXScrollCorner : public FXWindow {
00221   FXDECLARE(FXScrollCorner)
00222 protected:
00223   FXScrollCorner();
00224 private:
00225   FXScrollCorner(const FXScrollCorner&);
00226   FXScrollCorner &operator=(const FXScrollCorner&);
00227 public:
00228   long onPaint(FXObject*,FXSelector,void*);
00229 public:
00230 
00232   FXScrollCorner(FXComposite* p);
00233 
00235   virtual void enable();
00236 
00238   virtual void disable();
00239   };
00240 
00241 }
00242 
00243 #endif

Copyright © 1997-2011 Jeroen van der Zijp