add auto zoombar/status color, fix 3 batchrender boobies, rotate plugin tweaks, add...
[goodguy/cinelerra.git] / cinelerra-5.1 / plugins / bluebanana / bluebananawindow.h
1 /*
2  * Cinelerra :: Blue Banana - color modification plugin for Cinelerra-CV
3  * Copyright (C) 2012-2013 Monty <monty@xiph.org>
4  *
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.
9  *
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.
14  *
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
18  *
19  */
20
21 #ifndef BLUEBANANAWINDOW_H
22 #define BLUEBANANAWINDOW_H
23
24 #include "bccolors.h"
25 #include "pluginvclient.h"
26 #include "pluginserver.h"
27 #include "mwindow.h"
28
29 class BluebananaWindow;
30 class BluebananaMain;
31 class BluebananaThread;
32 class BluebananaMark;
33 class BluebananaActive;
34 class BluebananaOp;
35 class BluebananaA2Sel;
36 class BluebananaIS;
37 class BluebananaUnmask;
38
39 class BluebananaHActive;
40 class BluebananaSActive;
41 class BluebananaVActive;
42 class BluebananaFActive;
43 class BluebananaErode;
44 class BluebananaHAActive;
45 class BluebananaSAActive;
46 class BluebananaVAActive;
47 class BluebananaRAActive;
48 class BluebananaGAActive;
49 class BluebananaBAActive;
50 class BluebananaOAActive;
51 class BluebananaAAActive;
52
53 class BluebananaHSSlider;
54 class BluebananaSSSlider;
55 class BluebananaVSSlider;
56 class BluebananaFSSlider;
57 class BluebananaHASlider;
58 class BluebananaSASlider;
59 class BluebananaVASlider;
60 class BluebananaRASlider;
61 class BluebananaGASlider;
62 class BluebananaBASlider;
63 class BluebananaOASlider;
64 class BluebananaAASlider;
65
66 class BluebananaHSReadout0;
67 class BluebananaHSReadout1;
68 class BluebananaHSReadout2;
69 class BluebananaSSReadout0;
70 class BluebananaSSReadout1;
71 class BluebananaSSReadout2;
72 class BluebananaVSReadout0;
73 class BluebananaVSReadout1;
74 class BluebananaVSReadout2;
75 class BluebananaFSReadout0;
76 class BluebananaFSReadout1;
77 class BluebananaFSReadout2;
78 class BluebananaFSReadout3;
79 class BluebananaHAReadout;
80 class BluebananaSAReadout0;
81 class BluebananaSAReadout1;
82 class BluebananaSAReadout2;
83 class BluebananaVAReadout0;
84 class BluebananaVAReadout1;
85 class BluebananaVAReadout2;
86 class BluebananaRAReadout0;
87 class BluebananaRAReadout1;
88 class BluebananaRAReadout2;
89 class BluebananaGAReadout0;
90 class BluebananaGAReadout1;
91 class BluebananaGAReadout2;
92 class BluebananaBAReadout0;
93 class BluebananaBAReadout1;
94 class BluebananaBAReadout2;
95 class BluebananaOAReadout;
96 class BluebananaAAReadout;
97
98 class BluebananaPreserve;
99
100 class BB_Tumble : public BC_TextBox {
101  public:
102   BB_Tumble(BluebananaMain *plugin,
103             BluebananaWindow *gui,
104             float min,
105             float mid,
106             float max,
107             int precision,
108             float inc,
109             int text_w);
110   virtual ~BB_Tumble() {}
111
112   int handle_event();
113   virtual int value_event() { return 1; }
114   int update(float value){ return BC_TextBox::update(value); }
115   float get_value();
116   void reposition_window(int x, int y){
117     this->x = x;
118     this->y = y;
119     BC_TextBox::reposition_window(x,y,text_w,1);
120   }
121
122  protected:
123   int x, y, text_w;
124   float min,mid,max;
125   int precision;
126   float increment;
127   BluebananaMain *plugin;
128   BluebananaWindow *gui;
129
130  private:
131   int activate();
132   int deactivate();
133   int button_press_event();
134   int keypress_event();
135   int active;
136   int suppress_events;
137   float prev;
138 };
139
140 class BluebananaWindow : public PluginClientWindow {
141 public:
142         BluebananaWindow(BluebananaMain *plugin);
143         ~BluebananaWindow();
144
145         int windowx;
146         int windowy;
147         int slider_x;
148         int slider_w;
149         int slider_top_x_tumblers;
150         int slider_top_w_tumblers;
151         int slider_bottom_x_tumblers;
152         int slider_bottom_w_tumblers;
153
154         void create_objects();
155         int close_event();
156         void enter_config_change();
157         void commit_config_change();
158         void leave_config_change();
159         int flush_config_change();
160
161         int config_refcount;
162         int config_change;
163         int config_produce;
164         int config_consume;
165         int config_pending;
166
167         void update();
168         void render();
169         void update_histograms(BluebananaMain *plugin);
170         int repeat_event(int64_t duration);
171
172         BluebananaMain *plugin;
173
174         BluebananaMark *mark;
175         BluebananaOp *op;
176         BluebananaActive *active;
177         BluebananaA2Sel *use_mask;
178         BluebananaUnmask *capture_mask;
179         BluebananaIS *invert_selection;
180
181         BluebananaHActive *Hsel_active;
182         BluebananaSActive *Ssel_active;
183         BluebananaVActive *Vsel_active;
184         BluebananaFActive *Fsel_active;
185         BluebananaErode *Fsel_erode;
186
187         BluebananaHAActive *Hadj_active;
188         BluebananaSAActive *Sadj_active;
189         BluebananaVAActive *Vadj_active;
190         BluebananaRAActive *Radj_active;
191         BluebananaGAActive *Gadj_active;
192         BluebananaBAActive *Badj_active;
193         BluebananaOAActive *Oadj_active;
194         BluebananaAAActive *Aadj_active;
195
196         BluebananaHSSlider *Hsel_slider;
197         BluebananaHSReadout0 *Hsel_readout0;
198         BluebananaHSReadout1 *Hsel_readout1;
199         BluebananaHSReadout2 *Hsel_readout2;
200
201         BluebananaSSSlider *Ssel_slider;
202         BluebananaSSReadout0 *Ssel_readout0;
203         BluebananaSSReadout1 *Ssel_readout1;
204         BluebananaSSReadout2 *Ssel_readout2;
205
206         BluebananaVSSlider *Vsel_slider;
207         BluebananaVSReadout0 *Vsel_readout0;
208         BluebananaVSReadout1 *Vsel_readout1;
209         BluebananaVSReadout2 *Vsel_readout2;
210
211         BluebananaFSSlider *Fsel_slider;
212         BluebananaFSReadout0 *Fsel_readout0;
213         BluebananaFSReadout1 *Fsel_readout1;
214         BluebananaFSReadout2 *Fsel_readout2;
215         BluebananaFSReadout3 *Fsel_readout3;
216
217         BluebananaHASlider *Hadj_slider;
218         BluebananaHAReadout *Hadj_readout;
219
220         BluebananaSASlider *Sadj_slider;
221         BluebananaSAReadout0 *Sadj_readout0;
222         BluebananaSAReadout1 *Sadj_readout1;
223         BluebananaSAReadout2 *Sadj_readout2;
224
225         BluebananaVASlider *Vadj_slider;
226         BluebananaVAReadout0 *Vadj_readout0;
227         BluebananaVAReadout1 *Vadj_readout1;
228         BluebananaVAReadout2 *Vadj_readout2;
229
230         BluebananaRASlider *Radj_slider;
231         BluebananaRAReadout0 *Radj_readout0;
232         BluebananaRAReadout1 *Radj_readout1;
233         BluebananaRAReadout2 *Radj_readout2;
234
235         BluebananaGASlider *Gadj_slider;
236         BluebananaGAReadout0 *Gadj_readout0;
237         BluebananaGAReadout1 *Gadj_readout1;
238         BluebananaGAReadout2 *Gadj_readout2;
239
240         BluebananaBASlider *Badj_slider;
241         BluebananaBAReadout0 *Badj_readout0;
242         BluebananaBAReadout1 *Badj_readout1;
243         BluebananaBAReadout2 *Badj_readout2;
244
245         BluebananaOASlider *Oadj_slider;
246         BluebananaOAReadout *Oadj_readout;
247         BluebananaAASlider *Aadj_slider;
248         BluebananaAAReadout *Aadj_readout;
249
250         //BluebananaPreserve *preserve_luma;
251
252         BC_Title *slider_labels[12];
253         BC_Title *erode_label;
254         int do_render;
255 };
256
257
258 #endif