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