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