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