summaryrefslogtreecommitdiff
path: root/FL/Fl_Slider.H
blob: df504522ec2a2d4c4d9e5d5c982b197fd076bb80 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
//
// "$Id$"
//
// Slider header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2008 by Bill Spitzak and others.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Library General Public License for more details.
//
// You should have received a copy of the GNU Library General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA.
//
// Please report all bugs and problems on the following page:
//
//     http://www.fltk.org/str.php
//

/** \file
   Fl_Slider widget . */

#ifndef Fl_Slider_H
#define Fl_Slider_H

#ifndef Fl_Valuator_H
#include "Fl_Valuator.H"
#endif

// values for type(), lowest bit indicate horizontal:
#define FL_VERT_SLIDER		0
#define FL_HOR_SLIDER		1
#define FL_VERT_FILL_SLIDER	2
#define FL_HOR_FILL_SLIDER	3
#define FL_VERT_NICE_SLIDER	4
#define FL_HOR_NICE_SLIDER	5

/**
  The Fl_Slider widget contains a sliding knob inside a box. It
  if often used as a scrollbar.  Moving the box all the way to the
  top/left sets it to the minimum(), and to the bottom/right to
  the maximum().  The minimum() may be greater than the 
  maximum() to reverse the slider direction.

  <P>Use void Fl_Widget::type(int) to set how the slider is drawn, 
  which can be one of the following:
  <UL>
  <LI>FL_VERTICAL - Draws a vertical slider (this is the
  default). </LI>
  <LI>FL_HORIZONTAL - Draws a horizontal slider. </LI>
  <LI>FL_VERT_FILL_SLIDER - Draws a filled vertical  slider,
  useful as a progress or value meter. </LI>
  <LI>FL_HOR_FILL_SLIDER - Draws a filled horizontal  slider,
  useful as a progress or value meter. </LI>
  <LI>FL_VERT_NICE_SLIDER - Draws a vertical slider with  a nice
  looking control knob. </LI>
  <LI>FL_HOR_NICE_SLIDER - Draws a horizontal slider with  a
  nice looking control knob. </LI>
  </UL>
  <P ALIGN=CENTER>\image html slider.gif 
  \image latex  slider.eps "Fl_Slider" width=4cm
*/
class FL_EXPORT Fl_Slider : public Fl_Valuator {

  float slider_size_;
  uchar slider_;
  void _Fl_Slider();
  void draw_bg(int, int, int, int);

protected:

  // these allow subclasses to put the slider in a smaller area:
  void draw(int, int, int, int);
  int handle(int, int, int, int, int);

public:

  void draw();
  int handle(int);
  Fl_Slider(int x,int y,int w,int h, const char *l = 0);
  Fl_Slider(uchar t,int x,int y,int w,int h, const char *l);

  int scrollvalue(int windowtop,int windowsize,int first,int totalsize);
  void bounds(double a, double b);
  /**
    Get or set the dimensions of the moving piece of slider.  This is the
    fraction of the size of the entire widget.  If you set this to 1 then
    the slider cannot move.  The default value is .08.
    <P>For the "fill" sliders this is the size of the area around the end
    that causes a drag effect rather than causing the slider to jump to the
    mouse.
  */
  float slider_size() const {return slider_size_;}
  /** See float slider_size() const  */
  void slider_size(double v);
  /** Gets the slider box type. */
  Fl_Boxtype slider() const {return (Fl_Boxtype)slider_;}
  /** Sets the slider box type. */
  void slider(Fl_Boxtype c) {slider_ = c;}
};

#endif

//
// End of "$Id$".
//