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