30 # include <FL/Fl_Group.H>
31 # include <FL/Fl_Input.H>
32 # include <FL/Fl_Repeat_Button.H>
53 #if FLTK_ABI_VERSION >= 10301
66 if (w == &(sb->input_)) {
68 v = atof(sb->input_.
value());
70 if (v < sb->minimum_) {
71 sb->value_ = sb->minimum_;
73 }
else if (v > sb->maximum_) {
74 sb->value_ = sb->maximum_;
76 }
else sb->value_ = v;
77 }
else if (w == &(sb->up_button_)) {
79 v = sb->value_ + sb->step_;
81 if (v > sb->maximum_) sb->value_ = sb->minimum_;
85 }
else if (w == &(sb->down_button_)) {
87 v = sb->value_ - sb->step_;
89 if (v < sb->minimum_) sb->value_ = sb->maximum_;
100 if (format_[0]==
'%'&&format_[1]==
'.'&&format_[2]==
'*') {
104 char temp[64], *sp = temp;
105 sprintf(temp,
"%.12f", step_);
108 while (sp>temp && *sp==
'0') sp--;
109 while (sp>temp && (*sp>=
'0' && *sp<=
'9')) { sp--; c++; }
110 sprintf(s, format_, c, value_);
112 sprintf(s, format_, value_);
124 Fl_Spinner(
int X,
int Y,
int W,
int H,
const char *L = 0);
127 const char *
format() {
return (format_); }
129 void format(
const char *f) { format_ = f; update(); }
136 up_button_.do_callback();
139 down_button_.do_callback();
144 if (input_.take_focus())
return 1;
164 void range(
double a,
double b) { minimum_ = a; maximum_ = b; }
165 void resize(
int X,
int Y,
int W,
int H) {
168 input_.resize(X, Y, W - H / 2 - 2, H);
169 up_button_.resize(X + W - H / 2 - 2, Y, H / 2 + 2, H / 2);
170 down_button_.resize(X + W - H / 2 - 2, Y + H - H / 2,
178 double step()
const {
return (step_); }
182 if (step_ != (
int)step_) input_.type(FL_FLOAT_INPUT);
183 else input_.type(FL_INT_INPUT);
188 return (input_.textcolor());
196 return (input_.textfont());
204 return (input_.textsize());
221 if (v==FL_FLOAT_INPUT) {
229 double value()
const {
return (value_); }
235 void value(
double v) { value_ = v; update(); }
246 #endif // !Fl_Spinner_H