rework proxy scaler, fix crop-gui coord, video_data tweak for proxy_format
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / assetpopup.h
1
2 /*
3  * CINELERRA
4  * Copyright (C) 2008 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 #ifndef ASSETPOPUP_H
23 #define ASSETPOPUP_H
24
25 #include "assetedit.inc"
26 #include "assetpopup.inc"
27 #include "awindowgui.inc"
28 #include "edl.inc"
29 #include "guicast.h"
30 #include "assets.inc"
31 #include "mwindow.inc"
32
33
34
35 class AssetPopup : public BC_PopupMenu
36 {
37 public:
38         AssetPopup(MWindow *mwindow, AWindowGUI *gui);
39         ~AssetPopup();
40
41         void create_objects();
42 // Set mainsession with the current selections
43         int update();
44         void paste_assets();
45         void match_size();
46         void match_rate();
47         void match_all();
48
49         MWindow *mwindow;
50         AWindowGUI *gui;
51
52
53         AssetPopupInfo *info;
54         AssetPopupBuildIndex *index;
55         AssetPopupView *view;
56         AssetPopupViewWindow *view_window;
57         AssetPopupOpenMixer *open_mixer;
58         AssetPopupInsertMixer *insert_mixer;
59         AWindowListFormat *format;
60 };
61
62 class AssetPopupInfo : public BC_MenuItem
63 {
64 public:
65         AssetPopupInfo(MWindow *mwindow, AssetPopup *popup);
66         ~AssetPopupInfo();
67
68         int handle_event();
69         int button_press_event();
70
71         MWindow *mwindow;
72         AssetPopup *popup;
73 };
74
75 class AssetPopupSort : public BC_MenuItem
76 {
77 public:
78         AssetPopupSort(MWindow *mwindow, AssetPopup *popup);
79         ~AssetPopupSort();
80
81         int handle_event();
82
83         MWindow *mwindow;
84         AssetPopup *popup;
85 };
86
87 class AssetPopupBuildIndex : public BC_MenuItem
88 {
89 public:
90         AssetPopupBuildIndex(MWindow *mwindow, AssetPopup *popup);
91         ~AssetPopupBuildIndex();
92
93         int handle_event();
94
95         MWindow *mwindow;
96         AssetPopup *popup;
97 };
98
99
100 class AssetPopupView : public BC_MenuItem
101 {
102 public:
103         AssetPopupView(MWindow *mwindow, AssetPopup *popup);
104         ~AssetPopupView();
105
106         int handle_event();
107
108         MWindow *mwindow;
109         AssetPopup *popup;
110 };
111
112
113 class AssetPopupViewWindow : public BC_MenuItem
114 {
115 public:
116         AssetPopupViewWindow(MWindow *mwindow, AssetPopup *popup);
117         ~AssetPopupViewWindow();
118
119         int handle_event();
120
121         MWindow *mwindow;
122         AssetPopup *popup;
123 };
124
125 class AssetPopupOpenMixer : public BC_MenuItem
126 {
127 public:
128         AssetPopupOpenMixer(MWindow *mwindow, AssetPopup *popup);
129         ~AssetPopupOpenMixer();
130
131         int handle_event();
132
133         MWindow *mwindow;
134         AssetPopup *popup;
135 };
136
137 class AssetPopupInsertMixer : public BC_MenuItem
138 {
139 public:
140         AssetPopupInsertMixer(MWindow *mwindow, AssetPopup *popup);
141         ~AssetPopupInsertMixer();
142
143         int handle_event();
144
145         MWindow *mwindow;
146         AssetPopup *popup;
147 };
148
149 class AssetPopupPaste : public BC_MenuItem
150 {
151 public:
152         AssetPopupPaste(MWindow *mwindow, AssetPopup *popup);
153         ~AssetPopupPaste();
154
155         int handle_event();
156
157         MWindow *mwindow;
158         AssetPopup *popup;
159 };
160
161 class AssetMatchSize : public BC_MenuItem
162 {
163 public:
164         AssetMatchSize(MWindow *mwindow, AssetPopup *popup);
165
166         int handle_event();
167
168         MWindow *mwindow;
169         AssetPopup *popup;
170 };
171
172 class AssetMatchRate : public BC_MenuItem
173 {
174 public:
175         AssetMatchRate(MWindow *mwindow, AssetPopup *popup);
176
177         int handle_event();
178
179         MWindow *mwindow;
180         AssetPopup *popup;
181 };
182
183 class AssetMatchAll : public BC_MenuItem
184 {
185 public:
186         AssetMatchAll(MWindow *mwindow, AssetPopup *popup);
187
188         int handle_event();
189
190         MWindow *mwindow;
191         AssetPopup *popup;
192 };
193
194 class AssetPopupProjectRemove : public BC_MenuItem
195 {
196 public:
197         AssetPopupProjectRemove(MWindow *mwindow, AssetPopup *popup);
198         ~AssetPopupProjectRemove();
199
200         int handle_event();
201
202         MWindow *mwindow;
203         AssetPopup *popup;
204 };
205
206 class AssetPopupDiskRemove : public BC_MenuItem
207 {
208 public:
209         AssetPopupDiskRemove(MWindow *mwindow, AssetPopup *popup);
210         ~AssetPopupDiskRemove();
211
212         int handle_event();
213
214         MWindow *mwindow;
215         AssetPopup *popup;
216 };
217
218 class AssetListMenu : public BC_PopupMenu
219 {
220 public:
221         AssetListMenu(MWindow *mwindow, AWindowGUI *gui);
222         ~AssetListMenu();
223
224         void create_objects();
225         void update_titles(int shots);
226
227         MWindow *mwindow;
228         AWindowGUI *gui;
229         AssetPopupLoadFile *load_file;
230         AWindowListFormat *format;
231         AssetSnapshot *asset_snapshot;
232         AssetGrabshot *asset_grabshot;
233         AssetSelectUsed *select_used;
234         int shots_displayed;
235 };
236
237 class AssetPopupLoadFile : public BC_MenuItem
238 {
239 public:
240         AssetPopupLoadFile(MWindow *mwindow, AWindowGUI *gui);
241         ~AssetPopupLoadFile();
242
243         int handle_event();
244
245         MWindow *mwindow;
246         AWindowGUI *gui;
247 };
248
249 class AssetListCopy : public BC_MenuItem
250 {
251 public:
252         AssetListCopy(MWindow *mwindow, AWindowGUI *gui);
253         ~AssetListCopy();
254
255         int handle_event();
256
257         MWindow *mwindow;
258         AWindowGUI *gui;
259         AssetCopyDialog *copy_dialog;
260 };
261
262 class AssetCopyDialog : public BC_DialogThread
263 {
264 public:
265         AssetCopyDialog(AssetListCopy *copy);
266         ~AssetCopyDialog();
267
268         void start(char *text, int x, int y);
269         BC_Window* new_gui();
270         void handle_done_event(int result);
271         void handle_close_event(int result);
272
273         char *text;
274         int x, y;
275         AssetListCopy *copy;
276         AssetCopyWindow *copy_window;
277 };
278
279 class AssetCopyWindow : public BC_Window
280 {
281 public:
282         AssetCopyWindow(AssetCopyDialog *copy_dialog);
283         ~AssetCopyWindow();
284
285         void create_objects();
286         int resize_event(int w, int h);
287
288         AssetCopyDialog *copy_dialog;
289         BC_ScrollTextBox *file_list;
290 };
291
292 class AssetListPaste : public BC_MenuItem
293 {
294 public:
295         AssetListPaste(MWindow *mwindow, AWindowGUI *gui);
296         ~AssetListPaste();
297
298         int handle_event();
299
300         MWindow *mwindow;
301         AWindowGUI *gui;
302         AssetPasteDialog *paste_dialog;
303 };
304
305 class AssetPasteDialog : public BC_DialogThread
306 {
307 public:
308         AssetPasteDialog(AssetListPaste *paste);
309         ~AssetPasteDialog();
310
311         BC_Window* new_gui();
312         void handle_done_event(int result);
313         void handle_close_event(int result);
314         void start(int x, int y);
315
316         AssetListPaste *paste;
317         AssetPasteWindow *paste_window;
318         int x, y;
319 };
320
321 class AssetPasteWindow : public BC_Window
322 {
323 public:
324         AssetPasteWindow(AssetPasteDialog *paste_dialog);
325         ~AssetPasteWindow();
326
327         void create_objects();
328         int resize_event(int w, int h);
329
330         AssetPasteDialog *paste_dialog;
331         BC_ScrollTextBox *file_list;
332 };
333
334 class AssetSnapshot : public BC_MenuItem
335 {
336 public:
337         AssetSnapshot(MWindow *mwindow, AssetListMenu *asset_list_menu);
338         ~AssetSnapshot();
339
340         MWindow *mwindow;
341         AssetListMenu *asset_list_menu;
342 };
343
344 class SnapshotSubMenu : public BC_SubMenu
345 {
346 public:
347         SnapshotSubMenu(AssetSnapshot *asset_snapshot);
348         ~SnapshotSubMenu();
349
350         AssetSnapshot *asset_snapshot;
351 };
352
353 class SnapshotMenuItem : public BC_MenuItem
354 {
355 public:
356         SnapshotMenuItem(SnapshotSubMenu *submenu, const char *text, int mode);
357         ~SnapshotMenuItem();
358
359         int handle_event();
360         SnapshotSubMenu *submenu;
361         int mode;
362 };
363
364
365 class AssetGrabshot : public BC_MenuItem
366 {
367 public:
368         AssetGrabshot(MWindow *mwindow, AssetListMenu *asset_list_menu);
369         ~AssetGrabshot();
370
371         MWindow *mwindow;
372         AssetListMenu *asset_list_menu;
373 };
374
375 class GrabshotSubMenu : public BC_SubMenu
376 {
377 public:
378         GrabshotSubMenu(AssetGrabshot *asset_grabshot);
379         ~GrabshotSubMenu();
380
381         AssetGrabshot *asset_grabshot;
382 };
383
384 class GrabshotMenuItem : public BC_MenuItem
385 {
386 public:
387         GrabshotMenuItem(GrabshotSubMenu *submenu, const char *text, int mode);
388         ~GrabshotMenuItem();
389
390         int handle_event();
391         GrabshotSubMenu *submenu;
392         int mode;
393         GrabshotThread *grab_thread;
394 };
395
396 class GrabshotThread : public Thread
397 {
398 public:
399         GrabshotThread(MWindow* mwindow);
400         ~GrabshotThread();
401
402         MWindow *mwindow;
403         GrabshotPopup *popup;
404         BC_Popup *edge[4];
405         int done;
406
407         void start(GrabshotMenuItem *menu_item);
408         void run();
409 };
410
411 class GrabshotPopup : public BC_Popup
412 {
413 public:
414         GrabshotPopup(GrabshotThread *grab_thread, int mode);
415         ~GrabshotPopup();
416         int grab_event(XEvent *event);
417         void draw_selection(int invert);
418         void update();
419
420         GrabshotThread *grab_thread;
421         int mode;
422         int dragging;
423         int grab_color;
424         int x0, y0, x1, y1;
425         int lx0, ly0, lx1, ly1;
426 };
427
428 #endif