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