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