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