add focus centroid to masking, mod mask reset/mode btns, add sticky to mask fade...
[goodguy/cinelerra.git] / cinelerra-5.1 / plugins / theme_suv / suv.C
1
2 /*
3  * CINELERRA
4  * Copyright (C) 1997-2014 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 #include "bcsignals.h"
23 #include "clip.h"
24 #include "cwindowgui.h"
25 #include "suv.h"
26 #include "edl.h"
27 #include "edlsession.h"
28 #include "mainmenu.h"
29 #include "mainsession.h"
30 #include "mbuttons.h"
31 #include "meterpanel.h"
32 #include "mwindow.h"
33 #include "mwindowgui.h"
34 #include "new.h"
35 #include "patchbay.h"
36 #include "preferencesthread.h"
37 #include "recordgui.h"
38 #include "recordmonitor.h"
39 #include "setformat.h"
40 #include "statusbar.h"
41 #include "timebar.h"
42 #include "trackcanvas.h"
43 #include "vframe.h"
44 #include "vwindowgui.h"
45
46
47
48
49 PluginClient* new_plugin(PluginServer *server)
50 {
51         return new SUVMain(server);
52 }
53
54
55
56
57
58
59
60 SUVMain::SUVMain(PluginServer *server)
61  : PluginTClient(server)
62 {
63 }
64
65 SUVMain::~SUVMain()
66 {
67 }
68 const char* SUVMain::plugin_title() { return N_("S.U.V."); }
69
70 Theme* SUVMain::new_theme()
71 {
72         theme = new SUV;
73         extern unsigned char _binary_theme_suv_data_start[];
74         theme->set_data(_binary_theme_suv_data_start);
75         return theme;
76 }
77
78
79
80
81
82
83
84
85 SUV::SUV()
86  : Theme()
87 {
88 }
89
90 SUV::~SUV()
91 {
92         delete camerakeyframe_data;
93         delete channel_position_data;
94         delete keyframe_data;
95         delete maskkeyframe_data;
96         delete modekeyframe_data;
97         delete pankeyframe_data;
98         delete projectorkeyframe_data;
99 }
100
101 void SUV::initialize()
102 {
103         BC_Resources *resources = BC_WindowBase::get_resources();
104
105
106         resources->text_default = 0xbfbfbf;
107         resources->text_background = 0x373737;
108         resources->text_background_disarmed = 0xaf0000;
109         resources->text_border1 = 0x202020;
110         resources->text_border2 = 0x373737;
111         resources->text_border3 = 0x373737;
112         resources->text_border4 = 0x969696;
113         resources->text_inactive_highlight = 0x707070;
114
115         resources->bg_color = 0x484848;
116         resources->border_light2 = resources->bg_color;
117         resources->border_shadow2 = resources->bg_color;
118         resources->default_text_color = 0xbfbfbf;
119         resources->menu_title_text = 0xbfbfbf;
120         resources->popup_title_text = 0xbfbfbf;
121         resources->menu_item_text = 0xbfbfbf;
122         resources->menu_highlighted_fontcolor = WHITE;
123         resources->generic_button_margin = 30;
124         resources->pot_needle_color = resources->text_default;
125         resources->pot_offset = 1;
126         resources->progress_text = resources->text_default;
127         resources->meter_font_color = resources->default_text_color;
128
129         resources->menu_light = 0xababab;
130         resources->menu_highlighted = 0x6f6f6f;
131         resources->menu_down = 0x4b4b4b;
132         resources->menu_up = 0x4b4b4b;
133         resources->menu_shadow = 0x202020;
134         resources->popupmenu_margin = 15;
135         resources->popupmenu_triangle_margin = 20;
136
137         resources->listbox_title_color = 0xbfbfbf;
138
139         resources->listbox_title_margin = 20;
140         resources->listbox_title_hotspot = 20;
141         resources->listbox_border1 = 0x1a1a1a;
142         resources->listbox_border2 = 0x373737;
143         resources->listbox_border3 = 0x373737;
144         resources->listbox_border4 = 0x646464;
145         resources->listbox_highlighted = 0x505050;
146         resources->listbox_inactive = 0x373737;
147         resources->listbox_bg = 0;
148         resources->listbox_text = 0xbfbfbf;
149
150         resources->filebox_margin = 130;
151         resources->file_color = 0xbfbfbf;
152         resources->directory_color = 0xa0a0ff;
153
154
155         new_toggle("loadmode_new.png",
156                 "loadmode_up.png",
157                 "loadmode_hi.png",
158                 "loadmode_checked.png",
159                 "loadmode_dn.png",
160                 "loadmode_checkedhi.png",
161                 "loadmode_new");
162         new_toggle("loadmode_none.png",
163                 "loadmode_up.png",
164                 "loadmode_hi.png",
165                 "loadmode_checked.png",
166                 "loadmode_dn.png",
167                 "loadmode_checkedhi.png",
168                 "loadmode_none");
169         new_toggle("loadmode_newcat.png",
170                 "loadmode_up.png",
171                 "loadmode_hi.png",
172                 "loadmode_checked.png",
173                 "loadmode_dn.png",
174                 "loadmode_checkedhi.png",
175                 "loadmode_newcat");
176         new_toggle("loadmode_cat.png",
177                 "loadmode_up.png",
178                 "loadmode_hi.png",
179                 "loadmode_checked.png",
180                 "loadmode_dn.png",
181                 "loadmode_checkedhi.png",
182                 "loadmode_cat");
183         new_toggle("loadmode_newtracks.png",
184                 "loadmode_up.png",
185                 "loadmode_hi.png",
186                 "loadmode_checked.png",
187                 "loadmode_dn.png",
188                 "loadmode_checkedhi.png",
189                 "loadmode_newtracks");
190         new_toggle("loadmode_paste.png",
191                 "loadmode_up.png",
192                 "loadmode_hi.png",
193                 "loadmode_checked.png",
194                 "loadmode_dn.png",
195                 "loadmode_checkedhi.png",
196                 "loadmode_paste");
197         new_toggle("loadmode_resource.png",
198                 "loadmode_up.png",
199                 "loadmode_hi.png",
200                 "loadmode_checked.png",
201                 "loadmode_dn.png",
202                 "loadmode_checkedhi.png",
203                 "loadmode_resource");
204         new_toggle("loadmode_nested.png",
205                 "loadmode_up.png",
206                 "loadmode_hi.png",
207                 "loadmode_checked.png",
208                 "loadmode_dn.png",
209                 "loadmode_checkedhi.png",
210                 "loadmode_nested");
211
212
213         resources->filebox_icons_images = new_button("icons.png",
214                 "fileboxbutton_up.png",
215                 "fileboxbutton_hi.png",
216                 "fileboxbutton_dn.png",
217                 "filebox_icons");
218
219         resources->filebox_text_images = new_button("text.png",
220                 "fileboxbutton_up.png",
221                 "fileboxbutton_hi.png",
222                 "fileboxbutton_dn.png",
223                 "filebox_text");
224
225         resources->filebox_newfolder_images = new_button("folder.png",
226                 "fileboxbutton_up.png",
227                 "fileboxbutton_hi.png",
228                 "fileboxbutton_dn.png",
229                 "filebox_newfolder");
230
231         resources->filebox_rename_images = new_button("rename.png",
232                 "fileboxbutton_up.png",
233                 "fileboxbutton_hi.png",
234                 "fileboxbutton_dn.png",
235                 "filebox_rename");
236
237         resources->filebox_updir_images = new_button("updir.png",
238                 "fileboxbutton_up.png",
239                 "fileboxbutton_hi.png",
240                 "fileboxbutton_dn.png",
241                 "filebox_updir");
242
243         resources->filebox_delete_images = new_button("delete.png",
244                 "fileboxbutton_up.png",
245                 "fileboxbutton_hi.png",
246                 "fileboxbutton_dn.png",
247                 "filebox_delete");
248
249         resources->filebox_reload_images = new_button("reload.png",
250                 "fileboxbutton_up.png",
251                 "fileboxbutton_hi.png",
252                 "fileboxbutton_dn.png",
253                 "filebox_reload");
254
255
256         resources->filebox_descend_images = new_button("openfolder.png",
257                 "filebox_bigbutton_up.png",
258                 "filebox_bigbutton_hi.png",
259                 "filebox_bigbutton_dn.png",
260                 "filebox_descend");
261
262         resources->usethis_button_images =
263                 resources->ok_images = new_button("ok.png",
264                 "filebox_bigbutton_up.png",
265                 "filebox_bigbutton_hi.png",
266                 "filebox_bigbutton_dn.png",
267                 "ok_button");
268
269         new_button("ok.png",
270                 "new_bigbutton_up.png",
271                 "new_bigbutton_hi.png",
272                 "new_bigbutton_dn.png",
273                 "new_ok_images");
274
275         new_button("reset.png",
276                 "reset_up.png",
277                 "reset_hi.png",
278                 "reset_dn.png",
279                 "reset_button");
280
281         resources->cancel_images = new_button("cancel.png",
282                 "filebox_bigbutton_up.png",
283                 "filebox_bigbutton_hi.png",
284                 "filebox_bigbutton_dn.png",
285                 "cancel_button");
286
287         new_button("cancel.png",
288                 "new_bigbutton_up.png",
289                 "new_bigbutton_hi.png",
290                 "new_bigbutton_dn.png",
291                 "new_cancel_images");
292
293         resources->medium_7segment = new_image_set(TOTAL_7SEGMENT,
294                 "0.png",
295                 "1.png",
296                 "2.png",
297                 "3.png",
298                 "4.png",
299                 "5.png",
300                 "6.png",
301                 "7.png",
302                 "8.png",
303                 "9.png",
304                 "colon.png",
305                 "period.png",
306                 "a.png",
307                 "b.png",
308                 "c.png",
309                 "d.png",
310                 "e.png",
311                 "f.png",
312                 "space.png",
313                 "dash.png");
314
315         resources->bar_data = new_image("bar", "bar.png");
316         resources->check = new_image("check", "check.png");
317
318         resources->min_menu_w = 96;
319         resources->menu_popup_bg = new_image("menu_popup_bg.png");
320         resources->menu_item_bg = new_image_set(3,
321                 "menuitem_up.png",
322                 "menuitem_hi.png",
323                 "menuitem_dn.png");
324         resources->menu_bar_bg = new_image("menubar_bg.png");
325         resources->menu_title_bg = new_image_set(3,
326                 "menubar_up.png",
327                 "menubar_hi.png",
328                 "menubar_dn.png");
329
330
331         resources->popupmenu_images = 0;
332 //              new_image_set(3,
333 //              "menupopup_up.png",
334 //              "menupopup_hi.png",
335 //              "menupopup_dn.png");
336
337         resources->toggle_highlight_bg = new_image("toggle_highlight_bg",
338                 "text_highlight.png");
339
340         resources->generic_button_images = new_image_set(3,
341                         "generic_up.png",
342                         "generic_hi.png",
343                         "generic_dn.png");
344         resources->horizontal_slider_data = new_image_set(6,
345                         "hslider_fg_up.png",
346                         "hslider_fg_hi.png",
347                         "hslider_fg_dn.png",
348                         "hslider_bg_up.png",
349                         "hslider_bg_hi.png",
350                         "hslider_bg_dn.png");
351         resources->vertical_slider_data = new_image_set(6,
352                         "hslider_fg_up.png",
353                         "hslider_fg_hi.png",
354                         "hslider_fg_dn.png",
355                         "hslider_bg_up.png",
356                         "hslider_bg_hi.png",
357                         "hslider_bg_dn.png");
358         for( int i=0; i<6; ++i )
359                 resources->vertical_slider_data[i]->rotate90();
360
361         resources->progress_images = new_image_set(2,
362                         "progress_bg.png",
363                         "progress_hi.png");
364         resources->tumble_data = new_image_set(4,
365                 "tumble_up.png",
366                 "tumble_hi.png",
367                 "tumble_bottom.png",
368                 "tumble_top.png");
369         resources->listbox_button = new_button4("listbox_button.png",
370                 "editpanel_up.png",
371                 "editpanel_hi.png",
372                 "editpanel_dn.png",
373                 "editpanel_hi.png",
374                 "listbox_button");
375         resources->listbox_column = new_image_set(3,
376                 "column_up.png",
377                 "column_hi.png",
378                 "column_dn.png");
379         resources->listbox_up = new_image("listbox_up.png");
380         resources->listbox_dn = new_image("listbox_dn.png");
381         resources->pan_data = new_image_set(7,
382                         "pan_up.png",
383                         "pan_hi.png",
384                         "pan_popup.png",
385                         "pan_channel.png",
386                         "pan_stick.png",
387                         "pan_channel_small.png",
388                         "pan_stick_small.png");
389         resources->pan_text_color = WHITE;
390
391         resources->pot_images = new_image_set(3,
392                 "pot_up.png",
393                 "pot_hi.png",
394                 "pot_dn.png");
395
396         resources->checkbox_images = new_image_set(5,
397                 "checkbox_up.png",
398                 "checkbox_hi.png",
399                 "checkbox_checked.png",
400                 "checkbox_dn.png",
401                 "checkbox_checkedhi.png");
402
403         resources->radial_images = new_image_set(5,
404                 "radial_up.png",
405                 "radial_hi.png",
406                 "radial_checked.png",
407                 "radial_dn.png",
408                 "radial_checkedhi.png");
409
410         resources->xmeter_images = new_image_set(7,
411                 "xmeter_normal.png",
412                 "xmeter_green.png",
413                 "xmeter_red.png",
414                 "xmeter_yellow.png",
415                 "xmeter_white.png",
416                 "xmeter_over.png",
417                 "downmix51_2.png");
418         resources->ymeter_images = new_image_set(7,
419                 "ymeter_normal.png",
420                 "ymeter_green.png",
421                 "ymeter_red.png",
422                 "ymeter_yellow.png",
423                 "ymeter_white.png",
424                 "ymeter_over.png",
425                 "downmix51_2.png");
426
427         resources->hscroll_data = new_image_set(10,
428                         "hscroll_handle_up.png",
429                         "hscroll_handle_hi.png",
430                         "hscroll_handle_dn.png",
431                         "hscroll_handle_bg.png",
432                         "hscroll_left_up.png",
433                         "hscroll_left_hi.png",
434                         "hscroll_left_dn.png",
435                         "hscroll_right_up.png",
436                         "hscroll_right_hi.png",
437                         "hscroll_right_dn.png");
438
439         resources->vscroll_data = new_image_set(10,
440                         "vscroll_handle_up.png",
441                         "vscroll_handle_hi.png",
442                         "vscroll_handle_dn.png",
443                         "vscroll_handle_bg.png",
444                         "vscroll_left_up.png",
445                         "vscroll_left_hi.png",
446                         "vscroll_left_dn.png",
447                         "vscroll_right_up.png",
448                         "vscroll_right_hi.png",
449                         "vscroll_right_dn.png");
450         resources->scroll_minhandle = 20;
451
452
453         new_button("prevtip.png", "tipbutton_up.png", "tipbutton_hi.png", "tipbutton_dn.png", "prev_tip");
454         new_button("nexttip.png", "tipbutton_up.png", "tipbutton_hi.png", "tipbutton_dn.png", "next_tip");
455         new_button("closetip.png", "tipbutton_up.png", "tipbutton_hi.png", "tipbutton_dn.png", "close_tip");
456         new_button("swap_extents.png",
457                 "editpanel_up.png",
458                 "editpanel_hi.png",
459                 "editpanel_dn.png",
460                 "swap_extents");
461
462
463 // Record windows
464
465
466         preferences_category_overlap = 0;
467         preferencescategory_x = 0;
468         preferencescategory_y = 5;
469         preferencestitle_x = 5;
470         preferencestitle_y = 10;
471         preferencesoptions_x = 5;
472         preferencesoptions_y = 0;
473
474 // MWindow
475         message_normal = resources->text_default;
476         audio_color = GREEN;
477         mtransport_margin = 16;
478         toggle_margin = 16;
479
480         new_button("pane.png", "pane_up.png", "pane_hi.png", "pane_dn.png", "pane");
481         new_image_set("xpane", 3, "xpane_up.png", "xpane_hi.png", "xpane_dn.png");
482         new_image_set("ypane", 3, "ypane_up.png", "ypane_hi.png", "ypane_dn.png");
483
484         new_image("mbutton_bg", "mbutton_bg.png");
485         new_image("timebar_bg", "timebar_bg_flat.png");
486         new_image("timebar_brender", "timebar_brender.png");
487         new_image("clock_bg", "mclock_flat.png");
488         new_image("patchbay_bg", "patchbay_bg.png");
489         new_image("statusbar", "statusbar.png");
490 //      new_image("mscroll_filler", "mscroll_filler.png");
491
492         new_image_set("zoombar_menu", 3, "zoompopup_up.png", "zoompopup_hi.png", "zoompopup_dn.png");
493         new_image_set("zoombar_tumbler", 4, "zoomtumble_up.png", "zoomtumble_hi.png", "zoomtumble_bottom.png", "zoomtumble_top.png");
494         new_image_set("plugin_on", 5, "plugin_on.png", "plugin_onhi.png", "plugin_onselect.png", "plugin_ondn.png", "plugin_onselecthi.png");
495         new_image_set("plugin_show", 5, "plugin_show.png", "plugin_showhi.png", "plugin_showselect.png", "plugin_showdn.png", "plugin_showselecthi.png");
496
497 // CWindow
498         new_image("cpanel_bg", "cpanel_bg.png");
499         new_image("cbuttons_left", "cbuttons_left.png");
500         new_image("cbuttons_right", "cbuttons_right.png");
501         new_image("cmeter_bg", "cmeter_bg.png");
502
503 // VWindow
504         new_image("vbuttons_left", "vbuttons_left.png");
505         new_image("vclock", "vclock.png");
506
507         new_image("preferences_bg", "preferences_bg.png");
508
509
510         new_image("new_bg", "new_bg.png");
511         new_image("setformat_bg", "setformat_bg.png");
512
513
514         timebar_view_data = new_image("timebar_view.png");
515
516         setformat_w = get_image("setformat_bg")->get_w();
517         setformat_h = get_image("setformat_bg")->get_h();
518         setformat_x1 = 15;
519         setformat_x2 = 100;
520
521         setformat_x3 = 315;
522         setformat_x4 = 415;
523         setformat_y1 = 20;
524         setformat_y2 = 85;
525         setformat_y3 = 125;
526         setformat_margin = 30;
527         setformat_channels_x = 25;
528         setformat_channels_y = 242;
529         setformat_channels_w = 250;
530         setformat_channels_h = 250;
531
532         loadfile_pad = get_image_set("loadmode_new")[0]->get_h() + 10;
533         browse_pad = 20;
534
535
536         new_toggle("playpatch.png",
537                 "patch_up.png",
538                 "patch_hi.png",
539                 "patch_checked.png",
540                 "patch_dn.png",
541                 "patch_checkedhi.png",
542                 "playpatch_data");
543
544         new_toggle("recordpatch.png",
545                 "patch_up.png",
546                 "patch_hi.png",
547                 "patch_checked.png",
548                 "patch_dn.png",
549                 "patch_checkedhi.png",
550                 "recordpatch_data");
551
552         new_toggle("gangpatch.png",
553                 "patch_up.png",
554                 "patch_hi.png",
555                 "patch_checked.png",
556                 "patch_dn.png",
557                 "patch_checkedhi.png",
558                 "gangpatch_data");
559
560         new_toggle("drawpatch.png",
561                 "patch_up.png",
562                 "patch_hi.png",
563                 "patch_checked.png",
564                 "patch_dn.png",
565                 "patch_checkedhi.png",
566                 "drawpatch_data");
567
568
569         new_image_set("mutepatch_data",
570                 5,
571                 "mutepatch_up.png",
572                 "mutepatch_hi.png",
573                 "mutepatch_checked.png",
574                 "mutepatch_dn.png",
575                 "mutepatch_checkedhi.png");
576
577         new_image_set("expandpatch_data",
578                 5,
579                 "expandpatch_up.png",
580                 "expandpatch_hi.png",
581                 "expandpatch_checked.png",
582                 "expandpatch_dn.png",
583                 "expandpatch_checkedhi.png");
584
585         build_bg_data();
586         build_overlays();
587
588
589
590
591         out_point = new_image_set(5,
592                 "out_up.png",
593                 "out_hi.png",
594                 "out_checked.png",
595                 "out_dn.png",
596                 "out_checkedhi.png");
597         in_point = new_image_set(5,
598                 "in_up.png",
599                 "in_hi.png",
600                 "in_checked.png",
601                 "in_dn.png",
602                 "in_checkedhi.png");
603
604         label_toggle = new_image_set(5,
605                 "labeltoggle_up.png",
606                 "labeltoggle_uphi.png",
607                 "label_checked.png",
608                 "labeltoggle_dn.png",
609                 "label_checkedhi.png");
610
611         ffmpeg_toggle = new_image_set(5,
612                 "ff_up.png",
613                 "ff_hi.png",
614                 "ff_checked.png",
615                 "ff_down.png",
616                 "ff_checkedhi.png");
617
618         proxy_p_toggle = new_image_set(5,
619                 "proxy_p_up.png",
620                 "proxy_p_hi.png",
621                 "proxy_p_chkd.png",
622                 "proxy_p_down.png",
623                 "proxy_p_chkdhi.png");
624
625         proxy_s_toggle = new_image_set(5,
626                 "proxy_s_up.png",
627                 "proxy_s_hi.png",
628                 "proxy_s_chkd.png",
629                 "proxy_s_down.png",
630                 "proxy_s_chkdhi.png");
631
632         mask_mode_toggle = new_image_set(5,
633                 "mask_mode_up.png",
634                 "mask_mode_hi.png",
635                 "mask_mode_chkd.png",
636                 "mask_mode_down.png",
637                 "mask_mode_chkdhi.png");
638
639         shbtn_data = new_image_set(3,
640                 "shbtn_up.png",
641                 "shbtn_hi.png",
642                 "shbtn_dn.png");
643
644         new_image_set("preset_edit",
645                 3,
646                 "preset_edit0.png",
647                 "preset_edit1.png",
648                 "preset_edit2.png");
649
650         new_image_set("histogram_carrot",
651                 5,
652                 "histogram_carrot_up.png",
653                 "histogram_carrot_hi.png",
654                 "histogram_carrot_checked.png",
655                 "histogram_carrot_dn.png",
656                 "histogram_carrot_checkedhi.png");
657
658
659         statusbar_cancel_data = new_image_set(3,
660                 "statusbar_cancel_up.png",
661                 "statusbar_cancel_hi.png",
662                 "statusbar_cancel_dn.png");
663
664
665         VFrame *editpanel_up = new_image("editpanel_up.png");
666         VFrame *editpanel_hi = new_image("editpanel_hi.png");
667         VFrame *editpanel_dn = new_image("editpanel_dn.png");
668         VFrame *editpanel_checked = new_image("editpanel_checked.png");
669         VFrame *editpanel_checkedhi = new_image("editpanel_checkedhi.png");
670
671         new_image("panel_divider", "panel_divider.png");
672         new_button("bottom_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "bottom_justify");
673         new_button("center_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "center_justify");
674         new_button("channel.png", editpanel_up, editpanel_hi, editpanel_dn, "channel");
675         new_button("lok.png", editpanel_up, editpanel_hi, editpanel_dn, "lok");
676
677         new_toggle("histogram_toggle.png",
678                 editpanel_up,
679                 editpanel_hi,
680                 editpanel_checked,
681                 editpanel_dn,
682                 editpanel_checkedhi,
683                 "histogram_toggle");
684         new_toggle("histogram_rgb.png",
685                 editpanel_up,
686                 editpanel_hi,
687                 editpanel_checked,
688                 editpanel_dn,
689                 editpanel_checkedhi,
690                 "histogram_rgb_toggle");
691         new_toggle("waveform.png",
692                 editpanel_up,
693                 editpanel_hi,
694                 editpanel_checked,
695                 editpanel_dn,
696                 editpanel_checkedhi,
697                 "waveform_toggle");
698         new_toggle("waveform_rgb.png",
699                 editpanel_up,
700                 editpanel_hi,
701                 editpanel_checked,
702                 editpanel_dn,
703                 editpanel_checkedhi,
704                 "waveform_rgb_toggle");
705         new_toggle("scope.png",
706                 editpanel_up,
707                 editpanel_hi,
708                 editpanel_checked,
709                 editpanel_dn,
710                 editpanel_checkedhi,
711                 "scope_toggle");
712
713         new_button("picture.png", editpanel_up, editpanel_hi, editpanel_dn, "picture");
714         new_button("histogram_img.png", editpanel_up, editpanel_hi, editpanel_dn, "histogram_img");
715
716
717         new_button("copy.png", editpanel_up, editpanel_hi, editpanel_dn, "copy");
718         new_button("commercial.png", editpanel_up, editpanel_hi, editpanel_dn, "commercial");
719         new_button("cut.png", editpanel_up, editpanel_hi, editpanel_dn, "cut");
720         new_button("fit.png", editpanel_up, editpanel_hi, editpanel_dn, "fit");
721         new_button("fitautos.png", editpanel_up, editpanel_hi, editpanel_dn, "fitautos");
722         new_button("inpoint.png", editpanel_up, editpanel_hi, editpanel_dn, "inbutton");
723         new_button("label.png", editpanel_up, editpanel_hi, editpanel_dn, "labelbutton");
724         new_button("left_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "left_justify");
725         new_button("magnify.png", editpanel_up, editpanel_hi, editpanel_dn, "magnify_button");
726         new_button("middle_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "middle_justify");
727         new_button("nextlabel.png", editpanel_up, editpanel_hi, editpanel_dn, "nextlabel");
728         new_button("prevlabel.png", editpanel_up, editpanel_hi, editpanel_dn, "prevlabel");
729         new_button("nextedit.png", editpanel_up, editpanel_hi, editpanel_dn, "nextedit");
730         new_button("prevedit.png", editpanel_up, editpanel_hi, editpanel_dn, "prevedit");
731         new_button("outpoint.png", editpanel_up, editpanel_hi, editpanel_dn, "outbutton");
732         over_button = new_button("over.png", editpanel_up, editpanel_hi, editpanel_dn, "overbutton");
733         overwrite_data = new_button("overwrite.png", editpanel_up, editpanel_hi, editpanel_dn, "overwritebutton");
734         new_button("paste.png", editpanel_up, editpanel_hi, editpanel_dn, "paste");
735         new_button("redo.png", editpanel_up, editpanel_hi, editpanel_dn, "redo");
736         new_button("right_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "right_justify");
737         splice_data = new_button("splice.png", editpanel_up, editpanel_hi, editpanel_dn, "slicebutton");
738         new_button("toclip.png", editpanel_up, editpanel_hi, editpanel_dn, "toclip");
739         new_button("goto.png", editpanel_up, editpanel_hi, editpanel_dn, "goto");
740         new_button("top_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "top_justify");
741         new_button("undo.png", editpanel_up, editpanel_hi, editpanel_dn, "undo");
742         new_button("wrench.png", editpanel_up, editpanel_hi, editpanel_dn, "wrench");
743
744
745         VFrame *transport_up = new_image("transportup.png");
746         VFrame *transport_hi = new_image("transporthi.png");
747         VFrame *transport_dn = new_image("transportdn.png");
748
749         new_button("end.png", transport_up, transport_hi, transport_dn, "end");
750         new_button("fastfwd.png", transport_up, transport_hi, transport_dn, "fastfwd");
751         new_button("fastrev.png", transport_up, transport_hi, transport_dn, "fastrev");
752         new_button("play.png", transport_up, transport_hi, transport_dn, "play");
753         new_button("framefwd.png", transport_up, transport_hi, transport_dn, "framefwd");
754         new_button("framerev.png", transport_up, transport_hi, transport_dn, "framerev");
755         new_button("pause.png", transport_up, transport_hi, transport_dn, "pause");
756         new_button("record.png", transport_up, transport_hi, transport_dn, "record");
757         new_button("singleframe.png", transport_up, transport_hi, transport_dn, "recframe");
758         new_button("reverse.png", transport_up, transport_hi, transport_dn, "reverse");
759         new_button("rewind.png", transport_up, transport_hi, transport_dn, "rewind");
760         new_button("stop.png", transport_up, transport_hi, transport_dn, "stop");
761         new_button("stop.png", transport_up, transport_hi, transport_dn, "stoprec");
762
763
764
765 // CWindow icons
766         new_image("cwindow_inactive", "cwindow_inactive.png");
767         new_image("cwindow_active", "cwindow_active.png");
768
769
770
771         new_image_set("category_button",
772                 3,
773                 "preferencesbutton_dn.png",
774                 "preferencesbutton_dnhi.png",
775                 "preferencesbutton_dnlo.png");
776
777         new_image_set("category_button_checked",
778                 3,
779                 "preferencesbutton_up.png",
780                 "preferencesbutton_uphi.png",
781                 "preferencesbutton_dnlo.png");
782
783
784
785
786
787         new_image_set("color3way_point",
788                 3,
789                 "color3way_up.png",
790                 "color3way_hi.png",
791                 "color3way_dn.png");
792
793         new_toggle("arrow.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "arrow");
794         new_toggle("autokeyframe.png", transport_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "autokeyframe");
795         new_toggle("ibeam.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "ibeam");
796         new_toggle("show_meters.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "meters");
797         new_toggle("blank30x30.png",
798                    new_image("locklabels_locked.png"),
799                    new_image("locklabels_lockedhi.png"),
800                    new_image("locklabels_unlocked.png"),
801                    new_image("locklabels_dn.png"), // can't have seperate down for each!!??
802                    new_image("locklabels_unlockedhi.png"),
803                    "locklabels");
804
805         VFrame *cpanel_up = new_image("cpanel_up.png");
806         VFrame *cpanel_hi = new_image("cpanel_hi.png");
807         VFrame *cpanel_dn = new_image("cpanel_dn.png");
808         VFrame *cpanel_checked = new_image("cpanel_checked.png");
809         VFrame *cpanel_checkedhi = new_image("cpanel_checkedhi.png");
810
811
812         new_toggle("camera.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "camera");
813         new_toggle("crop.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "crop");
814         new_toggle("eyedrop.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "eyedrop");
815         new_toggle("magnify.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "magnify");
816         new_toggle("mask.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "mask");
817         new_toggle("ruler.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "ruler");
818         new_toggle("projector.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "projector");
819         new_toggle("protect.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "protect");
820         new_toggle("titlesafe.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "titlesafe");
821         new_toggle("toolwindow.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "tool");
822
823         // toggle for tangent mode (compositor/tool window)
824         new_toggle("tan_smooth.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "tan_smooth");
825         new_toggle("tan_linear.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "tan_linear");
826
827
828         flush_images();
829
830         title_font = MEDIUMFONT_3D;
831         title_color = 0xbfbfbf;
832         recordgui_fixed_color = YELLOW;
833         recordgui_variable_color = RED;
834
835         channel_position_color = MEYELLOW;
836         resources->meter_title_w = 25;
837
838         // (asset) edit info text color
839         edit_font_color = YELLOW;
840 }
841
842 #define VWINDOW_METER_MARGIN 5
843
844
845
846
847
848
849
850
851
852
853
854 void SUV::build_bg_data()
855 {
856 // Audio settings
857         channel_position_data = new VFramePng(get_image_data("channel_position.png"));
858
859 // Track bitmaps
860         new_image("resource1024", "resource1024.png");
861         new_image("resource512", "resource512.png");
862         new_image("resource256", "resource256.png");
863         new_image("resource128", "resource128.png");
864         new_image("resource64", "resource64.png");
865         new_image("resource32", "resource32.png");
866         new_image("plugin_bg_data", "plugin_bg.png");
867         new_image("title_bg_data", "title_bg.png");
868         new_image("vtimebar_bg_data", "vwindow_timebar.png");
869 }
870
871
872
873 void SUV::build_overlays()
874 {
875         keyframe_data = new VFramePng(get_image_data("keyframe3.png"));
876         camerakeyframe_data = new VFramePng(get_image_data("camerakeyframe.png"));
877         maskkeyframe_data = new VFramePng(get_image_data("maskkeyframe.png"));
878         modekeyframe_data = new VFramePng(get_image_data("modekeyframe.png"));
879         pankeyframe_data = new VFramePng(get_image_data("pankeyframe.png"));
880         projectorkeyframe_data = new VFramePng(get_image_data("projectorkeyframe.png"));
881 }
882
883
884
885
886
887
888
889
890
891 void SUV::draw_rwindow_bg(RecordGUI *gui)
892 {
893 //      int y;
894 //      int margin = 50;
895 //      int margin2 = 80;
896 //      gui->draw_9segment(recordgui_batch_x - margin,
897 //              0,
898 //              mwindow->session->rwindow_w - recordgui_status_x + margin,
899 //              recordgui_buttons_y,
900 //              rgui_batch);
901 //      gui->draw_3segmenth(recordgui_options_x - margin2,
902 //              recordgui_buttons_y - 5,
903 //              mwindow->session->rwindow_w - recordgui_options_x + margin2,
904 //              rgui_controls);
905 //      y = recordgui_buttons_y - 5 + rgui_controls->get_h();
906 //      gui->draw_9segment(0,
907 //              y,
908 //              mwindow->session->rwindow_w,
909 //              mwindow->session->rwindow_h - y,
910 //              rgui_list);
911 }
912
913 void SUV::draw_rmonitor_bg(RecordMonitorGUI *gui)
914 {
915 //      int margin = 45;
916 //      int panel_w = 300;
917 //      int x = rmonitor_meter_x - margin;
918 //      int w = mwindow->session->rmonitor_w - x;
919 //      if(w < rmonitor_meters->get_w()) w = rmonitor_meters->get_w();
920 //      gui->clear_box(0,
921 //              0,
922 //              mwindow->session->rmonitor_w,
923 //              mwindow->session->rmonitor_h);
924 //      gui->draw_9segment(x,
925 //              0,
926 //              w,
927 //              mwindow->session->rmonitor_h,
928 //              rmonitor_meters);
929 }
930
931
932
933
934
935
936 void SUV::draw_mwindow_bg(MWindowGUI *gui)
937 {
938 // Button bar
939         gui->draw_3segmenth(mbuttons_x, mbuttons_y - 1,
940                 gui->menu_w(), get_image("mbutton_bg"));
941
942         int pdw = get_image("panel_divider")->get_w();
943         int x = mbuttons_x;
944         x += 9 * get_image("play")->get_w();
945         x += mtransport_margin;                                       // the control buttons
946
947         gui->draw_vframe(get_image("panel_divider"),
948                 x - toggle_margin / 2 - pdw / 2 + 2,
949                 mbuttons_y - 1);
950         x += 2 * get_image("arrow")->get_w() + toggle_margin;           // the mode buttons
951
952         gui->draw_vframe(get_image("panel_divider"),
953                 x - toggle_margin / 2 - pdw / 2 + 2,
954                 mbuttons_y - 1);
955         x += 2 * get_image("autokeyframe")->get_w() + toggle_margin;    // the state toggle buttons
956
957         gui->draw_vframe(get_image("panel_divider"),
958                 x - toggle_margin / 2 - pdw / 2 + 2,
959                 mbuttons_y - 1);
960
961 // Clock
962         gui->draw_3segmenth(0,
963                 mbuttons_y - 1 + get_image("mbutton_bg")->get_h(),
964                 get_image("patchbay_bg")->get_w(),
965                 get_image("clock_bg"));
966
967 // Patchbay
968 //printf("SUV::draw_mwindow_bg %d %d %d\n", __LINE__,
969 //mclock_h,
970 //mtimebar_h);
971         gui->draw_3segmentv(patchbay_x,
972                 patchbay_y,
973                 patchbay_h,
974                 get_image("patchbay_bg"));
975
976 // Track canvas
977         gui->set_color(BLACK);
978         gui->draw_box(mcanvas_x + get_image("patchbay_bg")->get_w(),
979                 mcanvas_y + mtimebar_h,
980                 mcanvas_w - BC_ScrollBar::get_span(SCROLL_VERT),
981                 mcanvas_h - BC_ScrollBar::get_span(SCROLL_HORIZ) - mtimebar_h);
982
983 // Timebar
984         gui->draw_3segmenth(mtimebar_x,
985                 mtimebar_y,
986                 mtimebar_w,
987                 get_image("timebar_bg"));
988
989 // Zoombar
990         gui->set_color(0x373737);
991         gui->draw_box(mzoom_x,
992                 mzoom_y,
993                 mwindow->session->mwindow_w,
994                 25);
995
996 // Scrollbar filler
997 //      gui->draw_vframe(get_image("mscroll_filler"),
998 //              mcanvas_x + mcanvas_w - BC_ScrollBar::get_span(SCROLL_VERT),
999 //              mcanvas_y + mcanvas_h - BC_ScrollBar::get_span(SCROLL_HORIZ));
1000
1001 // Status
1002         gui->draw_3segmenth(mzoom_x,
1003                 mzoom_y,
1004                 mzoom_w,
1005                 get_image("statusbar"));
1006
1007
1008 }
1009
1010 void SUV::draw_cwindow_bg(CWindowGUI *gui)
1011 {
1012         gui->draw_3segmentv(0, 0, ccomposite_h, get_image("cpanel_bg"));
1013
1014         gui->draw_3segmenth(0, ccomposite_h, cstatus_x, get_image("cbuttons_left"));
1015
1016         if(mwindow->edl->session->cwindow_meter)
1017         {
1018                 gui->draw_3segmenth(cstatus_x,
1019                         ccomposite_h,
1020                         cmeter_x - widget_border - cstatus_x,
1021                         get_image("cbuttons_right"));
1022                 gui->draw_9segment(cmeter_x - widget_border,
1023                         0,
1024                         mwindow->session->cwindow_w - cmeter_x + widget_border,
1025                         mwindow->session->cwindow_h,
1026                         get_image("cmeter_bg"));
1027         }
1028         else
1029         {
1030                 gui->draw_3segmenth(cstatus_x,
1031                         ccomposite_h,
1032                         cmeter_x - widget_border - cstatus_x + 100,
1033                         get_image("cbuttons_right"));
1034         }
1035 }
1036
1037 void SUV::draw_vwindow_bg(VWindowGUI *gui)
1038 {
1039         gui->draw_3segmenth(0,
1040                 vcanvas_h,
1041                 vdivision_x,
1042                 get_image("vbuttons_left"));
1043         if(mwindow->edl->session->vwindow_meter)
1044         {
1045                 gui->draw_3segmenth(vdivision_x,
1046                         vcanvas_h,
1047                         vmeter_x - widget_border - vdivision_x,
1048                         get_image("cbuttons_right"));
1049                 gui->draw_9segment(vmeter_x - widget_border,
1050                         0,
1051                         mwindow->session->vwindow_w - vmeter_x + widget_border,
1052                         mwindow->session->vwindow_h,
1053                         get_image("cmeter_bg"));
1054         }
1055         else
1056         {
1057                 gui->draw_3segmenth(vdivision_x,
1058                         vcanvas_h,
1059                         vmeter_x - widget_border - vdivision_x + 100,
1060                         get_image("cbuttons_right"));
1061         }
1062
1063 // Clock border
1064         gui->draw_3segmenth(vtime_x - 20,
1065                 vtime_y - 1,
1066                 vtime_w + 40,
1067                 get_image("vclock"));
1068 }
1069
1070
1071 void SUV::draw_preferences_bg(PreferencesWindow *gui)
1072 {
1073         gui->draw_vframe(get_image("preferences_bg"), 0, 0);
1074 }
1075
1076 void SUV::draw_new_bg(NewWindow *gui)
1077 {
1078         gui->draw_vframe(get_image("new_bg"), 0, 0);
1079 }
1080
1081 void SUV::draw_setformat_bg(SetFormatWindow *gui)
1082 {
1083         gui->draw_vframe(get_image("setformat_bg"), 0, 0);
1084 }
1085
1086
1087
1088
1089
1090
1091