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