update internationalization 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
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         new_image_set("histogram_carrot",
589                 5,
590                 "histogram_carrot_up.png",
591                 "histogram_carrot_hi.png",
592                 "histogram_carrot_checked.png",
593                 "histogram_carrot_dn.png",
594                 "histogram_carrot_checkedhi.png");
595
596
597         statusbar_cancel_data = new_image_set(3,
598                 "statusbar_cancel_up.png",
599                 "statusbar_cancel_hi.png",
600                 "statusbar_cancel_dn.png");
601
602
603         VFrame *editpanel_up = new_image("editpanel_up.png");
604         VFrame *editpanel_hi = new_image("editpanel_hi.png");
605         VFrame *editpanel_dn = new_image("editpanel_dn.png");
606         VFrame *editpanel_checked = new_image("editpanel_checked.png");
607         VFrame *editpanel_checkedhi = new_image("editpanel_checkedhi.png");
608
609         new_image("panel_divider", "panel_divider.png");
610         new_button("bottom_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "bottom_justify");
611         new_button("center_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "center_justify");
612         new_button("channel.png", editpanel_up, editpanel_hi, editpanel_dn, "channel");
613
614         new_toggle("histogram.png",
615                 editpanel_up,
616                 editpanel_hi,
617                 editpanel_checked,
618                 editpanel_dn,
619                 editpanel_checkedhi,
620                 "histogram_toggle");
621         new_toggle("histogram_rgb.png",
622                 editpanel_up,
623                 editpanel_hi,
624                 editpanel_checked,
625                 editpanel_dn,
626                 editpanel_checkedhi,
627                 "histogram_rgb_toggle");
628         new_toggle("waveform.png",
629                 editpanel_up,
630                 editpanel_hi,
631                 editpanel_checked,
632                 editpanel_dn,
633                 editpanel_checkedhi,
634                 "waveform_toggle");
635         new_toggle("waveform_rgb.png",
636                 editpanel_up,
637                 editpanel_hi,
638                 editpanel_checked,
639                 editpanel_dn,
640                 editpanel_checkedhi,
641                 "waveform_rgb_toggle");
642         new_toggle("scope.png",
643                 editpanel_up,
644                 editpanel_hi,
645                 editpanel_checked,
646                 editpanel_dn,
647                 editpanel_checkedhi,
648                 "scope_toggle");
649
650         new_button("picture.png", editpanel_up, editpanel_hi, editpanel_dn, "picture");
651         new_button("histogram.png", editpanel_up, editpanel_hi, editpanel_dn, "histogram");
652
653
654         new_button("copy.png", editpanel_up, editpanel_hi, editpanel_dn, "copy");
655         new_button("commercial.png", editpanel_up, editpanel_hi, editpanel_dn, "commercial");
656         new_button("cut.png", editpanel_up, editpanel_hi, editpanel_dn, "cut");
657         new_button("fit.png", editpanel_up, editpanel_hi, editpanel_dn, "fit");
658         new_button("fitautos.png", editpanel_up, editpanel_hi, editpanel_dn, "fitautos");
659         new_button("inpoint.png", editpanel_up, editpanel_hi, editpanel_dn, "inbutton");
660         new_button("label.png", editpanel_up, editpanel_hi, editpanel_dn, "labelbutton");
661         new_button("left_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "left_justify");
662         new_button("magnify.png", editpanel_up, editpanel_hi, editpanel_dn, "magnify_button");
663         new_button("middle_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "middle_justify");
664         new_button("nextlabel.png", editpanel_up, editpanel_hi, editpanel_dn, "nextlabel");
665         new_button("prevlabel.png", editpanel_up, editpanel_hi, editpanel_dn, "prevlabel");
666         new_button("nextedit.png", editpanel_up, editpanel_hi, editpanel_dn, "nextedit");
667         new_button("prevedit.png", editpanel_up, editpanel_hi, editpanel_dn, "prevedit");
668         new_button("outpoint.png", editpanel_up, editpanel_hi, editpanel_dn, "outbutton");
669         over_button = new_button("over.png", editpanel_up, editpanel_hi, editpanel_dn);
670         overwrite_data = new_button("overwrite.png", editpanel_up, editpanel_hi, editpanel_dn);
671         new_button("paste.png", editpanel_up, editpanel_hi, editpanel_dn, "paste");
672         new_button("redo.png", editpanel_up, editpanel_hi, editpanel_dn, "redo");
673         new_button("right_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "right_justify");
674         splice_data = new_button("splice.png", editpanel_up, editpanel_hi, editpanel_dn);
675         new_button("toclip.png", editpanel_up, editpanel_hi, editpanel_dn, "toclip");
676         new_button("goto.png", editpanel_up, editpanel_hi, editpanel_dn, "goto");
677         new_button("top_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "top_justify");
678         new_button("undo.png", editpanel_up, editpanel_hi, editpanel_dn, "undo");
679         new_button("wrench.png", editpanel_up, editpanel_hi, editpanel_dn, "wrench");
680
681
682         VFrame *transport_up = new_image("transportup.png");
683         VFrame *transport_hi = new_image("transporthi.png");
684         VFrame *transport_dn = new_image("transportdn.png");
685
686         new_button("end.png", transport_up, transport_hi, transport_dn, "end");
687         new_button("fastfwd.png", transport_up, transport_hi, transport_dn, "fastfwd");
688         new_button("fastrev.png", transport_up, transport_hi, transport_dn, "fastrev");
689         new_button("play.png", transport_up, transport_hi, transport_dn, "play");
690         new_button("framefwd.png", transport_up, transport_hi, transport_dn, "framefwd");
691         new_button("framerev.png", transport_up, transport_hi, transport_dn, "framerev");
692         new_button("pause.png", transport_up, transport_hi, transport_dn, "pause");
693         new_button("record.png", transport_up, transport_hi, transport_dn, "record");
694         new_button("singleframe.png", transport_up, transport_hi, transport_dn, "recframe");
695         new_button("reverse.png", transport_up, transport_hi, transport_dn, "reverse");
696         new_button("rewind.png", transport_up, transport_hi, transport_dn, "rewind");
697         new_button("stop.png", transport_up, transport_hi, transport_dn, "stop");
698         new_button("stop.png", transport_up, transport_hi, transport_dn, "stoprec");
699
700
701
702 // CWindow icons
703         new_image("cwindow_inactive", "cwindow_inactive.png");
704         new_image("cwindow_active", "cwindow_active.png");
705
706
707
708         new_image_set("category_button",
709                 3,
710                 "preferencesbutton_dn.png",
711                 "preferencesbutton_dnhi.png",
712                 "preferencesbutton_dnlo.png");
713
714         new_image_set("category_button_checked",
715                 3,
716                 "preferencesbutton_up.png",
717                 "preferencesbutton_uphi.png",
718                 "preferencesbutton_dnlo.png");
719
720
721
722
723
724         new_image_set("color3way_point",
725                 3,
726                 "color3way_up.png",
727                 "color3way_hi.png",
728                 "color3way_dn.png");
729
730         new_toggle("arrow.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "arrow");
731         new_toggle("autokeyframe.png", transport_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "autokeyframe");
732         new_toggle("ibeam.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "ibeam");
733         new_toggle("show_meters.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "meters");
734         new_toggle("blank30x30.png",
735                    new_image("locklabels_locked.png"),
736                    new_image("locklabels_lockedhi.png"),
737                    new_image("locklabels_unlocked.png"),
738                    new_image("locklabels_dn.png"), // can't have seperate down for each!!??
739                    new_image("locklabels_unlockedhi.png"),
740                    "locklabels");
741
742         VFrame *cpanel_up = new_image("cpanel_up.png");
743         VFrame *cpanel_hi = new_image("cpanel_hi.png");
744         VFrame *cpanel_dn = new_image("cpanel_dn.png");
745         VFrame *cpanel_checked = new_image("cpanel_checked.png");
746         VFrame *cpanel_checkedhi = new_image("cpanel_checkedhi.png");
747
748
749         new_toggle("camera.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "camera");
750         new_toggle("crop.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "crop");
751         new_toggle("eyedrop.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "eyedrop");
752         new_toggle("magnify.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "magnify");
753         new_toggle("mask.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "mask");
754         new_toggle("ruler.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "ruler");
755         new_toggle("projector.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "projector");
756         new_toggle("protect.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "protect");
757         new_toggle("titlesafe.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "titlesafe");
758         new_toggle("toolwindow.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "tool");
759
760         // toggle for tangent mode (compositor/tool window)
761         new_toggle("tan_smooth.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "tan_smooth");
762         new_toggle("tan_linear.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "tan_linear");
763
764
765         flush_images();
766
767         title_font = MEDIUMFONT_3D;
768         title_color = 0xbfbfbf;
769         recordgui_fixed_color = YELLOW;
770         recordgui_variable_color = RED;
771
772         channel_position_color = MEYELLOW;
773         resources->meter_title_w = 25;
774
775         // (asset) edit info text color
776         edit_font_color = YELLOW;
777 }
778
779 #define VWINDOW_METER_MARGIN 5
780
781
782
783
784
785
786
787
788
789
790
791 void SUV::build_bg_data()
792 {
793 // Audio settings
794         channel_position_data = new VFrame(get_image_data("channel_position.png"));
795
796 // Track bitmaps
797         new_image("resource1024", "resource1024.png");
798         new_image("resource512", "resource512.png");
799         new_image("resource256", "resource256.png");
800         new_image("resource128", "resource128.png");
801         new_image("resource64", "resource64.png");
802         new_image("resource32", "resource32.png");
803         new_image("plugin_bg_data", "plugin_bg.png");
804         new_image("title_bg_data", "title_bg.png");
805         new_image("vtimebar_bg_data", "vwindow_timebar.png");
806 }
807
808
809
810 void SUV::build_overlays()
811 {
812         keyframe_data = new VFrame(get_image_data("keyframe3.png"));
813         camerakeyframe_data = new VFrame(get_image_data("camerakeyframe.png"));
814         maskkeyframe_data = new VFrame(get_image_data("maskkeyframe.png"));
815         modekeyframe_data = new VFrame(get_image_data("modekeyframe.png"));
816         pankeyframe_data = new VFrame(get_image_data("pankeyframe.png"));
817         projectorkeyframe_data = new VFrame(get_image_data("projectorkeyframe.png"));
818 }
819
820
821
822
823
824
825
826
827
828 void SUV::draw_rwindow_bg(RecordGUI *gui)
829 {
830 //      int y;
831 //      int margin = 50;
832 //      int margin2 = 80;
833 //      gui->draw_9segment(recordgui_batch_x - margin,
834 //              0,
835 //              mwindow->session->rwindow_w - recordgui_status_x + margin,
836 //              recordgui_buttons_y,
837 //              rgui_batch);
838 //      gui->draw_3segmenth(recordgui_options_x - margin2,
839 //              recordgui_buttons_y - 5,
840 //              mwindow->session->rwindow_w - recordgui_options_x + margin2,
841 //              rgui_controls);
842 //      y = recordgui_buttons_y - 5 + rgui_controls->get_h();
843 //      gui->draw_9segment(0,
844 //              y,
845 //              mwindow->session->rwindow_w,
846 //              mwindow->session->rwindow_h - y,
847 //              rgui_list);
848 }
849
850 void SUV::draw_rmonitor_bg(RecordMonitorGUI *gui)
851 {
852 //      int margin = 45;
853 //      int panel_w = 300;
854 //      int x = rmonitor_meter_x - margin;
855 //      int w = mwindow->session->rmonitor_w - x;
856 //      if(w < rmonitor_meters->get_w()) w = rmonitor_meters->get_w();
857 //      gui->clear_box(0,
858 //              0,
859 //              mwindow->session->rmonitor_w,
860 //              mwindow->session->rmonitor_h);
861 //      gui->draw_9segment(x,
862 //              0,
863 //              w,
864 //              mwindow->session->rmonitor_h,
865 //              rmonitor_meters);
866 }
867
868
869
870
871
872
873 void SUV::draw_mwindow_bg(MWindowGUI *gui)
874 {
875 // Button bar
876         gui->draw_3segmenth(mbuttons_x,
877                 mbuttons_y - 1,
878                 mwindow->session->mwindow_w,
879                 get_image("mbutton_bg"));
880
881         int pdw = get_image("panel_divider")->get_w();
882         int x = mbuttons_x;
883         x += 9 * get_image("play")->get_w();
884         x += mtransport_margin;                                       // the control buttons
885
886         gui->draw_vframe(get_image("panel_divider"),
887                 x - toggle_margin / 2 - pdw / 2 + 2,
888                 mbuttons_y - 1);
889         x += 2 * get_image("arrow")->get_w() + toggle_margin;           // the mode buttons
890
891         gui->draw_vframe(get_image("panel_divider"),
892                 x - toggle_margin / 2 - pdw / 2 + 2,
893                 mbuttons_y - 1);
894         x += 2 * get_image("autokeyframe")->get_w() + toggle_margin;    // the state toggle buttons
895
896         gui->draw_vframe(get_image("panel_divider"),
897                 x - toggle_margin / 2 - pdw / 2 + 2,
898                 mbuttons_y - 1);
899
900 // Clock
901         gui->draw_3segmenth(0,
902                 mbuttons_y - 1 + get_image("mbutton_bg")->get_h(),
903                 get_image("patchbay_bg")->get_w(),
904                 get_image("clock_bg"));
905
906 // Patchbay
907 //printf("SUV::draw_mwindow_bg %d %d %d\n", __LINE__,
908 //mclock_h,
909 //mtimebar_h);
910         gui->draw_3segmentv(patchbay_x,
911                 patchbay_y,
912                 patchbay_h,
913                 get_image("patchbay_bg"));
914
915 // Track canvas
916         gui->set_color(BLACK);
917         gui->draw_box(mcanvas_x + get_image("patchbay_bg")->get_w(),
918                 mcanvas_y + mtimebar_h,
919                 mcanvas_w - BC_ScrollBar::get_span(SCROLL_VERT),
920                 mcanvas_h - BC_ScrollBar::get_span(SCROLL_HORIZ) - mtimebar_h);
921
922 // Timebar
923         gui->draw_3segmenth(mtimebar_x,
924                 mtimebar_y,
925                 mtimebar_w,
926                 get_image("timebar_bg"));
927
928 // Zoombar
929         gui->set_color(0x373737);
930         gui->draw_box(mzoom_x,
931                 mzoom_y,
932                 mwindow->session->mwindow_w,
933                 25);
934
935 // Scrollbar filler
936 //      gui->draw_vframe(get_image("mscroll_filler"),
937 //              mcanvas_x + mcanvas_w - BC_ScrollBar::get_span(SCROLL_VERT),
938 //              mcanvas_y + mcanvas_h - BC_ScrollBar::get_span(SCROLL_HORIZ));
939
940 // Status
941         gui->draw_3segmenth(mzoom_x,
942                 mzoom_y,
943                 mzoom_w,
944                 get_image("statusbar"));
945
946
947 }
948
949 void SUV::draw_cwindow_bg(CWindowGUI *gui)
950 {
951         gui->draw_3segmentv(0, 0, ccomposite_h, get_image("cpanel_bg"));
952
953         gui->draw_3segmenth(0, ccomposite_h, cstatus_x, get_image("cbuttons_left"));
954
955         if(mwindow->edl->session->cwindow_meter)
956         {
957                 gui->draw_3segmenth(cstatus_x,
958                         ccomposite_h,
959                         cmeter_x - widget_border - cstatus_x,
960                         get_image("cbuttons_right"));
961                 gui->draw_9segment(cmeter_x - widget_border,
962                         0,
963                         mwindow->session->cwindow_w - cmeter_x + widget_border,
964                         mwindow->session->cwindow_h,
965                         get_image("cmeter_bg"));
966         }
967         else
968         {
969                 gui->draw_3segmenth(cstatus_x,
970                         ccomposite_h,
971                         cmeter_x - widget_border - cstatus_x + 100,
972                         get_image("cbuttons_right"));
973         }
974 }
975
976 void SUV::draw_vwindow_bg(VWindowGUI *gui)
977 {
978         gui->draw_3segmenth(0,
979                 vcanvas_h,
980                 vdivision_x,
981                 get_image("vbuttons_left"));
982         if(mwindow->edl->session->vwindow_meter)
983         {
984                 gui->draw_3segmenth(vdivision_x,
985                         vcanvas_h,
986                         vmeter_x - widget_border - vdivision_x,
987                         get_image("cbuttons_right"));
988                 gui->draw_9segment(vmeter_x - widget_border,
989                         0,
990                         mwindow->session->vwindow_w - vmeter_x + widget_border,
991                         mwindow->session->vwindow_h,
992                         get_image("cmeter_bg"));
993         }
994         else
995         {
996                 gui->draw_3segmenth(vdivision_x,
997                         vcanvas_h,
998                         vmeter_x - widget_border - vdivision_x + 100,
999                         get_image("cbuttons_right"));
1000         }
1001
1002 // Clock border
1003         gui->draw_3segmenth(vtime_x - 20,
1004                 vtime_y - 1,
1005                 vtime_w + 40,
1006                 get_image("vclock"));
1007 }
1008
1009
1010 void SUV::draw_preferences_bg(PreferencesWindow *gui)
1011 {
1012         gui->draw_vframe(get_image("preferences_bg"), 0, 0);
1013 }
1014
1015 void SUV::draw_new_bg(NewWindow *gui)
1016 {
1017         gui->draw_vframe(get_image("new_bg"), 0, 0);
1018 }
1019
1020 void SUV::draw_setformat_bg(SetFormatWindow *gui)
1021 {
1022         gui->draw_vframe(get_image("setformat_bg"), 0, 0);
1023 }
1024
1025
1026
1027
1028
1029
1030