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