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