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