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