no longer need ffmpeg patch0 which was for Termux
[goodguy/cinelerra.git] / cinelerra-5.1 / plugins / theme_blue_dot / bluedottheme.C
index 7d43a6983395df779f663851a332df36dcc6b728..5d5ea052c3e94e96b3823b4989cac2c55be8dcf6 100644 (file)
@@ -2,6 +2,7 @@
 /*
  * CINELERRA
  * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
+ * Copyright (C) 2003-2016 Cinelerra CV contributors
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -55,12 +56,6 @@ PluginClient* new_plugin(PluginServer *server)
        return new BlueDotThemeMain(server);
 }
 
-
-
-
-
-
-
 BlueDotThemeMain::BlueDotThemeMain(PluginServer *server)
  : PluginTClient(server)
 {
@@ -81,12 +76,6 @@ Theme* BlueDotThemeMain::new_theme()
 }
 
 
-
-
-
-
-
-
 BlueDotTheme::BlueDotTheme()
  : Theme()
 {
@@ -100,6 +89,7 @@ BlueDotTheme::~BlueDotTheme()
        delete keyframe_data;
        delete maskkeyframe_data;
        delete modekeyframe_data;
+       delete hardedge_data;
        delete pankeyframe_data;
        delete projectorkeyframe_data;
 }
@@ -111,36 +101,29 @@ void BlueDotTheme::initialize()
 //     about_bg = new_image("about_bg.png");
 
 
-       // COPIED FROM DEFAULT THEME 1>>
        resources->text_default = 0x000000;
        resources->text_background = 0xffffff;
        resources->text_background_disarmed = 0xff3939;
-               //listbox borders
        resources->text_border1 = 0x4a484a; // (top outer)
        resources->text_border2 = 0x000000; // (top inner)
        resources->text_border3 = 0xacaeac; // (bottom inner)
        resources->text_border4 = 0xffffff; // (bottom outer)
        resources->text_inactive_highlight = 0xacacac;
        resources->text_highlight = BGREY;
-       // COPIED FROM DEFAULT THEME <<1
 
        resources->bg_color = FGGREY;                   //bg of windows (where no pics...
-       // COPIED FROM DEFAULT THEME 2>>
        resources->default_text_color = 0x000000;
        resources->menu_title_text    = 0x000000;
        resources->popup_title_text   = 0x000000;
-       // COPIED FROM DEFAULT THEME <<2
        resources->menu_item_text = BLACK;
 
-       // COPIED FROM DEFAULT THEME 3>>
-       resources->generic_button_margin = 15;          //Length of buttons and color tabs
+       resources->generic_button_margin = xS(15);              //Length of buttons and color tabs
        resources->pot_needle_color = resources->text_default;
        resources->pot_offset = 0;
        resources->progress_text = resources->text_default;
-       // COPIED FROM DEFAULT THEME <<3
        resources->meter_font = SMALLFONT;  //Specific to BD
        resources->meter_font_color = BLACK;
-       resources->meter_title_w = 20;  //Specific to BD
+       resources->meter_title_w = xS(20);  //Specific to BD
        resources->meter_3d = 0;   //Specific to BD
 
        resources->menu_light = FTGREY;         //menu
@@ -149,13 +132,10 @@ void BlueDotTheme::initialize()
        resources->menu_up = FGGREY;
        resources->menu_shadow = FTGREY;
 
-       // MIHA: COPIED FROM DEFAULT THEME M1>>
-       resources->popupmenu_margin = 10;          // ugly
-       resources->popupmenu_triangle_margin = 15; // ugly
-       // MIHA: COPIED FROM DEFAULT THEME M1<<
+       resources->popupmenu_margin = xS(10);
+       resources->popupmenu_triangle_margin = xS(15);
 
 
-       // COPIED FROM DEFAULT THEME 4>>
        resources->listbox_title_color = 0x000000;
 
        resources->listbox_title_margin = 0;
@@ -170,11 +150,10 @@ void BlueDotTheme::initialize()
        resources->listbox_text = 0x000000;
        resources->listbox_selected = BGREY;
 
-       resources->dirbox_margin = 50;
-       resources->filebox_margin = 101;
+       resources->dirbox_margin = yS(50);
+       resources->filebox_margin = yS(105);
        resources->file_color = 0x000000;
        resources->directory_color = DKBLUE;
-       // COPIED FROM DEFAULT THEME <<4
        resources->menu_highlighted_fontcolor = DDBLUE;    //Specific to BD
 
        new_toggle("loadmode_new.png",
@@ -226,13 +205,28 @@ void BlueDotTheme::initialize()
                "loadmode_dn.png",
                "loadmode_checkedhi.png",
                "loadmode_resource");
-       new_toggle("loadmode_nested.png",
+
+       new_toggle("loadmode_edl_clip.png",
                "loadmode_up.png",
                "loadmode_hi.png",
                "loadmode_checked.png",
                "loadmode_dn.png",
                "loadmode_checkedhi.png",
-               "loadmode_nested");
+               "loadmode_edl_clip");
+       new_toggle("loadmode_edl_nested.png",
+               "loadmode_up.png",
+               "loadmode_hi.png",
+               "loadmode_checked.png",
+               "loadmode_dn.png",
+               "loadmode_checkedhi.png",
+               "loadmode_edl_nested");
+       new_toggle("loadmode_edl_fileref.png",
+               "loadmode_up.png",
+               "loadmode_hi.png",
+               "loadmode_checked.png",
+               "loadmode_dn.png",
+               "loadmode_checkedhi.png",
+               "loadmode_edl_fileref");
 
 //There are differences here, but we won't change until the end.
 //Specific to BD
@@ -292,6 +286,18 @@ void BlueDotTheme::initialize()
                "reset_dn.png",
                "reset_button");
 
+       new_button("unclear.png",
+               "unclear_up.png",
+               "unclear_hi.png",
+               "unclear_dn.png",
+               "unclear_button");
+
+       new_button("keyframe.png",
+               "keyframe_up.png",
+               "keyframe_hi.png",
+               "keyframe_dn.png",
+               "keyframe_button");
+
        resources->cancel_images = new_button("cancel.png",
                "generic_up.png",
                "generic_hi.png",
@@ -304,30 +310,95 @@ void BlueDotTheme::initialize()
                "generic_dn.png",
                "new_cancel_images");
 
+       new_button("mask_pnt_linear.png",
+               "mask_button_up.png",
+               "mask_button_hi.png",
+               "mask_button_dn.png",
+               "mask_pnt_linear_images");
+       new_button("mask_crv_linear.png",
+               "mask_button_up.png",
+               "mask_button_hi.png",
+               "mask_button_dn.png",
+               "mask_crv_linear_images");
+       new_button("mask_all_linear.png",
+               "mask_button_up.png",
+               "mask_button_hi.png",
+               "mask_button_dn.png",
+               "mask_all_linear_images");
+
+       new_button("mask_pnt_smooth.png",
+               "mask_button_up.png",
+               "mask_button_hi.png",
+               "mask_button_dn.png",
+               "mask_pnt_smooth_images");
+       new_button("mask_crv_smooth.png",
+               "mask_button_up.png",
+               "mask_button_hi.png",
+               "mask_button_dn.png",
+               "mask_crv_smooth_images");
+       new_button("mask_all_smooth.png",
+               "mask_button_up.png",
+               "mask_button_hi.png",
+               "mask_button_dn.png",
+               "mask_all_smooth_images");
+
        resources->bar_data = new_image("bar", "bar.png");
 
+       new_button("mask_prst_sqr.png",
+               "mask_button_up.png",
+               "mask_button_hi.png",
+               "mask_button_dn.png",
+               "mask_prst_sqr_images");
+       new_button("mask_prst_crc.png",
+               "mask_button_up.png",
+               "mask_button_hi.png",
+               "mask_button_dn.png",
+               "mask_prst_crc_images");
+       new_button("mask_prst_tri.png",
+               "mask_button_up.png",
+               "mask_button_hi.png",
+               "mask_button_dn.png",
+               "mask_prst_tri_images");
+       new_button("mask_prst_ovl.png",
+               "mask_button_up.png",
+               "mask_button_hi.png",
+               "mask_button_dn.png",
+               "mask_prst_ovl_images");
+
+       new_button("mask_prst_load.png",
+               "mask_button_up.png",
+               "mask_button_hi.png",
+               "mask_button_dn.png",
+               "mask_prst_load_images");
+       new_button("mask_prst_save.png",
+               "mask_button_up.png",
+               "mask_button_hi.png",
+               "mask_button_dn.png",
+               "mask_prst_save_images");
+       new_button("mask_prst_trsh.png",
+               "mask_button_up.png",
+               "mask_button_hi.png",
+               "mask_button_dn.png",
+               "mask_prst_trsh_images");
+
+       new_button("mask_pstn_cen.png",
+               "mask_button_up.png",
+               "mask_button_hi.png",
+               "mask_button_dn.png",
+               "mask_pstn_cen_images");
+       new_button("mask_pstn_nrm.png",
+               "mask_button_up.png",
+               "mask_button_hi.png",
+               "mask_button_dn.png",
+               "mask_pstn_nrm_images");
+
        //clock font
        resources->medium_7segment =  new_image_set(20,
-               "black_0.png",
-               "black_1.png",
-               "black_2.png",
-               "black_3.png",
-               "black_4.png",
-               "black_5.png",
-               "black_6.png",
-               "black_7.png",
-               "black_8.png",
-               "black_9.png",
-               "black_colon.png",
-               "black_period.png",
-               "black_a.png",
-               "black_b.png",
-               "black_c.png",
-               "black_d.png",
-               "black_e.png",
-               "black_f.png",
-               "black_space.png",
-               "black_dash.png");
+               "black_0.png", "black_1.png", "black_2.png", "black_3.png",
+               "black_4.png", "black_5.png", "black_6.png", "black_7.png",
+               "black_8.png", "black_9.png", "black_colon.png", "black_period.png",
+               "black_a.png", "black_b.png", "black_c.png", "black_d.png",
+               "black_e.png", "black_f.png", "black_space.png", "black_dash.png");
 
        resources->bar_data = new_image("bar", "bar.png");
        resources->check = new_image("check", "check.png");
@@ -369,6 +440,11 @@ void BlueDotTheme::initialize()
                "tumble_hi.png",
                "tumble_bottom.png",
                "tumble_top.png");
+       new_image_set("tumblepatch_data", 4,
+               "tumblepatch_up.png",
+               "tumblepatch_hi.png",
+               "tumblepatch_bottom.png",
+               "tumblepatch_top.png");
        resources->listbox_button = new_image_set(4,
                "listbox_button_up.png",
                "listbox_button_hi.png",
@@ -478,11 +554,11 @@ void BlueDotTheme::initialize()
 
 //COPY START >>
        preferences_category_overlap = 0;
-       preferencescategory_x = 5;
-       preferencescategory_y = 5;
-       preferencestitle_x = 5;
-       preferencestitle_y = 10;
-       preferencesoptions_x = 5;
+       preferencescategory_x = xS(5);
+       preferencescategory_y = yS(5);
+       preferencestitle_x = xS(5);
+       preferencestitle_y = yS(10);
+       preferencesoptions_x = xS(5);
        preferencesoptions_y = 0;
 //COPY END<<
 
@@ -490,8 +566,8 @@ void BlueDotTheme::initialize()
 //COPY START >>
        message_normal = resources->text_default;
        audio_color = BLACK;
-       mtransport_margin = 11;
-       toggle_margin = 11;
+       mtransport_margin = xS(11);
+       toggle_margin = xS(11);
 //COPY END >>
 
        new_image("mbutton_left","mbutton_left.png");
@@ -513,6 +589,7 @@ void BlueDotTheme::initialize()
        //Here an improvement may be needed
        new_image_set("zoombar_menu", 3, "generic_up.png", "generic_hi.png", "generic_dn.png");
        new_image_set("zoombar_tumbler", 4, "tumble_up.png", "tumble_hi.png", "tumble_bottom.png", "tumble_top.png");
+       new_image_set("auto_range", 4, "autorange_up.png", "autorange_hi.png", "autorange_bottom.png", "autorange_top.png");
 
 //Graphic Copied from default. Improve!!
        new_image_set("mode_popup", 3, "generic_up.png", "generic_hi.png", "generic_dn.png");
@@ -547,6 +624,7 @@ void BlueDotTheme::initialize()
        new_image("cbuttons_left", "cbuttons_left.png");
        new_image("cbuttons_right", "cbuttons_right.png");
        new_image("cmeter_bg", "cmeter_bg.png");
+       new_image("cwindow_focus", "cwindow_focus.png");
        new_image("vbuttons_left", "vbuttons_left.png");
        new_image("vbuttons_right", "vbuttons_right.png");
        timebar_view_data = new_image("timebar_view.png");
@@ -569,24 +647,24 @@ void BlueDotTheme::initialize()
        new_image("setformat_bg", "setformat_bg2.png");
 
 // x, y of Format dialog box
-       setformat_w = 600;
-       setformat_h = 560;
-       setformat_x1 = 15;
-       setformat_x2 = 100;
-
-       setformat_x3 = 315;
-       setformat_x4 = 415;
-       setformat_y1 = 20;
-       setformat_y2 = 85;
-       setformat_y3 = 125;
-       setformat_margin = 30;
-       setformat_channels_x = 25;
-       setformat_channels_y = 242;
-       setformat_channels_w = 250;
-       setformat_channels_h = 250;
-
-       loadfile_pad = 70;
-       browse_pad = 20;
+       setformat_w = xS(600);
+       setformat_h = yS(560);
+       setformat_x1 = xS(15);
+       setformat_x2 = xS(100);
+
+       setformat_x3 = xS(315);
+       setformat_x4 = xS(415);
+       setformat_y1 = yS(20);
+       setformat_y2 = yS(85);
+       setformat_y3 = yS(125);
+       setformat_margin = xS(30);
+       setformat_channels_x = xS(25);
+       setformat_channels_y = yS(242);
+       setformat_channels_w = xS(250);
+       setformat_channels_h = yS(250);
+
+       loadfile_pad = yS(70);
+       browse_pad = yS(20);
 
 //This buttons miss a bit. May need to be improved
        new_image_set("playpatch_data",
@@ -621,6 +699,14 @@ void BlueDotTheme::initialize()
                "drawpatch_dn.png",
                "drawpatch_checkedhi.png");
 
+       new_toggle("masterpatch.png",
+               "patch_up.png",
+               "patch_hi.png",
+               "patch_checked.png",
+               "patch_dn.png",
+               "patch_checkedhi.png",
+               "masterpatch_data");
+
 
        new_image_set("mutepatch_data",
                5,
@@ -788,10 +874,28 @@ void BlueDotTheme::initialize()
        splice_data = new_button("splice.png", editpanel_up, editpanel_hi, editpanel_dn, "slicebutton");
        new_button("toclip.png", editpanel_up, editpanel_hi, editpanel_dn, "toclip");
        new_button("goto.png", editpanel_up, editpanel_hi, editpanel_dn, "goto");
+       new_button("clapper.png", editpanel_up, editpanel_hi, editpanel_dn, "clapperbutton");
        new_button("top_justify.png", editpanel_up, editpanel_hi, editpanel_dn, "top_justify");
        new_button("undo.png", editpanel_up, editpanel_hi, editpanel_dn, "undo");
        new_button("wrench.png", "editpanelW_up.png", "editpanelW_hi.png", "editpanelW_dn.png", "wrench");
 
+       VFrame **edge_on  = new_toggle("edge_on.png",
+               editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "edge_on");
+       VFrame **edge_off = new_toggle("edge_off.png",
+               editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "edge_off");
+       new_image_set_images("bump_edge", 5,
+               new VFrame(*edge_off[0]), new VFrame(*edge_off[1]),
+               new VFrame(*edge_on[0]),  new VFrame(*edge_off[3]),
+               new VFrame(*edge_on[4]));
+       VFrame **span_on  = new_toggle("span_on.png",
+               editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "span_on");
+       VFrame **span_off = new_toggle("span_off.png",
+               editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "span_off");
+       new_image_set_images("bump_span", 5,
+                new VFrame(*span_off[0]),  new VFrame(*span_off[1]),
+                new VFrame(*span_on[0]), new VFrame(*span_off[3]),
+                new VFrame(*span_on[4]));
+
 //Make transparent borders
 #define TRANSPORT_LEFT_IMAGES  "transport_left_up.png", "transport_left_hi.png", "transport_left_dn.png"
 #define TRANSPORT_CENTER_IMAGES  "transport_center_up.png", "transport_center_hi.png", "transport_center_dn.png"
@@ -837,7 +941,6 @@ void BlueDotTheme::initialize()
                "batchcancel_hi.png",
                "batchcancel_dn.png");
 
-// MIHA: COPIED FROM DEFAULT THEME M2>>
 //Graphic Copied from default. Improve!!
        new_image_set("category_button",
                3,
@@ -850,11 +953,11 @@ void BlueDotTheme::initialize()
                "preferencesbutton_up.png",
                "preferencesbutton_uphi.png",
                "preferencesbutton_dnlo.png");
-// MIHA: COPIED FROM DEFAULT THEME M2<<
 
 
        new_toggle("arrow.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "arrow");
        new_toggle("autokeyframe.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "autokeyframe");
+       new_toggle("spankeyframe.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "spankeyframe");
        new_toggle("ibeam.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "ibeam");
        new_toggle("show_meters.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "meters");
        new_toggle("blank30x30.png",
@@ -864,8 +967,10 @@ void BlueDotTheme::initialize()
                   new_image("locklabels_dn.png"), // can't have seperate down for each!!??
                   new_image("locklabels_unlockedhi.png"),
                   "locklabels");
+       new_toggle("gang0.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "gang0");
+       new_toggle("gang1.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "gang1");
+       new_toggle("gang2.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "gang2");
 
-// MIHA: COPIED FROM DEFAULT THEME M3>>
 //Is that necessary??
        VFrame *cpanel_up = new_image("editpanel_up.png");
        VFrame *cpanel_hi = new_image("editpanel_hi.png");
@@ -884,25 +989,22 @@ void BlueDotTheme::initialize()
        new_toggle("titlesafe.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "titlesafe");
        new_toggle("toolwindow.png", cpanel_up, cpanel_hi, cpanel_checked, cpanel_dn, cpanel_checkedhi, "tool");
 
-// MIHA: COPIED FROM DEFAULT THEME M3<<
-
-// Maybe we can live without the commented part
-// MIHA: Commented out in favor of default version M4>>
-//     new_toggle("camera.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi,"camera");
-//     new_toggle("crop.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi,"crop");
-//     new_toggle("eyedrop.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi,"eyedrop");
-//     new_toggle("magnify.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi,"magnify");
-//     new_toggle("mask.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi,"mask");
-//     new_toggle("projector.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi,"projector");
-//     new_toggle("protect.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi,"protect");
-//     new_toggle("titlesafe.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi,"titlesafe");
-//     new_toggle("toolwindow.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi,"tool");
-// MIHA: Commented out in favor of default version M4<<
-
        // toggle for tangent mode (compositor/tool window)
        new_toggle("tan_smooth.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "tan_smooth");
        new_toggle("tan_linear.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "tan_linear");
-
+       new_toggle("tan_tangent.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "tan_tangent");
+       new_toggle("tan_free.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "tan_free");
+       new_toggle("tan_bump.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "tan_bump");
+
+       new_toggle("mask_scale_x.png",   "mask_scale_up.png",    "mask_scale_uphi.png",
+               "mask_scale_chkd.png",  "mask_scale_xdown.png",  "mask_scale_chkdhi.png",
+               "mask_scale_x");
+       new_toggle("mask_scale_y.png",   "mask_scale_up.png",    "mask_scale_uphi.png",
+               "mask_scale_chkd.png",  "mask_scale_ydown.png",  "mask_scale_chkdhi.png",
+               "mask_scale_y");
+       new_toggle("mask_scale_xy.png",  "mask_scale_up.png",   "mask_scale_uphi.png",
+               "mask_scale_chkd.png", "mask_scale_xydown.png", "mask_scale_chkdhi.png",
+               "mask_scale_xy");
 
        flush_images();
 
@@ -918,7 +1020,7 @@ void BlueDotTheme::initialize()
        resources->medium_font = cstrdup(string);
 
        channel_position_color = MEYELLOW;
-       resources->meter_title_w = 25;
+       resources->meter_title_w = xS(28);
 
        // (asset) edit info text color
        edit_font_color = BLACK;
@@ -963,9 +1065,8 @@ void BlueDotTheme::initialize()
        resources->tooltip_bg_color = 0xfff7e3;
 }
 
-//CWINDOW is probalby ComposerWindow, V=ViewerWindow
-#define CWINDOW_METER_MARGIN 5
-#define VWINDOW_METER_MARGIN 5
+#define CWINDOW_METER_MARGIN xS(5)
+#define VWINDOW_METER_MARGIN xS(5)
 
 //Specific to BD
 void BlueDotTheme::get_mwindow_sizes(MWindowGUI *gui, int w, int h)
@@ -973,11 +1074,11 @@ void BlueDotTheme::get_mwindow_sizes(MWindowGUI *gui, int w, int h)
 // Position of menu buttons (start, stop, ff, etc.)
        mbuttons_x = 0;
        mbuttons_y = gui->mainmenu->get_h();
-       mbuttons_w = w - (ffmpeg_toggle[0]->get_w()+2 + proxy_p_toggle[0]->get_w()+2);
+       mbuttons_w = w - (ffmpeg_toggle[0]->get_w()+xS(2) + proxy_p_toggle[0]->get_w()+xS(2));
        mbuttons_h = get_image("mbutton_left")->get_h();
-       mclock_x = 20;          //x position of digits in clock window
+       mclock_x = xS(20);              //x position of digits in clock window
        mclock_y = mbuttons_y + 1 + mbuttons_h + CWINDOW_METER_MARGIN;
-       mclock_w = get_image("clock_bg")->get_w() - 72;
+       mclock_w = get_image("clock_bg")->get_w() - xS(72);
        mclock_h = get_image("clock_bg")->get_h();
 
 //Time bar - coordinates and dimensions
@@ -998,10 +1099,10 @@ void BlueDotTheme::get_mwindow_sizes(MWindowGUI *gui, int w, int h)
        mstatus_y = mzoom_y + mzoom_h;
        mstatus_w = w;
        mstatus_h = h - mstatus_y;
-       mstatus_message_x = 10;
-       mstatus_message_y = 8;
-       mstatus_progress_w = 230;
-       mstatus_progress_x = mstatus_w - statusbar_cancel_data[0]->get_w() - 240;
+       mstatus_message_x = xS(10);
+       mstatus_message_y = yS(8);
+       mstatus_progress_w = xS(230);
+       mstatus_progress_x = mstatus_w - statusbar_cancel_data[0]->get_w() - xS(240);
        mstatus_progress_y = mstatus_h - BC_WindowBase::get_resources()->progress_images[0]->get_h();
 
 //Specific to BD
@@ -1040,29 +1141,29 @@ void BlueDotTheme::get_cwindow_sizes(CWindowGUI *gui, int cwindow_controls)
        {
 SET_TRACE
                ccomposite_x = 0;
-               ccomposite_y = 5;
+               ccomposite_y = yS(5);
                ccomposite_w = get_image("cpanel_bg")->get_w();
                ccomposite_h = mwindow->session->cwindow_h -
                        get_image("cbuttons_left")->get_h();
-               cslider_x = 5;
-               cslider_y = ccomposite_h + 23;
-               cedit_x = 10;
-               cedit_y = cslider_y + 17;
-               ctransport_x = 10;
+               cslider_x = xS(5);
+               cslider_y = ccomposite_h + yS(23);
+               cedit_x = xS(10);
+               cedit_y = cslider_y + yS(17);
+               ctransport_x = xS(10);
                ctransport_y = mwindow->session->cwindow_h -
                        get_image_set("autokeyframe")[0]->get_h();
                ccanvas_x = ccomposite_x + ccomposite_w;
                ccanvas_y = 0;
                ccanvas_h = ccomposite_h;
-//COPIED START
-               cstatus_x = 453;
-               cstatus_y = mwindow->session->cwindow_h - 66;
-//COPIED END
+
+               cstatus_x = xS(453);
+               cstatus_y = mwindow->session->cwindow_h - yS(66);
+
                if(mwindow->edl->session->cwindow_meter)
                {
                        cmeter_x = mwindow->session->cwindow_w - MeterPanel::get_meters_width(this,
                                mwindow->edl->session->audio_channels, mwindow->edl->session->cwindow_meter);
-                       ccanvas_w = cmeter_x - ccanvas_x - 5;
+                       ccanvas_w = cmeter_x - ccanvas_x - xS(5);
                }
                else
                {
@@ -1079,12 +1180,12 @@ SET_TRACE
                ccomposite_w = get_image("cpanel_bg")->get_w();
                ccomposite_h = mwindow->session->cwindow_h - get_image("cbuttons_left")->get_h();
 
-               cslider_x = 5;
+               cslider_x = xS(5);
                cslider_y = mwindow->session->cwindow_h;
-               cedit_x = 10;
-               cedit_y = cslider_y + 17;
-               ctransport_x = 10;
-               ctransport_y = cedit_y + 40;
+               cedit_x = xS(10);
+               cedit_y = cslider_y + yS(17);
+               ctransport_x = xS(10);
+               ctransport_y = cedit_y + yS(40);
                ccanvas_x = 0;
                ccanvas_y = 0;
                ccanvas_w = mwindow->session->cwindow_w;
@@ -1099,10 +1200,10 @@ SET_TRACE
 
 SET_TRACE
 
-       czoom_x = ctransport_x + PlayTransport::get_transport_width(mwindow) + 20;
-       czoom_y = ctransport_y + 5;
+       czoom_x = ctransport_x + PlayTransport::get_transport_width(mwindow) + xS(20);
+       czoom_y = ctransport_y + yS(5);
 
-       cmeter_y = 5;
+       cmeter_y = yS(5);
        cmeter_h = mwindow->session->cwindow_h - cmeter_y;
 
        ctimebar_x = ccanvas_x;
@@ -1114,14 +1215,14 @@ SET_TRACE
        ctimebar_x = ccanvas_x;
        ctimebar_y = ccanvas_y + ccanvas_h;
        ctimebar_w = ccanvas_w;
-       ctimebar_h = 16;
+       ctimebar_h = yS(16);
 
 
 // Not used
        ctime_x = ctransport_x + PlayTransport::get_transport_width(mwindow);
        ctime_y = ctransport_y;
        cdest_x = czoom_x;
-       cdest_y = czoom_y + 30;
+       cdest_y = czoom_y + yS(30);
 SET_TRACE
 }
 
@@ -1148,8 +1249,8 @@ void BlueDotTheme::get_rmonitor_sizes(int do_audio,
                audio_channels);
        if(!do_video && do_audio)
        {
-               rmonitor_meter_y -= 30;
-               rmonitor_meter_h += 30;
+               rmonitor_meter_y -= yS(30);
+               rmonitor_meter_h += yS(30);
        }
 }
 // COPIED END--------
@@ -1157,7 +1258,7 @@ void BlueDotTheme::get_rmonitor_sizes(int do_audio,
 
 void BlueDotTheme::get_vwindow_sizes(VWindowGUI *gui)
 {
-       vmeter_y = 5;
+       vmeter_y = yS(5);
        vmeter_h = mwindow->session->vwindow_h - cmeter_y;
        vcanvas_x = 0;
        vcanvas_y = 0;
@@ -1180,34 +1281,28 @@ void BlueDotTheme::get_vwindow_sizes(VWindowGUI *gui)
        vtimebar_x = vcanvas_x;
        vtimebar_y = vcanvas_y + vcanvas_h;
        vtimebar_w = vcanvas_w;
-       vtimebar_h = 16;
+       vtimebar_h = yS(16);
 
 //Specific to BD
-       vslider_x = 10;
-       vslider_y = vtimebar_y + 25;
+       vslider_x = xS(10);
+       vslider_y = vtimebar_y + yS(25);
        vslider_w = vtimebar_w - vslider_x;
-       vedit_x = 10;
-       vedit_y = vslider_y + 17;
-       vtransport_x = 10;
+       vedit_x = xS(10);
+       vedit_y = vslider_y + yS(17);
+       vtransport_x = xS(10);
        vtransport_y = mwindow->session->vwindow_h -
                get_image_set("autokeyframe")[0]->get_h();
-       vtime_x = 373;
-       vtime_y = vedit_y + 7;
-       vtime_w = 100;
-
+       vtime_x = xS(373);
+       vtime_y = vedit_y + yS(7);
+       vtime_w = xS(100);
 
-
-
-       vzoom_x = vtime_x + 150;
+       vzoom_x = vtime_x + xS(150);
        vzoom_y = vtime_y;
-       vsource_x = vtime_x + 50;
-       vsource_y = vtransport_y + 5;
+       vsource_x = vtime_x + xS(50);
+       vsource_y = vtransport_y + yS(5);
 }
 
 
-
-
-
 void BlueDotTheme::build_icons()
 {
        new_image("mwindow_icon", "heroine_icon.png");
@@ -1226,12 +1321,12 @@ void BlueDotTheme::build_bg_data()
        channel_position_data = new VFramePng(get_image_data("channel_position.png"));
 
 // Track bitmaps
-       new_image("resource1024", "resource1024.png");
-       new_image("resource512", "resource512.png");
-       new_image("resource256", "resource256.png");
-       new_image("resource128", "resource128.png");
-       new_image("resource64", "resource64.png");
-       new_image("resource32", "resource32.png");
+       new_image1("resource1024", "resource1024.png");
+       new_image1("resource512", "resource512.png");
+       new_image1("resource256", "resource256.png");
+       new_image1("resource128", "resource128.png");
+       new_image1("resource64", "resource64.png");
+       new_image1("resource32", "resource32.png");
 //Graphic Copied from default. Improve!!
        new_image("plugin_bg_data", "plugin_bg.png");
        new_image("title_bg_data", "title_bg.png");
@@ -1246,6 +1341,7 @@ void BlueDotTheme::build_overlays()
        camerakeyframe_data = new VFramePng(get_image_data("camerakeyframe.png"));
        maskkeyframe_data = new VFramePng(get_image_data("maskkeyframe.png"));
        modekeyframe_data = new VFramePng(get_image_data("modekeyframe.png"));
+       hardedge_data = new VFramePng(get_image_data("hardedge.png"));
        pankeyframe_data = new VFramePng(get_image_data("pankeyframe.png"));
        projectorkeyframe_data = new VFramePng(get_image_data("projectorkeyframe.png"));
 }
@@ -1261,20 +1357,18 @@ void BlueDotTheme::build_overlays()
 void BlueDotTheme::draw_rwindow_bg(RecordGUI *gui)
 {
 //     int y;
-//     int margin = 50;
-//     int margin2 = 80;
-//     gui->draw_9segment(recordgui_batch_x - margin,
-//             0,
+//     int margin = xS(50);
+//     int margin2 = xS(80);
+//     gui->draw_9segment(recordgui_batch_x - margin, 0,
 //             mwindow->session->rwindow_w - recordgui_status_x + margin,
 //             recordgui_buttons_y,
 //             rgui_batch);
 //     gui->draw_3segmenth(recordgui_options_x - margin2,
-//             recordgui_buttons_y - 5,
+//             recordgui_buttons_y - yS(5),
 //             mwindow->session->rwindow_w - recordgui_options_x + margin2,
 //             rgui_controls);
-//     y = recordgui_buttons_y - 5 + rgui_controls->get_h();
-//     gui->draw_9segment(0,
-//             y,
+//     y = recordgui_buttons_y - yS(5) + rgui_controls->get_h();
+//     gui->draw_9segment(0, y,
 //             mwindow->session->rwindow_w,
 //             mwindow->session->rwindow_h - y,
 //             rgui_list);
@@ -1282,31 +1376,25 @@ void BlueDotTheme::draw_rwindow_bg(RecordGUI *gui)
 
 void BlueDotTheme::draw_rmonitor_bg(RecordMonitorGUI *gui)
 {
-//     int margin = 45;
-//     int panel_w = 300;
+//     int margin = xS(45);
+//     int panel_w = xS(300);
 //     int x = rmonitor_meter_x - margin;
 //     int w = mwindow->session->rmonitor_w - x;
 //     if(w < rmonitor_meters->get_w()) w = rmonitor_meters->get_w();
-//     gui->clear_box(0,
-//             0,
+//     gui->clear_box(0, 0,
 //             mwindow->session->rmonitor_w,
 //             mwindow->session->rmonitor_h);
-//     gui->draw_9segment(x,
-//             0,
+//     gui->draw_9segment(x, 0,
 //             w,
 //             mwindow->session->rmonitor_h,
 //             rmonitor_meters);
 }
 
-
-
-
-
 //Specific to BD
 void BlueDotTheme::draw_mwindow_bg(MWindowGUI *gui)
 {
 // Button bar (not menu bar)
-#define MBUTTONS_RIGHTEDGE 290 + 11 + 2*30 + 11 + 2*30 + 11 + 14*30
+#define MBUTTONS_RIGHTEDGE xS(290 + 11 + 2*30 + 11 + 2*30 + 11 + 14*30)
        gui->draw_3segmenth(mbuttons_x,
                mbuttons_y,
                MBUTTONS_RIGHTEDGE,
@@ -1314,25 +1402,21 @@ void BlueDotTheme::draw_mwindow_bg(MWindowGUI *gui)
                0);
        gui->draw_3segmenth(mbuttons_x + MBUTTONS_RIGHTEDGE,
                mbuttons_y,
-               mbuttons_w - 500,
+               mbuttons_w - xS(500),
                get_image("mbutton_right"));
 
-// MIHA: COPIED FROM DEFAULT THEME M6>>
        gui->draw_vframe(get_image("panel_divider"),
-               mbuttons_x + 290 + 5,
+               mbuttons_x + xS(290 + 5),
                mbuttons_y - 1);
 
        gui->draw_vframe(get_image("panel_divider"),
-               mbuttons_x + 290 + 11 + 30 * 2 + 5,
+               mbuttons_x + xS(290 + 11 + 30 * 2 + 5),
                mbuttons_y - 1);
 
        gui->draw_vframe(get_image("panel_divider"),
-               mbuttons_x + 290 + 11 +  30 * 2 + 11 + 30 * 2 + 5,
+               mbuttons_x + xS(290 + 11 +  30 * 2 + 11 + 30 * 3 + 5),
                mbuttons_y - 1);
 
-
-// MIHA: COPIED FROM DEFAULT THEME M6<<
-
 //Specific to BD
 // Clock (here the background of the clock is drawn)
        gui->draw_3segmenth(0,
@@ -1342,61 +1426,43 @@ void BlueDotTheme::draw_mwindow_bg(MWindowGUI *gui)
 
 //Specific to BD
 // Patchbay
-       gui->draw_3segmentv(patchbay_x,
-               patchbay_y,
-               patchbay_h,
-               get_image("patchbay_bg"));
-
-//patchbay_h + 10,
-
+       gui->draw_3segmentv(patchbay_x, patchbay_y,
+               patchbay_h, get_image("patchbay_bg"));
+//patchbay_h + yS(10),
 
 //Specific to BD
 //Drawing of Track's canvas
-       gui->draw_9segment(mcanvas_x,
-               mcanvas_y,
-               mcanvas_w,
-               patchbay_h + 26,
+       gui->draw_9segment(mcanvas_x, mcanvas_y,
+               mcanvas_w, patchbay_h + yS(26),
                get_image("tracks_bg"));
-//patchbay_h + 10,
+//patchbay_h + yS(10),
 
 // Timebar
-       gui->draw_3segmenth(mtimebar_x,
-               mtimebar_y,
-               mtimebar_w,
-               get_image("timebar_bg"));
+       gui->draw_3segmenth(mtimebar_x, mtimebar_y,
+               mtimebar_w, get_image("timebar_bg"));
 
 //Specific to BD
 // Zoombar
-#define ZOOMBAR_CENTER 1100
-       gui->draw_3segmenth(mzoom_x,
-               mzoom_y,
-               ZOOMBAR_CENTER,
-               get_image("zoombar_left"));
+#define ZOOMBAR_CENTER xS(1100)
+       gui->draw_3segmenth(mzoom_x, mzoom_y,
+               ZOOMBAR_CENTER, get_image("zoombar_left"));
        if(mzoom_w > ZOOMBAR_CENTER)
-               gui->draw_3segmenth(mzoom_x + ZOOMBAR_CENTER,
-                       mzoom_y,
-                       mzoom_w - ZOOMBAR_CENTER,
-                       get_image("zoombar_right"));
-
-
+               gui->draw_3segmenth(mzoom_x + ZOOMBAR_CENTER, mzoom_y,
+                       mzoom_w - ZOOMBAR_CENTER, get_image("zoombar_right"));
 // Status
-       gui->draw_3segmenth(mstatus_x,
-               mstatus_y,
-               ZOOMBAR_CENTER,
-               get_image("statusbar_left"));
+       gui->draw_3segmenth(mstatus_x, mstatus_y,
+               ZOOMBAR_CENTER, get_image("statusbar_left"));
 
        if(mstatus_w > ZOOMBAR_CENTER)
-         gui->draw_3segmenth(mstatus_x + ZOOMBAR_CENTER,
-                             mstatus_y,
-                             mstatus_w - ZOOMBAR_CENTER,
-                             get_image("statusbar_right"));
+               gui->draw_3segmenth(mstatus_x + ZOOMBAR_CENTER, mstatus_y,
+                             mstatus_w - ZOOMBAR_CENTER, get_image("statusbar_right"));
 
 }
 
 void BlueDotTheme::draw_cwindow_bg(CWindowGUI *gui)
 {
 //Specific to BD
-       const int button_division = 530;
+       const int button_division = xS(530);
        gui->draw_3segmentv(0, 0, ccomposite_h, get_image("cpanel_bg"));
        gui->draw_3segmenth(0, ccomposite_h, button_division, get_image("cbuttons_left"));
        if(mwindow->edl->session->cwindow_meter)
@@ -1415,7 +1481,7 @@ void BlueDotTheme::draw_cwindow_bg(CWindowGUI *gui)
        {
                gui->draw_3segmenth(button_division,
                        ccomposite_h,
-                       cmeter_x - CWINDOW_METER_MARGIN - button_division + 100,
+                       cmeter_x - CWINDOW_METER_MARGIN - button_division + xS(100),
                        get_image("cbuttons_right"));
        }
 }
@@ -1423,7 +1489,7 @@ void BlueDotTheme::draw_cwindow_bg(CWindowGUI *gui)
 void BlueDotTheme::draw_vwindow_bg(VWindowGUI *gui)
 {
 //Specific to BD
-       const int button_division = 535;
+       const int button_division = xS(535);
        gui->draw_3segmenth(0,
                vcanvas_h,
                button_division,
@@ -1444,7 +1510,7 @@ void BlueDotTheme::draw_vwindow_bg(VWindowGUI *gui)
        {
                gui->draw_3segmenth(button_division,
                        vcanvas_h,
-                       vmeter_x - VWINDOW_METER_MARGIN - button_division + 100,
+                       vmeter_x - VWINDOW_METER_MARGIN - button_division + xS(100),
                        get_image("vbuttons_right"));
        }
 }
@@ -1456,7 +1522,7 @@ void BlueDotTheme::get_preferences_sizes()
 //Specific to BD
 void BlueDotTheme::draw_preferences_bg(PreferencesWindow *gui)
 {
-       gui->draw_9segment(0, 0, gui->get_w(), gui->get_h() - 40, get_image("preferences_bg"));
+       gui->draw_9segment(0, 0, gui->get_w(), gui->get_h() - yS(40), get_image("preferences_bg"));
 }
 
 void BlueDotTheme::get_new_sizes(NewWindow *gui)