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