1 // 2 // "$Id: Fl_Slider.H 7981 2010-12-08 23:53:04Z greg.ercolano $" 3 // 4 // Slider header file for the Fast Light Tool Kit (FLTK). 5 // 6 // Copyright 1998-2010 by Bill Spitzak and others. 7 // 8 // This library is free software; you can redistribute it and/or 9 // modify it under the terms of the GNU Library General Public 10 // License as published by the Free Software Foundation; either 11 // version 2 of the License, or (at your option) any later version. 12 // 13 // This library is distributed in the hope that it will be useful, 14 // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 // Library General Public License for more details. 17 // 18 // You should have received a copy of the GNU Library General Public 19 // License along with this library; if not, write to the Free Software 20 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 21 // USA. 22 // 23 // Please report all bugs and problems on the following page: 24 // 25 // http://www.fltk.org/str.php 26 // 27 28 /* \file 29 Fl_Slider widget . */ 30 31 #ifndef Fl_Slider_H 32 #define Fl_Slider_H 33 34 #ifndef Fl_Valuator_H 35 #include "Fl_Valuator.H" 36 #endif 37 38 // values for type(), lowest bit indicate horizontal: 39 #define FL_VERT_SLIDER 0 40 #define FL_HOR_SLIDER 1 41 #define FL_VERT_FILL_SLIDER 2 42 #define FL_HOR_FILL_SLIDER 3 43 #define FL_VERT_NICE_SLIDER 4 44 #define FL_HOR_NICE_SLIDER 5 45 46 /** 47 The Fl_Slider widget contains a sliding knob inside a box. It if 48 often used as a scrollbar. Moving the box all the way to the 49 top/left sets it to the minimum(), and to the bottom/right to the 50 maximum(). The minimum() may be greater than the maximum() to 51 reverse the slider direction. 52 53 Use void Fl_Widget::type(int) to set how the slider is drawn, 54 which can be one of the following: 55 56 \li FL_VERTICAL - Draws a vertical slider (this is the default). 57 \li FL_HORIZONTAL - Draws a horizontal slider. 58 \li FL_VERT_FILL_SLIDER - Draws a filled vertical slider, 59 useful as a progress or value meter. 60 \li FL_HOR_FILL_SLIDER - Draws a filled horizontal slider, 61 useful as a progress or value meter. 62 \li FL_VERT_NICE_SLIDER - Draws a vertical slider with a nice 63 looking control knob. 64 \li FL_HOR_NICE_SLIDER - Draws a horizontal slider with a 65 nice looking control knob. 66 67 \image html slider.png 68 \image latex slider.png "Fl_Slider" width=4cm 69 */ 70 class FL_EXPORT Fl_Slider : public Fl_Valuator { 71 72 float slider_size_; 73 uchar slider_; 74 void _Fl_Slider(); 75 void draw_bg(int, int, int, int); 76 77 protected: 78 79 // these allow subclasses to put the slider in a smaller area: 80 void draw(int, int, int, int); 81 int handle(int, int, int, int, int); 82 void draw(); 83 84 public: 85 86 int handle(int); 87 Fl_Slider(int X,int Y,int W,int H, const char *L = 0); 88 Fl_Slider(uchar t,int X,int Y,int W,int H, const char *L); 89 90 int scrollvalue(int pos,int size,int first,int total); 91 void bounds(double a, double b); 92 93 /** 94 Get the dimensions of the moving piece of slider. 95 */ slider_size()96 float slider_size() const {return slider_size_;} 97 98 /** 99 Set the dimensions of the moving piece of slider. This is 100 the fraction of the size of the entire widget. If you set this 101 to 1 then the slider cannot move. The default value is .08. 102 103 For the "fill" sliders this is the size of the area around the 104 end that causes a drag effect rather than causing the slider to 105 jump to the mouse. 106 */ 107 void slider_size(double v); 108 109 /** Gets the slider box type. */ slider()110 Fl_Boxtype slider() const {return (Fl_Boxtype)slider_;} 111 112 /** Sets the slider box type. */ slider(Fl_Boxtype c)113 void slider(Fl_Boxtype c) {slider_ = c;} 114 }; 115 116 #endif 117 118 // 119 // End of "$Id: Fl_Slider.H 7981 2010-12-08 23:53:04Z greg.ercolano $". 120 // 121