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