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