5f944d1300250047ec09bc3c1ed1224c357a88f1
[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         new_button("mask_pnt_linear.png",
299                 "mask_button_up.png",
300                 "mask_button_hi.png",
301                 "mask_button_dn.png",
302                 "mask_pnt_linear_images");
303         new_button("mask_crv_linear.png",
304                 "mask_button_up.png",
305                 "mask_button_hi.png",
306                 "mask_button_dn.png",
307                 "mask_crv_linear_images");
308         new_button("mask_all_linear.png",
309                 "mask_button_up.png",
310                 "mask_button_hi.png",
311                 "mask_button_dn.png",
312                 "mask_all_linear_images");
313
314         new_button("mask_pnt_smooth.png",
315                 "mask_button_up.png",
316                 "mask_button_hi.png",
317                 "mask_button_dn.png",
318                 "mask_pnt_smooth_images");
319         new_button("mask_crv_smooth.png",
320                 "mask_button_up.png",
321                 "mask_button_hi.png",
322                 "mask_button_dn.png",
323                 "mask_crv_smooth_images");
324         new_button("mask_all_smooth.png",
325                 "mask_button_up.png",
326                 "mask_button_hi.png",
327                 "mask_button_dn.png",
328                 "mask_all_smooth_images");
329
330         resources->medium_7segment = new_image_set(TOTAL_7SEGMENT,
331                 "0.png",
332                 "1.png",
333                 "2.png",
334                 "3.png",
335                 "4.png",
336                 "5.png",
337                 "6.png",
338                 "7.png",
339                 "8.png",
340                 "9.png",
341                 "colon.png",
342                 "period.png",
343                 "a.png",
344                 "b.png",
345                 "c.png",
346                 "d.png",
347                 "e.png",
348                 "f.png",
349                 "space.png",
350                 "dash.png");
351
352         resources->bar_data = new_image("bar", "bar.png");
353         resources->check = new_image("check", "check.png");
354
355         resources->min_menu_w = 96;
356         resources->menu_popup_bg = new_image("menu_popup_bg.png");
357         resources->menu_item_bg = new_image_set(3,
358                 "menuitem_up.png",
359                 "menuitem_hi.png",
360                 "menuitem_dn.png");
361         resources->menu_bar_bg = new_image("menubar_bg.png");
362         resources->menu_title_bg = new_image_set(3,
363                 "menubar_up.png",
364                 "menubar_hi.png",
365                 "menubar_dn.png");
366
367
368         resources->popupmenu_images = 0;
369 //              new_image_set(3,
370 //              "menupopup_up.png",
371 //              "menupopup_hi.png",
372 //              "menupopup_dn.png");
373
374         resources->toggle_highlight_bg = new_image("toggle_highlight_bg",
375                 "text_highlight.png");
376
377         resources->generic_button_images = new_image_set(3,
378                         "generic_up.png",
379                         "generic_hi.png",
380                         "generic_dn.png");
381         resources->horizontal_slider_data = new_image_set(6,
382                         "hslider_fg_up.png",
383                         "hslider_fg_hi.png",
384                         "hslider_fg_dn.png",
385                         "hslider_bg_up.png",
386                         "hslider_bg_hi.png",
387                         "hslider_bg_dn.png");
388         resources->vertical_slider_data = new_image_set(6,
389                         "hslider_fg_up.png",
390                         "hslider_fg_hi.png",
391                         "hslider_fg_dn.png",
392                         "hslider_bg_up.png",
393                         "hslider_bg_hi.png",
394                         "hslider_bg_dn.png");
395         for( int i=0; i<6; ++i )
396                 resources->vertical_slider_data[i]->rotate90();
397
398         resources->progress_images = new_image_set(2,
399                         "progress_bg.png",
400                         "progress_hi.png");
401         resources->tumble_data = new_image_set(4,
402                 "tumble_up.png",
403                 "tumble_hi.png",
404                 "tumble_bottom.png",
405                 "tumble_top.png");
406         resources->listbox_button = new_button4("listbox_button.png",
407                 "editpanel_up.png",
408                 "editpanel_hi.png",
409                 "editpanel_dn.png",
410                 "editpanel_hi.png",
411                 "listbox_button");
412         resources->listbox_column = new_image_set(3,
413                 "column_up.png",
414                 "column_hi.png",
415                 "column_dn.png");
416         resources->listbox_up = new_image("listbox_up.png");
417         resources->listbox_dn = new_image("listbox_dn.png");
418         resources->pan_data = new_image_set(7,
419                         "pan_up.png",
420                         "pan_hi.png",
421                         "pan_popup.png",
422                         "pan_channel.png",
423                         "pan_stick.png",
424                         "pan_channel_small.png",
425                         "pan_stick_small.png");
426         resources->pan_text_color = WHITE;
427
428         resources->pot_images = new_image_set(3,
429                 "pot_up.png",
430                 "pot_hi.png",
431                 "pot_dn.png");
432
433         resources->checkbox_images = new_image_set(5,
434                 "checkbox_up.png",
435                 "checkbox_hi.png",
436                 "checkbox_checked.png",
437                 "checkbox_dn.png",
438                 "checkbox_checkedhi.png");
439
440         resources->radial_images = new_image_set(5,
441                 "radial_up.png",
442                 "radial_hi.png",
443                 "radial_checked.png",
444                 "radial_dn.png",
445                 "radial_checkedhi.png");
446
447         resources->xmeter_images = new_image_set(7,
448                 "xmeter_normal.png",
449                 "xmeter_green.png",
450                 "xmeter_red.png",
451                 "xmeter_yellow.png",
452                 "xmeter_white.png",
453                 "xmeter_over.png",
454                 "downmix51_2.png");
455         resources->ymeter_images = new_image_set(7,
456                 "ymeter_normal.png",
457                 "ymeter_green.png",
458                 "ymeter_red.png",
459                 "ymeter_yellow.png",
460                 "ymeter_white.png",
461                 "ymeter_over.png",
462                 "downmix51_2.png");
463
464         resources->hscroll_data = new_image_set(10,
465                         "hscroll_handle_up.png",
466                         "hscroll_handle_hi.png",
467                         "hscroll_handle_dn.png",
468                         "hscroll_handle_bg.png",
469                         "hscroll_left_up.png",
470                         "hscroll_left_hi.png",
471                         "hscroll_left_dn.png",
472                         "hscroll_right_up.png",
473                         "hscroll_right_hi.png",
474                         "hscroll_right_dn.png");
475
476         resources->vscroll_data = new_image_set(10,
477                         "vscroll_handle_up.png",
478                         "vscroll_handle_hi.png",
479                         "vscroll_handle_dn.png",
480                         "vscroll_handle_bg.png",
481                         "vscroll_left_up.png",
482                         "vscroll_left_hi.png",
483                         "vscroll_left_dn.png",
484                         "vscroll_right_up.png",
485                         "vscroll_right_hi.png",
486                         "vscroll_right_dn.png");
487         resources->scroll_minhandle = 20;
488
489
490         new_button("prevtip.png", "tipbutton_up.png", "tipbutton_hi.png", "tipbutton_dn.png", "prev_tip");
491         new_button("nexttip.png", "tipbutton_up.png", "tipbutton_hi.png", "tipbutton_dn.png", "next_tip");
492         new_button("closetip.png", "tipbutton_up.png", "tipbutton_hi.png", "tipbutton_dn.png", "close_tip");
493         new_button("swap_extents.png",
494                 "editpanel_up.png",
495                 "editpanel_hi.png",
496                 "editpanel_dn.png",
497                 "swap_extents");
498
499
500 // Record windows
501
502
503         preferences_category_overlap = 0;
504         preferencescategory_x = 0;
505         preferencescategory_y = 5;
506         preferencestitle_x = 5;
507         preferencestitle_y = 10;
508         preferencesoptions_x = 5;
509         preferencesoptions_y = 0;
510
511 // MWindow
512         message_normal = resources->text_default;
513         audio_color = GREEN;
514         mtransport_margin = 10;
515         toggle_margin = 10;
516
517         new_button("pane.png", "pane_up.png", "pane_hi.png", "pane_dn.png", "pane");
518         new_image_set("xpane", 3, "xpane_up.png", "xpane_hi.png", "xpane_dn.png");
519         new_image_set("ypane", 3, "ypane_up.png", "ypane_hi.png", "ypane_dn.png");
520
521         new_image("mbutton_bg", "mbutton_bg.png");
522         new_image("timebar_bg", "timebar_bg_flat.png");
523         new_image("timebar_brender", "timebar_brender.png");
524         new_image("clock_bg", "mclock_flat.png");
525         new_image("patchbay_bg", "patchbay_bg.png");
526         new_image("statusbar", "statusbar.png");
527 //      new_image("mscroll_filler", "mscroll_filler.png");
528
529         new_image_set("zoombar_menu", 3, "zoompopup_up.png", "zoompopup_hi.png", "zoompopup_dn.png");
530         new_image_set("zoombar_tumbler", 4, "zoomtumble_up.png", "zoomtumble_hi.png", "zoomtumble_bottom.png", "zoomtumble_top.png");
531
532         new_image_set("mode_popup", 3, "mode_up.png", "mode_hi.png", "mode_dn.png");
533         new_image("mode_add", "mode_add.png");
534         new_image("mode_divide", "mode_divide.png");
535         new_image("mode_multiply", "mode_multiply.png");
536         new_image("mode_normal", "mode_normal.png");
537         new_image("mode_replace", "mode_replace.png");
538         new_image("mode_subtract", "mode_subtract.png");
539         new_image("mode_max", "mode_max.png");
540
541         new_image_set("plugin_on", 5, "plugin_on.png", "plugin_onhi.png", "plugin_onselect.png", "plugin_ondn.png", "plugin_onselecthi.png");
542         new_image_set("plugin_show", 5, "plugin_show.png", "plugin_showhi.png", "plugin_showselect.png", "plugin_showdn.png", "plugin_showselecthi.png");
543
544 // CWindow
545         new_image("cpanel_bg", "cpanel_bg.png");
546         new_image("cbuttons_left", "cbuttons_left.png");
547         new_image("cbuttons_right", "cbuttons_right.png");
548         new_image("cmeter_bg", "cmeter_bg.png");
549         new_image("cwindow_focus", "cwindow_focus.png");
550
551 // VWindow
552         new_image("vbuttons_left", "vbuttons_left.png");
553         new_image("vclock", "vclock.png");
554
555         new_image("preferences_bg", "preferences_bg.png");
556
557
558         new_image("new_bg", "new_bg.png");
559         new_image("setformat_bg", "setformat_bg.png");
560
561
562         timebar_view_data = new_image("timebar_view.png");
563
564         setformat_w = get_image("setformat_bg")->get_w();
565         setformat_h = get_image("setformat_bg")->get_h();
566         setformat_x1 = 15;
567         setformat_x2 = 110;
568
569         setformat_x3 = 315;
570         setformat_x4 = 425;
571         setformat_y1 = 20;
572         setformat_y2 = 85;
573         setformat_y3 = 125;
574         setformat_margin = 30;
575         setformat_channels_x = 25;
576         setformat_channels_y = 242;
577         setformat_channels_w = 250;
578         setformat_channels_h = 250;
579
580         loadfile_pad = get_image_set("loadmode_new")[0]->get_h() + 10;
581         browse_pad = 20;
582
583
584         new_toggle("playpatch.png",
585                 "playpatch_up.png",
586                 "playpatch_hi.png",
587                 "playpatch_checked.png",
588                 "playpatch_dn.png",
589                 "playpatch_checkedhi.png",
590                 "playpatch_data");
591
592         new_toggle("recordpatch.png",
593                 "recordpatch_up.png",
594                 "recordpatch_hi.png",
595                 "recordpatch_checked.png",
596                 "recordpatch_dn.png",
597                 "recordpatch_checkedhi.png",
598                 "recordpatch_data");
599
600         new_toggle("gangpatch.png",
601                 "patch_up.png",
602                 "patch_hi.png",
603                 "patch_checked.png",
604                 "patch_dn.png",
605                 "patch_checkedhi.png",
606                 "gangpatch_data");
607
608         new_toggle("drawpatch.png",
609                 "patch_up.png",
610                 "patch_hi.png",
611                 "patch_checked.png",
612                 "patch_dn.png",
613                 "patch_checkedhi.png",
614                 "drawpatch_data");
615
616
617         new_image_set("mutepatch_data",
618                 5,
619                 "mutepatch_up.png",
620                 "mutepatch_hi.png",
621                 "mutepatch_checked.png",
622                 "mutepatch_dn.png",
623                 "mutepatch_checkedhi.png");
624
625         new_image_set("expandpatch_data",
626                 5,
627                 "expandpatch_up.png",
628                 "expandpatch_hi.png",
629                 "expandpatch_checked.png",
630                 "expandpatch_dn.png",
631                 "expandpatch_checkedhi.png");
632
633         build_bg_data();
634         build_overlays();
635
636
637
638
639         out_point = new_image_set(5,
640                 "out_up.png",
641                 "out_hi.png",
642                 "out_checked.png",
643                 "out_dn.png",
644                 "out_checkedhi.png");
645         in_point = new_image_set(5,
646                 "in_up.png",
647                 "in_hi.png",
648                 "in_checked.png",
649                 "in_dn.png",
650                 "in_checkedhi.png");
651
652         label_toggle = new_image_set(5,
653                 "labeltoggle_up.png",
654                 "labeltoggle_uphi.png",
655                 "label_checked.png",
656                 "labeltoggle_dn.png",
657                 "label_checkedhi.png");
658
659         ffmpeg_toggle = new_image_set(5,
660                 "ff_up.png",
661                 "ff_hi.png",
662                 "ff_checked.png",
663                 "ff_down.png",
664                 "ff_checkedhi.png");
665
666         proxy_p_toggle = new_image_set(5,
667                 "proxy_p_up.png",
668                 "proxy_p_hi.png",
669                 "proxy_p_chkd.png",
670                 "proxy_p_down.png",
671                 "proxy_p_chkdhi.png");
672
673         proxy_s_toggle = new_image_set(5,
674                 "proxy_s_up.png",
675                 "proxy_s_hi.png",
676                 "proxy_s_chkd.png",
677                 "proxy_s_down.png",
678                 "proxy_s_chkdhi.png");
679
680         mask_mode_toggle = new_image_set(5,
681                 "mask_mode_up.png",
682                 "mask_mode_hi.png",
683                 "mask_mode_chkd.png",
684                 "mask_mode_down.png",
685                 "mask_mode_chkdhi.png");
686
687         shbtn_data = new_image_set(3,
688                 "shbtn_up.png",
689                 "shbtn_hi.png",
690                 "shbtn_dn.png");
691
692         new_image_set("preset_edit",
693                 3,
694                 "preset_edit0.png",
695                 "preset_edit1.png",
696                 "preset_edit2.png");
697
698         new_image_set("histogram_carrot",
699                 5,
700                 "histogram_carrot_up.png",
701                 "histogram_carrot_hi.png",
702                 "histogram_carrot_checked.png",
703                 "histogram_carrot_dn.png",
704                 "histogram_carrot_checkedhi.png");
705
706
707         statusbar_cancel_data = new_image_set(3,
708                 "statusbar_cancel_up.png",
709                 "statusbar_cancel_hi.png",
710                 "statusbar_cancel_dn.png");
711
712
713         VFrame *editpanel_up = new_image("editpanel_up.png");
714         VFrame *editpanel_hi = new_image("editpanel_hi.png");
715         VFrame *editpanel_dn = new_image("editpanel_dn.png");
716         VFrame *editpanel_checked = new_image("editpanel_checked.png");
717         VFrame *editpanel_checkedhi = new_image("editpanel_checkedhi.png");
718
719         new_image("panel_divider", "panel_divider.png");
720         new_button("bottom_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "bottom_justify");
721         new_button("center_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "center_justify");
722         new_button("channel.png", editpanel_up, editpanel_hi, editpanel_dn, "channel");
723         new_button("lok.png", editpanel_up, editpanel_hi, editpanel_dn, "lok");
724
725         new_toggle("histogram_toggle.png",
726                 editpanel_up,
727                 editpanel_hi,
728                 editpanel_checked,
729                 editpanel_dn,
730                 editpanel_checkedhi,
731                 "histogram_toggle");
732         new_toggle("histogram_rgb.png",
733                 editpanel_up,
734                 editpanel_hi,
735                 editpanel_checked,
736                 editpanel_dn,
737                 editpanel_checkedhi,
738                 "histogram_rgb_toggle");
739         new_toggle("waveform.png",
740                 editpanel_up,
741                 editpanel_hi,
742                 editpanel_checked,
743                 editpanel_dn,
744                 editpanel_checkedhi,
745                 "waveform_toggle");
746         new_toggle("waveform_rgb.png",
747                 editpanel_up,
748                 editpanel_hi,
749                 editpanel_checked,
750                 editpanel_dn,
751                 editpanel_checkedhi,
752                 "waveform_rgb_toggle");
753         new_toggle("scope.png",
754                 editpanel_up,
755                 editpanel_hi,
756                 editpanel_checked,
757                 editpanel_dn,
758                 editpanel_checkedhi,
759                 "scope_toggle");
760
761         new_button("picture.png", editpanel_up, editpanel_hi, editpanel_dn, "picture");
762         new_button("histogram_img.png", editpanel_up, editpanel_hi, editpanel_dn, "histogram_img");
763
764
765         new_button("copy.png", editpanel_up, editpanel_hi, editpanel_dn, "copy");
766         new_button("commercial.png", editpanel_up, editpanel_hi, editpanel_dn, "commercial");
767         new_button("cut.png", editpanel_up, editpanel_hi, editpanel_dn, "cut");
768         new_button("fit.png", editpanel_up, editpanel_hi, editpanel_dn, "fit");
769         new_button("fitautos.png", editpanel_up, editpanel_hi, editpanel_dn, "fitautos");
770         new_button("inpoint.png", editpanel_up, editpanel_hi, editpanel_dn, "inbutton");
771         new_button("label.png", editpanel_up, editpanel_hi, editpanel_dn, "labelbutton");
772         new_button("left_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "left_justify");
773         new_button("magnify.png", editpanel_up, editpanel_hi, editpanel_dn, "magnify_button");
774         new_button("middle_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "middle_justify");
775         new_button("nextlabel.png", editpanel_up, editpanel_hi, editpanel_dn, "nextlabel");
776         new_button("prevlabel.png", editpanel_up, editpanel_hi, editpanel_dn, "prevlabel");
777         new_button("nextedit.png", editpanel_up, editpanel_hi, editpanel_dn, "nextedit");
778         new_button("prevedit.png", editpanel_up, editpanel_hi, editpanel_dn, "prevedit");
779         new_button("outpoint.png", editpanel_up, editpanel_hi, editpanel_dn, "outbutton");
780         over_button = new_button("over.png", editpanel_up, editpanel_hi, editpanel_dn, "overbutton");
781         overwrite_data = new_button("overwrite.png", editpanel_up, editpanel_hi, editpanel_dn, "overwritebutton");
782         new_button("paste.png", editpanel_up, editpanel_hi, editpanel_dn, "paste");
783         new_button("redo.png", editpanel_up, editpanel_hi, editpanel_dn, "redo");
784         new_button("right_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "right_justify");
785         splice_data = new_button("splice.png", editpanel_up, editpanel_hi, editpanel_dn, "slicebutton");
786         new_button("toclip.png", editpanel_up, editpanel_hi, editpanel_dn, "toclip");
787         new_button("goto.png", editpanel_up, editpanel_hi, editpanel_dn, "goto");
788         new_button("top_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "top_justify");
789         new_button("undo.png", editpanel_up, editpanel_hi, editpanel_dn, "undo");
790         new_button("wrench.png", editpanel_up, editpanel_hi, editpanel_dn, "wrench");
791
792
793         VFrame *transport_up = new_image("transportup.png");
794         VFrame *transport_hi = new_image("transporthi.png");
795         VFrame *transport_dn = new_image("transportdn.png");
796
797         new_button("end.png", transport_up, transport_hi, transport_dn, "end");
798         new_button("fastfwd.png", transport_up, transport_hi, transport_dn, "fastfwd");
799         new_button("fastrev.png", transport_up, transport_hi, transport_dn, "fastrev");
800         new_button("play.png", transport_up, transport_hi, transport_dn, "play");
801         new_button("framefwd.png", transport_up, transport_hi, transport_dn, "framefwd");
802         new_button("framerev.png", transport_up, transport_hi, transport_dn, "framerev");
803         new_button("pause.png", transport_up, transport_hi, transport_dn, "pause");
804         new_button("record.png", transport_up, transport_hi, transport_dn, "record");
805         new_button("singleframe.png", transport_up, transport_hi, transport_dn, "recframe");
806         new_button("reverse.png", transport_up, transport_hi, transport_dn, "reverse");
807         new_button("rewind.png", transport_up, transport_hi, transport_dn, "rewind");
808         new_button("stop.png", transport_up, transport_hi, transport_dn, "stop");
809         new_button("stop.png", transport_up, transport_hi, transport_dn, "stoprec");
810
811
812
813 // CWindow icons
814         new_image("cwindow_inactive", "cwindow_inactive.png");
815         new_image("cwindow_active", "cwindow_active.png");
816
817
818
819         new_image_set("category_button",
820                 3,
821                 "preferencesbutton_dn.png",
822                 "preferencesbutton_dnhi.png",
823                 "preferencesbutton_dnlo.png");
824
825         new_image_set("category_button_checked",
826                 3,
827                 "preferencesbutton_up.png",
828                 "preferencesbutton_uphi.png",
829                 "preferencesbutton_dnlo.png");
830
831
832
833
834
835         new_image_set("color3way_point",
836                 3,
837                 "color3way_up.png",
838                 "color3way_hi.png",
839                 "color3way_dn.png");
840
841         new_toggle("arrow.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "arrow");
842         new_toggle("autokeyframe.png", transport_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "autokeyframe");
843         new_toggle("ibeam.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "ibeam");
844         new_toggle("show_meters.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "meters");
845         new_toggle("blank30x30.png",
846                    new_image("locklabels_locked.png"),
847                    new_image("locklabels_lockedhi.png"),
848                    new_image("locklabels_unlocked.png"),
849                    new_image("locklabels_dn.png"), // can't have seperate down for each!!??
850                    new_image("locklabels_unlockedhi.png"),
851                    "locklabels");
852
853         VFrame *cpanel_up = new_image("cpanel_up.png");
854         VFrame *cpanel_hi = new_image("cpanel_hi.png");
855         VFrame *cpanel_dn = new_image("cpanel_dn.png");
856         VFrame *cpanel_checked = new_image("cpanel_checked.png");
857         VFrame *cpanel_checkedhi = new_image("cpanel_checkedhi.png");
858
859
860         new_toggle("camera.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "camera");
861         new_toggle("crop.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "crop");
862         new_toggle("eyedrop.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "eyedrop");
863         new_toggle("magnify.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "magnify");
864         new_toggle("mask.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "mask");
865         new_toggle("ruler.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "ruler");
866         new_toggle("projector.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "projector");
867         new_toggle("protect.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "protect");
868         new_toggle("titlesafe.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "titlesafe");
869         new_toggle("toolwindow.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "tool");
870
871         // toggle for tangent mode (compositor/tool window)
872         new_toggle("tan_smooth.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "tan_smooth");
873         new_toggle("tan_linear.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "tan_linear");
874
875         new_toggle("mask_scale_x.png",   "mask_scale_xup.png",    "mask_scale_xuphi.png",
876                 "mask_scale_xchkd.png",  "mask_scale_xdown.png",  "mask_scale_xchkdhi.png",
877                 "mask_scale_x");
878         new_toggle("mask_scale_y.png",   "mask_scale_yup.png",    "mask_scale_yuphi.png",
879                 "mask_scale_ychkd.png",  "mask_scale_ydown.png",  "mask_scale_ychkdhi.png",
880                 "mask_scale_y");
881         new_toggle("mask_scale_xy.png",  "mask_scale_xyup.png",   "mask_scale_xyuphi.png",
882                 "mask_scale_xychkd.png", "mask_scale_xydown.png", "mask_scale_xychkdhi.png",
883                 "mask_scale_xy");
884
885         flush_images();
886
887         title_font = MEDIUMFONT_3D;
888         title_color = 0x001000;
889         recordgui_fixed_color = YELLOW;
890         recordgui_variable_color = RED;
891
892         channel_position_color = MEYELLOW;
893         resources->meter_title_w = 25;
894
895         // (asset) edit info text color
896         edit_font_color = YELLOW;
897 }
898
899 #define VWINDOW_METER_MARGIN 5
900
901
902
903 void HULKTHEME::build_bg_data()
904 {
905 // Audio settings
906         channel_position_data = new VFramePng(get_image_data("channel_position.png"));
907
908 // Track bitmaps
909         new_image("resource1024", "resource1024.png");
910         new_image("resource512", "resource512.png");
911         new_image("resource256", "resource256.png");
912         new_image("resource128", "resource128.png");
913         new_image("resource64", "resource64.png");
914         new_image("resource32", "resource32.png");
915         new_image("plugin_bg_data", "plugin_bg.png");
916         new_image("title_bg_data", "title_bg.png");
917         new_image("vtimebar_bg_data", "vwindow_timebar.png");
918 }
919
920
921 void HULKTHEME::build_overlays()
922 {
923         keyframe_data = new VFramePng(get_image_data("keyframe3.png"));
924         camerakeyframe_data = new VFramePng(get_image_data("camerakeyframe.png"));
925         maskkeyframe_data = new VFramePng(get_image_data("maskkeyframe.png"));
926         modekeyframe_data = new VFramePng(get_image_data("modekeyframe.png"));
927         hardedge_data = new VFramePng(get_image_data("hardedge.png"));
928         pankeyframe_data = new VFramePng(get_image_data("pankeyframe.png"));
929         projectorkeyframe_data = new VFramePng(get_image_data("projectorkeyframe.png"));
930 }
931
932 void HULKTHEME::draw_rwindow_bg(RecordGUI *gui)
933 {
934 //      int y;
935 //      int margin = 50;
936 //      int margin2 = 80;
937 //      gui->draw_9segment(recordgui_batch_x - margin,
938 //              0,
939 //              mwindow->session->rwindow_w - recordgui_status_x + margin,
940 //              recordgui_buttons_y,
941 //              rgui_batch);
942 //      gui->draw_3segmenth(recordgui_options_x - margin2,
943 //              recordgui_buttons_y - 5,
944 //              mwindow->session->rwindow_w - recordgui_options_x + margin2,
945 //              rgui_controls);
946 //      y = recordgui_buttons_y - 5 + rgui_controls->get_h();
947 //      gui->draw_9segment(0,
948 //              y,
949 //              mwindow->session->rwindow_w,
950 //              mwindow->session->rwindow_h - y,
951 //              rgui_list);
952 }
953
954 void HULKTHEME::draw_rmonitor_bg(RecordMonitorGUI *gui)
955 {
956 //      int margin = 45;
957 //      int panel_w = 300;
958 //      int x = rmonitor_meter_x - margin;
959 //      int w = mwindow->session->rmonitor_w - x;
960 //      if(w < rmonitor_meters->get_w()) w = rmonitor_meters->get_w();
961 //      gui->clear_box(0,
962 //              0,
963 //              mwindow->session->rmonitor_w,
964 //              mwindow->session->rmonitor_h);
965 //      gui->draw_9segment(x,
966 //              0,
967 //              w,
968 //              mwindow->session->rmonitor_h,
969 //              rmonitor_meters);
970 }
971
972
973
974
975
976
977 void HULKTHEME::draw_mwindow_bg(MWindowGUI *gui)
978 {
979 // Button bar
980         gui->draw_3segmenth(mbuttons_x, mbuttons_y - 1,
981                 gui->menu_w(), get_image("mbutton_bg"));
982
983         int pdw = get_image("panel_divider")->get_w();
984         int x = mbuttons_x;
985         x += 9 * get_image("play")->get_w();
986         x += mtransport_margin;                                       // the control buttons
987
988         gui->draw_vframe(get_image("panel_divider"),
989                 x - toggle_margin / 2 - pdw / 2 + 2,
990                 mbuttons_y - 1);
991         x += 2 * get_image("arrow")->get_w() + toggle_margin;           // the mode buttons
992
993         gui->draw_vframe(get_image("panel_divider"),
994                 x - toggle_margin / 2 - pdw / 2 + 2,
995                 mbuttons_y - 1);
996
997         x += 2 * get_image("autokeyframe")->get_w() + toggle_margin;    // the state toggle buttons
998         gui->draw_vframe(get_image("panel_divider"),
999                 x - toggle_margin / 2 - pdw / 2 + 2,
1000                 mbuttons_y - 1);
1001
1002 // Clock
1003         gui->draw_3segmenth(0,
1004                 mbuttons_y - 1 + get_image("mbutton_bg")->get_h(),
1005                 get_image("patchbay_bg")->get_w(),
1006                 get_image("clock_bg"));
1007
1008 // Patchbay
1009         gui->draw_3segmentv(patchbay_x,
1010                 patchbay_y,
1011                 patchbay_h,
1012                 get_image("patchbay_bg"));
1013
1014 // Track canvas
1015         gui->set_color(BLACK);
1016         gui->draw_box(mcanvas_x + get_image("patchbay_bg")->get_w(),
1017                 mcanvas_y + mtimebar_h,
1018                 mcanvas_w - BC_ScrollBar::get_span(SCROLL_VERT),
1019                 mcanvas_h - BC_ScrollBar::get_span(SCROLL_HORIZ) - mtimebar_h);
1020
1021 // Timebar
1022         gui->draw_3segmenth(mtimebar_x,
1023                 mtimebar_y,
1024                 mtimebar_w,
1025                 get_image("timebar_bg"));
1026
1027 // Zoombar
1028         gui->set_color(0x75b697);
1029         gui->draw_box(mzoom_x,
1030                 mzoom_y,
1031                 mwindow->session->mwindow_w,
1032                 25);
1033
1034 // Scrollbar filler
1035 //      gui->draw_vframe(get_image("mscroll_filler"),
1036 //              mcanvas_x + mcanvas_w - BC_ScrollBar::get_span(SCROLL_VERT),
1037 //              mcanvas_y + mcanvas_h - BC_ScrollBar::get_span(SCROLL_HORIZ));
1038
1039 // Status
1040         gui->draw_3segmenth(mzoom_x,
1041                 mzoom_y,
1042                 mzoom_w,
1043                 get_image("statusbar"));
1044
1045
1046 }
1047
1048 void HULKTHEME::draw_cwindow_bg(CWindowGUI *gui)
1049 {
1050         gui->draw_3segmentv(0, 0, ccomposite_h, get_image("cpanel_bg"));
1051
1052         gui->draw_3segmenth(0, ccomposite_h, cstatus_x, get_image("cbuttons_left"));
1053
1054         if(mwindow->edl->session->cwindow_meter)
1055         {
1056                 gui->draw_3segmenth(cstatus_x,
1057                         ccomposite_h,
1058                         cmeter_x - widget_border - cstatus_x,
1059                         get_image("cbuttons_right"));
1060                 gui->draw_9segment(cmeter_x - widget_border,
1061                         0,
1062                         mwindow->session->cwindow_w - cmeter_x + widget_border,
1063                         mwindow->session->cwindow_h,
1064                         get_image("cmeter_bg"));
1065         }
1066         else
1067         {
1068                 gui->draw_3segmenth(cstatus_x,
1069                         ccomposite_h,
1070                         cmeter_x - widget_border - cstatus_x + 100,
1071                         get_image("cbuttons_right"));
1072         }
1073 }
1074
1075 void HULKTHEME::draw_vwindow_bg(VWindowGUI *gui)
1076 {
1077         gui->draw_3segmenth(0,
1078                 vcanvas_h,
1079                 vdivision_x,
1080                 get_image("vbuttons_left"));
1081         if(mwindow->edl->session->vwindow_meter)
1082         {
1083                 gui->draw_3segmenth(vdivision_x,
1084                         vcanvas_h,
1085                         vmeter_x - widget_border - vdivision_x,
1086                         get_image("cbuttons_right"));
1087                 gui->draw_9segment(vmeter_x - widget_border,
1088                         0,
1089                         mwindow->session->vwindow_w - vmeter_x + widget_border,
1090                         mwindow->session->vwindow_h,
1091                         get_image("cmeter_bg"));
1092         }
1093         else
1094         {
1095                 gui->draw_3segmenth(vdivision_x,
1096                         vcanvas_h,
1097                         vmeter_x - widget_border - vdivision_x + 100,
1098                         get_image("cbuttons_right"));
1099         }
1100
1101 // Clock border
1102         gui->draw_3segmenth(vtime_x - 20,
1103                 vtime_y - 1,
1104                 vtime_w + 40,
1105                 get_image("vclock"));
1106 }
1107
1108 void HULKTHEME::draw_preferences_bg(PreferencesWindow *gui)
1109 {
1110         gui->draw_vframe(get_image("preferences_bg"), 0, 0);
1111 }
1112
1113 void HULKTHEME::draw_new_bg(NewWindow *gui)
1114 {
1115         gui->draw_vframe(get_image("new_bg"), 0, 0);
1116 }
1117
1118 void HULKTHEME::draw_setformat_bg(SetFormatWindow *gui)
1119 {
1120         gui->draw_vframe(get_image("setformat_bg"), 0, 0);
1121 }
1122