fixes for colorpicker loops/deadlocks, add mask smooth_buttons, rm orig mask_smooth
[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         new_button("mask_pnt_linear.png",
305                 "mask_button_up.png",
306                 "mask_button_hi.png",
307                 "mask_button_dn.png",
308                 "mask_pnt_linear_images");
309         new_button("mask_crv_linear.png",
310                 "mask_button_up.png",
311                 "mask_button_hi.png",
312                 "mask_button_dn.png",
313                 "mask_crv_linear_images");
314         new_button("mask_all_linear.png",
315                 "mask_button_up.png",
316                 "mask_button_hi.png",
317                 "mask_button_dn.png",
318                 "mask_all_linear_images");
319
320         new_button("mask_pnt_smooth.png",
321                 "mask_button_up.png",
322                 "mask_button_hi.png",
323                 "mask_button_dn.png",
324                 "mask_pnt_smooth_images");
325         new_button("mask_crv_smooth.png",
326                 "mask_button_up.png",
327                 "mask_button_hi.png",
328                 "mask_button_dn.png",
329                 "mask_crv_smooth_images");
330         new_button("mask_all_smooth.png",
331                 "mask_button_up.png",
332                 "mask_button_hi.png",
333                 "mask_button_dn.png",
334                 "mask_all_smooth_images");
335
336         resources->medium_7segment = new_image_set(TOTAL_7SEGMENT,
337                 "0.png",
338                 "1.png",
339                 "2.png",
340                 "3.png",
341                 "4.png",
342                 "5.png",
343                 "6.png",
344                 "7.png",
345                 "8.png",
346                 "9.png",
347                 "colon.png",
348                 "period.png",
349                 "a.png",
350                 "b.png",
351                 "c.png",
352                 "d.png",
353                 "e.png",
354                 "f.png",
355                 "space.png",
356                 "dash.png");
357
358         resources->bar_data = new_image("bar", "bar.png");
359
360
361         resources->min_menu_w = 96;
362         resources->menu_popup_bg = new_image("menu_popup_bg.png");
363         resources->menu_item_bg = new_image_set(3,
364                 "menuitem_up.png",
365                 "menuitem_hi.png",
366                 "menuitem_dn.png");
367         resources->menu_bar_bg = new_image("menubar_bg.png");
368         resources->menu_title_bg = new_image_set(3,
369                 "menubar_up.png",
370                 "menubar_hi.png",
371                 "menubar_dn.png");
372
373
374
375         resources->toggle_text_margin = resources->generic_button_margin;
376         resources->toggle_highlight_bg = new_image("toggle_highlight_bg",
377                 "generic_up.png");
378
379         resources->generic_button_images = new_image_set(3,
380                         "generic_up.png",
381                         "generic_hi.png",
382                         "generic_dn.png");
383         resources->horizontal_slider_data = new_image_set(6,
384                         "hslider_fg_up.png",
385                         "hslider_fg_hi.png",
386                         "hslider_fg_dn.png",
387                         "hslider_bg_up.png",
388                         "hslider_bg_hi.png",
389                         "hslider_bg_dn.png");
390         resources->vertical_slider_data = new_image_set(6,
391                         "hslider_fg_up.png",
392                         "hslider_fg_hi.png",
393                         "hslider_fg_dn.png",
394                         "hslider_bg_up.png",
395                         "hslider_bg_hi.png",
396                         "hslider_bg_dn.png");
397         for( int i=0; i<6; ++i )
398                 resources->vertical_slider_data[i]->rotate90();
399
400         resources->progress_images = new_image_set(2,
401                         "progress_bg.png",
402                         "progress_hi.png");
403         resources->tumble_data = new_image_set(4,
404                 "tumble_up.png",
405                 "tumble_hi.png",
406                 "tumble_bottom.png",
407                 "tumble_top.png");
408         resources->listbox_button = new_button4("listbox_button.png",
409                 "editpanel_up.png",
410                 "editpanel_hi.png",
411                 "editpanel_dn.png",
412                 "editpanel_hi.png",
413                 "listbox_button");
414         resources->listbox_column = new_image_set(3,
415                 "column_up.png",
416                 "column_hi.png",
417                 "column_dn.png");
418         resources->listbox_up = new_image("listbox_up.png");
419         resources->listbox_dn = new_image("listbox_dn.png");
420         resources->pan_data = new_image_set(7,
421                         "pan_up.png",
422                         "pan_hi.png",
423                         "pan_popup.png",
424                         "pan_channel.png",
425                         "pan_stick.png",
426                         "pan_channel_small.png",
427                         "pan_stick_small.png");
428         resources->pan_text_color = BLACK;
429
430         resources->pot_images = new_image_set(3,
431                 "bright_pot_up.png",
432                 "bright_pot_hi.png",
433                 "bright_pot_dn.png");
434
435         resources->checkbox_images = new_image_set(5,
436                 "bright_checkbox_up.png",
437                 "bright_checkbox_hi.png",
438                 "bright_checkbox_checked.png",
439                 "bright_checkbox_dn.png",
440                 "bright_checkbox_checkedhi.png");
441
442         resources->radial_images = new_image_set(5,
443                 "radial_up.png",
444                 "radial_hi.png",
445                 "radial_checked.png",
446                 "radial_dn.png",
447                 "radial_checkedhi.png");
448
449         resources->xmeter_images = new_image_set(7,
450                 "xmeter_normal.png",
451                 "xmeter_green.png",
452                 "xmeter_red.png",
453                 "xmeter_yellow.png",
454                 "xmeter_white.png",
455                 "xmeter_over.png",
456                 "downmix51_2.png");
457         resources->ymeter_images = new_image_set(7,
458                 "ymeter_normal.png",
459                 "ymeter_green.png",
460                 "ymeter_red.png",
461                 "ymeter_yellow.png",
462                 "ymeter_white.png",
463                 "ymeter_over.png",
464                 "downmix51_2.png");
465
466         resources->hscroll_data = new_image_set(10,
467                         "bright_hscroll_handle_up.png",
468                         "bright_hscroll_handle_hi.png",
469                         "bright_hscroll_handle_dn.png",
470                         "bright_hscroll_handle_bg.png",
471                         "bright_hscroll_left_up.png",
472                         "bright_hscroll_left_hi.png",
473                         "bright_hscroll_left_dn.png",
474                         "bright_hscroll_right_up.png",
475                         "bright_hscroll_right_hi.png",
476                         "bright_hscroll_right_dn.png");
477
478         resources->vscroll_data = new_image_set(10,
479                         "bright_vscroll_handle_up.png",
480                         "bright_vscroll_handle_hi.png",
481                         "bright_vscroll_handle_dn.png",
482                         "bright_vscroll_handle_bg.png",
483                         "bright_vscroll_left_up.png",
484                         "bright_vscroll_left_hi.png",
485                         "bright_vscroll_left_dn.png",
486                         "bright_vscroll_right_up.png",
487                         "bright_vscroll_right_hi.png",
488                         "bright_vscroll_right_dn.png");
489
490
491         new_button("prevtip.png", "tipbutton_up.png", "tipbutton_hi.png", "tipbutton_dn.png", "prev_tip");
492         new_button("nexttip.png", "tipbutton_up.png", "tipbutton_hi.png", "tipbutton_dn.png", "next_tip");
493         new_button("closetip.png", "tipbutton_up.png", "tipbutton_hi.png", "tipbutton_dn.png", "close_tip");
494         new_button("swap_extents.png",
495                 "editpanel_up.png",
496                 "editpanel_hi.png",
497                 "editpanel_dn.png",
498                 "swap_extents");
499
500
501
502
503         preferences_category_overlap = 0;
504         preferencescategory_x = 0;
505         preferencescategory_y = 5;
506         preferencestitle_x = 5;
507         preferencestitle_y = 10;
508         preferencesoptions_x = 5;
509         preferencesoptions_y = 0;
510
511 // MWindow
512         message_normal = resources->text_default;
513         audio_color = 0x00ff00;
514         assetedit_color = BLACK;
515         mtransport_margin = 20;
516         toggle_margin = 20;
517         timebar_cursor_color = BLACK;
518
519         new_image("mbutton_bg", "mbutton_bg.png");
520         new_image("timebar_bg", "timebar_bg_flat.png");
521         new_image("timebar_brender", "timebar_brender.png");
522         new_image("clock_bg", "mclock_flat.png");
523         new_image("patchbay_bg", "patchbay_bg.png");
524         new_image("statusbar", "statusbar.png");
525 //      new_image("mscroll_filler", "mscroll_filler.png");
526         pane_color = BLACK;
527         drag_pane_color = BLACK;
528
529         new_button("pane.png", "pane_up.png", "pane_hi.png", "pane_dn.png", "pane");
530         new_image_set("xpane", 3, "xpane_up.png", "xpane_hi.png", "xpane_dn.png");
531         new_image_set("ypane", 3, "ypane_up.png", "ypane_hi.png", "ypane_dn.png");
532
533         new_image_set("zoombar_menu", 3, "zoompopup_up.png", "zoompopup_hi.png", "zoompopup_dn.png");
534         new_image_set("zoombar_tumbler", 4, "tumble_up.png", "tumble_hi.png", "tumble_bottom.png", "tumble_top.png");
535
536         new_image_set("mode_popup", 3, "mode_up.png", "mode_hi.png", "mode_dn.png");
537         new_image("mode_add", "mode_add.png");
538         new_image("mode_divide", "mode_divide.png");
539         new_image("mode_multiply", "mode_multiply.png");
540         new_image("mode_normal", "mode_normal.png");
541         new_image("mode_replace", "mode_replace.png");
542         new_image("mode_subtract", "mode_subtract.png");
543         new_image("mode_max", "mode_max.png");
544         new_image("mode_min", "mode_min.png");
545
546         new_image_set("plugin_on", 5, "plugin_on.png", "plugin_onhi.png", "plugin_onselect.png", "plugin_ondn.png", "plugin_onselecthi.png");
547         new_image_set("plugin_show", 5, "plugin_show.png", "plugin_showhi.png", "plugin_showselect.png", "plugin_showdn.png", "plugin_showselecthi.png");
548
549 // CWindow
550         new_image("cpanel_bg", "cpanel_bg.png");
551         new_image("cbuttons_left", "cbuttons_left.png");
552         new_image("cbuttons_right", "cbuttons_right.png");
553         new_image("cmeter_bg", "cmeter_bg.png");
554         new_image("cwindow_focus", "cwindow_focus.png");
555
556 // VWindow
557         new_image("vbuttons_left", "vbuttons_left.png");
558         new_image("vclock", "vclock.png");
559
560         new_image("preferences_bg", "preferences_bg.png");
561
562
563         new_image("new_bg", "new_bg.png");
564         new_image("setformat_bg", "setformat_bg.png");
565
566
567         timebar_view_data = new_image("timebar_view.png");
568
569         setformat_w = get_image("setformat_bg")->get_w();
570         setformat_h = get_image("setformat_bg")->get_h();
571         setformat_x1 = 15;
572         setformat_x2 = 100;
573
574         setformat_x3 = 315;
575         setformat_x4 = 415;
576         setformat_y1 = 20;
577         setformat_y2 = 85;
578         setformat_y3 = 125;
579         setformat_margin = 30;
580         setformat_channels_x = 25;
581         setformat_channels_y = 242;
582         setformat_channels_w = 250;
583         setformat_channels_h = 250;
584
585         loadfile_pad = get_image_set("loadmode_new")[0]->get_h() + 10;
586         browse_pad = 20;
587
588
589         new_toggle("playpatch.png",
590                 "patch_up.png",
591                 "patch_hi.png",
592                 "patch_checked.png",
593                 "patch_dn.png",
594                 "patch_checkedhi.png",
595                 "playpatch_data");
596
597         new_toggle("recordpatch.png",
598                 "patch_up.png",
599                 "patch_hi.png",
600                 "patch_checked.png",
601                 "patch_dn.png",
602                 "patch_checkedhi.png",
603                 "recordpatch_data");
604
605         new_toggle("gangpatch.png",
606                 "patch_up.png",
607                 "patch_hi.png",
608                 "patch_checked.png",
609                 "patch_dn.png",
610                 "patch_checkedhi.png",
611                 "gangpatch_data");
612
613         new_toggle("drawpatch.png",
614                 "patch_up.png",
615                 "patch_hi.png",
616                 "patch_checked.png",
617                 "patch_dn.png",
618                 "patch_checkedhi.png",
619                 "drawpatch_data");
620
621
622         new_image_set("mutepatch_data",
623                 5,
624                 "mutepatch_up.png",
625                 "mutepatch_hi.png",
626                 "mutepatch_checked.png",
627                 "mutepatch_dn.png",
628                 "mutepatch_checkedhi.png");
629
630         new_image_set("expandpatch_data",
631                 5,
632                 "expandpatch_up.png",
633                 "expandpatch_hi.png",
634                 "expandpatch_checked.png",
635                 "expandpatch_dn.png",
636                 "expandpatch_checkedhi.png");
637
638         build_bg_data();
639         build_overlays();
640
641
642
643
644         out_point = new_image_set(5,
645                 "out_up.png",
646                 "out_hi.png",
647                 "out_checked.png",
648                 "out_dn.png",
649                 "out_checkedhi.png");
650         in_point = new_image_set(5,
651                 "in_up.png",
652                 "in_hi.png",
653                 "in_checked.png",
654                 "in_dn.png",
655                 "in_checkedhi.png");
656
657         label_toggle = new_image_set(5,
658                 "labeltoggle_up.png",
659                 "labeltoggle_uphi.png",
660                 "label_checked.png",
661                 "labeltoggle_dn.png",
662                 "label_checkedhi.png");
663
664         ffmpeg_toggle = new_image_set(5,
665                 "ff_up.png",
666                 "ff_hi.png",
667                 "ff_checked.png",
668                 "ff_down.png",
669                 "ff_checkedhi.png");
670
671         proxy_p_toggle = new_image_set(5,
672                 "proxy_p_up.png",
673                 "proxy_p_hi.png",
674                 "proxy_p_chkd.png",
675                 "proxy_p_down.png",
676                 "proxy_p_chkdhi.png");
677
678         proxy_s_toggle = new_image_set(5,
679                 "proxy_s_up.png",
680                 "proxy_s_hi.png",
681                 "proxy_s_chkd.png",
682                 "proxy_s_down.png",
683                 "proxy_s_chkdhi.png");
684
685         mask_mode_toggle = new_image_set(5,
686                 "mask_mode_up.png",
687                 "mask_mode_hi.png",
688                 "mask_mode_chkd.png",
689                 "mask_mode_down.png",
690                 "mask_mode_chkdhi.png");
691
692         shbtn_data = new_image_set(3,
693                 "shbtn_up.png",
694                 "shbtn_hi.png",
695                 "shbtn_dn.png");
696
697         new_image_set("preset_edit",
698                 3,
699                 "preset_edit0.png",
700                 "preset_edit1.png",
701                 "preset_edit2.png");
702
703         new_image_set("histogram_carrot",
704                 5,
705                 "histogram_carrot_up.png",
706                 "histogram_carrot_hi.png",
707                 "histogram_carrot_checked.png",
708                 "histogram_carrot_dn.png",
709                 "histogram_carrot_checkedhi.png");
710
711
712         statusbar_cancel_data = new_image_set(3,
713                 "statusbar_cancel_up.png",
714                 "statusbar_cancel_hi.png",
715                 "statusbar_cancel_dn.png");
716
717
718         VFrame *editpanel_up = new_image("editpanel_up.png");
719         VFrame *editpanel_hi = new_image("editpanel_hi.png");
720         VFrame *editpanel_dn = new_image("editpanel_dn.png");
721         VFrame *editpanel_checked = new_image("editpanel_checked.png");
722         VFrame *editpanel_checkedhi = new_image("editpanel_checkedhi.png");
723
724         new_image("panel_divider", "panel_divider.png");
725         new_button("bottom_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "bottom_justify");
726         new_button("center_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "center_justify");
727         new_button("channel.png", editpanel_up, editpanel_hi, editpanel_dn, "channel");
728         new_button("lok.png", editpanel_up, editpanel_hi, editpanel_dn, "lok");
729
730         new_toggle("histogram_toggle.png",
731                 editpanel_up,
732                 editpanel_hi,
733                 editpanel_checked,
734                 editpanel_dn,
735                 editpanel_checkedhi,
736                 "histogram_toggle");
737         new_toggle("histogram_rgb.png",
738                 editpanel_up,
739                 editpanel_hi,
740                 editpanel_checked,
741                 editpanel_dn,
742                 editpanel_checkedhi,
743                 "histogram_rgb_toggle");
744         new_toggle("waveform.png",
745                 editpanel_up,
746                 editpanel_hi,
747                 editpanel_checked,
748                 editpanel_dn,
749                 editpanel_checkedhi,
750                 "waveform_toggle");
751         new_toggle("waveform_rgb.png",
752                 editpanel_up,
753                 editpanel_hi,
754                 editpanel_checked,
755                 editpanel_dn,
756                 editpanel_checkedhi,
757                 "waveform_rgb_toggle");
758         new_toggle("scope.png",
759                 editpanel_up,
760                 editpanel_hi,
761                 editpanel_checked,
762                 editpanel_dn,
763                 editpanel_checkedhi,
764                 "scope_toggle");
765
766         new_button("picture.png", editpanel_up, editpanel_hi, editpanel_dn, "picture");
767         new_button("histogram_img.png", editpanel_up, editpanel_hi, editpanel_dn, "histogram_img");
768
769         new_button("copy.png", editpanel_up, editpanel_hi, editpanel_dn, "copy");
770         new_button("commercial.png", editpanel_up, editpanel_hi, editpanel_dn, "commercial");
771         new_button("cut.png", editpanel_up, editpanel_hi, editpanel_dn, "cut");
772         new_button("fit.png", editpanel_up, editpanel_hi, editpanel_dn, "fit");
773         new_button("fitautos.png", editpanel_up, editpanel_hi, editpanel_dn, "fitautos");
774         new_button("inpoint.png", editpanel_up, editpanel_hi, editpanel_dn, "inbutton");
775         new_button("label.png", editpanel_up, editpanel_hi, editpanel_dn, "labelbutton");
776         new_button("left_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "left_justify");
777         new_button("magnify.png", editpanel_up, editpanel_hi, editpanel_dn, "magnify_button");
778         new_button("middle_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "middle_justify");
779         new_button("nextlabel.png", editpanel_up, editpanel_hi, editpanel_dn, "nextlabel");
780         new_button("prevlabel.png", editpanel_up, editpanel_hi, editpanel_dn, "prevlabel");
781         new_button("nextedit.png", editpanel_up, editpanel_hi, editpanel_dn, "nextedit");
782         new_button("prevedit.png", editpanel_up, editpanel_hi, editpanel_dn, "prevedit");
783         new_button("outpoint.png", editpanel_up, editpanel_hi, editpanel_dn, "outbutton");
784         over_button = new_button("over.png", editpanel_up, editpanel_hi, editpanel_dn, "overbutton");
785         overwrite_data = new_button("overwrite.png", editpanel_up, editpanel_hi, editpanel_dn, "overwritebutton");
786         new_button("paste.png", editpanel_up, editpanel_hi, editpanel_dn, "paste");
787         new_button("redo.png", editpanel_up, editpanel_hi, editpanel_dn, "redo");
788         new_button("right_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "right_justify");
789         splice_data = new_button("splice.png", editpanel_up, editpanel_hi, editpanel_dn, "slicebutton");
790         new_button("toclip.png", editpanel_up, editpanel_hi, editpanel_dn, "toclip");
791         new_button("goto.png", editpanel_up, editpanel_hi, editpanel_dn, "goto");
792         new_button("top_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "top_justify");
793         new_button("undo.png", editpanel_up, editpanel_hi, editpanel_dn, "undo");
794         new_button("wrench.png", editpanel_up, editpanel_hi, editpanel_dn, "wrench");
795
796
797         VFrame *transport_up = new_image("transportup.png");
798         VFrame *transport_hi = new_image("transporthi.png");
799         VFrame *transport_dn = new_image("transportdn.png");
800
801         new_button("end.png", transport_up, transport_hi, transport_dn, "end");
802         new_button("fastfwd.png", transport_up, transport_hi, transport_dn, "fastfwd");
803         new_button("fastrev.png", transport_up, transport_hi, transport_dn, "fastrev");
804         new_button("play.png", transport_up, transport_hi, transport_dn, "play");
805         new_button("framefwd.png", transport_up, transport_hi, transport_dn, "framefwd");
806         new_button("framerev.png", transport_up, transport_hi, transport_dn, "framerev");
807         new_button("pause.png", transport_up, transport_hi, transport_dn, "pause");
808         new_button("record.png", transport_up, transport_hi, transport_dn, "record");
809         new_button("singleframe.png", transport_up, transport_hi, transport_dn, "recframe");
810         new_button("reverse.png", transport_up, transport_hi, transport_dn, "reverse");
811         new_button("rewind.png", transport_up, transport_hi, transport_dn, "rewind");
812         new_button("stop.png", transport_up, transport_hi, transport_dn, "stop");
813         new_button("stop.png", transport_up, transport_hi, transport_dn, "stoprec");
814
815
816
817 // CWindow icons
818         new_image("cwindow_inactive", "cwindow_inactive.png");
819         new_image("cwindow_active", "cwindow_active.png");
820
821
822
823         new_image_set("category_button",
824                 3,
825                 "preferencesbutton_dn.png",
826                 "preferencesbutton_dnhi.png",
827                 "preferencesbutton_dnlo.png");
828
829         new_image_set("category_button_checked",
830                 3,
831                 "preferencesbutton_up.png",
832                 "preferencesbutton_uphi.png",
833                 "preferencesbutton_dnlo.png");
834
835
836
837         new_image_set("color3way_point",
838                 3,
839                 "color3way_up.png",
840                 "color3way_hi.png",
841                 "color3way_dn.png");
842
843
844
845
846         new_toggle("arrow.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "arrow");
847         new_toggle("autokeyframe.png", transport_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "autokeyframe");
848         new_toggle("ibeam.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "ibeam");
849         new_toggle("show_meters.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "meters");
850         new_toggle("blank30x30.png",
851                    new_image("locklabels_locked.png"),
852                    new_image("locklabels_lockedhi.png"),
853                    new_image("locklabels_unlocked.png"),
854                    new_image("locklabels_dn.png"), // can't have seperate down for each!!??
855                    new_image("locklabels_unlockedhi.png"),
856                    "locklabels");
857
858         VFrame *cpanel_up = new_image("cpanel_up.png");
859         VFrame *cpanel_hi = new_image("cpanel_hi.png");
860         VFrame *cpanel_dn = new_image("cpanel_dn.png");
861         VFrame *cpanel_checked = new_image("cpanel_checked.png");
862         VFrame *cpanel_checkedhi = new_image("cpanel_checkedhi.png");
863
864
865         new_toggle("camera.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "camera");
866         new_toggle("crop.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "crop");
867         new_toggle("eyedrop.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "eyedrop");
868         new_toggle("magnify.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "magnify");
869         new_toggle("mask.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "mask");
870         new_toggle("ruler.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "ruler");
871         new_toggle("projector.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "projector");
872         new_toggle("protect.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "protect");
873         new_toggle("titlesafe.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "titlesafe");
874         new_toggle("toolwindow.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "tool");
875
876         // toggle for tangent mode (compositor/tool window)
877         new_toggle("tan_smooth.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "tan_smooth");
878         new_toggle("tan_linear.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "tan_linear");
879
880
881         flush_images();
882
883         title_font = MEDIUMFONT;
884         title_color = 0x000000;
885         recordgui_fixed_color = BLACK;
886         recordgui_variable_color = BLACK;
887
888         channel_position_color = BLACK;
889         resources->meter_title_w = 25;
890 }
891
892
893
894 void BrightTheme::build_bg_data()
895 {
896 // Audio settings
897         channel_position_data = new VFramePng(get_image_data("channel_position.png"));
898
899 // Track bitmaps
900         new_image("resource1024", "resource1024.png");
901         new_image("resource512", "resource512.png");
902         new_image("resource256", "resource256.png");
903         new_image("resource128", "resource128.png");
904         new_image("resource64", "resource64.png");
905         new_image("resource32", "resource32.png");
906         new_image("plugin_bg_data", "plugin_bg.png");
907         new_image("title_bg_data", "title_bg.png");
908         new_image("vtimebar_bg_data", "vwindow_timebar.png");
909 }
910
911
912
913 void BrightTheme::build_overlays()
914 {
915         keyframe_data = new VFramePng(get_image_data("keyframe3.png"));
916         camerakeyframe_data = new VFramePng(get_image_data("camerakeyframe.png"));
917         maskkeyframe_data = new VFramePng(get_image_data("maskkeyframe.png"));
918         modekeyframe_data = new VFramePng(get_image_data("modekeyframe.png"));
919         hardedge_data = new VFramePng(get_image_data("hardedge.png"));
920         pankeyframe_data = new VFramePng(get_image_data("pankeyframe.png"));
921         projectorkeyframe_data = new VFramePng(get_image_data("projectorkeyframe.png"));
922 }
923
924
925
926
927
928
929
930
931
932 void BrightTheme::draw_rwindow_bg(RecordGUI *gui)
933 {
934 //      int y;
935 //      int margin = 50;
936 //      int margin2 = 80;
937 //      gui->draw_9segment(recordgui_batch_x - margin,
938 //              0,
939 //              mwindow->session->rwindow_w - recordgui_status_x + margin,
940 //              recordgui_buttons_y,
941 //              rgui_batch);
942 //      gui->draw_3segmenth(recordgui_options_x - margin2,
943 //              recordgui_buttons_y - 5,
944 //              mwindow->session->rwindow_w - recordgui_options_x + margin2,
945 //              rgui_controls);
946 //      y = recordgui_buttons_y - 5 + rgui_controls->get_h();
947 //      gui->draw_9segment(0,
948 //              y,
949 //              mwindow->session->rwindow_w,
950 //              mwindow->session->rwindow_h - y,
951 //              rgui_list);
952 }
953
954 void BrightTheme::draw_rmonitor_bg(RecordMonitorGUI *gui)
955 {
956 //      int margin = 45;
957 //      int panel_w = 300;
958 //      int x = rmonitor_meter_x - margin;
959 //      int w = mwindow->session->rmonitor_w - x;
960 //      if(w < rmonitor_meters->get_w()) w = rmonitor_meters->get_w();
961 //      gui->clear_box(0,
962 //              0,
963 //              mwindow->session->rmonitor_w,
964 //              mwindow->session->rmonitor_h);
965 //      gui->draw_9segment(x,
966 //              0,
967 //              w,
968 //              mwindow->session->rmonitor_h,
969 //              rmonitor_meters);
970 }
971
972
973
974
975
976
977 void BrightTheme::draw_mwindow_bg(MWindowGUI *gui)
978 {
979 // Button bar
980         gui->draw_3segmenth(mbuttons_x, mbuttons_y - 1,
981                 gui->menu_w(), get_image("mbutton_bg"));
982
983         gui->draw_vframe(get_image("panel_divider"),
984                 mbuttons_x + 228,
985                 mbuttons_y - 1);
986
987         gui->draw_vframe(get_image("panel_divider"),
988                 mbuttons_x + 320,
989                 mbuttons_y - 1);
990
991 // Clock
992         gui->draw_3segmenth(0,
993                 mbuttons_y - 1 + get_image("mbutton_bg")->get_h(),
994                 get_image("patchbay_bg")->get_w(),
995                 get_image("clock_bg"));
996
997 // Patchbay
998         gui->draw_3segmentv(patchbay_x,
999                 patchbay_y,
1000                 patchbay_h,
1001                 get_image("patchbay_bg"));
1002
1003 // Track canvas
1004         int patchbay_w = get_image("patchbay_bg")->get_w();
1005         gui->clear_box(mcanvas_x + patchbay_w,
1006                 mcanvas_y + mtimebar_h,
1007                 mcanvas_w - BC_ScrollBar::get_span(SCROLL_VERT) - patchbay_w,
1008                 patchbay_h - BC_ScrollBar::get_span(SCROLL_HORIZ) - mtimebar_h);
1009
1010 // Timebar
1011         gui->draw_3segmenth(mtimebar_x,
1012                 mtimebar_y,
1013                 mtimebar_w,
1014                 get_image("timebar_bg"));
1015
1016 // Zoombar
1017 //      gui->set_color(0x373737);
1018 //      gui->draw_box(mzoom_x,
1019 //              mzoom_y,
1020 //              mwindow->session->mwindow_w,
1021 //              25);
1022
1023 // Scrollbar filler
1024 //      gui->draw_vframe(get_image("mscroll_filler"),
1025 //              mhscroll_x + mhscroll_w,
1026 //              mvscroll_y + mvscroll_h);
1027
1028 // Status
1029         gui->draw_3segmenth(mzoom_x,
1030                 mzoom_y,
1031                 mzoom_w,
1032                 get_image("statusbar"));
1033
1034
1035 }
1036
1037 void BrightTheme::draw_cwindow_bg(CWindowGUI *gui)
1038 {
1039         BC_Resources *resources = BC_WindowBase::get_resources();
1040
1041         gui->set_color(WHITE);
1042         gui->draw_box(ccanvas_x + ccanvas_w - resources->vscroll_data[0]->get_w(),
1043                 ccanvas_y + ccanvas_h - resources->hscroll_data[0]->get_h(),
1044                 resources->vscroll_data[0]->get_w(),
1045                 resources->hscroll_data[0]->get_h());
1046         gui->draw_3segmentv(0, 0, ccomposite_h, get_image("cpanel_bg"));
1047         gui->draw_3segmenth(0, ccomposite_h, cstatus_x, get_image("cbuttons_left"));
1048         if(mwindow->edl->session->cwindow_meter)
1049         {
1050                 gui->draw_3segmenth(cstatus_x,
1051                         ccomposite_h,
1052                         cmeter_x - widget_border - cstatus_x,
1053                         get_image("cbuttons_right"));
1054                 gui->draw_9segment(cmeter_x - widget_border,
1055                         0,
1056                         mwindow->session->cwindow_w - cmeter_x + widget_border,
1057                         mwindow->session->cwindow_h,
1058                         get_image("cmeter_bg"));
1059         }
1060         else
1061         {
1062                 gui->draw_3segmenth(cstatus_x,
1063                         ccomposite_h,
1064                         cmeter_x - widget_border - cstatus_x + 100,
1065                         get_image("cbuttons_right"));
1066         }
1067 }
1068
1069 void BrightTheme::draw_vwindow_bg(VWindowGUI *gui)
1070 {
1071         gui->draw_3segmenth(0,
1072                 vcanvas_h,
1073                 vdivision_x,
1074                 get_image("vbuttons_left"));
1075
1076
1077         if(mwindow->edl->session->vwindow_meter)
1078         {
1079                 gui->draw_3segmenth(vdivision_x,
1080                         vcanvas_h,
1081                         vmeter_x - widget_border - vdivision_x,
1082                         get_image("cbuttons_right"));
1083                 gui->draw_9segment(vmeter_x - widget_border,
1084                         0,
1085                         mwindow->session->vwindow_w - vmeter_x + widget_border,
1086                         mwindow->session->vwindow_h,
1087                         get_image("cmeter_bg"));
1088         }
1089         else
1090         {
1091                 gui->draw_3segmenth(vdivision_x,
1092                         vcanvas_h,
1093                         vmeter_x - widget_border - vdivision_x + 100,
1094                         get_image("cbuttons_right"));
1095         }
1096
1097 // Clock border
1098         gui->draw_3segmenth(vtime_x - 20,
1099                 vtime_y - 1,
1100                 vtime_w + 40,
1101                 get_image("vclock"));
1102 }
1103
1104
1105
1106 void BrightTheme::draw_preferences_bg(PreferencesWindow *gui)
1107 {
1108         gui->draw_vframe(get_image("preferences_bg"), 0, 0);
1109 }
1110
1111
1112 void BrightTheme::draw_new_bg(NewWindow *gui)
1113 {
1114         gui->draw_vframe(get_image("new_bg"), 0, 0);
1115 }
1116
1117 void BrightTheme::draw_setformat_bg(SetFormatWindow *gui)
1118 {
1119         gui->draw_vframe(get_image("setformat_bg"), 0, 0);
1120 }
1121
1122
1123