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