2 * Cinelerra :: Blue Banana - color modification plugin for Cinelerra-CV
3 * Copyright (C) 2012-2013 Monty <monty@xiph.org>
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #ifndef BLUEBANANAWINDOW_H
22 #define BLUEBANANAWINDOW_H
25 #include "pluginvclient.h"
26 #include "pluginserver.h"
29 class BluebananaWindow;
31 class BluebananaThread;
33 class BluebananaActive;
34 class BluebananaA2Sel;
36 class BluebananaUnmask;
38 class BluebananaHActive;
39 class BluebananaSActive;
40 class BluebananaVActive;
41 class BluebananaFActive;
42 class BluebananaErode;
43 class BluebananaHAActive;
44 class BluebananaSAActive;
45 class BluebananaVAActive;
46 class BluebananaRAActive;
47 class BluebananaGAActive;
48 class BluebananaBAActive;
49 class BluebananaOAActive;
51 class BluebananaHSSlider;
52 class BluebananaSSSlider;
53 class BluebananaVSSlider;
54 class BluebananaFSSlider;
55 class BluebananaHASlider;
56 class BluebananaSASlider;
57 class BluebananaVASlider;
58 class BluebananaRASlider;
59 class BluebananaGASlider;
60 class BluebananaBASlider;
61 class BluebananaOASlider;
63 class BluebananaHSReadout0;
64 class BluebananaHSReadout1;
65 class BluebananaHSReadout2;
66 class BluebananaSSReadout0;
67 class BluebananaSSReadout1;
68 class BluebananaSSReadout2;
69 class BluebananaVSReadout0;
70 class BluebananaVSReadout1;
71 class BluebananaVSReadout2;
72 class BluebananaFSReadout0;
73 class BluebananaFSReadout1;
74 class BluebananaFSReadout2;
75 class BluebananaFSReadout3;
76 class BluebananaHAReadout;
77 class BluebananaSAReadout0;
78 class BluebananaSAReadout1;
79 class BluebananaSAReadout2;
80 class BluebananaVAReadout0;
81 class BluebananaVAReadout1;
82 class BluebananaVAReadout2;
83 class BluebananaRAReadout0;
84 class BluebananaRAReadout1;
85 class BluebananaRAReadout2;
86 class BluebananaGAReadout0;
87 class BluebananaGAReadout1;
88 class BluebananaGAReadout2;
89 class BluebananaBAReadout0;
90 class BluebananaBAReadout1;
91 class BluebananaBAReadout2;
92 class BluebananaOAReadout;
94 class BluebananaPreserve;
96 class BB_Tumble : public BC_TextBox {
98 BB_Tumble(BluebananaMain *plugin,
99 BluebananaWindow *gui,
106 virtual ~BB_Tumble() {}
109 virtual int value_event() { return 1; }
110 int update(float value){ return BC_TextBox::update(value); }
112 void reposition_window(int x, int y){
115 BC_TextBox::reposition_window(x,y,text_w,1);
123 BluebananaMain *plugin;
124 BluebananaWindow *gui;
129 int button_press_event();
130 int keypress_event();
136 class BluebananaWindow : public PluginClientWindow {
138 BluebananaWindow(BluebananaMain *plugin);
145 int slider_top_x_tumblers;
146 int slider_top_w_tumblers;
147 int slider_bottom_x_tumblers;
148 int slider_bottom_w_tumblers;
150 void create_objects();
152 void enter_config_change();
153 void commit_config_change();
154 void leave_config_change();
155 int flush_config_change();
165 void update_histograms(BluebananaMain *plugin);
166 int repeat_event(int64_t duration);
168 BluebananaMain *plugin;
170 BluebananaMark *mark;
171 BluebananaActive *active;
172 BluebananaA2Sel *use_mask;
173 BluebananaUnmask *capture_mask;
174 BluebananaIS *invert_selection;
176 BluebananaHActive *Hsel_active;
177 BluebananaSActive *Ssel_active;
178 BluebananaVActive *Vsel_active;
179 BluebananaFActive *Fsel_active;
180 BluebananaErode *Fsel_erode;
182 BluebananaHAActive *Hadj_active;
183 BluebananaSAActive *Sadj_active;
184 BluebananaVAActive *Vadj_active;
185 BluebananaRAActive *Radj_active;
186 BluebananaGAActive *Gadj_active;
187 BluebananaBAActive *Badj_active;
188 BluebananaOAActive *Oadj_active;
190 BluebananaHSSlider *Hsel_slider;
191 BluebananaHSReadout0 *Hsel_readout0;
192 BluebananaHSReadout1 *Hsel_readout1;
193 BluebananaHSReadout2 *Hsel_readout2;
195 BluebananaSSSlider *Ssel_slider;
196 BluebananaSSReadout0 *Ssel_readout0;
197 BluebananaSSReadout1 *Ssel_readout1;
198 BluebananaSSReadout2 *Ssel_readout2;
200 BluebananaVSSlider *Vsel_slider;
201 BluebananaVSReadout0 *Vsel_readout0;
202 BluebananaVSReadout1 *Vsel_readout1;
203 BluebananaVSReadout2 *Vsel_readout2;
205 BluebananaFSSlider *Fsel_slider;
206 BluebananaFSReadout0 *Fsel_readout0;
207 BluebananaFSReadout1 *Fsel_readout1;
208 BluebananaFSReadout2 *Fsel_readout2;
209 BluebananaFSReadout3 *Fsel_readout3;
211 BluebananaHASlider *Hadj_slider;
212 BluebananaHAReadout *Hadj_readout;
214 BluebananaSASlider *Sadj_slider;
215 BluebananaSAReadout0 *Sadj_readout0;
216 BluebananaSAReadout1 *Sadj_readout1;
217 BluebananaSAReadout2 *Sadj_readout2;
219 BluebananaVASlider *Vadj_slider;
220 BluebananaVAReadout0 *Vadj_readout0;
221 BluebananaVAReadout1 *Vadj_readout1;
222 BluebananaVAReadout2 *Vadj_readout2;
224 BluebananaRASlider *Radj_slider;
225 BluebananaRAReadout0 *Radj_readout0;
226 BluebananaRAReadout1 *Radj_readout1;
227 BluebananaRAReadout2 *Radj_readout2;
229 BluebananaGASlider *Gadj_slider;
230 BluebananaGAReadout0 *Gadj_readout0;
231 BluebananaGAReadout1 *Gadj_readout1;
232 BluebananaGAReadout2 *Gadj_readout2;
234 BluebananaBASlider *Badj_slider;
235 BluebananaBAReadout0 *Badj_readout0;
236 BluebananaBAReadout1 *Badj_readout1;
237 BluebananaBAReadout2 *Badj_readout2;
239 BluebananaOASlider *Oadj_slider;
240 BluebananaOAReadout *Oadj_readout;
242 //BluebananaPreserve *preserve_luma;
244 BC_Title *slider_labels[11];
245 BC_Title *erode_label;