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