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