]> git.tdb.fi Git - libs/gltk.git/blob - source/slider.cpp
0b1d8b066ee2e992644d9cc0254dc672a6ac8db5
[libs/gltk.git] / source / slider.cpp
1 /* $Id$
2
3 This file is part of libmspgltk
4 Copyright © 2007  Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
6 */
7
8 #include "slider.h"
9
10 namespace Msp {
11 namespace GLtk {
12
13 Slider::Slider(const Resources &r):
14         Widget(r),
15         min(0),
16         max(1),
17         value(0),
18         step(0.1)
19 { }
20
21 void Slider::set_value(double v)
22 {
23         double old_value=value;
24
25         if(v<min)
26                 value=min;
27         else if(v>max)
28                 value=max;
29         else
30         {
31                 unsigned steps=static_cast<unsigned>((v-min)/step+0.5);
32                 value=min+steps*step;
33         }
34
35         if(value!=old_value)
36                 signal_value_changed.emit(value);
37 }
38
39 void Slider::set_range(double a, double b)
40 {
41         min=a;
42         max=b;
43         set_value(value);
44 }
45
46 void Slider::set_step(double s)
47 {
48         step=s;
49         set_value(value);
50 }
51
52
53 Slider::Loader::Loader(Slider &s):
54         Widget::Loader(s)
55 {
56         add("range", &Slider::min, &Slider::max);
57         add("step",  &Slider::step);
58         add("value", &Slider::value);
59 }
60
61 Slider &Slider::Loader::get_object() const
62 {
63         return static_cast<Slider &>(wdg);
64 }
65
66 } // namespace GLtk
67 } // namespace Msp