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