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