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