fix awdw solo vicon crash, fix nested clip for binfolders, open edit edl
[goodguy/cinelerra.git] / cinelerra-5.1 / plugins / theme_suv / suv.C
index f8487b2b20002f5f7a3593bc1de2b2d69fdd3476..751e485562875a3fb5315563aa0144e3e4ccbbad 100644 (file)
 #include "vwindowgui.h"
 
 
-
-
 PluginClient* new_plugin(PluginServer *server)
 {
        return new SUVMain(server);
 }
 
-
-
-
-
-
-
 SUVMain::SUVMain(PluginServer *server)
  : PluginTClient(server)
 {
@@ -75,13 +67,6 @@ Theme* SUVMain::new_theme()
        return theme;
 }
 
-
-
-
-
-
-
-
 SUV::SUV()
  : Theme()
 {
@@ -94,6 +79,7 @@ SUV::~SUV()
        delete keyframe_data;
        delete maskkeyframe_data;
        delete modekeyframe_data;
+       delete hardedge_data;
        delete pankeyframe_data;
        delete projectorkeyframe_data;
 }
@@ -120,7 +106,7 @@ void SUV::initialize()
        resources->popup_title_text = 0xbfbfbf;
        resources->menu_item_text = 0xbfbfbf;
        resources->menu_highlighted_fontcolor = WHITE;
-       resources->generic_button_margin = 30;
+       resources->generic_button_margin = xS(30);
        resources->pot_needle_color = resources->text_default;
        resources->pot_offset = 1;
        resources->progress_text = resources->text_default;
@@ -131,13 +117,13 @@ void SUV::initialize()
        resources->menu_down = 0x4b4b4b;
        resources->menu_up = 0x4b4b4b;
        resources->menu_shadow = 0x202020;
-       resources->popupmenu_margin = 15;
-       resources->popupmenu_triangle_margin = 15;
+       resources->popupmenu_margin = xS(15);
+       resources->popupmenu_triangle_margin = xS(20);
 
        resources->listbox_title_color = 0xbfbfbf;
 
-       resources->listbox_title_margin = 20;
-       resources->listbox_title_hotspot = 20;
+       resources->listbox_title_margin = xS(20);
+       resources->listbox_title_hotspot = xS(20);
        resources->listbox_border1 = 0x1a1a1a;
        resources->listbox_border2 = 0x373737;
        resources->listbox_border3 = 0x373737;
@@ -147,7 +133,7 @@ void SUV::initialize()
        resources->listbox_bg = 0;
        resources->listbox_text = 0xbfbfbf;
 
-       resources->filebox_margin = 130;
+       resources->filebox_margin = yS(130);
        resources->file_color = 0xbfbfbf;
        resources->directory_color = 0xa0a0ff;
 
@@ -201,14 +187,28 @@ void SUV::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");
 
        resources->filebox_icons_images = new_button("icons.png",
                "fileboxbutton_up.png",
@@ -272,6 +272,24 @@ void SUV::initialize()
                "new_bigbutton_dn.png",
                "new_ok_images");
 
+       new_button("reset.png",
+               "reset_up.png",
+               "reset_hi.png",
+               "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",
                "filebox_bigbutton_up.png",
                "filebox_bigbutton_hi.png",
@@ -284,32 +302,95 @@ void SUV::initialize()
                "new_bigbutton_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");
+
+       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");
+
        resources->medium_7segment = new_image_set(TOTAL_7SEGMENT,
-               "0.png",
-               "1.png",
-               "2.png",
-               "3.png",
-               "4.png",
-               "5.png",
-               "6.png",
-               "7.png",
-               "8.png",
-               "9.png",
-               "colon.png",
-               "period.png",
-               "a.png",
-               "b.png",
-               "c.png",
-               "d.png",
-               "e.png",
-               "f.png",
-               "space.png",
-               "dash.png");
+               "0.png", "1.png", "2.png", "3.png", "4.png", "5.png", "6.png", "7.png",
+               "8.png", "9.png", "colon.png", "period.png", "a.png", "b.png", "c.png",
+               "d.png", "e.png", "f.png", "space.png", "dash.png");
 
        resources->bar_data = new_image("bar", "bar.png");
        resources->check = new_image("check", "check.png");
 
-       resources->min_menu_w = 96;
+       resources->min_menu_w = xS(96);
        resources->menu_popup_bg = new_image("menu_popup_bg.png");
        resources->menu_item_bg = new_image_set(3,
                "menuitem_up.png",
@@ -360,6 +441,11 @@ void SUV::initialize()
                "tumble_hi.png",
                "tumble_bottom.png",
                "tumble_top.png");
+       resources->tumblepatch_data = new_image_set(4,
+               "tumblepatch_up.png",
+               "tumblepatch_hi.png",
+               "tumblepatch_bottom.png",
+               "tumblepatch_top.png");
        resources->listbox_button = new_button4("listbox_button.png",
                "editpanel_up.png",
                "editpanel_hi.png",
@@ -441,7 +527,7 @@ void SUV::initialize()
                        "vscroll_right_up.png",
                        "vscroll_right_hi.png",
                        "vscroll_right_dn.png");
-       resources->scroll_minhandle = 20;
+       resources->scroll_minhandle = xS(20);
 
 
        new_button("prevtip.png", "tipbutton_up.png", "tipbutton_hi.png", "tipbutton_dn.png", "prev_tip");
@@ -459,17 +545,17 @@ void SUV::initialize()
 
        preferences_category_overlap = 0;
        preferencescategory_x = 0;
-       preferencescategory_y = 5;
-       preferencestitle_x = 5;
-       preferencestitle_y = 10;
-       preferencesoptions_x = 5;
+       preferencescategory_y = yS(5);
+       preferencestitle_x = xS(5);
+       preferencestitle_y = yS(10);
+       preferencesoptions_x = xS(5);
        preferencesoptions_y = 0;
 
 // MWindow
        message_normal = resources->text_default;
        audio_color = GREEN;
-       mtransport_margin = 16;
-       toggle_margin = 16;
+       mtransport_margin = xS(16);
+       toggle_margin = xS(16);
 
        new_button("pane.png", "pane_up.png", "pane_hi.png", "pane_dn.png", "pane");
        new_image_set("xpane", 3, "xpane_up.png", "xpane_hi.png", "xpane_dn.png");
@@ -493,6 +579,7 @@ void SUV::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");
 
 // VWindow
        new_image("vbuttons_left", "vbuttons_left.png");
@@ -509,22 +596,22 @@ void SUV::initialize()
 
        setformat_w = get_image("setformat_bg")->get_w();
        setformat_h = get_image("setformat_bg")->get_h();
-       setformat_x1 = 15;
-       setformat_x2 = 100;
+       setformat_x1 = xS(15);
+       setformat_x2 = xS(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;
+       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 = get_image_set("loadmode_new")[0]->get_h() + 10;
-       browse_pad = 20;
+       loadfile_pad = get_image_set("loadmode_new")[0]->get_h() + yS(10);
+       browse_pad = yS(20);
 
 
        new_toggle("playpatch.png",
@@ -623,6 +710,13 @@ void SUV::initialize()
                "proxy_s_down.png",
                "proxy_s_chkdhi.png");
 
+       mask_mode_toggle = new_image_set(5,
+               "mask_mode_up.png",
+               "mask_mode_hi.png",
+               "mask_mode_chkd.png",
+               "mask_mode_down.png",
+               "mask_mode_chkdhi.png");
+
        shbtn_data = new_image_set(3,
                "shbtn_up.png",
                "shbtn_hi.png",
@@ -779,6 +873,7 @@ void SUV::initialize()
 
        new_toggle("arrow.png", editpanel_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "arrow");
        new_toggle("autokeyframe.png", transport_up, editpanel_hi, editpanel_checked, editpanel_dn, editpanel_checkedhi, "autokeyframe");
+       new_toggle("spankeyframe.png", transport_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",
@@ -811,6 +906,15 @@ void SUV::initialize()
        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("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();
 
@@ -820,22 +924,13 @@ void SUV::initialize()
        recordgui_variable_color = RED;
 
        channel_position_color = MEYELLOW;
-       resources->meter_title_w = 25;
+       resources->meter_title_w = xS(28);
 
         // (asset) edit info text color
         edit_font_color = YELLOW;
 }
 
-#define VWINDOW_METER_MARGIN 5
-
-
-
-
-
-
-
-
-
+#define VWINDOW_METER_MARGIN xS(5)
 
 
 void SUV::build_bg_data()
@@ -844,12 +939,12 @@ void SUV::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");
        new_image("plugin_bg_data", "plugin_bg.png");
        new_image("title_bg_data", "title_bg.png");
        new_image("vtimebar_bg_data", "vwindow_timebar.png");
@@ -863,33 +958,27 @@ void SUV::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"));
 }
 
 
-
-
-
-
-
-
-
 void SUV::draw_rwindow_bg(RecordGUI *gui)
 {
 //     int y;
-//     int margin = 50;
-//     int margin2 = 80;
+//     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();
+//     y = recordgui_buttons_y - yS(5) + rgui_controls->get_h();
 //     gui->draw_9segment(0,
 //             y,
 //             mwindow->session->rwindow_w,
@@ -899,27 +988,21 @@ void SUV::draw_rwindow_bg(RecordGUI *gui)
 
 void SUV::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,
-//             w,
+//             0, w,
 //             mwindow->session->rmonitor_h,
 //             rmonitor_meters);
 }
 
 
-
-
-
-
 void SUV::draw_mwindow_bg(MWindowGUI *gui)
 {
 // Button bar
@@ -927,22 +1010,23 @@ void SUV::draw_mwindow_bg(MWindowGUI *gui)
                gui->menu_w(), get_image("mbutton_bg"));
 
        int pdw = get_image("panel_divider")->get_w();
+       int xs2 = xS(2);
        int x = mbuttons_x;
        x += 9 * get_image("play")->get_w();
        x += mtransport_margin;                                       // the control buttons
 
        gui->draw_vframe(get_image("panel_divider"),
-               x - toggle_margin / 2 - pdw / 2 + 2,
+               x - toggle_margin / 2 - pdw / 2 + xs2,
                mbuttons_y - 1);
        x += 2 * get_image("arrow")->get_w() + toggle_margin;           // the mode buttons
 
        gui->draw_vframe(get_image("panel_divider"),
-               x - toggle_margin / 2 - pdw / 2 + 2,
+               x - toggle_margin / 2 - pdw / 2 + xs2,
                mbuttons_y - 1);
-       x += 2 * get_image("autokeyframe")->get_w() + toggle_margin;    // the state toggle buttons
+       x += 3 * get_image("autokeyframe")->get_w() + toggle_margin;    // the state toggle buttons
 
        gui->draw_vframe(get_image("panel_divider"),
-               x - toggle_margin / 2 - pdw / 2 + 2,
+               x - toggle_margin / 2 - pdw / 2 + xs2,
                mbuttons_y - 1);
 
 // Clock
@@ -968,17 +1052,13 @@ void SUV::draw_mwindow_bg(MWindowGUI *gui)
                mcanvas_h - BC_ScrollBar::get_span(SCROLL_HORIZ) - mtimebar_h);
 
 // 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"));
 
 // Zoombar
        gui->set_color(0x373737);
-       gui->draw_box(mzoom_x,
-               mzoom_y,
-               mwindow->session->mwindow_w,
-               25);
+       gui->draw_box(mzoom_x, mzoom_y,
+               mwindow->session->mwindow_w, yS(25));
 
 // Scrollbar filler
 //     gui->draw_vframe(get_image("mscroll_filler"),
@@ -986,12 +1066,8 @@ void SUV::draw_mwindow_bg(MWindowGUI *gui)
 //             mcanvas_y + mcanvas_h - BC_ScrollBar::get_span(SCROLL_HORIZ));
 
 // Status
-       gui->draw_3segmenth(mzoom_x,
-               mzoom_y,
-               mzoom_w,
-               get_image("statusbar"));
-
-
+       gui->draw_3segmenth(mzoom_x, mzoom_y,
+               mzoom_w, get_image("statusbar"));
 }
 
 void SUV::draw_cwindow_bg(CWindowGUI *gui)
@@ -1016,7 +1092,7 @@ void SUV::draw_cwindow_bg(CWindowGUI *gui)
        {
                gui->draw_3segmenth(cstatus_x,
                        ccomposite_h,
-                       cmeter_x - widget_border - cstatus_x + 100,
+                       cmeter_x - widget_border - cstatus_x + xS(100),
                        get_image("cbuttons_right"));
        }
 }
@@ -1043,14 +1119,14 @@ void SUV::draw_vwindow_bg(VWindowGUI *gui)
        {
                gui->draw_3segmenth(vdivision_x,
                        vcanvas_h,
-                       vmeter_x - widget_border - vdivision_x + 100,
+                       vmeter_x - widget_border - vdivision_x + xS(100),
                        get_image("cbuttons_right"));
        }
 
 // Clock border
-       gui->draw_3segmenth(vtime_x - 20,
+       gui->draw_3segmenth(vtime_x - xS(20),
                vtime_y - 1,
-               vtime_w + 40,
+               vtime_w + xS(40),
                get_image("vclock"));
 }