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_;
101 if (format_[0]==
'%'&&format_[1]==
'.'&&format_[2]==
'*') {
105 char temp[64], *sp = temp;
106 sprintf(temp,
"%.12f", step_);
109 while (sp>temp && *sp==
'0') sp--;
110 while (sp>temp && (*sp>=
'0' && *sp<=
'9')) { sp--; c++; }
111 sprintf(s, format_, c, value_);
113 sprintf(s, format_, value_);
125 Fl_Spinner(
int X,
int Y,
int W,
int H,
const char *L = 0);
128 const char *
format() {
return (format_); }
130 void format(
const char *f) { format_ = f; update(); }
137 up_button_.do_callback();
140 down_button_.do_callback();
145 if (input_.take_focus())
return 1;
165 void range(
double a,
double b) { minimum_ = a; maximum_ = b; }
166 void resize(
int X,
int Y,
int W,
int H) {
169 input_.resize(X, Y, W - H / 2 - 2, H);
170 up_button_.resize(X + W - H / 2 - 2, Y, H / 2 + 2, H / 2);
171 down_button_.resize(X + W - H / 2 - 2, Y + H - H / 2,
179 double step()
const {
return (step_); }
183 if (step_ != (
int)step_) input_.type(FL_FLOAT_INPUT);
184 else input_.type(FL_INT_INPUT);
189 return (input_.textcolor());
197 return (input_.textfont());
205 return (input_.textsize());
222 if (v==FL_FLOAT_INPUT) {
230 double value()
const {
return (value_); }
236 void value(
double v) { value_ = v; update(); }
255 #endif // !Fl_Spinner_H