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