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;
50 class BluebananaAAActive;
52 class BluebananaHSSlider;
53 class BluebananaSSSlider;
54 class BluebananaVSSlider;
55 class BluebananaFSSlider;
56 class BluebananaHASlider;
57 class BluebananaSASlider;
58 class BluebananaVASlider;
59 class BluebananaRASlider;
60 class BluebananaGASlider;
61 class BluebananaBASlider;
62 class BluebananaOASlider;
63 class BluebananaAASlider;
65 class BluebananaHSReadout0;
66 class BluebananaHSReadout1;
67 class BluebananaHSReadout2;
68 class BluebananaSSReadout0;
69 class BluebananaSSReadout1;
70 class BluebananaSSReadout2;
71 class BluebananaVSReadout0;
72 class BluebananaVSReadout1;
73 class BluebananaVSReadout2;
74 class BluebananaFSReadout0;
75 class BluebananaFSReadout1;
76 class BluebananaFSReadout2;
77 class BluebananaFSReadout3;
78 class BluebananaHAReadout;
79 class BluebananaSAReadout0;
80 class BluebananaSAReadout1;
81 class BluebananaSAReadout2;
82 class BluebananaVAReadout0;
83 class BluebananaVAReadout1;
84 class BluebananaVAReadout2;
85 class BluebananaRAReadout0;
86 class BluebananaRAReadout1;
87 class BluebananaRAReadout2;
88 class BluebananaGAReadout0;
89 class BluebananaGAReadout1;
90 class BluebananaGAReadout2;
91 class BluebananaBAReadout0;
92 class BluebananaBAReadout1;
93 class BluebananaBAReadout2;
94 class BluebananaOAReadout;
95 class BluebananaAAReadout;
97 class BluebananaPreserve;
99 class BB_Tumble : public BC_TextBox {
101 BB_Tumble(BluebananaMain *plugin,
102 BluebananaWindow *gui,
109 virtual ~BB_Tumble() {}
112 virtual int value_event() { return 1; }
113 int update(float value){ return BC_TextBox::update(value); }
115 void reposition_window(int x, int y){
118 BC_TextBox::reposition_window(x,y,text_w,1);
126 BluebananaMain *plugin;
127 BluebananaWindow *gui;
132 int button_press_event();
133 int keypress_event();
139 class BluebananaWindow : public PluginClientWindow {
141 BluebananaWindow(BluebananaMain *plugin);
148 int slider_top_x_tumblers;
149 int slider_top_w_tumblers;
150 int slider_bottom_x_tumblers;
151 int slider_bottom_w_tumblers;
153 void create_objects();
155 void enter_config_change();
156 void commit_config_change();
157 void leave_config_change();
158 int flush_config_change();
168 void update_histograms(BluebananaMain *plugin);
169 int repeat_event(int64_t duration);
171 BluebananaMain *plugin;
173 BluebananaMark *mark;
174 BluebananaActive *active;
175 BluebananaA2Sel *use_mask;
176 BluebananaUnmask *capture_mask;
177 BluebananaIS *invert_selection;
179 BluebananaHActive *Hsel_active;
180 BluebananaSActive *Ssel_active;
181 BluebananaVActive *Vsel_active;
182 BluebananaFActive *Fsel_active;
183 BluebananaErode *Fsel_erode;
185 BluebananaHAActive *Hadj_active;
186 BluebananaSAActive *Sadj_active;
187 BluebananaVAActive *Vadj_active;
188 BluebananaRAActive *Radj_active;
189 BluebananaGAActive *Gadj_active;
190 BluebananaBAActive *Badj_active;
191 BluebananaOAActive *Oadj_active;
192 BluebananaAAActive *Aadj_active;
194 BluebananaHSSlider *Hsel_slider;
195 BluebananaHSReadout0 *Hsel_readout0;
196 BluebananaHSReadout1 *Hsel_readout1;
197 BluebananaHSReadout2 *Hsel_readout2;
199 BluebananaSSSlider *Ssel_slider;
200 BluebananaSSReadout0 *Ssel_readout0;
201 BluebananaSSReadout1 *Ssel_readout1;
202 BluebananaSSReadout2 *Ssel_readout2;
204 BluebananaVSSlider *Vsel_slider;
205 BluebananaVSReadout0 *Vsel_readout0;
206 BluebananaVSReadout1 *Vsel_readout1;
207 BluebananaVSReadout2 *Vsel_readout2;
209 BluebananaFSSlider *Fsel_slider;
210 BluebananaFSReadout0 *Fsel_readout0;
211 BluebananaFSReadout1 *Fsel_readout1;
212 BluebananaFSReadout2 *Fsel_readout2;
213 BluebananaFSReadout3 *Fsel_readout3;
215 BluebananaHASlider *Hadj_slider;
216 BluebananaHAReadout *Hadj_readout;
218 BluebananaSASlider *Sadj_slider;
219 BluebananaSAReadout0 *Sadj_readout0;
220 BluebananaSAReadout1 *Sadj_readout1;
221 BluebananaSAReadout2 *Sadj_readout2;
223 BluebananaVASlider *Vadj_slider;
224 BluebananaVAReadout0 *Vadj_readout0;
225 BluebananaVAReadout1 *Vadj_readout1;
226 BluebananaVAReadout2 *Vadj_readout2;
228 BluebananaRASlider *Radj_slider;
229 BluebananaRAReadout0 *Radj_readout0;
230 BluebananaRAReadout1 *Radj_readout1;
231 BluebananaRAReadout2 *Radj_readout2;
233 BluebananaGASlider *Gadj_slider;
234 BluebananaGAReadout0 *Gadj_readout0;
235 BluebananaGAReadout1 *Gadj_readout1;
236 BluebananaGAReadout2 *Gadj_readout2;
238 BluebananaBASlider *Badj_slider;
239 BluebananaBAReadout0 *Badj_readout0;
240 BluebananaBAReadout1 *Badj_readout1;
241 BluebananaBAReadout2 *Badj_readout2;
243 BluebananaOASlider *Oadj_slider;
244 BluebananaOAReadout *Oadj_readout;
245 BluebananaAASlider *Aadj_slider;
246 BluebananaAAReadout *Aadj_readout;
248 //BluebananaPreserve *preserve_luma;
250 BC_Title *slider_labels[12];
251 BC_Title *erode_label;