b4f82f09aadb2f0d3536ff0d74f19cacf3080eb8
[goodguy/cinelerra.git] / cinelerra-5.1 / plugins / theme_cakewalk / cakewalk.C
1 /* Part of the Cakewalk theme. */
2 #include "bcsignals.h"
3 #include "clip.h"
4 #include "cwindowgui.h"
5 #include "cakewalk.h"
6 #include "edl.h"
7 #include "edlsession.h"
8 #include "mainmenu.h"
9 #include "mainsession.h"
10 #include "mbuttons.h"
11 #include "meterpanel.h"
12 #include "mwindow.h"
13 #include "mwindowgui.h"
14 #include "new.h"
15 #include "patchbay.h"
16 #include "preferencesthread.h"
17 #include "recordgui.h"
18 #include "recordmonitor.h"
19 #include "setformat.h"
20 #include "statusbar.h"
21 #include "timebar.h"
22 #include "trackcanvas.h"
23 #include "vframe.h"
24 #include "vwindowgui.h"
25 #define ALARM 0xff0000
26 #define CwGray 0x31363b
27 #define CwDarkGray 0x232629
28 #define TextFg 0xeff0f1
29 #define TextFgBright 0xfffdee
30 #define TextBorderOut 0x7f8c8d
31 #define CwCyan 0x3daee9
32 #define CwCyanDark 0x2980b9
33 #define ComicYellow 0xffcc00
34 #define CwOrange 0xf67400
35 #define LockedRed 0xda4453
36 #define MeterGreen 0xa7fd6f
37 #define MeterYellow 0xfce16f
38 PluginClient* new_plugin(PluginServer *server)
39 {
40  return new CAKEWALKTHEMEMain(server);
41 }
42 CAKEWALKTHEMEMain::CAKEWALKTHEMEMain(PluginServer *server)
43  : PluginTClient(server)
44 {
45 }
46 CAKEWALKTHEMEMain::~CAKEWALKTHEMEMain()
47 {
48 }
49 const char* CAKEWALKTHEMEMain::plugin_title() { return N_("Cakewalk"); }
50 Theme* CAKEWALKTHEMEMain::new_theme()
51 {
52  theme = new CAKEWALKTHEME;
53  extern unsigned char _binary_theme_cakewalk_data_start[];
54  theme->set_data(_binary_theme_cakewalk_data_start);
55  return theme;
56 }
57 CAKEWALKTHEME::CAKEWALKTHEME()
58  : Theme()
59 {
60 }
61 CAKEWALKTHEME::~CAKEWALKTHEME()
62 {
63  delete camerakeyframe_data;
64  delete channel_position_data;
65  delete keyframe_data;
66  delete maskkeyframe_data;
67  delete modekeyframe_data;
68  delete hardedge_data;
69  delete pankeyframe_data;
70  delete projectorkeyframe_data;
71 }
72 void CAKEWALKTHEME::initialize()
73 {
74  BC_Resources *resources = BC_WindowBase::get_resources();
75  delete about_bg;
76  about_bg = new VFramePng(get_image_data("about_bg.png"));
77  new_image_set_images("mwindow_icon", 1, new VFramePng(get_image_data("cin_icon_mwin.png")));
78  new_image_set_images("vwindow_icon", 1, new VFramePng(get_image_data("cin_icon_vwin.png")));
79  new_image_set_images("cwindow_icon", 1, new VFramePng(get_image_data("cin_icon_cwin.png")));
80  new_image_set_images("awindow_icon", 1, new VFramePng(get_image_data("cin_icon_awin.png")));
81  new_image_set_images("record_icon", 1, new VFramePng(get_image_data("cin_icon_rec.png")));
82  resources->text_default = TextFg;
83  resources->text_background = CwDarkGray;
84  resources->text_background_disarmed = LockedRed;
85  resources->text_border1 = TextBorderOut;
86  resources->text_border2 = CwDarkGray;
87  resources->text_border3 = CwDarkGray;
88  resources->text_border4 = TextBorderOut;
89  resources->text_border2_hi = CwOrange;
90  resources->text_border3_hi = CwOrange;
91  resources->text_highlight = CwCyan;
92  resources->text_inactive_highlight = CwCyanDark;
93    resources->bg_color = CwGray;
94  resources->border_light2 = 0xaaff00;
95  resources->border_shadow2 = 0xaaaaff;
96  resources->default_text_color = TextFg;
97  resources->menu_title_text = WHITE;
98  resources->popup_title_text = WHITE;
99  resources->menu_item_text = WHITE;
100  resources->menu_highlighted_fontcolor = BLACK;
101  resources->generic_button_margin = 20;
102  resources->pot_needle_color = TextFg;
103  resources->pot_offset = 1;
104  resources->progress_text = resources->text_default;
105  resources->meter_font_color = resources->default_text_color;
106  resources->menu_light = CwGray;
107  resources->menu_down = ALARM;
108  resources->menu_up = ALARM;
109  resources->menu_shadow = ALARM;
110  resources->menu_highlighted = CwCyan;
111  resources->popupmenu_margin = 15;
112  resources->popupmenu_triangle_margin = 15;
113  resources->listbox_title_color = TextFgBright;
114  resources->listbox_title_margin = 15;
115  resources->listbox_title_hotspot = 15;
116  resources->listbox_border1 = TextBorderOut;
117  resources->listbox_border2 = CwDarkGray;
118  resources->listbox_border3 = CwDarkGray;
119  resources->listbox_border4 = TextBorderOut;
120  resources->listbox_border2_hi = CwCyan;
121  resources->listbox_border3_hi = CwCyan;
122  resources->listbox_highlighted = CwCyan;
123  resources->listbox_inactive = CwDarkGray;
124  resources->listbox_bg = 0;
125  resources->listbox_text = TextFg;
126  resources->listbox_selected = CwCyan;
127  resources->filebox_margin = 130;
128  resources->file_color = WHITE;
129  resources->directory_color = ComicYellow;
130  title_font = MEDIUMFONT;
131  title_color = BLACK;
132  recordgui_fixed_color = MeterGreen;
133  recordgui_variable_color = MeterYellow;
134  channel_position_color = MeterYellow;
135  resources->meter_title_w = 25;
136  edit_font_color = ComicYellow;
137  assetedit_color = TextFgBright;
138  timebar_cursor_color = WHITE;
139  resources->tooltip_bg_color = TextFgBright;
140  resources->tooltip_delay = 1500;
141  audio_color = BLACK;
142  resources->audiovideo_color = TextFg;
143  resources->blink_rate = 750;
144  clock_fg_color = MeterGreen;
145  inout_highlight_color=CwCyan;
146  new_toggle(
147   "loadmode_new.png",
148   "loadmode_up.png",
149   "loadmode_hi.png",
150   "loadmode_checked.png",
151   "loadmode_dn.png",
152   "loadmode_checkedhi.png",
153   "loadmode_new");
154  new_toggle(
155   "loadmode_none.png",
156   "loadmode_up.png",
157   "loadmode_hi.png",
158   "loadmode_checked.png",
159   "loadmode_dn.png",
160   "loadmode_checkedhi.png",
161   "loadmode_none");
162  new_toggle(
163   "loadmode_newcat.png",
164   "loadmode_up.png",
165   "loadmode_hi.png",
166   "loadmode_checked.png",
167   "loadmode_dn.png",
168   "loadmode_checkedhi.png",
169   "loadmode_newcat");
170  new_toggle(
171   "loadmode_cat.png",
172   "loadmode_up.png",
173   "loadmode_hi.png",
174   "loadmode_checked.png",
175   "loadmode_dn.png",
176   "loadmode_checkedhi.png",
177   "loadmode_cat");
178  new_toggle(
179   "loadmode_newtracks.png",
180   "loadmode_up.png",
181   "loadmode_hi.png",
182   "loadmode_checked.png",
183   "loadmode_dn.png",
184   "loadmode_checkedhi.png",
185   "loadmode_newtracks");
186  new_toggle(
187   "loadmode_paste.png",
188   "loadmode_up.png",
189   "loadmode_hi.png",
190   "loadmode_checked.png",
191   "loadmode_dn.png",
192   "loadmode_checkedhi.png",
193   "loadmode_paste");
194  new_toggle(
195   "loadmode_resource.png",
196   "loadmode_up.png",
197   "loadmode_hi.png",
198   "loadmode_checked.png",
199   "loadmode_dn.png",
200   "loadmode_checkedhi.png",
201   "loadmode_resource");
202  new_toggle(
203   "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  resources->filebox_icons_images = new_button(
211   "icons.png",
212   "fileboxbutton_up.png",
213   "fileboxbutton_hi.png",
214   "fileboxbutton_dn.png",
215   "filebox_icons");
216  resources->filebox_text_images = new_button(
217   "text.png",
218   "fileboxbutton_up.png",
219   "fileboxbutton_hi.png",
220   "fileboxbutton_dn.png",
221   "filebox_text");
222  resources->filebox_newfolder_images = new_button(
223   "folder.png",
224   "fileboxbutton_up.png",
225   "fileboxbutton_hi.png",
226   "fileboxbutton_dn.png",
227   "filebox_newfolder");
228  resources->filebox_rename_images = new_button(
229   "rename.png",
230   "fileboxbutton_up.png",
231   "fileboxbutton_hi.png",
232   "fileboxbutton_dn.png",
233   "filebox_rename");
234  resources->filebox_updir_images = new_button(
235   "updir.png",
236   "fileboxbutton_up.png",
237   "fileboxbutton_hi.png",
238   "fileboxbutton_dn.png",
239   "filebox_updir");
240  resources->filebox_delete_images = new_button(
241   "delete.png",
242   "fileboxbutton_up.png",
243   "fileboxbutton_hi.png",
244   "fileboxbutton_dn.png",
245   "filebox_delete");
246  resources->filebox_reload_images = new_button(
247   "reload.png",
248   "fileboxbutton_up.png",
249   "fileboxbutton_hi.png",
250   "fileboxbutton_dn.png",
251   "filebox_reload");
252  resources->filebox_descend_images = new_button(
253   "openfolder.png",
254   "filebox_bigbutton_up.png",
255   "filebox_bigbutton_hi.png",
256   "filebox_bigbutton_dn.png",
257   "filebox_descend");
258  resources->usethis_button_images = resources->ok_images = new_button(
259   "ok.png",
260   "filebox_bigbutton_up.png",
261   "filebox_bigbutton_hi.png",
262   "filebox_bigbutton_dn.png",
263   "ok_button");
264  new_button(
265   "ok.png",
266   "new_bigbutton_up.png",
267   "new_bigbutton_hi.png",
268   "new_bigbutton_dn.png",
269   "new_ok_images");
270  new_button( "reset.png",
271   "reset_up.png",
272   "reset_hi.png",
273   "reset_dn.png",
274   "reset_button");
275  new_button("unclear.png",
276   "unclear_up.png",
277   "unclear_hi.png",
278   "unclear_dn.png",
279   "unclear_button");
280  resources->cancel_images = new_button(
281   "cancel.png",
282   "filebox_bigbutton_up.png",
283   "filebox_bigbutton_hi.png",
284   "filebox_bigbutton_dn.png",
285   "cancel_button");
286  new_button(
287   "cancel.png",
288   "new_bigbutton_up.png",
289   "new_bigbutton_hi.png",
290   "new_bigbutton_dn.png",
291   "new_cancel_images");
292  new_button("mask_pnt_linear.png",
293   "mask_button_up.png",
294   "mask_button_hi.png",
295   "mask_button_dn.png",
296   "mask_pnt_linear_images");
297  new_button("mask_crv_linear.png",
298   "mask_button_up.png",
299   "mask_button_hi.png",
300   "mask_button_dn.png",
301   "mask_crv_linear_images");
302  new_button("mask_all_linear.png",
303   "mask_button_up.png",
304   "mask_button_hi.png",
305   "mask_button_dn.png",
306   "mask_all_linear_images");
307  new_button("mask_pnt_smooth.png",
308   "mask_button_up.png",
309   "mask_button_hi.png",
310   "mask_button_dn.png",
311   "mask_pnt_smooth_images");
312  new_button("mask_crv_smooth.png",
313   "mask_button_up.png",
314   "mask_button_hi.png",
315   "mask_button_dn.png",
316   "mask_crv_smooth_images");
317  new_button("mask_all_smooth.png",
318   "mask_button_up.png",
319   "mask_button_hi.png",
320   "mask_button_dn.png",
321   "mask_all_smooth_images");
322  new_button("mask_prst_sqr.png",
323   "mask_button_up.png",
324   "mask_button_hi.png",
325   "mask_button_dn.png",
326   "mask_prst_sqr_images");
327  new_button("mask_prst_crc.png",
328   "mask_button_up.png",
329   "mask_button_hi.png",
330   "mask_button_dn.png",
331   "mask_prst_crc_images");
332  new_button("mask_prst_tri.png",
333   "mask_button_up.png",
334   "mask_button_hi.png",
335   "mask_button_dn.png",
336   "mask_prst_tri_images");
337  new_button("mask_prst_ovl.png",
338   "mask_button_up.png",
339   "mask_button_hi.png",
340   "mask_button_dn.png",
341   "mask_prst_ovl_images");
342
343  new_button("mask_prst_load.png",
344   "mask_button_up.png",
345   "mask_button_hi.png",
346   "mask_button_dn.png",
347   "mask_prst_load_images");
348  new_button("mask_prst_save.png",
349   "mask_button_up.png",
350   "mask_button_hi.png",
351   "mask_button_dn.png",
352   "mask_prst_save_images");
353  new_button("mask_prst_trsh.png",
354   "mask_button_up.png",
355   "mask_button_hi.png",
356   "mask_button_dn.png",
357   "mask_prst_trsh_images");
358
359  new_button("mask_pstn_cen.png",
360   "mask_button_up.png",
361   "mask_button_hi.png",
362   "mask_button_dn.png",
363   "mask_pstn_cen_images");
364  new_button("mask_pstn_nrm.png",
365   "mask_button_up.png",
366   "mask_button_hi.png",
367   "mask_button_dn.png",
368   "mask_pstn_nrm_images");
369
370  resources->bar_data = new_image("bar", "bar.png");
371  resources->check = new_image("check", "check.png");
372  resources->min_menu_w = 96;
373  resources->menu_popup_bg = new_image("menu_popup_bg.png");
374  resources->menu_item_bg = new_image_set(
375   3,
376   "menuitem_up.png",
377   "menuitem_hi.png",
378   "menuitem_dn.png");
379  resources->menu_bar_bg = new_image("menubar_bg.png");
380  resources->menu_title_bg = new_image_set
381   (3,
382    "menubar_up.png",
383    "menubar_hi.png",
384    "menubar_dn.png");
385  resources->popupmenu_images = 0;
386  resources->toggle_highlight_bg = new_image(
387   "toggle_highlight_bg",
388   "text_highlight.png");
389  resources->generic_button_images = new_image_set(
390   3,
391   "generic_up.png",
392   "generic_hi.png",
393   "generic_dn.png");
394  resources->horizontal_slider_data = new_image_set(
395   6,
396   "hslider_fg_up.png",
397   "hslider_fg_hi.png",
398   "hslider_fg_dn.png",
399   "hslider_bg_up.png",
400   "hslider_bg_hi.png",
401   "hslider_bg_dn.png");
402  resources->vertical_slider_data = new_image_set(
403   6,
404   "hslider_fg_up.png",
405   "hslider_fg_hi.png",
406   "hslider_fg_dn.png",
407   "hslider_bg_up.png",
408   "hslider_bg_hi.png",
409   "hslider_bg_dn.png");
410  for( int i=0; i<6; ++i )
411   resources->vertical_slider_data[i]->rotate90();
412  resources->progress_images = new_image_set(
413   2,
414   "progress_bg.png",
415   "progress_hi.png");
416  resources->tumble_data = new_image_set(
417   4,
418   "tumble_up.png",
419   "tumble_hi.png",
420   "tumble_bottom.png",
421   "tumble_top.png");
422  resources->listbox_button = new_button4(
423   "listbox_button.png",
424   "editpanel_up.png",
425   "editpanel_hi.png",
426   "editpanel_dn.png",
427   "editpanel_hi.png",
428   "listbox_button");
429  resources->filebox_szfmt_images = new_image_set(
430   12,
431   "file_size_zero_up.png",
432   "file_size_zero_hi.png",
433   "file_size_zero_dn.png",
434   "file_size_lwrb_up.png",
435   "file_size_lwrb_hi.png",
436   "file_size_lwrb_dn.png",
437   "file_size_capb_up.png",
438   "file_size_capb_hi.png",
439   "file_size_capb_dn.png",
440   "file_size_semi_up.png",
441   "file_size_semi_hi.png",
442   "file_size_semi_dn.png");
443  resources->listbox_column = new_image_set(
444   3,
445   "column_up.png",
446   "column_hi.png",
447   "column_dn.png");
448  resources->listbox_up = new_image("listbox_up.png");
449  resources->listbox_dn = new_image("listbox_dn.png");
450  resources->pan_data = new_image_set(
451   7,
452   "pan_up.png",
453   "pan_hi.png",
454   "pan_popup.png",
455   "pan_channel.png",
456   "pan_stick.png",
457   "pan_channel_small.png",
458   "pan_stick_small.png");
459  resources->pan_text_color = TextFgBright;
460  resources->pot_images = new_image_set(
461   3,
462   "pot_up.png",
463   "pot_hi.png",
464   "pot_dn.png");
465  resources->checkbox_images = new_image_set(
466   5,
467   "checkbox_up.png",
468   "checkbox_hi.png",
469   "checkbox_checked.png",
470   "checkbox_dn.png",
471   "checkbox_checkedhi.png");
472  resources->radial_images = new_image_set(
473   5,
474   "radial_up.png",
475   "radial_hi.png",
476   "radial_checked.png",
477   "radial_dn.png",
478   "radial_checkedhi.png");
479  resources->xmeter_images = new_image_set(
480   7,
481   "xmeter_normal.png",
482   "xmeter_green.png",
483   "xmeter_red.png",
484   "xmeter_yellow.png",
485   "xmeter_white.png",
486   "xmeter_over.png",
487   "downmix51_2.png");
488  resources->ymeter_images = new_image_set(
489   7,
490   "ymeter_normal.png",
491   "ymeter_green.png",
492   "ymeter_red.png",
493   "ymeter_yellow.png",
494   "ymeter_white.png",
495   "ymeter_over.png",
496   "downmix51_2.png");
497  resources->hscroll_data = new_image_set(
498   10,
499   "hscroll_handle_up.png",
500   "hscroll_handle_hi.png",
501   "hscroll_handle_dn.png",
502   "hscroll_handle_bg.png",
503   "hscroll_left_up.png",
504   "hscroll_left_hi.png",
505   "hscroll_left_dn.png",
506   "hscroll_right_up.png",
507   "hscroll_right_hi.png",
508   "hscroll_right_dn.png");
509  resources->vscroll_data = new_image_set(
510   10,
511   "vscroll_handle_up.png",
512   "vscroll_handle_hi.png",
513   "vscroll_handle_dn.png",
514   "vscroll_handle_bg.png",
515   "vscroll_left_up.png",
516   "vscroll_left_hi.png",
517   "vscroll_left_dn.png",
518   "vscroll_right_up.png",
519   "vscroll_right_hi.png",
520   "vscroll_right_dn.png");
521  resources->scroll_minhandle = 20;
522  new_button(
523   "prevtip.png", "tipbutton_up.png",
524   "tipbutton_hi.png", "tipbutton_dn.png", "prev_tip");
525  new_button(
526   "nexttip.png", "tipbutton_up.png",
527   "tipbutton_hi.png", "tipbutton_dn.png", "next_tip");
528  new_button(
529   "closetip.png", "tipbutton_up.png",
530   "tipbutton_hi.png", "tipbutton_dn.png", "close_tip");
531  new_button(
532   "swap_extents.png", "editpanel_up.png",
533   "editpanel_hi.png", "editpanel_dn.png", "swap_extents");
534  preferences_category_overlap = 0;
535  preferencescategory_x = 0;
536  preferencescategory_y = 5;
537  preferencestitle_x = 5;
538  preferencestitle_y = 10;
539  preferencesoptions_x = 5;
540  preferencesoptions_y = 0;
541  message_normal = resources->text_default;
542  mtransport_margin = 10;
543  toggle_margin = 10;
544  new_button("pane.png", "pane_up.png", "pane_hi.png", "pane_dn.png",
545       "pane");
546  new_image_set("xpane", 3,
547       "xpane_up.png",
548       "xpane_hi.png",
549       "xpane_dn.png");
550  new_image_set("ypane", 3,
551       "ypane_up.png",
552       "ypane_hi.png",
553       "ypane_dn.png");
554  new_image("mbutton_bg", "mbutton_bg.png");
555  new_image("timebar_bg", "timebar_bg_flat.png");
556  new_image("timebar_brender", "timebar_brender.png");
557  new_image("clock_bg", "mclock_flat.png");
558  new_image("patchbay_bg", "patchbay_bg.png");
559  new_image("statusbar", "statusbar.png");
560  new_image_set("zoombar_menu", 3,
561       "zoompopup_up.png",
562       "zoompopup_hi.png",
563       "zoompopup_dn.png");
564  new_image_set("zoombar_tumbler", 4,
565       "zoomtumble_up.png",
566       "zoomtumble_hi.png",
567       "zoomtumble_bottom.png",
568       "zoomtumble_top.png");
569  new_image_set("mode_popup", 3,
570       "mode_up.png", "mode_hi.png", "mode_dn.png");
571  new_image("mode_add", "mode_add.png");
572  new_image("mode_divide", "mode_divide.png");
573  new_image("mode_multiply", "mode_multiply.png");
574  new_image("mode_normal", "mode_normal.png");
575  new_image("mode_replace", "mode_replace.png");
576  new_image("mode_subtract", "mode_subtract.png");
577  new_image("mode_max", "mode_max.png");
578  new_image_set("plugin_on", 5,
579       "plugin_on.png",
580       "plugin_onhi.png",
581       "plugin_onselect.png",
582       "plugin_ondn.png",
583       "plugin_onselecthi.png");
584  new_image_set("plugin_show", 5,
585       "plugin_show.png",
586       "plugin_showhi.png",
587       "plugin_showselect.png",
588       "plugin_showdn.png",
589       "plugin_showselecthi.png");
590  new_image_set("mixpatch_data", 5,
591       "mixpatch_up.png",
592       "mixpatch_hi.png",
593       "mixpatch_checked.png",
594       "mixpatch_dn.png",
595       "mixpatch_checkedhi.png");
596  new_image("cpanel_bg", "cpanel_bg.png");
597  new_image("cbuttons_left", "cbuttons_left.png");
598  new_image("cbuttons_right", "cbuttons_right.png");
599  new_image("cmeter_bg", "cmeter_bg.png");
600  new_image("cwindow_focus", "cwindow_focus.png");
601  new_image("vbuttons_left", "vbuttons_left.png");
602  new_image("vbuttons_right", "vbuttons_right.png");
603  new_image("vclock", "vclock.png");
604  new_image("preferences_bg", "preferences_bg.png");
605  new_image("new_bg", "new_bg.png");
606  new_image("setformat_bg", "setformat_bg.png");
607  timebar_view_data = new_image("timebar_view.png");
608  setformat_w = get_image("setformat_bg")->get_w();
609  setformat_h = get_image("setformat_bg")->get_h();
610  setformat_x1 = 15;
611  setformat_x2 = 110;
612  setformat_x3 = 315;
613  setformat_x4 = 425;
614  setformat_y1 = 20;
615  setformat_y2 = 85;
616  setformat_y3 = 125;
617  setformat_margin = 30;
618  setformat_channels_x = 25;
619  setformat_channels_y = 242;
620  setformat_channels_w = 250;
621  setformat_channels_h = 250;
622  loadfile_pad = get_image_set("loadmode_new")[0]->get_h() + 10;
623  browse_pad = 20;
624  new_toggle("playpatch.png",
625       "playpatch_up.png",
626       "playpatch_hi.png",
627       "playpatch_checked.png",
628       "playpatch_dn.png",
629       "playpatch_checkedhi.png",
630       "playpatch_data");
631  new_toggle("recordpatch.png",
632       "recordpatch_up.png",
633       "recordpatch_hi.png",
634       "recordpatch_checked.png",
635       "recordpatch_dn.png",
636       "recordpatch_checkedhi.png",
637       "recordpatch_data");
638  new_toggle("gangpatch.png",
639       "patch_up.png",
640       "patch_hi.png",
641       "patch_checked.png",
642       "patch_dn.png",
643       "patch_checkedhi.png",
644       "gangpatch_data");
645  new_toggle("drawpatch.png",
646       "patch_up.png",
647       "patch_hi.png",
648       "patch_checked.png",
649       "patch_dn.png",
650       "patch_checkedhi.png",
651       "drawpatch_data");
652  new_image_set("mutepatch_data",
653       5,
654       "mutepatch_up.png",
655       "mutepatch_hi.png",
656       "mutepatch_checked.png",
657       "mutepatch_dn.png",
658       "mutepatch_checkedhi.png");
659  new_image_set("expandpatch_data",
660       5,
661       "expandpatch_up.png",
662       "expandpatch_hi.png",
663       "expandpatch_checked.png",
664       "expandpatch_dn.png",
665       "expandpatch_checkedhi.png");
666  build_bg_data();
667  build_overlays();
668  out_point = new_image_set(
669   5,
670   "out_up.png",
671   "out_hi.png",
672   "out_checked.png",
673   "out_dn.png",
674   "out_checkedhi.png");
675  in_point = new_image_set(
676   5,
677   "in_up.png",
678   "in_hi.png",
679   "in_checked.png",
680   "in_dn.png",
681   "in_checkedhi.png");
682  label_toggle = new_image_set(
683   5,
684   "labeltoggle_up.png",
685   "labeltoggle_uphi.png",
686   "label_checked.png",
687   "labeltoggle_dn.png",
688   "label_checkedhi.png");
689  ffmpeg_toggle = new_image_set(
690   5,
691   "ff_up.png",
692   "ff_hi.png",
693   "ff_checked.png",
694   "ff_down.png",
695   "ff_checkedhi.png");
696  proxy_p_toggle = new_image_set(
697   5,
698   "proxy_p_up.png",
699   "proxy_p_hi.png",
700   "proxy_p_chkd.png",
701   "proxy_p_down.png",
702   "proxy_p_chkdhi.png");
703  proxy_s_toggle = new_image_set(
704   5,
705   "proxy_s_up.png",
706   "proxy_s_hi.png",
707   "proxy_s_chkd.png",
708   "proxy_s_down.png",
709   "proxy_s_chkdhi.png");
710  mask_mode_toggle = new_image_set(5,
711   "mask_mode_up.png",
712   "mask_mode_hi.png",
713   "mask_mode_chkd.png",
714   "mask_mode_down.png",
715   "mask_mode_chkdhi.png");
716  shbtn_data = new_image_set(
717   3,
718   "shbtn_up.png",
719   "shbtn_hi.png",
720   "shbtn_dn.png");
721  new_image_set(
722   "preset_edit",
723   3,
724   "preset_edit0.png",
725   "preset_edit1.png",
726   "preset_edit2.png");
727  new_image_set(
728   "histogram_carrot",
729   5,
730   "histogram_carrot_up.png",
731   "histogram_carrot_hi.png",
732   "histogram_carrot_checked.png",
733   "histogram_carrot_dn.png",
734   "histogram_carrot_checkedhi.png");
735  statusbar_cancel_data = new_image_set(
736   3,
737   "statusbar_cancel_up.png",
738   "statusbar_cancel_hi.png",
739   "statusbar_cancel_dn.png");
740  VFrame *editpanel_up = new_image("editpanel_up.png");
741  VFrame *editpanel_hi = new_image("editpanel_hi.png");
742  VFrame *editpanel_dn = new_image("editpanel_dn.png");
743  VFrame *editpanel_checked = new_image("editpanel_checked.png");
744  VFrame *editpanel_checkedhi = new_image("editpanel_checkedhi.png");
745  new_image("panel_divider", "panel_divider.png");
746  new_button("bottom_justify.png",
747       editpanel_up, editpanel_hi, editpanel_dn,
748       "bottom_justify");
749  new_button("center_justify.png",
750       editpanel_up, editpanel_hi, editpanel_dn,
751       "center_justify");
752  new_button("channel.png",
753       editpanel_up, editpanel_hi, editpanel_dn,
754       "channel");
755  new_button("lok.png",
756       editpanel_up, editpanel_hi, editpanel_dn,
757       "lok");
758  new_toggle("histogram_toggle.png",
759       editpanel_up,
760       editpanel_hi,
761       editpanel_checked,
762       editpanel_dn,
763       editpanel_checkedhi,
764       "histogram_toggle");
765  new_toggle("histogram_rgb.png",
766       editpanel_up,
767       editpanel_hi,
768       editpanel_checked,
769       editpanel_dn,
770       editpanel_checkedhi,
771       "histogram_rgb_toggle");
772  new_toggle("waveform.png",
773       editpanel_up,
774       editpanel_hi,
775       editpanel_checked,
776       editpanel_dn,
777       editpanel_checkedhi,
778       "waveform_toggle");
779  new_toggle("waveform_rgb.png",
780       editpanel_up,
781       editpanel_hi,
782       editpanel_checked,
783       editpanel_dn,
784       editpanel_checkedhi,
785       "waveform_rgb_toggle");
786  new_toggle("scope.png",
787       editpanel_up,
788       editpanel_hi,
789       editpanel_checked,
790       editpanel_dn,
791       editpanel_checkedhi,
792       "scope_toggle");
793  new_button("picture.png",
794       editpanel_up, editpanel_hi, editpanel_dn,
795       "picture");
796  new_button("histogram_img.png",
797       editpanel_up, editpanel_hi, editpanel_dn,
798       "histogram_img");
799  new_button("copy.png",
800       editpanel_up, editpanel_hi, editpanel_dn,
801       "copy");
802  new_button("commercial.png",
803       editpanel_up, editpanel_hi, editpanel_dn,
804       "commercial");
805  new_button("cut.png",
806       editpanel_up, editpanel_hi, editpanel_dn,
807       "cut");
808  new_button("fit.png",
809       editpanel_up, editpanel_hi, editpanel_dn,
810       "fit");
811  new_button("fitautos.png",
812       editpanel_up, editpanel_hi, editpanel_dn,
813       "fitautos");
814  new_button("inpoint.png",
815       editpanel_up, editpanel_hi, editpanel_dn,
816       "inbutton");
817  new_button("label.png",
818       editpanel_up, editpanel_hi, editpanel_dn,
819       "labelbutton");
820  new_button("left_justify.png",
821       editpanel_up, editpanel_hi, editpanel_dn,
822       "left_justify");
823  new_button("magnify.png",
824       editpanel_up, editpanel_hi, editpanel_dn,
825       "magnify_button");
826  new_button("middle_justify.png",
827       editpanel_up, editpanel_hi, editpanel_dn,
828       "middle_justify");
829  new_button("nextlabel.png",
830       editpanel_up, editpanel_hi, editpanel_dn,
831       "nextlabel");
832  new_button("prevlabel.png",
833       editpanel_up, editpanel_hi, editpanel_dn,
834       "prevlabel");
835  new_button("nextedit.png",
836       editpanel_up, editpanel_hi, editpanel_dn,
837       "nextedit");
838  new_button("prevedit.png",
839       editpanel_up, editpanel_hi, editpanel_dn,
840       "prevedit");
841  new_button("outpoint.png",
842       editpanel_up, editpanel_hi, editpanel_dn,
843       "outbutton");
844  over_button = new_button("over.png",
845         editpanel_up, editpanel_hi, editpanel_dn,
846         "overbutton");
847  overwrite_data = new_button("overwrite.png",
848         editpanel_up, editpanel_hi, editpanel_dn,
849         "overwritebutton");
850  new_button("paste.png",
851       editpanel_up, editpanel_hi, editpanel_dn,
852       "paste");
853  new_button("redo.png",
854       editpanel_up, editpanel_hi, editpanel_dn,
855       "redo");
856  new_button("right_justify.png",
857       editpanel_up, editpanel_hi, editpanel_dn,
858       "right_justify");
859  splice_data = new_button("splice.png",
860         editpanel_up, editpanel_hi, editpanel_dn,
861         "splicebutton");
862  new_button("toclip.png",
863       editpanel_up, editpanel_hi, editpanel_dn,
864       "toclip");
865  new_button("goto.png",
866       editpanel_up, editpanel_hi, editpanel_dn,
867       "goto");
868  new_button("top_justify.png",
869       editpanel_up, editpanel_hi, editpanel_dn,
870       "top_justify");
871  new_button("undo.png",
872       editpanel_up, editpanel_hi, editpanel_dn,
873       "undo");
874  new_button("wrench.png",
875       editpanel_up, editpanel_hi, editpanel_dn,
876       "wrench");
877  VFrame *transport_up = new_image("transportup.png");
878  VFrame *transport_hi = new_image("transporthi.png");
879  VFrame *transport_dn = new_image("transportdn.png");
880  new_button("end.png",
881       transport_up, transport_hi, transport_dn,
882       "end");
883  new_button("fastfwd.png",
884       transport_up, transport_hi, transport_dn,
885       "fastfwd");
886  new_button("fastrev.png",
887       transport_up, transport_hi, transport_dn,
888       "fastrev");
889  new_button("play.png",
890       transport_up, transport_hi, transport_dn,
891       "play");
892  new_button("framefwd.png",
893       transport_up, transport_hi, transport_dn,
894       "framefwd");
895  new_button("framerev.png",
896       transport_up, transport_hi, transport_dn,
897       "framerev");
898  new_button("pause.png",
899       transport_up, transport_hi, transport_dn,
900       "pause");
901  new_button("record.png",
902       transport_up, transport_hi, transport_dn,
903       "record");
904  new_button("singleframe.png",
905       transport_up, transport_hi, transport_dn,
906       "recframe");
907  new_button("reverse.png",
908       transport_up, transport_hi, transport_dn,
909       "reverse");
910  new_button("rewind.png",
911       transport_up, transport_hi, transport_dn,
912       "rewind");
913  new_button("stop.png",
914       transport_up, transport_hi, transport_dn,
915       "stop");
916  new_button("stop.png",
917       transport_up, transport_hi, transport_dn,
918       "stoprec");
919  new_image("cwindow_inactive", "cwindow_inactive.png");
920  new_image("cwindow_active", "cwindow_active.png");
921  new_image_set("category_button",
922       3,
923       "preferencesbutton_dn.png",
924       "preferencesbutton_dnhi.png",
925       "preferencesbutton_dnlo.png");
926  new_image_set("category_button_checked",
927       3,
928       "preferencesbutton_up.png",
929       "preferencesbutton_uphi.png",
930       "preferencesbutton_dnlo.png");
931  new_image_set("color3way_point",
932       3,
933       "color3way_up.png",
934       "color3way_hi.png",
935       "color3way_dn.png");
936  new_toggle("arrow.png",
937       editpanel_up, editpanel_hi, editpanel_checked,
938       editpanel_dn, editpanel_checkedhi,
939       "arrow");
940  new_toggle("autokeyframe.png",
941       transport_up, editpanel_hi, editpanel_checked,
942       editpanel_dn, editpanel_checkedhi,
943       "autokeyframe");
944 new_toggle("spankeyframe.png",
945       transport_up, editpanel_hi, editpanel_checked,
946       editpanel_dn, editpanel_checkedhi,
947       "spankeyframe");
948  new_toggle("ibeam.png",
949       editpanel_up, editpanel_hi, editpanel_checked,
950       editpanel_dn, editpanel_checkedhi,
951       "ibeam");
952  new_toggle("show_meters.png",
953       editpanel_up, editpanel_hi, editpanel_checked,
954       editpanel_dn, editpanel_checkedhi,
955       "meters");
956  new_toggle("blank30x30.png",
957       new_image("locklabels_locked.png"),
958       new_image("locklabels_lockedhi.png"),
959       new_image("locklabels_unlocked.png"),
960       new_image("locklabels_dn.png"),
961       new_image("locklabels_unlockedhi.png"),
962       "locklabels");
963  VFrame *cpanel_up = new_image("cpanel_up.png");
964  VFrame *cpanel_hi = new_image("cpanel_hi.png");
965  VFrame *cpanel_dn = new_image("cpanel_dn.png");
966  VFrame *cpanel_checked = new_image("cpanel_checked.png");
967  VFrame *cpanel_checkedhi = new_image("cpanel_checkedhi.png");
968  new_toggle("camera.png",
969       cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi,
970       "camera");
971  new_toggle("crop.png",
972       cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi,
973       "crop");
974  new_toggle("eyedrop.png",
975       cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi,
976       "eyedrop");
977  new_toggle("magnify.png",
978       cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi,
979       "magnify");
980  new_toggle("mask.png",
981       cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi,
982       "mask");
983  new_toggle("ruler.png",
984       cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi,
985       "ruler");
986  new_toggle("projector.png",
987       cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi,
988       "projector");
989  new_toggle("protect.png",
990       cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi,
991       "protect");
992  new_toggle("titlesafe.png",
993       cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi,
994       "titlesafe");
995  new_toggle("toolwindow.png",
996       cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi,
997       "tool");
998  new_toggle("tan_smooth.png",
999       editpanel_up, editpanel_hi, editpanel_checked,
1000       editpanel_dn, editpanel_checkedhi,
1001       "tan_smooth");
1002  new_toggle("tan_linear.png",
1003       editpanel_up, editpanel_hi, editpanel_checked,
1004       editpanel_dn, editpanel_checkedhi,
1005       "tan_linear");
1006  new_toggle("mask_scale_x.png",   "mask_scale_up.png",    "mask_scale_uphi.png",
1007   "mask_scale_chkd.png",  "mask_scale_xdown.png",  "mask_scale_chkdhi.png",
1008   "mask_scale_x");
1009  new_toggle("mask_scale_y.png",   "mask_scale_up.png",    "mask_scale_uphi.png",
1010   "mask_scale_chkd.png",  "mask_scale_ydown.png",  "mask_scale_chkdhi.png",
1011   "mask_scale_y");
1012  new_toggle("mask_scale_xy.png",  "mask_scale_up.png",   "mask_scale_uphi.png",
1013   "mask_scale_chkd.png", "mask_scale_xydown.png", "mask_scale_chkdhi.png",
1014   "mask_scale_xy");
1015  flush_images();
1016 }
1017 void CAKEWALKTHEME::get_vwindow_sizes(VWindowGUI *gui)
1018 {
1019  int edit_w = EditPanel::calculate_w(mwindow, 0, 10);
1020  int transport_w = PlayTransport::get_transport_width(mwindow) + toggle_margin;
1021  vtimebar_h = 16;
1022  int division_w = 30;
1023  vtime_w = 140;
1024  int vtime_border = 15;
1025  vmeter_y = widget_border;
1026  vmeter_h = mwindow->session->vwindow_h - cmeter_y - widget_border;
1027  int buttons_h;
1028  if (mwindow->edl->session->vwindow_meter) {
1029   vmeter_x = mwindow->session->vwindow_w -
1030    MeterPanel::get_meters_width(this,
1031            mwindow->edl->session->audio_channels,
1032            mwindow->edl->session->vwindow_meter);
1033  } else {
1034   vmeter_x = mwindow->session->vwindow_w + widget_border;
1035  }
1036  vcanvas_x = 0;
1037  vcanvas_y = 0;
1038  vcanvas_w = vmeter_x - vcanvas_x - widget_border;
1039  if (edit_w +
1040   widget_border * 2 +
1041   transport_w + widget_border +
1042   vtime_w + division_w +
1043   vtime_border > vmeter_x) {
1044   buttons_h = get_image("vbuttons_left")->get_h();
1045   vedit_x = widget_border;
1046   vedit_y = mwindow->session->vwindow_h -
1047    buttons_h +
1048    vtimebar_h +
1049    widget_border;
1050   vtransport_x = widget_border;
1051   vtransport_y = mwindow->session->vwindow_h -
1052    get_image_set("autokeyframe")[0]->get_h() -
1053    widget_border;
1054   vdivision_x = 280;
1055   vtime_x = vedit_x + 65;
1056   vtime_y = vedit_y + 28;
1057  } else {
1058   buttons_h = vtimebar_h +
1059    widget_border +
1060    EditPanel::calculate_h(mwindow) +
1061    widget_border;
1062   vtransport_x = widget_border;
1063   vtransport_y = mwindow->session->vwindow_h -
1064    buttons_h +
1065    vtimebar_h +
1066    widget_border;
1067   vedit_x = vtransport_x + transport_w + widget_border;
1068   vedit_y = vtransport_y;
1069   vdivision_x = vedit_x + edit_w + division_w;
1070   vtime_x = vdivision_x + vtime_border;
1071   vtime_y = vedit_y + widget_border;
1072  }
1073  vcanvas_h = mwindow->session->vwindow_h - buttons_h;
1074  vtimebar_x = 0;
1075  vtimebar_y = vcanvas_y + vcanvas_h;
1076  vtimebar_w = vmeter_x - widget_border;
1077 }
1078 void CAKEWALKTHEME::build_bg_data()
1079 {
1080  channel_position_data = new VFramePng(get_image_data("channel_position.png"));
1081  new_image("resource1024", "resource1024.png");
1082  new_image("resource512", "resource512.png");
1083  new_image("resource256", "resource256.png");
1084  new_image("resource128", "resource128.png");
1085  new_image("resource64", "resource64.png");
1086  new_image("resource32", "resource32.png");
1087  new_image("plugin_bg_data", "plugin_bg.png");
1088  new_image("title_bg_data", "title_bg.png");
1089  new_image("vtimebar_bg_data", "vwindow_timebar.png");
1090 }
1091 void CAKEWALKTHEME::build_overlays()
1092 {
1093  keyframe_data = new VFramePng(get_image_data("keyframe3.png"));
1094  camerakeyframe_data = new VFramePng(get_image_data("camerakeyframe.png"));
1095  maskkeyframe_data = new VFramePng(get_image_data("maskkeyframe.png"));
1096  modekeyframe_data = new VFramePng(get_image_data("modekeyframe.png"));
1097  hardedge_data = new VFramePng(get_image_data("hardedge.png"));
1098  pankeyframe_data = new VFramePng(get_image_data("pankeyframe.png"));
1099  projectorkeyframe_data = new VFramePng(get_image_data("projectorkeyframe.png"));
1100 }
1101 void CAKEWALKTHEME::draw_rwindow_bg(RecordGUI *gui)
1102 {
1103 }
1104 void CAKEWALKTHEME::draw_rmonitor_bg(RecordMonitorGUI *gui)
1105 {
1106 }
1107 void CAKEWALKTHEME::draw_mwindow_bg(MWindowGUI *gui)
1108 {
1109  gui->draw_3segmenth(mbuttons_x, mbuttons_y - 1,
1110       gui->menu_w(), get_image("mbutton_bg"));
1111  int pdw = get_image("panel_divider")->get_w();
1112  int x = mbuttons_x;
1113  x += 9 * get_image("play")->get_w();
1114  x += mtransport_margin;
1115  gui->draw_vframe(get_image("panel_divider"),
1116       x - toggle_margin / 2 - pdw / 2 + 2,
1117       mbuttons_y - 1);
1118  x += 2 * get_image("arrow")->get_w() + toggle_margin;
1119  gui->draw_vframe(get_image("panel_divider"),
1120       x - toggle_margin / 2 - pdw / 2 + 2,
1121       mbuttons_y - 1);
1122  x += 3 * get_image("autokeyframe")->get_w() + toggle_margin;
1123  gui->draw_vframe(get_image("panel_divider"),
1124       x - toggle_margin / 2 - pdw / 2 + 2,
1125       mbuttons_y - 1);
1126  gui->draw_3segmenth(0,
1127       mbuttons_y - 1 + get_image("mbutton_bg")->get_h(),
1128       get_image("patchbay_bg")->get_w(),
1129       get_image("clock_bg"));
1130  gui->draw_3segmentv(patchbay_x,
1131       patchbay_y,
1132       patchbay_h,
1133       get_image("patchbay_bg"));
1134  gui->set_color(BLACK);
1135  gui->draw_box(mcanvas_x + get_image("patchbay_bg")->get_w(),
1136       mcanvas_y + mtimebar_h,
1137       mcanvas_w - BC_ScrollBar::get_span(SCROLL_VERT),
1138       mcanvas_h - BC_ScrollBar::get_span(SCROLL_HORIZ) - mtimebar_h);
1139  gui->draw_3segmenth(mtimebar_x,
1140       mtimebar_y,
1141       mtimebar_w,
1142       get_image("timebar_bg"));
1143  gui->set_color(CwDarkGray);
1144  gui->draw_box(mzoom_x,
1145       mzoom_y,
1146       mwindow->session->mwindow_w,
1147       25);
1148  gui->draw_3segmenth(mzoom_x,
1149       mzoom_y,
1150       mzoom_w,
1151       get_image("statusbar"));
1152 }
1153 void CAKEWALKTHEME::draw_cwindow_bg(CWindowGUI *gui)
1154 {
1155  gui->draw_3segmentv(0, 0, ccomposite_h, get_image("cpanel_bg"));
1156  gui->draw_3segmenth(0, ccomposite_h, cstatus_x, get_image("cbuttons_left"));
1157  if(mwindow->edl->session->cwindow_meter)
1158  {
1159   gui->draw_3segmenth(cstatus_x,
1160        ccomposite_h,
1161        cmeter_x - widget_border - cstatus_x,
1162        get_image("cbuttons_right"));
1163   gui->draw_9segment(cmeter_x - widget_border,
1164          0,
1165          mwindow->session->cwindow_w - cmeter_x + widget_border,
1166          mwindow->session->cwindow_h,
1167          get_image("cmeter_bg"));
1168  } else {
1169   gui->draw_3segmenth(cstatus_x,
1170        ccomposite_h,
1171        cmeter_x - widget_border - cstatus_x + 100,
1172        get_image("cbuttons_right"));
1173  }
1174 }
1175 void CAKEWALKTHEME::draw_vwindow_bg(VWindowGUI *gui)
1176 {
1177  gui->draw_3segmenth(0,
1178       vcanvas_h,
1179       vdivision_x,
1180       get_image("vbuttons_left"));
1181  if(mwindow->edl->session->vwindow_meter)
1182  {
1183   gui->draw_3segmenth(vdivision_x,
1184        vcanvas_h,
1185        vmeter_x - widget_border - vdivision_x,
1186        get_image("vbuttons_right"));
1187   gui->draw_9segment(vmeter_x - widget_border,
1188          0,
1189          mwindow->session->vwindow_w - vmeter_x + widget_border,
1190          mwindow->session->vwindow_h,
1191          get_image("cmeter_bg"));
1192  } else {
1193   gui->draw_3segmenth(vdivision_x,
1194        vcanvas_h,
1195        vmeter_x - widget_border - vdivision_x + 100,
1196        get_image("vbuttons_right"));
1197  }
1198  gui->draw_3segmenth(
1199   vtime_x - 5,
1200   vtime_y + 0,
1201   vtime_w + 10,
1202   get_image("vclock"));
1203 }
1204 void CAKEWALKTHEME::draw_preferences_bg(PreferencesWindow *gui)
1205 {
1206  gui->draw_vframe(get_image("preferences_bg"), 0, 0);
1207 }
1208 void CAKEWALKTHEME::draw_new_bg(NewWindow *gui)
1209 {
1210  gui->draw_vframe(get_image("new_bg"), 0, 0);
1211 }
1212 void CAKEWALKTHEME::draw_setformat_bg(SetFormatWindow *gui)
1213 {
1214  gui->draw_vframe(get_image("setformat_bg"), 0, 0);
1215 }