8e12ad39ce2cb2a5b2ab9300e5f65e5c7d2f4707
[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("histogram_carrot",
621                 5,
622                 "histogram_carrot_up.png",
623                 "histogram_carrot_hi.png",
624                 "histogram_carrot_checked.png",
625                 "histogram_carrot_dn.png",
626                 "histogram_carrot_checkedhi.png");
627
628
629         statusbar_cancel_data = new_image_set(3,
630                 "statusbar_cancel_up.png",
631                 "statusbar_cancel_hi.png",
632                 "statusbar_cancel_dn.png");
633
634
635         VFrame *editpanel_up = new_image("editpanel_up.png");
636         VFrame *editpanel_hi = new_image("editpanel_hi.png");
637         VFrame *editpanel_dn = new_image("editpanel_dn.png");
638         VFrame *editpanel_checked = new_image("editpanel_checked.png");
639         VFrame *editpanel_checkedhi = new_image("editpanel_checkedhi.png");
640
641         new_image("panel_divider", "panel_divider.png");
642         new_button("bottom_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "bottom_justify");
643         new_button("center_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "center_justify");
644         new_button("channel.png", editpanel_up, editpanel_hi, editpanel_dn, "channel");
645
646         new_toggle("histogram.png",
647                 editpanel_up,
648                 editpanel_hi,
649                 editpanel_checked,
650                 editpanel_dn,
651                 editpanel_checkedhi,
652                 "histogram_toggle");
653         new_toggle("histogram_rgb.png",
654                 editpanel_up,
655                 editpanel_hi,
656                 editpanel_checked,
657                 editpanel_dn,
658                 editpanel_checkedhi,
659                 "histogram_rgb_toggle");
660         new_toggle("waveform.png",
661                 editpanel_up,
662                 editpanel_hi,
663                 editpanel_checked,
664                 editpanel_dn,
665                 editpanel_checkedhi,
666                 "waveform_toggle");
667         new_toggle("waveform_rgb.png",
668                 editpanel_up,
669                 editpanel_hi,
670                 editpanel_checked,
671                 editpanel_dn,
672                 editpanel_checkedhi,
673                 "waveform_rgb_toggle");
674         new_toggle("scope.png",
675                 editpanel_up,
676                 editpanel_hi,
677                 editpanel_checked,
678                 editpanel_dn,
679                 editpanel_checkedhi,
680                 "scope_toggle");
681
682         new_button("picture.png", editpanel_up, editpanel_hi, editpanel_dn, "picture");
683         new_button("histogram.png", editpanel_up, editpanel_hi, editpanel_dn, "histogram");
684
685
686         new_button("copy.png", editpanel_up, editpanel_hi, editpanel_dn, "copy");
687         new_button("commercial.png", editpanel_up, editpanel_hi, editpanel_dn, "commercial");
688         new_button("cut.png", editpanel_up, editpanel_hi, editpanel_dn, "cut");
689         new_button("fit.png", editpanel_up, editpanel_hi, editpanel_dn, "fit");
690         new_button("fitautos.png", editpanel_up, editpanel_hi, editpanel_dn, "fitautos");
691         new_button("inpoint.png", editpanel_up, editpanel_hi, editpanel_dn, "inbutton");
692         new_button("label.png", editpanel_up, editpanel_hi, editpanel_dn, "labelbutton");
693         new_button("left_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "left_justify");
694         new_button("magnify.png", editpanel_up, editpanel_hi, editpanel_dn, "magnify_button");
695         new_button("middle_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "middle_justify");
696         new_button("nextlabel.png", editpanel_up, editpanel_hi, editpanel_dn, "nextlabel");
697         new_button("prevlabel.png", editpanel_up, editpanel_hi, editpanel_dn, "prevlabel");
698         new_button("nextedit.png", editpanel_up, editpanel_hi, editpanel_dn, "nextedit");
699         new_button("prevedit.png", editpanel_up, editpanel_hi, editpanel_dn, "prevedit");
700         new_button("outpoint.png", editpanel_up, editpanel_hi, editpanel_dn, "outbutton");
701         over_button = new_button("over.png", editpanel_up, editpanel_hi, editpanel_dn, "overbutton");
702         overwrite_data = new_button("overwrite.png", editpanel_up, editpanel_hi, editpanel_dn, "overwritebutton");
703         new_button("paste.png", editpanel_up, editpanel_hi, editpanel_dn, "paste");
704         new_button("redo.png", editpanel_up, editpanel_hi, editpanel_dn, "redo");
705         new_button("right_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "right_justify");
706         splice_data = new_button("splice.png", editpanel_up, editpanel_hi, editpanel_dn, "slicebutton");
707         new_button("toclip.png", editpanel_up, editpanel_hi, editpanel_dn, "toclip");
708         new_button("goto.png", editpanel_up, editpanel_hi, editpanel_dn, "goto");
709         new_button("top_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "top_justify");
710         new_button("undo.png", editpanel_up, editpanel_hi, editpanel_dn, "undo");
711         new_button("wrench.png", editpanel_up, editpanel_hi, editpanel_dn, "wrench");
712
713
714         VFrame *transport_up = new_image("transportup.png");
715         VFrame *transport_hi = new_image("transporthi.png");
716         VFrame *transport_dn = new_image("transportdn.png");
717
718         new_button("end.png", transport_up, transport_hi, transport_dn, "end");
719         new_button("fastfwd.png", transport_up, transport_hi, transport_dn, "fastfwd");
720         new_button("fastrev.png", transport_up, transport_hi, transport_dn, "fastrev");
721         new_button("play.png", transport_up, transport_hi, transport_dn, "play");
722         new_button("framefwd.png", transport_up, transport_hi, transport_dn, "framefwd");
723         new_button("framerev.png", transport_up, transport_hi, transport_dn, "framerev");
724         new_button("pause.png", transport_up, transport_hi, transport_dn, "pause");
725         new_button("record.png", transport_up, transport_hi, transport_dn, "record");
726         new_button("singleframe.png", transport_up, transport_hi, transport_dn, "recframe");
727         new_button("reverse.png", transport_up, transport_hi, transport_dn, "reverse");
728         new_button("rewind.png", transport_up, transport_hi, transport_dn, "rewind");
729         new_button("stop.png", transport_up, transport_hi, transport_dn, "stop");
730         new_button("stop.png", transport_up, transport_hi, transport_dn, "stoprec");
731
732
733
734 // CWindow icons
735         new_image("cwindow_inactive", "cwindow_inactive.png");
736         new_image("cwindow_active", "cwindow_active.png");
737
738
739
740         new_image_set("category_button",
741                 3,
742                 "preferencesbutton_dn.png",
743                 "preferencesbutton_dnhi.png",
744                 "preferencesbutton_dnlo.png");
745
746         new_image_set("category_button_checked",
747                 3,
748                 "preferencesbutton_up.png",
749                 "preferencesbutton_uphi.png",
750                 "preferencesbutton_dnlo.png");
751
752
753
754
755
756         new_image_set("color3way_point",
757                 3,
758                 "color3way_up.png",
759                 "color3way_hi.png",
760                 "color3way_dn.png");
761
762         new_toggle("arrow.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "arrow");
763         new_toggle("autokeyframe.png", transport_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "autokeyframe");
764         new_toggle("ibeam.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "ibeam");
765         new_toggle("show_meters.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "meters");
766         new_toggle("blank30x30.png",
767                    new_image("locklabels_locked.png"),
768                    new_image("locklabels_lockedhi.png"),
769                    new_image("locklabels_unlocked.png"),
770                    new_image("locklabels_dn.png"), // can't have seperate down for each!!??
771                    new_image("locklabels_unlockedhi.png"),
772                    "locklabels");
773
774         VFrame *cpanel_up = new_image("cpanel_up.png");
775         VFrame *cpanel_hi = new_image("cpanel_hi.png");
776         VFrame *cpanel_dn = new_image("cpanel_dn.png");
777         VFrame *cpanel_checked = new_image("cpanel_checked.png");
778         VFrame *cpanel_checkedhi = new_image("cpanel_checkedhi.png");
779
780
781         new_toggle("camera.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "camera");
782         new_toggle("crop.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "crop");
783         new_toggle("eyedrop.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "eyedrop");
784         new_toggle("magnify.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "magnify");
785         new_toggle("mask.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "mask");
786         new_toggle("ruler.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "ruler");
787         new_toggle("projector.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "projector");
788         new_toggle("protect.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "protect");
789         new_toggle("titlesafe.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "titlesafe");
790         new_toggle("toolwindow.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "tool");
791
792         // toggle for tangent mode (compositor/tool window)
793         new_toggle("tan_smooth.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "tan_smooth");
794         new_toggle("tan_linear.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "tan_linear");
795
796
797         flush_images();
798
799         title_font = MEDIUMFONT_3D;
800         title_color = 0xbfbfbf;
801         recordgui_fixed_color = YELLOW;
802         recordgui_variable_color = RED;
803
804         channel_position_color = MEYELLOW;
805         resources->meter_title_w = 25;
806
807         // (asset) edit info text color
808         edit_font_color = YELLOW;
809 }
810
811 #define VWINDOW_METER_MARGIN 5
812
813
814
815
816
817
818
819
820
821
822
823 void SUV::build_bg_data()
824 {
825 // Audio settings
826         channel_position_data = new VFramePng(get_image_data("channel_position.png"));
827
828 // Track bitmaps
829         new_image("resource1024", "resource1024.png");
830         new_image("resource512", "resource512.png");
831         new_image("resource256", "resource256.png");
832         new_image("resource128", "resource128.png");
833         new_image("resource64", "resource64.png");
834         new_image("resource32", "resource32.png");
835         new_image("plugin_bg_data", "plugin_bg.png");
836         new_image("title_bg_data", "title_bg.png");
837         new_image("vtimebar_bg_data", "vwindow_timebar.png");
838 }
839
840
841
842 void SUV::build_overlays()
843 {
844         keyframe_data = new VFramePng(get_image_data("keyframe3.png"));
845         camerakeyframe_data = new VFramePng(get_image_data("camerakeyframe.png"));
846         maskkeyframe_data = new VFramePng(get_image_data("maskkeyframe.png"));
847         modekeyframe_data = new VFramePng(get_image_data("modekeyframe.png"));
848         pankeyframe_data = new VFramePng(get_image_data("pankeyframe.png"));
849         projectorkeyframe_data = new VFramePng(get_image_data("projectorkeyframe.png"));
850 }
851
852
853
854
855
856
857
858
859
860 void SUV::draw_rwindow_bg(RecordGUI *gui)
861 {
862 //      int y;
863 //      int margin = 50;
864 //      int margin2 = 80;
865 //      gui->draw_9segment(recordgui_batch_x - margin,
866 //              0,
867 //              mwindow->session->rwindow_w - recordgui_status_x + margin,
868 //              recordgui_buttons_y,
869 //              rgui_batch);
870 //      gui->draw_3segmenth(recordgui_options_x - margin2,
871 //              recordgui_buttons_y - 5,
872 //              mwindow->session->rwindow_w - recordgui_options_x + margin2,
873 //              rgui_controls);
874 //      y = recordgui_buttons_y - 5 + rgui_controls->get_h();
875 //      gui->draw_9segment(0,
876 //              y,
877 //              mwindow->session->rwindow_w,
878 //              mwindow->session->rwindow_h - y,
879 //              rgui_list);
880 }
881
882 void SUV::draw_rmonitor_bg(RecordMonitorGUI *gui)
883 {
884 //      int margin = 45;
885 //      int panel_w = 300;
886 //      int x = rmonitor_meter_x - margin;
887 //      int w = mwindow->session->rmonitor_w - x;
888 //      if(w < rmonitor_meters->get_w()) w = rmonitor_meters->get_w();
889 //      gui->clear_box(0,
890 //              0,
891 //              mwindow->session->rmonitor_w,
892 //              mwindow->session->rmonitor_h);
893 //      gui->draw_9segment(x,
894 //              0,
895 //              w,
896 //              mwindow->session->rmonitor_h,
897 //              rmonitor_meters);
898 }
899
900
901
902
903
904
905 void SUV::draw_mwindow_bg(MWindowGUI *gui)
906 {
907 // Button bar
908         gui->draw_3segmenth(mbuttons_x, mbuttons_y - 1,
909                 gui->menu_w(), get_image("mbutton_bg"));
910
911         int pdw = get_image("panel_divider")->get_w();
912         int x = mbuttons_x;
913         x += 9 * get_image("play")->get_w();
914         x += mtransport_margin;                                       // the control buttons
915
916         gui->draw_vframe(get_image("panel_divider"),
917                 x - toggle_margin / 2 - pdw / 2 + 2,
918                 mbuttons_y - 1);
919         x += 2 * get_image("arrow")->get_w() + toggle_margin;           // the mode buttons
920
921         gui->draw_vframe(get_image("panel_divider"),
922                 x - toggle_margin / 2 - pdw / 2 + 2,
923                 mbuttons_y - 1);
924         x += 2 * get_image("autokeyframe")->get_w() + toggle_margin;    // the state toggle buttons
925
926         gui->draw_vframe(get_image("panel_divider"),
927                 x - toggle_margin / 2 - pdw / 2 + 2,
928                 mbuttons_y - 1);
929
930 // Clock
931         gui->draw_3segmenth(0,
932                 mbuttons_y - 1 + get_image("mbutton_bg")->get_h(),
933                 get_image("patchbay_bg")->get_w(),
934                 get_image("clock_bg"));
935
936 // Patchbay
937 //printf("SUV::draw_mwindow_bg %d %d %d\n", __LINE__,
938 //mclock_h,
939 //mtimebar_h);
940         gui->draw_3segmentv(patchbay_x,
941                 patchbay_y,
942                 patchbay_h,
943                 get_image("patchbay_bg"));
944
945 // Track canvas
946         gui->set_color(BLACK);
947         gui->draw_box(mcanvas_x + get_image("patchbay_bg")->get_w(),
948                 mcanvas_y + mtimebar_h,
949                 mcanvas_w - BC_ScrollBar::get_span(SCROLL_VERT),
950                 mcanvas_h - BC_ScrollBar::get_span(SCROLL_HORIZ) - mtimebar_h);
951
952 // Timebar
953         gui->draw_3segmenth(mtimebar_x,
954                 mtimebar_y,
955                 mtimebar_w,
956                 get_image("timebar_bg"));
957
958 // Zoombar
959         gui->set_color(0x373737);
960         gui->draw_box(mzoom_x,
961                 mzoom_y,
962                 mwindow->session->mwindow_w,
963                 25);
964
965 // Scrollbar filler
966 //      gui->draw_vframe(get_image("mscroll_filler"),
967 //              mcanvas_x + mcanvas_w - BC_ScrollBar::get_span(SCROLL_VERT),
968 //              mcanvas_y + mcanvas_h - BC_ScrollBar::get_span(SCROLL_HORIZ));
969
970 // Status
971         gui->draw_3segmenth(mzoom_x,
972                 mzoom_y,
973                 mzoom_w,
974                 get_image("statusbar"));
975
976
977 }
978
979 void SUV::draw_cwindow_bg(CWindowGUI *gui)
980 {
981         gui->draw_3segmentv(0, 0, ccomposite_h, get_image("cpanel_bg"));
982
983         gui->draw_3segmenth(0, ccomposite_h, cstatus_x, get_image("cbuttons_left"));
984
985         if(mwindow->edl->session->cwindow_meter)
986         {
987                 gui->draw_3segmenth(cstatus_x,
988                         ccomposite_h,
989                         cmeter_x - widget_border - cstatus_x,
990                         get_image("cbuttons_right"));
991                 gui->draw_9segment(cmeter_x - widget_border,
992                         0,
993                         mwindow->session->cwindow_w - cmeter_x + widget_border,
994                         mwindow->session->cwindow_h,
995                         get_image("cmeter_bg"));
996         }
997         else
998         {
999                 gui->draw_3segmenth(cstatus_x,
1000                         ccomposite_h,
1001                         cmeter_x - widget_border - cstatus_x + 100,
1002                         get_image("cbuttons_right"));
1003         }
1004 }
1005
1006 void SUV::draw_vwindow_bg(VWindowGUI *gui)
1007 {
1008         gui->draw_3segmenth(0,
1009                 vcanvas_h,
1010                 vdivision_x,
1011                 get_image("vbuttons_left"));
1012         if(mwindow->edl->session->vwindow_meter)
1013         {
1014                 gui->draw_3segmenth(vdivision_x,
1015                         vcanvas_h,
1016                         vmeter_x - widget_border - vdivision_x,
1017                         get_image("cbuttons_right"));
1018                 gui->draw_9segment(vmeter_x - widget_border,
1019                         0,
1020                         mwindow->session->vwindow_w - vmeter_x + widget_border,
1021                         mwindow->session->vwindow_h,
1022                         get_image("cmeter_bg"));
1023         }
1024         else
1025         {
1026                 gui->draw_3segmenth(vdivision_x,
1027                         vcanvas_h,
1028                         vmeter_x - widget_border - vdivision_x + 100,
1029                         get_image("cbuttons_right"));
1030         }
1031
1032 // Clock border
1033         gui->draw_3segmenth(vtime_x - 20,
1034                 vtime_y - 1,
1035                 vtime_w + 40,
1036                 get_image("vclock"));
1037 }
1038
1039
1040 void SUV::draw_preferences_bg(PreferencesWindow *gui)
1041 {
1042         gui->draw_vframe(get_image("preferences_bg"), 0, 0);
1043 }
1044
1045 void SUV::draw_new_bg(NewWindow *gui)
1046 {
1047         gui->draw_vframe(get_image("new_bg"), 0, 0);
1048 }
1049
1050 void SUV::draw_setformat_bg(SetFormatWindow *gui)
1051 {
1052         gui->draw_vframe(get_image("setformat_bg"), 0, 0);
1053 }
1054
1055
1056
1057
1058
1059
1060