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