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