fixes for colorpicker loops/deadlocks, add mask smooth_buttons, rm orig mask_smooth
[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
876         flush_images();
877
878         title_font = MEDIUMFONT_3D;
879         title_color = 0x001000;
880         recordgui_fixed_color = YELLOW;
881         recordgui_variable_color = RED;
882
883         channel_position_color = MEYELLOW;
884         resources->meter_title_w = 25;
885
886         // (asset) edit info text color
887         edit_font_color = YELLOW;
888 }
889
890 #define VWINDOW_METER_MARGIN 5
891
892
893
894 void HULKTHEME::build_bg_data()
895 {
896 // Audio settings
897         channel_position_data = new VFramePng(get_image_data("channel_position.png"));
898
899 // Track bitmaps
900         new_image("resource1024", "resource1024.png");
901         new_image("resource512", "resource512.png");
902         new_image("resource256", "resource256.png");
903         new_image("resource128", "resource128.png");
904         new_image("resource64", "resource64.png");
905         new_image("resource32", "resource32.png");
906         new_image("plugin_bg_data", "plugin_bg.png");
907         new_image("title_bg_data", "title_bg.png");
908         new_image("vtimebar_bg_data", "vwindow_timebar.png");
909 }
910
911
912 void HULKTHEME::build_overlays()
913 {
914         keyframe_data = new VFramePng(get_image_data("keyframe3.png"));
915         camerakeyframe_data = new VFramePng(get_image_data("camerakeyframe.png"));
916         maskkeyframe_data = new VFramePng(get_image_data("maskkeyframe.png"));
917         modekeyframe_data = new VFramePng(get_image_data("modekeyframe.png"));
918         hardedge_data = new VFramePng(get_image_data("hardedge.png"));
919         pankeyframe_data = new VFramePng(get_image_data("pankeyframe.png"));
920         projectorkeyframe_data = new VFramePng(get_image_data("projectorkeyframe.png"));
921 }
922
923 void HULKTHEME::draw_rwindow_bg(RecordGUI *gui)
924 {
925 //      int y;
926 //      int margin = 50;
927 //      int margin2 = 80;
928 //      gui->draw_9segment(recordgui_batch_x - margin,
929 //              0,
930 //              mwindow->session->rwindow_w - recordgui_status_x + margin,
931 //              recordgui_buttons_y,
932 //              rgui_batch);
933 //      gui->draw_3segmenth(recordgui_options_x - margin2,
934 //              recordgui_buttons_y - 5,
935 //              mwindow->session->rwindow_w - recordgui_options_x + margin2,
936 //              rgui_controls);
937 //      y = recordgui_buttons_y - 5 + rgui_controls->get_h();
938 //      gui->draw_9segment(0,
939 //              y,
940 //              mwindow->session->rwindow_w,
941 //              mwindow->session->rwindow_h - y,
942 //              rgui_list);
943 }
944
945 void HULKTHEME::draw_rmonitor_bg(RecordMonitorGUI *gui)
946 {
947 //      int margin = 45;
948 //      int panel_w = 300;
949 //      int x = rmonitor_meter_x - margin;
950 //      int w = mwindow->session->rmonitor_w - x;
951 //      if(w < rmonitor_meters->get_w()) w = rmonitor_meters->get_w();
952 //      gui->clear_box(0,
953 //              0,
954 //              mwindow->session->rmonitor_w,
955 //              mwindow->session->rmonitor_h);
956 //      gui->draw_9segment(x,
957 //              0,
958 //              w,
959 //              mwindow->session->rmonitor_h,
960 //              rmonitor_meters);
961 }
962
963
964
965
966
967
968 void HULKTHEME::draw_mwindow_bg(MWindowGUI *gui)
969 {
970 // Button bar
971         gui->draw_3segmenth(mbuttons_x, mbuttons_y - 1,
972                 gui->menu_w(), get_image("mbutton_bg"));
973
974         int pdw = get_image("panel_divider")->get_w();
975         int x = mbuttons_x;
976         x += 9 * get_image("play")->get_w();
977         x += mtransport_margin;                                       // the control buttons
978
979         gui->draw_vframe(get_image("panel_divider"),
980                 x - toggle_margin / 2 - pdw / 2 + 2,
981                 mbuttons_y - 1);
982         x += 2 * get_image("arrow")->get_w() + toggle_margin;           // the mode buttons
983
984         gui->draw_vframe(get_image("panel_divider"),
985                 x - toggle_margin / 2 - pdw / 2 + 2,
986                 mbuttons_y - 1);
987
988         x += 2 * get_image("autokeyframe")->get_w() + toggle_margin;    // the state toggle buttons
989         gui->draw_vframe(get_image("panel_divider"),
990                 x - toggle_margin / 2 - pdw / 2 + 2,
991                 mbuttons_y - 1);
992
993 // Clock
994         gui->draw_3segmenth(0,
995                 mbuttons_y - 1 + get_image("mbutton_bg")->get_h(),
996                 get_image("patchbay_bg")->get_w(),
997                 get_image("clock_bg"));
998
999 // Patchbay
1000         gui->draw_3segmentv(patchbay_x,
1001                 patchbay_y,
1002                 patchbay_h,
1003                 get_image("patchbay_bg"));
1004
1005 // Track canvas
1006         gui->set_color(BLACK);
1007         gui->draw_box(mcanvas_x + get_image("patchbay_bg")->get_w(),
1008                 mcanvas_y + mtimebar_h,
1009                 mcanvas_w - BC_ScrollBar::get_span(SCROLL_VERT),
1010                 mcanvas_h - BC_ScrollBar::get_span(SCROLL_HORIZ) - mtimebar_h);
1011
1012 // Timebar
1013         gui->draw_3segmenth(mtimebar_x,
1014                 mtimebar_y,
1015                 mtimebar_w,
1016                 get_image("timebar_bg"));
1017
1018 // Zoombar
1019         gui->set_color(0x75b697);
1020         gui->draw_box(mzoom_x,
1021                 mzoom_y,
1022                 mwindow->session->mwindow_w,
1023                 25);
1024
1025 // Scrollbar filler
1026 //      gui->draw_vframe(get_image("mscroll_filler"),
1027 //              mcanvas_x + mcanvas_w - BC_ScrollBar::get_span(SCROLL_VERT),
1028 //              mcanvas_y + mcanvas_h - BC_ScrollBar::get_span(SCROLL_HORIZ));
1029
1030 // Status
1031         gui->draw_3segmenth(mzoom_x,
1032                 mzoom_y,
1033                 mzoom_w,
1034                 get_image("statusbar"));
1035
1036
1037 }
1038
1039 void HULKTHEME::draw_cwindow_bg(CWindowGUI *gui)
1040 {
1041         gui->draw_3segmentv(0, 0, ccomposite_h, get_image("cpanel_bg"));
1042
1043         gui->draw_3segmenth(0, ccomposite_h, cstatus_x, get_image("cbuttons_left"));
1044
1045         if(mwindow->edl->session->cwindow_meter)
1046         {
1047                 gui->draw_3segmenth(cstatus_x,
1048                         ccomposite_h,
1049                         cmeter_x - widget_border - cstatus_x,
1050                         get_image("cbuttons_right"));
1051                 gui->draw_9segment(cmeter_x - widget_border,
1052                         0,
1053                         mwindow->session->cwindow_w - cmeter_x + widget_border,
1054                         mwindow->session->cwindow_h,
1055                         get_image("cmeter_bg"));
1056         }
1057         else
1058         {
1059                 gui->draw_3segmenth(cstatus_x,
1060                         ccomposite_h,
1061                         cmeter_x - widget_border - cstatus_x + 100,
1062                         get_image("cbuttons_right"));
1063         }
1064 }
1065
1066 void HULKTHEME::draw_vwindow_bg(VWindowGUI *gui)
1067 {
1068         gui->draw_3segmenth(0,
1069                 vcanvas_h,
1070                 vdivision_x,
1071                 get_image("vbuttons_left"));
1072         if(mwindow->edl->session->vwindow_meter)
1073         {
1074                 gui->draw_3segmenth(vdivision_x,
1075                         vcanvas_h,
1076                         vmeter_x - widget_border - vdivision_x,
1077                         get_image("cbuttons_right"));
1078                 gui->draw_9segment(vmeter_x - widget_border,
1079                         0,
1080                         mwindow->session->vwindow_w - vmeter_x + widget_border,
1081                         mwindow->session->vwindow_h,
1082                         get_image("cmeter_bg"));
1083         }
1084         else
1085         {
1086                 gui->draw_3segmenth(vdivision_x,
1087                         vcanvas_h,
1088                         vmeter_x - widget_border - vdivision_x + 100,
1089                         get_image("cbuttons_right"));
1090         }
1091
1092 // Clock border
1093         gui->draw_3segmenth(vtime_x - 20,
1094                 vtime_y - 1,
1095                 vtime_w + 40,
1096                 get_image("vclock"));
1097 }
1098
1099 void HULKTHEME::draw_preferences_bg(PreferencesWindow *gui)
1100 {
1101         gui->draw_vframe(get_image("preferences_bg"), 0, 0);
1102 }
1103
1104 void HULKTHEME::draw_new_bg(NewWindow *gui)
1105 {
1106         gui->draw_vframe(get_image("new_bg"), 0, 0);
1107 }
1108
1109 void HULKTHEME::draw_setformat_bg(SetFormatWindow *gui)
1110 {
1111         gui->draw_vframe(get_image("setformat_bg"), 0, 0);
1112 }
1113