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