add auto zoombar/status color, fix 3 batchrender boobies, rotate plugin tweaks, add...
[goodguy/cinelerra.git] / cinelerra-5.1 / plugins / findobj / findobjwindow.h
1
2 /*
3  * CINELERRA
4  * Copyright (C) 1997-2012 Adam Williams <broadcast at earthling dot net>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  */
21
22
23 #ifndef __FINDOBJWINDOW_H__
24 #define __FINDOBJWINDOW_H__
25
26 #include "dragcheckbox.h"
27 #include "findobj.inc"
28 #include "guicast.h"
29
30
31 class FindObjReset;
32 class FindObjLayer;
33 class FindObjScanFloat;
34 class FindObjScanFloatText;
35 class FindObjDrawSceneBorder;
36 class FindObjDrawObjectBorder;
37 class FindObjDrawReplaceBorder;
38 class FindObjDrawKeypoints;
39 class FindObjReplace;
40 class FindObjDragScene;
41 class FindObjDragObject;
42 class FindObjDragReplace;
43 class FindObjAlgorithm;
44 class FindObjUseFlann;
45 class FindObjDrawMatch;
46 class FindObjAspect;
47 class FindObjScale;
48 class FindObjRotate;
49 class FindObjTranslate;
50 class FindObjMode;
51 class FindObjBlend;
52 class FindObjWindow;
53
54 class FindObjReset : public BC_GenericButton
55 {
56 public:
57         FindObjReset(FindObjMain *plugin, FindObjWindow *gui, int x, int y);
58         int handle_event();
59         FindObjMain *plugin;
60         FindObjWindow *gui;
61 };
62
63 class FindObjLayer : public BC_TumbleTextBox
64 {
65 public:
66         FindObjLayer(FindObjMain *plugin, FindObjWindow *gui,
67                 int x, int y, int *value);
68         int handle_event();
69         static int calculate_w(FindObjWindow *gui);
70         FindObjMain *plugin;
71         FindObjWindow *gui;
72         int *value;
73 };
74
75 class FindObjScanFloat : public BC_FPot
76 {
77 public:
78         FindObjScanFloat(FindObjMain *plugin, FindObjWindow *gui, int x, int y,
79                 float *value, float min=0., float max=100.);
80         int handle_event();
81         void update(float v);
82         FindObjMain *plugin;
83         FindObjWindow *gui;
84         FindObjScanFloatText *center_text;
85         float *value;
86 };
87
88 class FindObjScanFloatText : public BC_TextBox
89 {
90 public:
91         FindObjScanFloatText(FindObjMain *plugin, FindObjWindow *gui, int x, int y, float *value);
92         int handle_event();
93         FindObjWindow *gui;
94         FindObjMain *plugin;
95         FindObjScanFloat *center;
96         float *value;
97 };
98
99
100 class FindObjDrawSceneBorder : public BC_CheckBox
101 {
102 public:
103         FindObjDrawSceneBorder(FindObjMain *plugin, FindObjWindow *gui, int x, int y);
104         int handle_event();
105         FindObjMain *plugin;
106         FindObjWindow *gui;
107 };
108
109 class FindObjDrawObjectBorder : public BC_CheckBox
110 {
111 public:
112         FindObjDrawObjectBorder(FindObjMain *plugin, FindObjWindow *gui, int x, int y);
113         int handle_event();
114         FindObjMain *plugin;
115         FindObjWindow *gui;
116 };
117
118 class FindObjDrawReplaceBorder : public BC_CheckBox
119 {
120 public:
121         FindObjDrawReplaceBorder(FindObjMain *plugin, FindObjWindow *gui, int x, int y);
122         int handle_event();
123         FindObjMain *plugin;
124         FindObjWindow *gui;
125 };
126
127 class FindObjDrawKeypoints : public BC_CheckBox
128 {
129 public:
130         FindObjDrawKeypoints(FindObjMain *plugin, FindObjWindow *gui, int x, int y);
131         int handle_event();
132         FindObjMain *plugin;
133         FindObjWindow *gui;
134 };
135
136 class FindObjReplace : public BC_CheckBox
137 {
138 public:
139         FindObjReplace(FindObjMain *plugin, FindObjWindow *gui, int x, int y);
140         int handle_event();
141         FindObjMain *plugin;
142         FindObjWindow *gui;
143 };
144
145 class FindObjDragScene : public DragCheckBox
146 {
147 public:
148         FindObjDragScene(FindObjMain *plugin, FindObjWindow *gui, int x, int y,
149                 float drag_x, float drag_y, float drag_w, float drag_h);
150         ~FindObjDragScene();
151         int handle_event();
152         Track *get_drag_track();
153         int64_t get_drag_position();
154         void update_gui();
155
156         FindObjMain *plugin;
157         FindObjWindow *gui;
158
159 };
160
161 class FindObjDragObject : public DragCheckBox
162 {
163 public:
164         FindObjDragObject(FindObjMain *plugin, FindObjWindow *gui, int x, int y,
165                 float drag_x, float drag_y, float drag_w, float drag_h);
166         ~FindObjDragObject();
167
168         int handle_event();
169         Track *get_drag_track();
170         int64_t get_drag_position();
171         void update_gui();
172
173         FindObjMain *plugin;
174         FindObjWindow *gui;
175 };
176
177 class FindObjDragReplace : public DragCheckBox
178 {
179 public:
180         FindObjDragReplace(FindObjMain *plugin, FindObjWindow *gui, int x, int y,
181                 float drag_x, float drag_y, float drag_w, float drag_h);
182         ~FindObjDragReplace();
183
184         int handle_event();
185         Track *get_drag_track();
186         int64_t get_drag_position();
187         void update_gui();
188
189         FindObjMain *plugin;
190         FindObjWindow *gui;
191 };
192
193 class FindObjAlgorithm : public BC_PopupMenu
194 {
195 public:
196         FindObjAlgorithm(FindObjMain *plugin, FindObjWindow *gui, int x, int y);
197         int handle_event();
198         void create_objects();
199         void update(int mode);
200         static int calculate_w(FindObjWindow *gui);
201         static int from_text(char *text);
202         static char* to_text(int mode);
203         FindObjMain *plugin;
204         FindObjWindow *gui;
205 };
206
207 class FindObjUseFlann : public BC_CheckBox
208 {
209 public:
210         FindObjUseFlann(FindObjMain *plugin, FindObjWindow *gui, int x, int y);
211         int handle_event();
212         FindObjMain *plugin;
213         FindObjWindow *gui;
214 };
215
216 class FindObjDrawMatch : public BC_CheckBox
217 {
218 public:
219         FindObjDrawMatch(FindObjMain *plugin, FindObjWindow *gui, int x, int y);
220         int handle_event();
221         FindObjMain *plugin;
222         FindObjWindow *gui;
223 };
224
225 class FindObjAspect : public BC_CheckBox
226 {
227 public:
228         FindObjAspect(FindObjMain *plugin, FindObjWindow *gui, int x, int y);
229         int handle_event();
230         FindObjMain *plugin;
231         FindObjWindow *gui;
232 };
233
234 class FindObjScale : public BC_CheckBox
235 {
236 public:
237         FindObjScale(FindObjMain *plugin, FindObjWindow *gui, int x, int y);
238         int handle_event();
239         FindObjMain *plugin;
240         FindObjWindow *gui;
241 };
242
243 class FindObjRotate : public BC_CheckBox
244 {
245 public:
246         FindObjRotate(FindObjMain *plugin, FindObjWindow *gui, int x, int y);
247         int handle_event();
248         FindObjMain *plugin;
249         FindObjWindow *gui;
250 };
251
252 class FindObjTranslate : public BC_CheckBox
253 {
254 public:
255         FindObjTranslate(FindObjMain *plugin, FindObjWindow *gui, int x, int y);
256         int handle_event();
257         FindObjMain *plugin;
258         FindObjWindow *gui;
259 };
260
261 class FindObjMode : public BC_PopupMenu
262 {
263 public:
264         FindObjMode(FindObjMain *plugin, FindObjWindow *gui, int x, int y);
265         int handle_event();
266         void create_objects();
267         void update(int mode);
268         static int calculate_w(FindObjWindow *gui);
269         static int from_text(char *text);
270         static char *to_text(int mode);
271         FindObjMain *plugin;
272         FindObjWindow *gui;
273 };
274
275 class FindObjBlend : public BC_IPot
276 {
277 public:
278         FindObjBlend(FindObjMain *plugin, int x, int y, int *value);
279         int handle_event();
280         FindObjMain *plugin;
281         int *value;
282 };
283
284 class FindObjWindow : public PluginClientWindow
285 {
286 public:
287         FindObjWindow(FindObjMain *plugin);
288         ~FindObjWindow();
289         void create_objects();
290         void update_drag();
291         void update_gui();
292
293         FindObjReset *reset;
294         FindObjAlgorithm *algorithm;
295         FindObjUseFlann *use_flann;
296         FindObjDrawMatch *draw_match;
297         FindObjMode *mode;
298         FindObjAspect *aspect;
299         FindObjScale *scale;
300         FindObjRotate *rotate;
301         FindObjTranslate *translate;
302         FindObjScanFloat *object_x, *object_y, *object_w, *object_h;
303         FindObjScanFloatText *object_x_text, *object_y_text, *object_w_text, *object_h_text;
304         FindObjScanFloat *scene_x, *scene_y, *scene_w, *scene_h;
305         FindObjScanFloatText *scene_x_text, *scene_y_text, *scene_w_text, *scene_h_text;
306         FindObjScanFloat *replace_x, *replace_y, *replace_w, *replace_h;
307         FindObjScanFloatText *replace_x_text, *replace_y_text, *replace_w_text, *replace_h_text;
308         FindObjScanFloat *replace_dx, *replace_dy;
309         FindObjScanFloatText *replace_dx_text, *replace_dy_text;
310         FindObjDrawKeypoints *draw_keypoints;
311         FindObjDrawSceneBorder *draw_scene_border;
312         FindObjReplace *replace_object;
313         FindObjDrawObjectBorder *draw_object_border;
314         FindObjDrawReplaceBorder *draw_replace_border;
315         FindObjDragObject *drag_object;
316         FindObjDragScene *drag_scene;
317         FindObjDragReplace *drag_replace;
318         FindObjLayer *object_layer;
319         FindObjLayer *scene_layer;
320         FindObjLayer *replace_layer;
321         FindObjBlend *blend;
322         FindObjMain *plugin;
323 };
324
325 #endif