r864: Merge 2.1:
[cinelerra_cv/ct.git] / plugins / histogram / histogramwindow.h
blob92276fe14a042819238e3caa70bf992e8f721d79
1 #ifndef HISTOGRAMWINDOW_H
2 #define HISTOGRAMWINDOW_H
6 #include "histogram.inc"
7 #include "histogramwindow.inc"
8 #include "pluginvclient.h"
12 class HistogramSlider : public BC_SubWindow
14 public:
15 HistogramSlider(HistogramMain *plugin,
16 HistogramWindow *gui,
17 int x,
18 int y,
19 int w,
20 int h,
21 int is_input);
23 void update();
24 int button_press_event();
25 int button_release_event();
26 int cursor_motion_event();
27 int input_to_pixel(float input);
29 int operation;
30 enum
32 NONE,
33 DRAG_INPUT,
34 DRAG_MIN_OUTPUT,
35 DRAG_MAX_OUTPUT,
37 int is_input;
38 HistogramMain *plugin;
39 HistogramWindow *gui;
42 class HistogramAuto : public BC_CheckBox
44 public:
45 HistogramAuto(HistogramMain *plugin,
46 int x,
47 int y);
48 int handle_event();
49 HistogramMain *plugin;
52 class HistogramPlot : public BC_CheckBox
54 public:
55 HistogramPlot(HistogramMain *plugin,
56 int x,
57 int y);
58 int handle_event();
59 HistogramMain *plugin;
62 class HistogramSplit : public BC_CheckBox
64 public:
65 HistogramSplit(HistogramMain *plugin,
66 int x,
67 int y);
68 int handle_event();
69 HistogramMain *plugin;
72 class HistogramMode : public BC_Radial
74 public:
75 HistogramMode(HistogramMain *plugin,
76 int x,
77 int y,
78 int value,
79 char *text);
80 int handle_event();
81 HistogramMain *plugin;
82 int value;
85 class HistogramReset : public BC_GenericButton
87 public:
88 HistogramReset(HistogramMain *plugin,
89 int x,
90 int y);
91 int handle_event();
92 HistogramMain *plugin;
95 class HistogramOutputText : public BC_TumbleTextBox
97 public:
98 HistogramOutputText(HistogramMain *plugin,
99 HistogramWindow *gui,
100 int x,
101 int y,
102 float *output);
103 int handle_event();
104 HistogramMain *plugin;
105 float *output;
108 class HistogramInputText : public BC_TumbleTextBox
110 public:
111 HistogramInputText(HistogramMain *plugin,
112 HistogramWindow *gui,
113 int x,
114 int y,
115 int do_x);
117 int handle_event();
118 void update();
120 HistogramMain *plugin;
121 HistogramWindow *gui;
122 int do_x;
125 class HistogramCanvas : public BC_SubWindow
127 public:
128 HistogramCanvas(HistogramMain *plugin,
129 HistogramWindow *gui,
130 int x,
131 int y,
132 int w,
133 int h);
134 int button_press_event();
135 int cursor_motion_event();
136 int button_release_event();
137 HistogramMain *plugin;
138 HistogramWindow *gui;
141 class HistogramWindow : public BC_Window
143 public:
144 HistogramWindow(HistogramMain *plugin, int x, int y);
145 ~HistogramWindow();
147 int create_objects();
148 int close_event();
149 void update(int do_input);
150 void update_mode();
151 void update_canvas();
152 void draw_canvas_overlay();
153 void update_input();
154 void update_output();
155 int keypress_event();
156 void get_point_extents(HistogramPoint *current,
157 int *x1,
158 int *y1,
159 int *x2,
160 int *y2,
161 int *x,
162 int *y);
164 HistogramSlider *output;
165 HistogramAuto *automatic;
166 HistogramMode *mode_v, *mode_r, *mode_g, *mode_b /*, *mode_a */;
167 HistogramOutputText *output_min;
168 HistogramOutputText *output_max;
169 HistogramOutputText *threshold;
170 HistogramInputText *input_x;
171 HistogramInputText *input_y;
172 HistogramCanvas *canvas;
173 HistogramMain *plugin;
174 int canvas_w;
175 int canvas_h;
176 int title1_x;
177 int title2_x;
178 int title3_x;
179 int title4_x;
180 BC_Pixmap *max_picon, *mid_picon, *min_picon;
181 HistogramPlot *plot;
182 HistogramSplit *split;
187 PLUGIN_THREAD_HEADER(HistogramMain, HistogramThread, HistogramWindow)
192 #endif