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