00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00033
00034 #pragma once
00035
00036 #include "../api_gui.h"
00037 #include "../gui_component.h"
00038 #include "../../Core/Signals/callback_v0.h"
00039
00040 class CL_ScrollBar_Impl;
00041
00045 class CL_API_GUI CL_ScrollBar : public CL_GUIComponent
00046 {
00049 public:
00050
00054 CL_ScrollBar(CL_GUIComponent *parent);
00055
00056 virtual ~CL_ScrollBar();
00057
00061 public:
00062
00066 bool is_vertical() const;
00067
00071 bool is_horizontal() const;
00072
00076 int get_min() const;
00077
00081 int get_max() const;
00082
00086 int get_line_step() const;
00087
00091 int get_page_step() const;
00092
00096 int get_position() const;
00097
00101 virtual CL_Size get_preferred_size() const;
00102
00104 int get_preferred_width() const;
00105
00107 int get_preferred_height() const;
00108
00112 public:
00113
00115 void set_vertical();
00116
00118 void set_horizontal();
00119
00123 void set_min(int scroll_min);
00124
00128 void set_max(int scroll_max);
00129
00133 void set_line_step(int step);
00134
00138 void set_page_step(int step);
00139
00146 void set_ranges(int scroll_min, int scroll_max, int line_step, int page_step);
00147
00149
00153 void calculate_ranges(int view_size, int total_size);
00154
00158 void set_position(int pos);
00159
00163 public:
00165 CL_Callback_v0 &func_scroll();
00166
00168 CL_Callback_v0 &func_scroll_min();
00169
00171 CL_Callback_v0 &func_scroll_max();
00172
00174 CL_Callback_v0 &func_scroll_line_decrement();
00175
00177 CL_Callback_v0 &func_scroll_line_increment();
00178
00180 CL_Callback_v0 &func_scroll_page_decrement();
00181
00183 CL_Callback_v0 &func_scroll_page_increment();
00184
00186 CL_Callback_v0 &func_scroll_thumb_release();
00187
00189 CL_Callback_v0 &func_scroll_thumb_track();
00190
00192 CL_Callback_v0 &func_scroll_end();
00193
00197
00198 private:
00199 CL_SharedPtr<CL_ScrollBar_Impl> impl;
00201 };
00202