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