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