00001 #ifndef BCSLIDER_H
00002 #define BCSLIDER_H
00003
00004 #include "bcbitmap.inc"
00005 #include "bcsubwindow.h"
00006
00007 class BC_ISlider;
00008 class BC_FSlider;
00009 class BC_PercentageSlider;
00010
00011 class BC_Slider : public BC_SubWindow
00012 {
00013 public:
00014 BC_Slider(int x,
00015 int y,
00016 int pixels,
00017 int pointer_motion_range,
00018 VFrame **images,
00019 int show_number,
00020 int vertical,
00021 int use_caption);
00022 virtual ~BC_Slider();
00023
00024 friend class BC_ISlider;
00025 friend class BC_FSlider;
00026 friend class BC_PercentageSlider;
00027
00028 virtual int handle_event() { return 0; };
00029
00030 int initialize();
00031 static int get_span(int vertical);
00032 int get_button_pixels();
00033 virtual int value_to_pixel() { return 0; };
00034 int keypress_event();
00035 int cursor_enter_event();
00036 int cursor_leave_event();
00037 int button_press_event();
00038 virtual int button_release_event();
00039 int get_pointer_motion_range();
00040 int cursor_motion_event();
00041 int repeat_event(int64_t repeat_id);
00042 int reposition_window(int x, int y, int w = -1, int h = -1);
00043 int activate();
00044 int deactivate();
00045 virtual int increase_value() { return 0; };
00046 virtual int decrease_value() { return 0; };
00047 virtual int increase_value_big() { return 0; };
00048 virtual int decrease_value_big() { return 0; };
00049 virtual char* get_caption() { return caption; };
00050
00051 private:
00052
00053 #define SLIDER_UP 0
00054 #define SLIDER_HI 1
00055 #define SLIDER_DN 2
00056 #define SLIDER_BG_UP 0
00057 #define SLIDER_BG_HI 1
00058 #define SLIDER_BG_DN 2
00059 #define SLIDER_IMAGES 6
00060
00061 virtual int init_selection(int cursor_x, int cursor_y) { return 0; };
00062 virtual int update_selection(int cursor_x, int cursor_y) { return 0; };
00063 int set_images(VFrame **images);
00064 int draw_face();
00065 void show_value_tooltip();
00066
00067 VFrame **images;
00068 BC_Pixmap **pixmaps;
00069 int show_number, vertical, pointer_motion_range, pixels;
00070 int keypress_tooltip_timer;
00071 int button_pixel;
00072 int status;
00073 int button_down;
00074 int min_pixel, max_pixel;
00075 int text_line, text_height;
00076 int use_caption;
00077 char caption[BCTEXTLEN];
00078 char temp_tooltip_text[BCTEXTLEN];
00079 int active;
00080 int enabled;
00081 };
00082
00083
00084 class BC_ISlider : public BC_Slider
00085 {
00086 public:
00087 BC_ISlider(int x,
00088 int y,
00089 int vertical,
00090 int pixels,
00091 int pointer_motion_range,
00092 int64_t minvalue,
00093 int64_t maxvalue,
00094 int64_t value,
00095 int use_caption = 0,
00096 VFrame **data = 0,
00097 int *output = 0);
00098
00099 int update(int64_t value);
00100 int update(int pointer_motion_range, int64_t value, int64_t minvalue, int64_t maxvalue);
00101 int64_t get_value();
00102 int64_t get_length();
00103 int increase_value();
00104 int decrease_value();
00105 int increase_value_big();
00106 int decrease_value_big();
00107 virtual int handle_event();
00108 virtual char* get_caption();
00109
00110 private:
00111 int value_to_pixel();
00112 int init_selection(int cursor_x, int cursor_y);
00113 int update_selection(int cursor_x, int cursor_y);
00114 int64_t minvalue, maxvalue, value;
00115 int *output;
00116 };
00117
00118 class BC_FSlider : public BC_Slider
00119 {
00120 public:
00121 BC_FSlider(int x,
00122 int y,
00123 int vertical,
00124 int pixels,
00125 int pointer_motion_range,
00126 float minvalue,
00127 float maxvalue,
00128 float value,
00129 int use_caption = 0,
00130 VFrame **data = 0);
00131
00132 friend class BC_PercentageSlider;
00133
00134 int update(float value);
00135 int update(int pointer_motion_range, float value, float minvalue, float maxvalue);
00136 float get_value();
00137 float get_length();
00138 virtual int increase_value();
00139 virtual int decrease_value();
00140 virtual int increase_value_big();
00141 virtual int decrease_value_big();
00142 virtual char* get_caption();
00143 void set_precision(float value);
00144 void set_pagination(float small_change, float big_change);
00145
00146 private:
00147 int value_to_pixel();
00148 int init_selection(int cursor_x, int cursor_y);
00149 int update_selection(int cursor_x, int cursor_y);
00150 float minvalue, maxvalue, value;
00151 float precision;
00152 float small_change, big_change;
00153 };
00154
00155 class BC_PercentageSlider : public BC_FSlider
00156 {
00157 public:
00158 BC_PercentageSlider(int x,
00159 int y,
00160 int vertical,
00161 int pixels,
00162 int pointer_motion_range,
00163 float minvalue,
00164 float maxvalue,
00165 float value,
00166 int use_caption = 0,
00167 VFrame **data = 0);
00168
00169 char* get_caption();
00170 private:
00171 };
00172
00173
00174 #endif