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