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