4 * Copyright (C) 1997-2011 Adam Williams <broadcast at earthling dot net>
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.
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.
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
22 #include "awindowgui.h"
23 #include "bcsignals.h"
26 #include "cwindowgui.h"
28 #include "edlsession.h"
29 #include "keyframegui.h"
31 #include "levelwindowgui.h"
33 #include "localsession.h"
35 #include "mainsession.h"
37 #include "meterpanel.h"
38 #include "mwindowgui.h"
40 #include "overlayframe.h"
42 #include "playtransport.h"
43 //#include "presetsgui.h"
44 #include "recordgui.h"
45 #include "recordmonitor.h"
46 #include "resourcepixmap.h"
47 #include "statusbar.h"
50 #include "trackcanvas.h"
52 #include "vwindowgui.h"
60 new VFrame(0, -1, default_data.get_w(), default_data.get_h(), BC_RGBA8888, -1)
68 theme_title = _(DEFAULT_THEME);
70 mtransport_margin = 0;
73 timebar_cursor_color = RED;
75 BC_WindowBase::get_resources()->bg_color = BLOND;
76 BC_WindowBase::get_resources()->button_up = 0xffc000;
77 BC_WindowBase::get_resources()->button_highlighted = 0xffe000;
78 BC_WindowBase::get_resources()->recursive_resizing = 0;
87 clock_bg_color = BLACK;
88 clock_fg_color = GREEN;
89 assetedit_color = YELLOW;
90 const char *cp = getenv("BC_USE_COMMERCIALS");
91 use_commercials = !cp ? 0 : atoi(cp);
93 preferences_category_overlap = 0;
98 #include "data/about_png.h"
99 about_bg = new VFramePng(about_png);
102 drag_pane_color = WHITE;
104 appendasset_data = 0;
106 asset_append_data = 0;
108 asset_index_data = 0;
110 asset_project_data = 0;
113 camerakeyframe_data = 0;
117 channel_position_data = 0;
118 delete_all_indexes_data = 0;
122 deleteproject_data = 0;
127 edithandlein_data = 0;
128 edithandleout_data = 0;
137 maskkeyframe_data = 0;
138 modekeyframe_data = 0;
147 pankeyframe_data = 0;
151 presentation_data = 0;
152 presentation_loop = 0;
153 presentation_stop = 0;
154 projectorkeyframe_data = 0;
155 redrawindex_data = 0;
164 statusbar_cancel_data = 0;
165 timebar_view_data = 0;
169 vtimebar_bg_data = 0;
173 // Need to delete everything here
178 aspect_ratios.remove_all_objects();
179 frame_rates.remove_all_objects();
180 frame_sizes.remove_all_objects();
181 sample_rates.remove_all_objects();
182 zoom_values.remove_all_objects();
187 void Theme::flush_images()
191 void Theme::initialize()
193 message_normal = BLACK;
196 // Force to use local data for images
197 extern unsigned char _binary_theme_data_start[];
198 set_data(_binary_theme_data_start);
200 // Set images which weren't set by subclass
201 new_image("mode_normal", "mode_normal.png");
202 new_image("mode_add", "mode_add.png");
203 new_image("mode_subtract", "mode_subtract.png");
204 new_image("mode_multiply", "mode_multiply.png");
205 new_image("mode_divide", "mode_divide.png");
206 new_image("mode_replace", "mode_replace.png");
207 new_image("mode_max", "mode_max.png");
208 new_image("mode_min", "mode_min.png");
209 new_image("mode_darken", "mode_darken.png");
210 new_image("mode_lighten", "mode_lighten.png");
211 new_image("mode_dst", "mode_dst.png");
212 new_image("mode_dstatop", "mode_dstatop.png");
213 new_image("mode_dstin", "mode_dstin.png");
214 new_image("mode_dstout", "mode_dstout.png");
215 new_image("mode_dstover", "mode_dstover.png");
216 new_image("mode_src", "mode_src.png");
217 new_image("mode_srcatop", "mode_srcatop.png");
218 new_image("mode_srcin", "mode_srcin.png");
219 new_image("mode_srcout", "mode_srcout.png");
220 new_image("mode_srcover", "mode_srcover.png");
221 new_image("mode_and", "mode_and.png");
222 new_image("mode_or", "mode_or.png");
223 new_image("mode_xor", "mode_xor.png");
224 new_image("mode_overlay", "mode_overlay.png");
225 new_image("mode_screen", "mode_screen.png");
226 new_image("mode_burn", "mode_burn.png");
227 new_image("mode_dodge", "mode_dodge.png");
228 new_image("mode_hardlight", "mode_hardlight.png");
229 new_image("mode_softlight", "mode_softlight.png");
230 new_image("mode_difference", "mode_difference.png");
232 new_image_set("mode_popup", 3, "mode_up.png", "mode_hi.png", "mode_dn.png");
234 // Images all themes have
235 new_image("mwindow_icon", "heroine_icon.png");
236 new_image("vwindow_icon", "heroine_icon.png");
237 new_image("cwindow_icon", "heroine_icon.png");
238 new_image("awindow_icon", "heroine_icon.png");
239 new_image("record_icon", "heroine_icon.png");
240 new_image("clip_icon", "clip_icon.png");
243 new_image("aeffect_icon", "aeffect_icon.png");
244 new_image("veffect_icon", "veffect_icon.png");
245 new_image("atransition_icon", "atransition_icon.png");
246 new_image("vtransition_icon", "atransition_icon.png");
254 void Theme::build_menus()
256 aspect_ratios.append(new BC_ListBoxItem("3:2"));
257 aspect_ratios.append(new BC_ListBoxItem("4:3"));
258 aspect_ratios.append(new BC_ListBoxItem("16:9"));
259 aspect_ratios.append(new BC_ListBoxItem("2.10:1"));
260 aspect_ratios.append(new BC_ListBoxItem("2.20:1"));
261 aspect_ratios.append(new BC_ListBoxItem("2.25:1"));
262 aspect_ratios.append(new BC_ListBoxItem("2.30:1"));
263 aspect_ratios.append(new BC_ListBoxItem("2.35:1"));
264 aspect_ratios.append(new BC_ListBoxItem("2.66:1"));
266 frame_sizes.append(new BC_ListBoxItem("128x96"));
267 frame_sizes.append(new BC_ListBoxItem("160x120"));
268 frame_sizes.append(new BC_ListBoxItem("320x240"));
269 frame_sizes.append(new BC_ListBoxItem("360x240"));
270 frame_sizes.append(new BC_ListBoxItem("400x300"));
271 frame_sizes.append(new BC_ListBoxItem("640x400"));
272 frame_sizes.append(new BC_ListBoxItem("640x480"));
273 frame_sizes.append(new BC_ListBoxItem("720x480"));
274 frame_sizes.append(new BC_ListBoxItem("800x600"));
275 frame_sizes.append(new BC_ListBoxItem("1024x768"));
276 frame_sizes.append(new BC_ListBoxItem("1280x720"));
277 frame_sizes.append(new BC_ListBoxItem("1280x1024"));
278 frame_sizes.append(new BC_ListBoxItem("1600x1200"));
279 frame_sizes.append(new BC_ListBoxItem("1920x1080"));
280 frame_sizes.append(new BC_ListBoxItem("3840x2160"));
281 frame_sizes.append(new BC_ListBoxItem("4096x1720"));
283 sample_rates.append(new BC_ListBoxItem("8000"));
284 sample_rates.append(new BC_ListBoxItem("16000"));
285 sample_rates.append(new BC_ListBoxItem("22050"));
286 sample_rates.append(new BC_ListBoxItem("32000"));
287 sample_rates.append(new BC_ListBoxItem("44100"));
288 sample_rates.append(new BC_ListBoxItem("48000"));
289 sample_rates.append(new BC_ListBoxItem("96000"));
290 sample_rates.append(new BC_ListBoxItem("192000"));
292 frame_rates.append(new BC_ListBoxItem("0.25"));
293 frame_rates.append(new BC_ListBoxItem("1"));
294 frame_rates.append(new BC_ListBoxItem("5"));
295 frame_rates.append(new BC_ListBoxItem("10"));
296 frame_rates.append(new BC_ListBoxItem("12"));
297 frame_rates.append(new BC_ListBoxItem("15"));
298 frame_rates.append(new BC_ListBoxItem("23.976"));
299 frame_rates.append(new BC_ListBoxItem("24"));
300 frame_rates.append(new BC_ListBoxItem("25"));
301 frame_rates.append(new BC_ListBoxItem("29.97"));
302 frame_rates.append(new BC_ListBoxItem("30"));
303 frame_rates.append(new BC_ListBoxItem("50"));
304 frame_rates.append(new BC_ListBoxItem("59.94"));
305 frame_rates.append(new BC_ListBoxItem("60"));
306 frame_rates.append(new BC_ListBoxItem("100"));
307 frame_rates.append(new BC_ListBoxItem("120"));
308 frame_rates.append(new BC_ListBoxItem("1000"));
310 char string[BCTEXTLEN];
311 for(int i = 1; i < 17; i++)
313 sprintf(string, "%d", (int)pow(2, i));
314 zoom_values.append(new BC_ListBoxItem(string));
319 void Theme::overlay(VFrame *dst, VFrame *src, int in_x1, int in_x2)
323 unsigned char **in_rows;
324 unsigned char **out_rows;
328 w = MIN(src->get_w(), dst->get_w());
329 h = MIN(dst->get_h(), src->get_h());
336 h = MIN(dst->get_h(), src->get_h());
338 in_rows = src->get_rows();
339 out_rows = dst->get_rows();
341 switch(src->get_color_model())
344 switch(dst->get_color_model())
347 for(int i = 0; i < h; i++)
349 unsigned char *in_row = in_rows[i] + in_x1 * 4;
350 unsigned char *out_row = out_rows[i];
351 for(int j = 0; j < w; j++)
353 int opacity = in_row[3];
354 int transparency = out_row[3] * (0xff - opacity) / 0xff;
355 out_row[0] = (in_row[0] * opacity + out_row[0] * transparency) / 0xff;
356 out_row[1] = (in_row[1] * opacity + out_row[1] * transparency) / 0xff;
357 out_row[2] = (in_row[2] * opacity + out_row[2] * transparency) / 0xff;
358 out_row[3] = MAX(in_row[3], out_row[3]);
365 for(int i = 0; i < h; i++)
367 unsigned char *in_row = in_rows[i] + in_x1 * 4;
368 unsigned char *out_row = out_rows[i];
369 for(int j = 0; j < w; j++)
371 int opacity = in_row[3];
372 int transparency = 0xff - opacity;
373 out_row[0] = (in_row[0] * opacity + out_row[0] * transparency) / 0xff;
374 out_row[1] = (in_row[1] * opacity + out_row[1] * transparency) / 0xff;
375 out_row[2] = (in_row[2] * opacity + out_row[2] * transparency) / 0xff;
386 void Theme::build_transport(char *title,
387 unsigned char *png_overlay,
391 if(!png_overlay) return;
392 VFramePng default_data(png_overlay);
394 data[0] = NEW_VFRAME;
395 data[1] = NEW_VFRAME;
396 data[2] = NEW_VFRAME;
397 data[0]->clear_frame();
398 data[1]->clear_frame();
399 data[2]->clear_frame();
401 for(int i = 0; i < 3; i++)
405 if(!bg_data[i]) break;
411 in_x2 = default_data.get_w();
415 in_x1 = (int)(bg_data[i]->get_w() * 0.33);
416 in_x2 = in_x1 + default_data.get_w();
420 in_x1 = bg_data[i]->get_w() - default_data.get_w();
421 in_x2 = in_x1 + default_data.get_w();
425 overlay(data[i], bg_data[i], in_x1, in_x2);
426 overlay(data[i], &default_data);
429 new_image_set_images(title, 3, data[0], data[1], data[2]);
440 void Theme::build_patches(VFrame** &data,
441 unsigned char *png_overlay,
445 if(!png_overlay || !bg_data) return;
446 VFramePng default_data(png_overlay);
447 data = new VFrame*[5];
448 data[0] = NEW_VFRAME;
449 data[1] = NEW_VFRAME;
450 data[2] = NEW_VFRAME;
451 data[3] = NEW_VFRAME;
452 data[4] = NEW_VFRAME;
454 for(int i = 0; i < 5; i++)
464 in_x2 = default_data.get_w();
468 in_x1 = (int)(bg_data[i]->get_w() * 0.33);
469 in_x2 = in_x1 + default_data.get_w();
473 in_x1 = bg_data[i]->get_w() - default_data.get_w();
474 in_x2 = in_x1 + default_data.get_w();
492 void Theme::build_button(VFrame** &data,
493 unsigned char *png_overlay,
498 if(!png_overlay) return;
499 VFramePng default_data(png_overlay);
501 if(!up_vframe || !hi_vframe || !dn_vframe) return;
502 data = new VFrame*[3];
503 data[0] = NEW_VFRAME;
504 data[1] = NEW_VFRAME;
505 data[2] = NEW_VFRAME;
506 data[0]->copy_from(up_vframe);
507 data[1]->copy_from(hi_vframe);
508 data[2]->copy_from(dn_vframe);
509 for(int i = 0; i < 3; i++)
514 void Theme::build_button(VFrame** &data,
515 unsigned char *png_overlay,
521 if(!png_overlay) return;
522 VFramePng default_data(png_overlay);
524 if(!up_vframe || !hi_vframe || !dn_vframe) return;
525 data = new VFrame*[4];
526 data[0] = NEW_VFRAME;
527 data[1] = NEW_VFRAME;
528 data[2] = NEW_VFRAME;
529 data[3] = NEW_VFRAME;
530 data[0]->copy_from(up_vframe);
531 data[1]->copy_from(hi_vframe);
532 data[2]->copy_from(dn_vframe);
533 data[2]->copy_from(at_vframe);
534 for(int i = 0; i < 4; i++)
539 void Theme::build_toggle(VFrame** &data,
540 unsigned char *png_overlay,
543 VFrame *checked_vframe,
545 VFrame *checkedhi_vframe)
552 !checkedhi_vframe) return;
553 VFramePng default_data(png_overlay);
554 data = new VFrame*[5];
555 data[0] = NEW_VFRAME;
556 data[1] = NEW_VFRAME;
557 data[2] = NEW_VFRAME;
558 data[3] = NEW_VFRAME;
559 data[4] = NEW_VFRAME;
560 data[0]->copy_from(up_vframe);
561 data[1]->copy_from(hi_vframe);
562 data[2]->copy_from(checked_vframe);
563 data[3]->copy_from(dn_vframe);
564 data[4]->copy_from(checkedhi_vframe);
565 for(int i = 0; i < 5; i++)
571 void Theme::get_mwindow_sizes(MWindowGUI *gui, int w, int h)
574 mbuttons_y = gui->menu_h() + 1;
575 mbuttons_w = gui->menu_w();
576 mbuttons_h = get_image("mbutton_bg")->get_h();
577 mclock_x = window_border - 5;
578 mclock_y = mbuttons_y - 1 + mbuttons_h;
579 mclock_w = get_image("clock_bg")->get_w() - 20;
580 mclock_h = get_image("clock_bg")->get_h();
581 mtimebar_x = get_image("patchbay_bg")->get_w();
582 mtimebar_y = mbuttons_y - 1 + mbuttons_h;
583 mtimebar_w = w - mtimebar_x;
584 mtimebar_h = get_image("timebar_bg")->get_h();
587 mzoom_y = h - get_image("statusbar")->get_h();
590 mstatus_y = mzoom_y + mzoom_h;
592 mstatus_h = h - mstatus_y;
593 mstatus_message_x = 10;
594 mstatus_message_y = 5;
595 mstatus_progress_x = mstatus_w - statusbar_cancel_data[0]->get_w() - 240;
596 mstatus_progress_y = mstatus_h - BC_WindowBase::get_resources()->progress_images[0]->get_h() - 3;
597 mstatus_progress_w = 230;
598 mstatus_cancel_x = mstatus_w - statusbar_cancel_data[0]->get_w();
599 mstatus_cancel_y = mstatus_h - statusbar_cancel_data[0]->get_h();
601 mcanvas_y = mbuttons_y - 1 + mbuttons_h;
603 mcanvas_h = mzoom_y - mtimebar_y;
604 control_pixels = (mcanvas_w * control_pixels) / 1000;
606 patchbay_y = mcanvas_y + mclock_h;
607 patchbay_w = get_image("patchbay_bg")->get_w();
608 patchbay_h = mcanvas_h - mclock_h;
609 pane_w = get_image_set("xpane")[0]->get_w();
610 pane_h = get_image_set("ypane")[0]->get_h();
611 pane_x = mcanvas_x + mcanvas_w;
612 pane_y = mcanvas_y + mcanvas_h;
614 mhscroll_y = mcanvas_y + mcanvas_h - BC_ScrollBar::get_span(SCROLL_HORIZ);
615 mhscroll_w = w - BC_ScrollBar::get_span(SCROLL_VERT);
616 mvscroll_x = mcanvas_x + mcanvas_w;
617 mvscroll_y = mcanvas_y;
618 mvscroll_h = mcanvas_h;
621 void Theme::get_pane_sizes(MWindowGUI *gui,
638 if(number == TOP_LEFT_PANE ||
639 number == BOTTOM_LEFT_PANE)
641 *view_x += patchbay_w;
642 *view_w -= patchbay_w;
646 if(number == TOP_LEFT_PANE ||
647 number == TOP_RIGHT_PANE)
649 *view_y += mtimebar_h;
650 *view_h -= mtimebar_h;
654 if(number == BOTTOM_LEFT_PANE ||
655 number == BOTTOM_RIGHT_PANE ||
656 gui->horizontal_panes() ||
657 gui->total_panes() == 1)
659 *view_h -= BC_ScrollBar::get_span(SCROLL_HORIZ);
663 if(number == TOP_RIGHT_PANE ||
664 number == BOTTOM_RIGHT_PANE ||
665 gui->vertical_panes() ||
666 gui->total_panes() == 1)
668 *view_w -= BC_ScrollBar::get_span(SCROLL_VERT);
672 void Theme::draw_mwindow_bg(MWindowGUI *gui)
677 void Theme::get_cwindow_sizes(CWindowGUI *gui, int cwindow_controls)
679 int total_buttons = !use_commercials ? 15 : 16;
680 int edit_w = EditPanel::calculate_w(mwindow, 1, total_buttons);
681 int transport_w = PlayTransport::get_transport_width(mwindow) + toggle_margin;
682 int zoom_w = ZoomPanel::calculate_w(czoom_w);
683 int status_w = get_image("cwindow_active")->get_w();
684 // Space between buttons & status icon
692 if(mwindow->edl->session->cwindow_meter)
694 cmeter_x = mwindow->session->cwindow_w -
695 MeterPanel::get_meters_width(this,
696 mwindow->edl->session->audio_channels,
697 mwindow->edl->session->cwindow_meter);
701 cmeter_x = mwindow->session->cwindow_w + widget_border;
708 transport_w + widget_border +
709 zoom_w + widget_border +
713 buttons_h = get_image("cbuttons_left")->get_h();
715 cedit_x = widget_border;
716 cedit_y = mwindow->session->cwindow_h -
721 ctransport_x = widget_border;
722 ctransport_y = mwindow->session->cwindow_h -
723 get_image_set("autokeyframe")[0]->get_h() -
726 czoom_x = ctransport_x + transport_w + widget_border;
727 czoom_y = ctransport_y + widget_border;
730 cstatus_y = mwindow->session->cwindow_h -
731 get_image("cwindow_active")->get_h() - 30;
735 buttons_h = ctimebar_h +
737 EditPanel::calculate_h(mwindow) +
739 ctransport_x = widget_border;
740 ctransport_y = mwindow->session->cwindow_h -
745 cedit_x = ctransport_x + transport_w + widget_border;
746 cedit_y = ctransport_y;
748 czoom_x = cedit_x + edit_w + widget_border;
749 czoom_y = cedit_y + widget_border;
750 //printf("Theme::get_cwindow_sizes %d %d %d\n", __LINE__, czoom_x, zoom_w);
751 cstatus_x = czoom_x + zoom_w + division_w;
752 cstatus_y = ctransport_y;
758 ccomposite_w = get_image("cpanel_bg")->get_w();
759 ccomposite_h = mwindow->session->cwindow_h - buttons_h;
767 ccanvas_x = ccomposite_x + ccomposite_w;
769 ccanvas_h = ccomposite_h;
772 ccanvas_w = cmeter_x - ccanvas_x - widget_border;
779 ccomposite_x = -get_image("cpanel_bg")->get_w();
781 ccomposite_w = get_image("cpanel_bg")->get_w();
782 ccomposite_h = mwindow->session->cwindow_h - get_image("cbuttons_left")->get_h();
785 cedit_y = mwindow->session->cwindow_h + 17;
787 ctransport_y = cedit_y + 40;
790 ccanvas_w = mwindow->session->cwindow_w;
791 ccanvas_h = mwindow->session->cwindow_h;
792 cmeter_x = mwindow->session->cwindow_w;
793 cstatus_x = mwindow->session->cwindow_w;
794 cstatus_y = mwindow->session->cwindow_h;
795 czoom_x = mwindow->session->cwindow_w;
796 czoom_y = mwindow->session->cwindow_h;
803 cmeter_y = widget_border;
804 cmeter_h = mwindow->session->cwindow_h - cmeter_y - widget_border;
806 // ctimebar_x = ccanvas_x;
807 // ctimebar_y = ccanvas_y + ccanvas_h;
808 // ctimebar_w = ccanvas_w;
810 ctimebar_y = ccanvas_y + ccanvas_h;
811 ctimebar_w = mwindow->session->cwindow_w;
812 if(mwindow->edl->session->cwindow_meter)
814 ctimebar_w = cmeter_x - widget_border;
824 void Theme::draw_awindow_bg(AWindowGUI *gui)
826 gui->clear_box(0, 0, mwindow->session->awindow_w, mwindow->session->awindow_h);
830 void Theme::draw_vwindow_bg(VWindowGUI *gui)
834 // mwindow->session->vwindow_w,
835 // mwindow->session->vwindow_h);
837 // gui->draw_3segmenth(vtimebar_x,
846 void Theme::draw_cwindow_bg(CWindowGUI *gui)
848 gui->clear_box(0, 0, mwindow->session->cwindow_w, mwindow->session->cwindow_h);
852 void Theme::draw_lwindow_bg(LevelWindowGUI *gui)
854 gui->clear_box(0, 0, mwindow->session->lwindow_w, mwindow->session->lwindow_h);
859 void Theme::draw_rmonitor_bg(RecordMonitorGUI *gui)
861 gui->clear_box(0, 0, mwindow->session->rmonitor_w, mwindow->session->rmonitor_h);
866 void Theme::draw_rwindow_bg(RecordGUI *gui)
868 gui->clear_box(0, 0, mwindow->session->rwindow_w, mwindow->session->rwindow_h);
872 void Theme::draw_resource_bg(TrackCanvas *canvas,
873 ResourcePixmap *pixmap,
884 switch(mwindow->edl->local_session->zoom_track)
886 case 1024: image = get_image("resource1024"); break;
887 case 512: image = get_image("resource512"); break;
888 case 256: image = get_image("resource256"); break;
889 case 128: image = get_image("resource128"); break;
890 case 64: image = get_image("resource64"); break;
892 case 32: image = get_image("resource32"); break;
895 canvas->draw_3segmenth(x1,
905 void Theme::get_vwindow_sizes(VWindowGUI *gui)
907 int edit_w = EditPanel::calculate_w(mwindow, 0, 10);
908 int transport_w = PlayTransport::get_transport_width(mwindow) + toggle_margin;
909 // Space between buttons & time
913 int vtime_border = 15;
915 vmeter_y = widget_border;
916 vmeter_h = mwindow->session->vwindow_h - cmeter_y - widget_border;
919 if(mwindow->edl->session->vwindow_meter)
921 vmeter_x = mwindow->session->vwindow_w -
922 MeterPanel::get_meters_width(this,
923 mwindow->edl->session->audio_channels,
924 mwindow->edl->session->vwindow_meter);
928 vmeter_x = mwindow->session->vwindow_w + widget_border;
933 vcanvas_w = vmeter_x - vcanvas_x - widget_border;
937 transport_w + widget_border +
938 vtime_w + division_w +
939 vtime_border > vmeter_x)
941 buttons_h = get_image("vbuttons_left")->get_h();
942 vedit_x = widget_border;
943 vedit_y = mwindow->session->vwindow_h -
948 vtransport_x = widget_border;
949 vtransport_y = mwindow->session->vwindow_h -
950 get_image_set("autokeyframe")[0]->get_h() -
954 vtime_x = vdivision_x;
955 vtime_y = vedit_y + 20;
959 buttons_h = vtimebar_h +
961 EditPanel::calculate_h(mwindow) +
963 vtransport_x = widget_border;
964 vtransport_y = mwindow->session->vwindow_h -
969 vedit_x = vtransport_x + transport_w + widget_border;
970 vedit_y = vtransport_y;
972 vdivision_x = vedit_x + edit_w + division_w;
973 vtime_x = vdivision_x + vtime_border;
974 vtime_y = vedit_y + widget_border;
978 // vtimebar_x = vcanvas_x;
979 // vtimebar_y = vcanvas_y + vcanvas_h;
980 // vtimebar_w = vcanvas_w;
982 vcanvas_h = mwindow->session->vwindow_h - buttons_h;
984 vtimebar_y = vcanvas_y + vcanvas_h;
985 vtimebar_w = vmeter_x - widget_border;
990 void Theme::get_awindow_sizes(AWindowGUI *gui)
995 // afolders_y = deletedisk_data[0]->get_h();
997 afolders_w = mwindow->session->afolders_w;
998 afolders_h = mwindow->session->awindow_h - afolders_y;
999 adivider_x = afolders_x + afolders_w;
1002 adivider_h = afolders_h;
1003 alist_x = afolders_x + afolders_w + 5;
1004 alist_y = afolders_y;
1005 alist_w = mwindow->session->awindow_w - alist_x;
1006 alist_h = afolders_h;
1009 void Theme::get_rmonitor_sizes(int do_audio,
1022 rmonitor_canvas_y = 30;
1028 rmonitor_canvas_y = 0;
1037 rmonitor_channel_x = x;
1038 rmonitor_channel_y = 5;
1040 rmonitor_canvas_y = 35;
1046 rmonitor_interlace_x = x;
1047 rmonitor_interlace_y = y;
1055 rmonitor_meter_x = mwindow->session->rmonitor_w -
1056 MeterPanel::get_meters_width(this, audio_channels, 1);
1057 rmonitor_meter_w = mwindow->session->rmonitor_w;
1061 rmonitor_meter_x = widget_border;
1062 rmonitor_meter_w = mwindow->session->rmonitor_w - widget_border * 2;
1065 rmonitor_meter_y = 40;
1066 rmonitor_meter_h = mwindow->session->rmonitor_h - 10 - rmonitor_meter_y;
1070 rmonitor_meter_x = mwindow->session->rmonitor_w;
1073 rmonitor_canvas_x = 0;
1074 rmonitor_canvas_w = rmonitor_meter_x - rmonitor_canvas_x;
1075 if(do_audio) rmonitor_canvas_w -= 10;
1076 rmonitor_canvas_h = mwindow->session->rmonitor_h - rmonitor_canvas_y;
1078 if(!do_video && do_audio)
1080 rmonitor_meter_y -= 30;
1081 rmonitor_meter_h += 30;
1086 void Theme::get_recordgui_sizes(RecordGUI *gui, int w, int h)
1090 void Theme::get_batchrender_sizes(BatchRenderGUI *gui,
1094 batchrender_x1 = 10;
1095 batchrender_x2 = 300;
1096 batchrender_x3 = 400;
1099 void Theme::get_plugindialog_sizes()
1102 plugindialog_new_x = x;
1103 plugindialog_new_y = y;
1104 plugindialog_shared_x = mwindow->session->plugindialog_w / 3;
1105 plugindialog_shared_y = y;
1106 plugindialog_module_x = mwindow->session->plugindialog_w * 2 / 3;
1107 plugindialog_module_y = y;
1109 plugindialog_new_w = plugindialog_shared_x - plugindialog_new_x - 10;
1110 plugindialog_new_h = mwindow->session->plugindialog_h - 100;
1111 plugindialog_shared_w = plugindialog_module_x - plugindialog_shared_x - 10;
1112 plugindialog_shared_h = mwindow->session->plugindialog_h - 100;
1113 plugindialog_module_w = mwindow->session->plugindialog_w - plugindialog_module_x - 10;
1114 plugindialog_module_h = mwindow->session->plugindialog_h - 100;
1116 plugindialog_newattach_x = plugindialog_new_x + 20;
1117 plugindialog_newattach_y = plugindialog_new_y + plugindialog_new_h + 10;
1118 plugindialog_sharedattach_x = plugindialog_shared_x + 20;
1119 plugindialog_sharedattach_y = plugindialog_shared_y + plugindialog_shared_h + 10;
1120 plugindialog_moduleattach_x = plugindialog_module_x + 20;
1121 plugindialog_moduleattach_y = plugindialog_module_y + plugindialog_module_h + 10;
1124 // void Theme::get_presetdialog_sizes(PresetsWindow *gui)
1126 // int x = window_border;
1127 // int y = window_border + BC_Title::calculate_h(gui, "P") + widget_border;
1129 // presets_list_x = x;
1130 // presets_list_y = y;
1131 // presets_list_w = mwindow->session->presetdialog_w / 2;
1132 // presets_list_h = mwindow->session->presetdialog_h -
1133 // BC_OKButton::calculate_h() -
1137 // presets_text_x = presets_list_x + presets_list_w + widget_border;
1138 // presets_text_y = y;
1139 // presets_text_w = mwindow->session->presetdialog_w - presets_text_x - window_border;
1140 // y += BC_TextBox::calculate_h(gui,
1143 // 1) + widget_border;
1145 // presets_delete_x = presets_text_x;
1146 // presets_delete_y = y;
1147 // y += BC_GenericButton::calculate_h() + widget_border;
1149 // presets_save_x = presets_text_x;
1150 // presets_save_y = y;
1151 // y += BC_GenericButton::calculate_h() + widget_border;
1153 // presets_apply_x = presets_text_x;
1154 // presets_apply_y = y;
1155 // y += BC_GenericButton::calculate_h();
1158 void Theme::get_keyframedialog_sizes(KeyFrameWindow *gui)
1160 int x = window_border;
1161 int y = window_border +
1162 BC_Title::calculate_h(gui, "P", LARGEFONT) +
1167 #ifdef EDIT_KEYFRAME
1168 presets_list_w = mwindow->session->keyframedialog_w / 2 -
1172 presets_list_w = mwindow->session->keyframedialog_w -
1176 presets_list_h = mwindow->session->keyframedialog_h -
1177 BC_OKButton::calculate_h() -
1181 BC_Title::calculate_h(gui, "P") -
1183 BC_TextBox::calculate_h(gui,
1188 (BC_GenericButton::calculate_h() + widget_border) * 3 -
1190 y += presets_list_h + widget_border + widget_border + BC_Title::calculate_h(gui, "P");
1193 presets_text_w = presets_list_w;
1194 y += BC_TextBox::calculate_h(gui,
1199 presets_delete_x = presets_text_x;
1200 presets_delete_y = y;
1201 y += BC_GenericButton::calculate_h() + widget_border;
1203 presets_save_x = presets_text_x;
1205 y += BC_GenericButton::calculate_h() + widget_border;
1207 presets_apply_x = presets_text_x;
1208 presets_apply_y = y;
1209 y += BC_GenericButton::calculate_h();
1211 #ifdef EDIT_KEYFRAME
1212 x = mwindow->session->keyframedialog_w / 2 + widget_border;
1214 BC_Title::calculate_h(gui, "P", LARGEFONT) +
1217 keyframe_list_x = x;
1218 keyframe_list_y = y;
1219 keyframe_list_w = mwindow->session->keyframedialog_w / 2 -
1222 keyframe_list_h = mwindow->session->keyframedialog_h -
1226 BC_Title::calculate_h(gui, "P") -
1228 BC_TextBox::calculate_h(gui,
1233 BC_Title::calculate_h(gui, "P") -
1235 BC_OKButton::calculate_h() -
1237 // keyframe_text_x = keyframe_list_x + keyframe_list_w + widget_border;
1238 // keyframe_text_y = y;
1239 // keyframe_text_w = mwindow->session->keyframedialog_w - keyframe_text_x - window_border;
1240 // y += BC_TextBox::calculate_h(gui,
1243 // 1) + widget_border;
1246 y += keyframe_list_h + BC_Title::calculate_h(gui, "P") + widget_border + widget_border;
1247 keyframe_value_x = keyframe_list_x;
1248 keyframe_value_y = y;
1249 keyframe_value_w = keyframe_list_w;
1250 y += BC_TextBox::calculate_h(gui,
1255 keyframe_all_x = keyframe_value_x;
1263 void Theme::get_menueffect_sizes(int use_list)
1267 menueffect_list_x = 10;
1268 menueffect_list_y = 10;
1269 menueffect_list_w = mwindow->session->menueffect_w - 400;
1270 menueffect_list_h = mwindow->session->menueffect_h -
1272 BC_OKButton::calculate_h() - 10;
1276 menueffect_list_x = 0;
1277 menueffect_list_y = 10;
1278 menueffect_list_w = 0;
1279 menueffect_list_h = 0;
1282 menueffect_file_x = menueffect_list_x + menueffect_list_w + 10;
1283 menueffect_file_y = 10;
1285 menueffect_tools_x = menueffect_file_x;
1286 menueffect_tools_y = menueffect_file_y + 20;
1289 void Theme::get_preferences_sizes()
1293 void Theme::draw_preferences_bg(PreferencesWindow *gui)
1297 void Theme::get_new_sizes(NewWindow *gui)
1301 void Theme::draw_new_bg(NewWindow *gui)
1305 void Theme::draw_setformat_bg(SetFormatWindow *window)