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