r793: Small API addon, so plugins can 'see' camera and projector automation
[cinelerra_cv/mob.git] / cinelerra / channeledit.h
blob9e0800e5cf2817b9ed8cf403f8d4b662dffc89f0
1 #ifndef CHANNELEDIT_H
2 #define CHANNELEDIT_H
4 #include "bcdialog.h"
5 #include "guicast.h"
6 #include "channel.inc"
7 #include "channeldb.inc"
8 #include "channelpicker.inc"
9 #include "condition.inc"
10 #include "mainprogress.inc"
11 #include "mutex.inc"
12 #include "mwindow.inc"
13 #include "picture.inc"
14 #include "record.h"
16 class ChannelEditWindow;
17 class ScanThread;
19 class ChannelEditThread : public Thread
21 public:
22 ChannelEditThread(MWindow *mwindow,
23 ChannelPicker *channel_picker,
24 ChannelDB *channeldb,
25 Record *Record);
26 ~ChannelEditThread();
27 void run();
28 int close_threads();
29 char* value_to_freqtable(int value);
30 char* value_to_norm(int value);
31 char* value_to_input(int value);
33 Condition *completion;
34 int in_progress;
35 int current_channel;
36 Channel scan_params;
37 ChannelPicker *channel_picker;
38 ChannelDB *channeldb;
39 ChannelDB *new_channels;
40 ChannelEditWindow *window;
41 ScanThread *scan_thread;
42 MWindow *mwindow;
43 Record *record;
46 class ChannelEditList;
47 class ChannelEditEditThread;
48 class ChannelEditPictureThread;
49 class ConfirmScanThread;
51 class ChannelEditWindow : public BC_Window
53 public:
54 ChannelEditWindow(MWindow *mwindow, ChannelEditThread *thread, ChannelPicker *channel_picker);
55 ~ChannelEditWindow();
57 int create_objects();
58 int close_event();
59 int add_channel(); // Start the thread for adding a channel
60 int delete_channel(int channel);
61 int delete_channel(Channel *channel);
62 int edit_channel();
63 int edit_picture();
64 int update_list(); // Synchronize the list box with the channel arrays
65 int update_list(Channel *channel); // Synchronize the list box and the channel
66 int update_output();
67 int move_channel_up();
68 int move_channel_down();
69 int change_channel_from_list(int channel_number);
70 void sort();
71 void scan_confirm();
72 void scan();
75 ArrayList<BC_ListBoxItem*> channel_list;
76 ChannelEditList *list_box;
77 ChannelEditThread *thread;
78 ChannelPicker *channel_picker;
79 ChannelEditEditThread *edit_thread;
80 ChannelEditPictureThread *picture_thread;
81 MWindow *mwindow;
82 ConfirmScanThread *scan_confirm_thread;
85 class ChannelEditSelect : public BC_GenericButton
87 public:
88 ChannelEditSelect(MWindow *mwindow, ChannelEditWindow *window, int x, int y);
89 ~ChannelEditSelect();
90 int handle_event();
91 ChannelEditWindow *window;
95 class ChannelEditAdd : public BC_GenericButton
97 public:
98 ChannelEditAdd(MWindow *mwindow, ChannelEditWindow *window, int x, int y);
99 ~ChannelEditAdd();
100 int handle_event();
101 ChannelEditWindow *window;
104 class ChannelEditList : public BC_ListBox
106 public:
107 ChannelEditList(MWindow *mwindow, ChannelEditWindow *window, int x, int y);
108 ~ChannelEditList();
109 int handle_event();
110 ChannelEditWindow *window;
111 static char *column_titles[2];
114 class ChannelEditMoveUp : public BC_GenericButton
116 public:
117 ChannelEditMoveUp(MWindow *mwindow, ChannelEditWindow *window, int x, int y);
118 ~ChannelEditMoveUp();
119 int handle_event();
120 ChannelEditWindow *window;
123 class ChannelEditMoveDown : public BC_GenericButton
125 public:
126 ChannelEditMoveDown(MWindow *mwindow, ChannelEditWindow *window, int x, int y);
127 ~ChannelEditMoveDown();
128 int handle_event();
129 ChannelEditWindow *window;
132 class ChannelEditSort : public BC_GenericButton
134 public:
135 ChannelEditSort(MWindow *mwindow, ChannelEditWindow *window, int x, int y);
136 int handle_event();
137 ChannelEditWindow *window;
140 class ChannelEditScan : public BC_GenericButton
142 public:
143 ChannelEditScan(MWindow *mwindow, ChannelEditWindow *window, int x, int y);
144 int handle_event();
145 ChannelEditWindow *window;
148 class ChannelEditDel : public BC_GenericButton
150 public:
151 ChannelEditDel(MWindow *mwindow, ChannelEditWindow *window, int x, int y);
152 ~ChannelEditDel();
153 int handle_event();
154 ChannelEditWindow *window;
157 class ChannelEdit : public BC_GenericButton
159 public:
160 ChannelEdit(MWindow *mwindow, ChannelEditWindow *window, int x, int y);
161 ~ChannelEdit();
162 int handle_event();
163 ChannelEditWindow *window;
166 class ChannelEditPicture : public BC_GenericButton
168 public:
169 ChannelEditPicture(MWindow *mwindow, ChannelEditWindow *window, int x, int y);
170 ~ChannelEditPicture();
171 int handle_event();
172 ChannelEditWindow *window;
181 // ============================== Confirm overwrite with scanning
183 class ConfirmScan : public BC_Window
185 public:
186 ConfirmScan(ChannelEditWindow *gui, int x, int y);
187 void create_objects();
188 ChannelEditWindow *gui;
191 class ConfirmScanThread : public BC_DialogThread
193 public:
194 ConfirmScanThread(ChannelEditWindow *gui);
195 void handle_done_event(int result);
196 BC_Window* new_gui();
197 ChannelEditWindow *gui;
204 // ============================= Scan
206 class ScanThread : public Thread
208 public:
209 ScanThread(ChannelEditThread *edit);
210 ~ScanThread();
212 void start();
213 void run();
215 ChannelEditThread *edit;
216 int interrupt;
217 MainProgressBar *progress;
226 // ============================= Edit a single channel
228 class ChannelEditEditSource;
229 class ChannelEditEditWindow;
231 class ChannelEditEditThread : public Thread
233 public:
234 ChannelEditEditThread(ChannelEditWindow *window,
235 ChannelPicker *channel_picker,
236 Record *record);
237 ~ChannelEditEditThread();
239 void run();
240 int edit_channel(Channel *channel, int editing);
241 void set_device(); // Set the device to the new channel
242 int change_source(char *source_name); // Change to the source matching the name
243 int source_up();
244 int source_down();
245 int set_input(int value);
246 int set_norm(int value);
247 int set_freqtable(int value);
248 int close_threads();
250 Channel new_channel;
251 Channel *output_channel;
252 ChannelPicker *channel_picker;
253 ChannelEditWindow *window;
254 ChannelEditEditSource *source_text;
255 ChannelEditEditWindow *edit_window;
256 Record *record;
257 int editing; // Tells whether or not to delete the channel on cancel
258 int in_progress; // Allow only 1 thread at a time
259 int user_title;
260 Condition *completion;
263 class ChannelEditEditTitle;
266 class ChannelEditEditWindow : public BC_Window
268 public:
269 ChannelEditEditWindow(ChannelEditEditThread *thread,
270 ChannelEditWindow *window,
271 ChannelPicker *channel_picker);
272 ~ChannelEditEditWindow();
273 int create_objects(Channel *channel);
275 ChannelEditEditThread *thread;
276 ChannelEditWindow *window;
277 ChannelEditEditTitle *title_text;
278 Channel *new_channel;
279 ChannelPicker *channel_picker;
282 class ChannelEditEditTitle : public BC_TextBox
284 public:
285 ChannelEditEditTitle(int x, int y, ChannelEditEditThread *thread);
286 ~ChannelEditEditTitle();
287 int handle_event();
288 ChannelEditEditThread *thread;
291 class ChannelEditEditSource : public BC_TextBox
293 public:
294 ChannelEditEditSource(int x, int y, ChannelEditEditThread *thread);
295 ~ChannelEditEditSource();
296 int handle_event();
297 ChannelEditEditThread *thread;
300 class ChannelEditEditSourceTumbler : public BC_Tumbler
302 public:
303 ChannelEditEditSourceTumbler(int x, int y, ChannelEditEditThread *thread);
304 ~ChannelEditEditSourceTumbler();
305 int handle_up_event();
306 int handle_down_event();
307 ChannelEditEditThread *thread;
310 class ChannelEditEditInput : public BC_PopupMenu
312 public:
313 ChannelEditEditInput(int x,
314 int y,
315 ChannelEditEditThread *thread,
316 ChannelEditThread *edit);
317 ~ChannelEditEditInput();
318 int add_items();
319 int handle_event();
320 ChannelEditEditThread *thread;
321 ChannelEditThread *edit;
324 class ChannelEditEditInputItem : public BC_MenuItem
326 public:
327 ChannelEditEditInputItem(ChannelEditEditThread *thread,
328 ChannelEditThread *edit,
329 char *text,
330 int value);
331 ~ChannelEditEditInputItem();
332 int handle_event();
333 ChannelEditEditThread *thread;
334 ChannelEditThread *edit;
335 int value;
338 class ChannelEditEditNorm : public BC_PopupMenu
340 public:
341 ChannelEditEditNorm(int x,
342 int y,
343 ChannelEditEditThread *thread,
344 ChannelEditThread *edit);
345 ~ChannelEditEditNorm();
346 int add_items();
347 ChannelEditEditThread *thread;
348 ChannelEditThread *edit;
351 class ChannelEditEditNormItem : public BC_MenuItem
353 public:
354 ChannelEditEditNormItem(ChannelEditEditThread *thread,
355 ChannelEditThread *edit,
356 char *text,
357 int value);
358 ~ChannelEditEditNormItem();
359 int handle_event();
360 ChannelEditEditThread *thread;
361 ChannelEditThread *edit;
362 int value;
365 class ChannelEditEditFreqtable : public BC_PopupMenu
367 public:
368 ChannelEditEditFreqtable(int x,
369 int y,
370 ChannelEditEditThread *thread,
371 ChannelEditThread *edit);
372 ~ChannelEditEditFreqtable();
374 int add_items();
376 ChannelEditEditThread *thread;
377 ChannelEditThread *edit;
380 class ChannelEditEditFreqItem : public BC_MenuItem
382 public:
383 ChannelEditEditFreqItem(ChannelEditEditThread *thread,
384 ChannelEditThread *edit,
385 char *text,
386 int value);
387 ~ChannelEditEditFreqItem();
389 int handle_event();
390 ChannelEditEditThread *thread;
391 ChannelEditThread *edit;
392 int value;
395 class ChannelEditEditFine : public BC_ISlider
397 public:
398 ChannelEditEditFine(int x, int y, ChannelEditEditThread *thread);
399 ~ChannelEditEditFine();
400 int handle_event();
401 ChannelEditEditThread *thread;
404 // =================== Edit the picture quality
407 class ChannelEditPictureWindow;
409 class ChannelEditPictureThread : public Thread
411 public:
412 ChannelEditPictureThread(ChannelPicker *channel_picker, ChannelEditWindow *window);
413 ~ChannelEditPictureThread();
415 void run();
416 int close_threads();
417 int edit_picture();
419 int in_progress; // Allow only 1 thread at a time
420 Condition *completion;
421 ChannelPicker *channel_picker;
422 ChannelEditWindow *window;
423 ChannelEditPictureWindow *edit_window;
426 class ChannelEditPictureWindow : public BC_Window
428 public:
429 ChannelEditPictureWindow(ChannelEditPictureThread *thread,
430 ChannelPicker *channel_picker);
431 ~ChannelEditPictureWindow();
433 int calculate_h(ChannelPicker *channel_picker);
434 int create_objects();
436 ChannelEditPictureThread *thread;
437 ChannelPicker *channel_picker;
440 class ChannelEditBright : public BC_IPot
442 public:
443 ChannelEditBright(int x, int y, ChannelPicker *channel_picker, int value);
444 ~ChannelEditBright();
445 int handle_event();
446 int button_release_event();
447 ChannelPicker *channel_picker;
450 class ChannelEditContrast : public BC_IPot
452 public:
453 ChannelEditContrast(int x, int y, ChannelPicker *channel_picker, int value);
454 ~ChannelEditContrast();
455 int handle_event();
456 int button_release_event();
457 ChannelPicker *channel_picker;
460 class ChannelEditColor : public BC_IPot
462 public:
463 ChannelEditColor(int x, int y, ChannelPicker *channel_picker, int value);
464 ~ChannelEditColor();
465 int handle_event();
466 int button_release_event();
467 ChannelPicker *channel_picker;
470 class ChannelEditHue : public BC_IPot
472 public:
473 ChannelEditHue(int x, int y, ChannelPicker *channel_picker, int value);
474 ~ChannelEditHue();
475 int handle_event();
476 int button_release_event();
477 ChannelPicker *channel_picker;
480 class ChannelEditWhiteness : public BC_IPot
482 public:
483 ChannelEditWhiteness(int x, int y, ChannelPicker *channel_picker, int value);
484 ~ChannelEditWhiteness();
485 int handle_event();
486 int button_release_event();
487 ChannelPicker *channel_picker;
492 class ChannelEditCommon : public BC_IPot
494 public:;
495 ChannelEditCommon(int x,
496 int y,
497 ChannelPicker *channel_picker,
498 PictureItem *item);
499 ~ChannelEditCommon();
500 int handle_event();
501 int button_release_event();
502 ChannelPicker *channel_picker;
503 int device_id;
508 #endif