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