00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 #ifndef _FL_VALUATOR_H_
00023 #define _FL_VALUATOR_H_
00024 
00025 #include "Fl_Widget.h"
00026 
00028 class FL_API Fl_Valuator : public Fl_Widget {
00029 public:
00030     double value() const {return value_;}
00031     int value(double);
00032 
00033     float minimum() const {return minimum_;}
00034     void minimum(double a) {minimum_ = float(a);}
00035 
00036     float maximum() const {return maximum_;}
00037     void maximum(double a) {maximum_ = float(a);}
00038 
00039     void range(double a, double b) {minimum_ = float(a); maximum_ = float(b);}
00040 
00041     float step() const {return step_;}
00042     void step(double a) {step_ = float(a);}
00043 
00044     float linesize() const {return linesize_;}
00045     void linesize(double a) {linesize_ = float(a);}
00046 
00047     virtual int format(char*);
00048     virtual void reset() { value(0); }
00049 
00050     int handle(int);
00051 
00052 protected:
00054     Fl_Valuator(int X, int Y, int W, int H, const char* L);
00055 
00057     Fl_Valuator(const char* l = 0,int layout_size=30,Fl_Align layout_al=FL_ALIGN_TOP,int label_w=100);
00058 
00059     void ctor_init();    
00060 
00061     double previous_value() const { return previous_value_; }
00062     void handle_push() { previous_value_ = value_; }
00063     void handle_drag(double newvalue);
00064     void handle_release();
00065 
00066     virtual void value_damage(); 
00067     void set_value(double v) {value_ = v;} 
00068 
00069 private:
00070     double value_;
00071     static double previous_value_;
00072     float minimum_;
00073     float maximum_;
00074     float step_;
00075     float linesize_;
00076 };
00077 
00078 #endif