span keyframes toggle, rect_audio tweaks, fix playbackengine clear output for audio...
authorGood Guy <good1.2guy@gmail.com>
Thu, 18 Jul 2019 21:13:28 +0000 (15:13 -0600)
committerGood Guy <good1.2guy@gmail.com>
Thu, 18 Jul 2019 21:13:28 +0000 (15:13 -0600)
41 files changed:
cinelerra-5.1/cinelerra/cwindowgui.C
cinelerra-5.1/cinelerra/cwindowgui.h
cinelerra-5.1/cinelerra/editpanel.C
cinelerra-5.1/cinelerra/editpanel.h
cinelerra-5.1/cinelerra/edlsession.C
cinelerra-5.1/cinelerra/edlsession.h
cinelerra-5.1/cinelerra/gwindowgui.C
cinelerra-5.1/cinelerra/indexfile.C
cinelerra-5.1/cinelerra/keyframes.C
cinelerra-5.1/cinelerra/maskautos.C
cinelerra-5.1/cinelerra/mbuttons.C
cinelerra-5.1/cinelerra/mbuttons.h
cinelerra-5.1/cinelerra/mwindow.C
cinelerra-5.1/cinelerra/mwindow.h
cinelerra-5.1/cinelerra/playbackengine.C
cinelerra-5.1/cinelerra/resourcepixmap.C
cinelerra-5.1/cinelerra/vwindowgui.C
cinelerra-5.1/cinelerra/vwindowgui.h
cinelerra-5.1/ffmpeg/plugin.opts
cinelerra-5.1/plugins/theme_blond/blondtheme.C
cinelerra-5.1/plugins/theme_blond/data/spankeyframe.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_blond_cv/blondcvtheme.C
cinelerra-5.1/plugins/theme_blond_cv/data/spankeyframe.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_blue/bluetheme.C
cinelerra-5.1/plugins/theme_blue/data/spankeyframe.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_blue_dot/bluedottheme.C
cinelerra-5.1/plugins/theme_blue_dot/data/spankeyframe.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_bright/brighttheme.C
cinelerra-5.1/plugins/theme_bright/data/spankeyframe.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_cakewalk/cakewalk.C
cinelerra-5.1/plugins/theme_cakewalk/data/spankeyframe.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_hulk/data/spankeyframe.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_hulk/hulktheme.C
cinelerra-5.1/plugins/theme_neophyte/data/spankeyframe.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_neophyte/neophyte.C
cinelerra-5.1/plugins/theme_pinklady/data/spankeyframe.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_pinklady/pinkladytheme.C
cinelerra-5.1/plugins/theme_suv/data/spankeyframe.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_suv/suv.C
cinelerra-5.1/plugins/theme_unflat/data/spankeyframe.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_unflat/unflattheme.C

index f851f1b..ebb95e9 100644 (file)
@@ -878,6 +878,7 @@ void panel_btn(fit_selection,(), fit_selection())
 void panel_btn(fit_autos,(int all), fit_autos(all))
 void panel_btn(set_editing_mode,(int mode), set_editing_mode(mode))
 void panel_btn(set_auto_keyframes,(int v), set_auto_keyframes(v))
+void panel_btn(set_span_keyframes,(int v), set_span_keyframes(v))
 void panel_btn(set_labels_follow_edits,(int v), set_labels_follow_edits(v))
 
 
index f2ae71c..af84745 100644 (file)
@@ -187,6 +187,7 @@ public:
        void panel_fit_autos(int all);
        void panel_set_editing_mode(int mode);
        void panel_set_auto_keyframes(int v);
+       void panel_set_span_keyframes(int v);
        void panel_set_labels_follow_edits(int v);
 
        MWindow *mwindow;
index 4e80555..3d7703c 100644 (file)
@@ -118,6 +118,7 @@ EditPanel::EditPanel(MWindow *mwindow,
        this->arrow = 0;
        this->ibeam = 0;
        this->keyframe = 0;
+       this->span_keyframe = 0;
        this->mangoto = 0;
        this->click2play = 0;
        locklabels = 0;
@@ -139,6 +140,7 @@ void EditPanel::update()
        if( arrow ) arrow->update(new_editing_mode == EDITING_ARROW);
        if( ibeam ) ibeam->update(new_editing_mode == EDITING_IBEAM);
        if( keyframe ) keyframe->update(mwindow->edl->session->auto_keyframes);
+       if( span_keyframe ) span_keyframe->update(mwindow->edl->session->span_keyframes);
        if( locklabels ) locklabels->set_value(mwindow->edl->session->labels_follow_edits);
        if( click2play ) {
                int value = !is_vwindow() ?
@@ -193,6 +195,9 @@ void EditPanel::create_buttons()
                keyframe = new KeyFrameButton(mwindow, this, x1, y1);
                subwindow->add_subwindow(keyframe);
                x1 += keyframe->get_w();
+               span_keyframe = new SpanKeyFrameButton(mwindow, this, x1, y1);
+               subwindow->add_subwindow(span_keyframe);
+               x1 += span_keyframe->get_w();
        }
 
        if( use_locklabels ) {
@@ -334,6 +339,8 @@ void EditPanel::reposition_buttons(int x, int y)
        if( use_keyframe ) {
                keyframe->reposition_window(x1, y1);
                x1 += keyframe->get_w();
+               span_keyframe->reposition_window(x1, y1);
+               x1 += span_keyframe->get_w();
        }
 
        if( use_locklabels ) {
@@ -941,6 +948,24 @@ int KeyFrameButton::keypress_event()
        return 0;
 }
 
+//set_span_keyframes
+SpanKeyFrameButton::SpanKeyFrameButton(MWindow *mwindow, EditPanel *panel, int x, int y)
+ : BC_Toggle(x, y,
+       mwindow->theme->get_image_set("spankeyframe"),
+       mwindow->edl->session->span_keyframes,
+       "", 0, 0, 0)
+{
+       this->mwindow = mwindow;
+       this->panel = panel;
+       set_tooltip(_("Allow keyframe spanning"));
+}
+
+int SpanKeyFrameButton::handle_event()
+{
+       panel->panel_set_span_keyframes(get_value());
+       return 1;
+}
+
 //set_labels_follow_edits
 LockLabelsButton::LockLabelsButton(MWindow *mwindow, EditPanel *panel, int x, int y)
  : BC_Toggle(x, y,
index 9b5fe1a..67ab431 100644 (file)
@@ -322,6 +322,15 @@ public:
        EditPanel *panel;
 };
 
+class SpanKeyFrameButton : public BC_Toggle
+{
+public:
+       SpanKeyFrameButton(MWindow *mwindow, EditPanel *panel, int x, int y);
+       int handle_event();
+       MWindow *mwindow;
+       EditPanel *panel;
+};
+
 class LockLabelsButton : public BC_Toggle
 {
 public:
@@ -389,6 +398,7 @@ public:
        virtual void panel_fit_autos(int all) = 0;
        virtual void panel_set_editing_mode(int mode) = 0;
        virtual void panel_set_auto_keyframes(int v) = 0;
+       virtual void panel_set_span_keyframes(int v) = 0;
        virtual void panel_set_labels_follow_edits(int v) = 0;
 
        MWindow *mwindow;
@@ -441,6 +451,7 @@ public:
        ArrowButton *arrow;
        IBeamButton *ibeam;
        KeyFrameButton *keyframe;
+       SpanKeyFrameButton *span_keyframe;
        LockLabelsButton *locklabels;
 
        int is_mwindow() { return window_id == MWINDOW_ID; }
index 98e7ea4..91b53d2 100644 (file)
@@ -53,6 +53,7 @@ EDLSession::EDLSession(EDL *edl)
        audio_tracks = 2;
        autos_follow_edits = 1; // this is needed for predictability
        auto_keyframes = 0;
+       span_keyframes = 0;
        brender_start = brender_end = 0.0;
        clipboard_length = 0; // unused
        color_model = BC_RGBA8888;
@@ -274,6 +275,7 @@ int EDLSession::load_defaults(BC_Hash *defaults)
        single_standalone = defaults->get("SINGLE_STANDALONE", 1);
        playback_preload = defaults->get("PLAYBACK_PRELOAD", 0);
        auto_keyframes = defaults->get("AUTO_KEYFRAMES", 0);
+       span_keyframes = defaults->get("SPAN_KEYFRAMES", 0);
        meter_format = defaults->get("METER_FORMAT", METER_DB);
        min_meter_db = defaults->get("MIN_METER_DB", -85);
        max_meter_db = defaults->get("MAX_METER_DB", 6);
@@ -419,6 +421,7 @@ int EDLSession::save_defaults(BC_Hash *defaults)
        defaults->update("SINGLE_STANDALONE", single_standalone);
        defaults->update("PLAYBACK_PRELOAD", playback_preload);
        defaults->update("AUTO_KEYFRAMES", auto_keyframes);
+       defaults->update("SPAN_KEYFRAMES", span_keyframes);
        defaults->update("METER_FORMAT", meter_format);
        defaults->update("MIN_METER_DB", min_meter_db);
        defaults->update("MAX_METER_DB", max_meter_db);
@@ -597,6 +600,7 @@ int EDLSession::load_xml(FileXML *file,
                }
                auto_conf->load_xml(file);
                auto_keyframes = file->tag.get_property("AUTO_KEYFRAMES", auto_keyframes);
+               span_keyframes = file->tag.get_property("SPAN_KEYFRAMES", span_keyframes);
                autos_follow_edits = file->tag.get_property("AUTOS_FOLLOW_EDITS", autos_follow_edits);
                brender_start = file->tag.get_property("BRENDER_START", brender_start);
                brender_end = file->tag.get_property("BRENDER_END", brender_end);
@@ -663,6 +667,7 @@ int EDLSession::save_xml(FileXML *file)
        }
        auto_conf->save_xml(file);
        file->tag.set_property("AUTO_KEYFRAMES", auto_keyframes);
+       file->tag.set_property("SPAN_KEYFRAMES", span_keyframes);
        file->tag.set_property("AUTOS_FOLLOW_EDITS", autos_follow_edits);
        file->tag.set_property("BRENDER_START", brender_start);
        file->tag.set_property("BRENDER_END", brender_end);
@@ -841,6 +846,7 @@ int EDLSession::copy(EDLSession *session)
        plugins_follow_edits = session->plugins_follow_edits;
        single_standalone = session->single_standalone;
        auto_keyframes = session->auto_keyframes;
+       span_keyframes = session->span_keyframes;
 //     last_playback_position = session->last_playback_position;
        meter_format = session->meter_format;
        min_meter_db = session->min_meter_db;
index 44d0997..343a51f 100644 (file)
@@ -80,6 +80,8 @@ public:
        int autos_follow_edits;
 // Generate keyframes for every tweek
        int auto_keyframes;
+// use spanning parameter update
+       int span_keyframes;
 // Where to do background rendering
        double brender_start;
        double brender_end;
index 09a09cb..53061be 100644 (file)
@@ -251,7 +251,9 @@ void GWindowGUI::create_objects()
                        continue;
                }
                const char *label = toggle_text(tp);
-               int color = tp->isauto > 0 ? auto_colors[tp->ref] : WHITE;
+               int color = tp->isauto > 0 ?
+                       auto_colors[tp->ref] :
+                       get_resources()->text_default ;
                GWindowToggle *toggle = new GWindowToggle(this, x, y, label, color, tp);
                add_tool(toggles[i] = toggle);
                if( tp->isauto > 0 ) {
index 7bbd295..aedbfbb 100644 (file)
@@ -772,7 +772,7 @@ SET_TRACE
 // A different algorithm has to be used if it's 1 sample per pixel and the
 // index is used.  Now the min and max values are equal so we join the max samples.
                if(mwindow->edl->local_session->zoom_sample == 1) {
-                       canvas->draw_line(x2 - 1, prev_y1, x2, y1, pixmap);
+                       canvas->draw_line(x2 - 1, !rect_audio ? prev_y1 : center_pixel, x2, y1, pixmap);
                }
                else {
 // Extend line height if it doesn't connect to previous line
@@ -783,7 +783,7 @@ SET_TRACE
                        else {
                                first_frame = 0;
                        }
-                       canvas->draw_line(x2, y1, x2, y2, pixmap);
+                       canvas->draw_line(x2, y1, x2, !rect_audio ? y2 : center_pixel, pixmap);
                }
                prev_y1 = next_y1;
                prev_y2 = next_y2;
index 696c806..68d700f 100644 (file)
@@ -101,7 +101,8 @@ void KeyFrames::update_parameter(KeyFrame *src)
        selection_start = edl->align_to_frame(selection_start, 0);
        selection_end = edl->align_to_frame(selection_end, 0);
 
-       if( EQUIV(selection_start, selection_end) ) {
+       if( !edl->session->span_keyframes ||
+           EQUIV(selection_start, selection_end) ) {
 // Search for keyframe to write
                KeyFrame *dst = get_keyframe();
                dst->copy_data(src);
index 6904d81..bac0d85 100644 (file)
@@ -22,6 +22,7 @@
 #include "automation.inc"
 #include "clip.h"
 #include "edl.h"
+#include "edlsession.h"
 #include "localsession.h"
 #include "maskauto.h"
 #include "maskautos.h"
@@ -50,7 +51,8 @@ void MaskAutos::update_parameter(MaskAuto *src)
 // Selection is always aligned to frame for masks
 
 // Create new keyframe if auto keyframes or replace entire keyframe.
-       if(selection_start == selection_end)
+       if( !edl->session->span_keyframes ||
+           EQUIV(selection_start, selection_end) )
        {
 // Search for keyframe to write to
                MaskAuto *dst = (MaskAuto*)get_auto_for_editing();
index de1bd7a..5aa8677 100644 (file)
@@ -275,6 +275,11 @@ void MainEditing::panel_set_auto_keyframes(int v)
        mwindow->set_auto_keyframes(v);
 }
 
+void MainEditing::panel_set_span_keyframes(int v)
+{
+       mwindow->set_span_keyframes(v);
+}
+
 void MainEditing::panel_set_labels_follow_edits(int v)
 {
         mwindow->set_labels_follow_edits(v);
index 0e8771f..06e5384 100644 (file)
@@ -105,6 +105,7 @@ public:
        void panel_fit_autos(int all);
        void panel_set_editing_mode(int mode);
        void panel_set_auto_keyframes(int v);
+       void panel_set_span_keyframes(int v);
        void panel_set_labels_follow_edits(int v);
 
        MWindow *mwindow;
index 0661591..b3ad59a 100644 (file)
@@ -2989,6 +2989,17 @@ void MWindow::set_auto_keyframes(int value)
        cwindow->gui->unlock_window();
 }
 
+void MWindow::set_span_keyframes(int value)
+{
+       edl->session->span_keyframes = value;
+       gui->mbuttons->edit_panel->span_keyframe->update(value);
+       gui->flush();
+       cwindow->gui->lock_window("MWindow::set_span_keyframes");
+       cwindow->gui->edit_panel->span_keyframe->update(value);
+       cwindow->gui->flush();
+       cwindow->gui->unlock_window();
+}
+
 void MWindow::set_auto_visibility(Autos *autos, int value)
 {
        if( autos->type == Autos::AUTOMATION_TYPE_PLUGIN )
index b0cc09f..24d7579 100644 (file)
@@ -476,6 +476,7 @@ public:
        void set_automation_mode(int mode);
        void set_keyframe_type(int mode);
        void set_auto_keyframes(int value);
+       void set_span_keyframes(int value);
        void set_auto_visibility(Autos *autos, int value);
        void set_labels_follow_edits(int value);
 
index 228f389..fcbeeb1 100644 (file)
@@ -33,6 +33,7 @@
 #include "mwindowgui.h"
 #include "patchbay.h"
 #include "tracking.h"
+#include "tracks.h"
 #include "playbackengine.h"
 #include "playtransport.h"
 #include "preferences.h"
@@ -411,8 +412,11 @@ void PlaybackEngine::run()
 // Start tracking after arming so the tracking position doesn't change.
 // The tracking for a single frame command occurs during PAUSE
                        init_tracking();
-                       if( !command->single_frame() )
-                               clear_output();
+                       if( !command->single_frame() ) {
+                               EDL *edl = command->get_edl();
+                               if( edl && edl->tracks->playable_video_tracks() )
+                                       clear_output();
+                       }
 // Dispatch the command
                        start_render_engine();
                        break;
index 66073a0..8c874bb 100644 (file)
@@ -478,8 +478,8 @@ void ResourcePixmap::draw_audio_source(TrackCanvas *canvas, Edit *edit, int x, i
                        int y1 = center_pixel - sample * scale_y / 2;
                        int y2 = CLIP(y1, 0, y_max);
 
-                       for( int x0=0; x0<w; ++x0 ) {
-                               int x1 = x0 + x, x2 = x1 + 1;
+                       for( int x1=x; x1<w; ++x1 ) {
+                               int x2 = x1 + 1;
                                edit_position = (x1 + pixmap_x - edit_x) * project_zoom;
                                int64_t speed_position = edit->startsource;
                                speed_position += !speed_autos ? edit_position :
@@ -492,7 +492,10 @@ void ResourcePixmap::draw_audio_source(TrackCanvas *canvas, Edit *edit, int x, i
                                y1 = center_pixel - sample * scale_y / 2;
                                y2 = CLIP(y1, 0, y_max);
 //printf("ResourcePixmap::draw_audio_source %d %d %d\n", __LINE__, y1, y2);
-                               canvas->draw_line(x0, y0, x2, y2, this);
+                               if( !rect_audio )
+                                       canvas->draw_line(x1, y0, x2, y2, this);
+                               else
+                                       canvas->draw_line(x2, center_pixel, x2, y2, this);
                        }
                }
 
@@ -540,7 +543,7 @@ void ResourcePixmap::draw_audio_source(TrackCanvas *canvas, Edit *edit, int x, i
                                        y_lo = y1;  y_hi = y2;
                                }
                                prev_y1 = y1;  prev_y2 = y2;
-                               canvas->draw_line(x, y_lo, x, y_hi, this);
+                               canvas->draw_line(x, !rect_audio ? y_lo : center_pixel, x, y_hi, this);
 //printf("ResourcePixmap::draw_audio_source %d %d %d %d\n", __LINE__, x, y1, y2);
                                mwindow->wave_cache->unlock();
                        }
@@ -576,7 +579,7 @@ void ResourcePixmap::draw_wave(TrackCanvas *canvas,
        CLAMP(y1, top_pixel, bottom_pixel);
        CLAMP(y2, top_pixel, bottom_pixel);
        canvas->set_color(mwindow->theme->audio_color);
-       canvas->draw_line(x, y1, x, y2, this);
+       canvas->draw_line(x, !rect_audio ? y1 : bottom_pixel, x, y2, this);
 }
 
 
index 69ad7bb..bec67dc 100644 (file)
@@ -701,6 +701,7 @@ void VWindowEditing::panel_fit_selection() {}
 void VWindowEditing::panel_fit_autos(int all) {}
 void VWindowEditing::panel_set_editing_mode(int mode) {}
 void VWindowEditing::panel_set_auto_keyframes(int v) {}
+void VWindowEditing::panel_set_span_keyframes(int v) {}
 void VWindowEditing::panel_set_labels_follow_edits(int v) {}
 
 
index a6c206e..d56df59 100644 (file)
@@ -156,6 +156,7 @@ public:
        void panel_fit_autos(int all);
        void panel_set_editing_mode(int mode);
        void panel_set_auto_keyframes(int v);
+       void panel_set_span_keyframes(int v);
        void panel_set_labels_follow_edits(int v);
 
        MWindow *mwindow;
index ce680aa..47526fe 100644 (file)
@@ -111,7 +111,7 @@ dilation
 drawbox
 drawgraph
 drawgrid
-dynaudnorm
+#dynaudnorm ###Invalid argument
 earwax
 #ebur128 ###Operation not permitted
 edgedetect
@@ -166,7 +166,7 @@ inflate
 kerndeint
 lenscorrection
 life ratio=2/3:s=200x200
-loudnorm
+#loudnorm ###Invalid argument
 lowpass
 lut
 #lut2 ###Input/output error
index 16080ee..51aa61a 100644 (file)
@@ -870,6 +870,7 @@ void BlondTheme::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",
@@ -1023,7 +1024,7 @@ void BlondTheme::draw_mwindow_bg(MWindowGUI *gui)
                x - toggle_margin / 2 - pdw / 2 + 2,
                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,
                mbuttons_y - 1);
diff --git a/cinelerra-5.1/plugins/theme_blond/data/spankeyframe.png b/cinelerra-5.1/plugins/theme_blond/data/spankeyframe.png
new file mode 100644 (file)
index 0000000..9dfd82a
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond/data/spankeyframe.png differ
index c202322..5ff8586 100644 (file)
@@ -890,6 +890,7 @@ void BlondCVTheme::initialize()
 
        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_image_set("category_button",
                3,
                "preferencesbutton_dn.png",
diff --git a/cinelerra-5.1/plugins/theme_blond_cv/data/spankeyframe.png b/cinelerra-5.1/plugins/theme_blond_cv/data/spankeyframe.png
new file mode 100644 (file)
index 0000000..e7466ec
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond_cv/data/spankeyframe.png differ
index c96fd66..2a99932 100644 (file)
@@ -869,6 +869,7 @@ void BlueDotTheme::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",
@@ -1020,7 +1021,7 @@ void BlueDotTheme::draw_mwindow_bg(MWindowGUI *gui)
                x - toggle_margin / 2 - pdw / 2 + 2,
                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,
                mbuttons_y - 1);
diff --git a/cinelerra-5.1/plugins/theme_blue/data/spankeyframe.png b/cinelerra-5.1/plugins/theme_blue/data/spankeyframe.png
new file mode 100644 (file)
index 0000000..bf1987e
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue/data/spankeyframe.png differ
index e6df297..5304adf 100644 (file)
@@ -922,6 +922,7 @@ void BlueDotTheme::initialize()
 
        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",
@@ -1404,7 +1405,7 @@ void BlueDotTheme::draw_mwindow_bg(MWindowGUI *gui)
                mbuttons_y - 1);
 
        gui->draw_vframe(get_image("panel_divider"),
-               mbuttons_x + 290 + 11 +  30 * 2 + 11 + 30 * 2 + 5,
+               mbuttons_x + 290 + 11 +  30 * 2 + 11 + 30 * 3 + 5,
                mbuttons_y - 1);
 
 
diff --git a/cinelerra-5.1/plugins/theme_blue_dot/data/spankeyframe.png b/cinelerra-5.1/plugins/theme_blue_dot/data/spankeyframe.png
new file mode 100644 (file)
index 0000000..38fb836
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue_dot/data/spankeyframe.png differ
index b48a9aa..ffb70f3 100644 (file)
@@ -876,6 +876,7 @@ void BrightTheme::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",
@@ -1025,7 +1026,10 @@ void BrightTheme::draw_mwindow_bg(MWindowGUI *gui)
                mbuttons_y - 1);
 
        gui->draw_vframe(get_image("panel_divider"),
-               mbuttons_x + 320,
+               mbuttons_x + 294,
+               mbuttons_y - 1);
+       gui->draw_vframe(get_image("panel_divider"),
+               mbuttons_x + 396,
                mbuttons_y - 1);
 
 // Clock
diff --git a/cinelerra-5.1/plugins/theme_bright/data/spankeyframe.png b/cinelerra-5.1/plugins/theme_bright/data/spankeyframe.png
new file mode 100644 (file)
index 0000000..90bdf66
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_bright/data/spankeyframe.png differ
index a3e8fde..ed6294f 100644 (file)
@@ -936,6 +936,10 @@ void CAKEWALKTHEME::initialize()
       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,
@@ -1110,7 +1114,7 @@ void CAKEWALKTHEME::draw_mwindow_bg(MWindowGUI *gui)
  gui->draw_vframe(get_image("panel_divider"),
       x - toggle_margin / 2 - pdw / 2 + 2,
       mbuttons_y - 1);
- x += 2 * get_image("autokeyframe")->get_w() + toggle_margin;
+ x += 3 * get_image("autokeyframe")->get_w() + toggle_margin;
  gui->draw_vframe(get_image("panel_divider"),
       x - toggle_margin / 2 - pdw / 2 + 2,
       mbuttons_y - 1);
diff --git a/cinelerra-5.1/plugins/theme_cakewalk/data/spankeyframe.png b/cinelerra-5.1/plugins/theme_cakewalk/data/spankeyframe.png
new file mode 100644 (file)
index 0000000..17cdb98
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_cakewalk/data/spankeyframe.png differ
diff --git a/cinelerra-5.1/plugins/theme_hulk/data/spankeyframe.png b/cinelerra-5.1/plugins/theme_hulk/data/spankeyframe.png
new file mode 100644 (file)
index 0000000..5d08d19
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_hulk/data/spankeyframe.png differ
index 19abed4..1fc23d8 100644 (file)
@@ -871,6 +871,7 @@ void HULKTHEME::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",
@@ -1025,7 +1026,7 @@ void HULKTHEME::draw_mwindow_bg(MWindowGUI *gui)
                x - toggle_margin / 2 - pdw / 2 + 2,
                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,
                mbuttons_y - 1);
diff --git a/cinelerra-5.1/plugins/theme_neophyte/data/spankeyframe.png b/cinelerra-5.1/plugins/theme_neophyte/data/spankeyframe.png
new file mode 100644 (file)
index 0000000..9417254
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_neophyte/data/spankeyframe.png differ
index 786c070..cce4149 100644 (file)
@@ -1081,6 +1081,10 @@ void NEOPHYTETHEME::initialize()
                           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,
@@ -1326,7 +1330,7 @@ void NEOPHYTETHEME::draw_mwindow_bg(MWindowGUI *gui)
                                         x - toggle_margin / 2 - pdw / 2 + 2,
                                         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,
                                         mbuttons_y - 1);
diff --git a/cinelerra-5.1/plugins/theme_pinklady/data/spankeyframe.png b/cinelerra-5.1/plugins/theme_pinklady/data/spankeyframe.png
new file mode 100644 (file)
index 0000000..1ca51d0
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_pinklady/data/spankeyframe.png differ
index c2ad6e1..c4a2c9e 100644 (file)
@@ -856,6 +856,7 @@ void PINKLADY::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",
@@ -1007,7 +1008,7 @@ void PINKLADY::draw_mwindow_bg(MWindowGUI *gui)
                x - toggle_margin / 2 - pdw / 2 + 2,
                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,
                mbuttons_y - 1);
diff --git a/cinelerra-5.1/plugins/theme_suv/data/spankeyframe.png b/cinelerra-5.1/plugins/theme_suv/data/spankeyframe.png
new file mode 100644 (file)
index 0000000..bee7bcf
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_suv/data/spankeyframe.png differ
index 46b4441..e07e949 100644 (file)
@@ -857,6 +857,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",
@@ -1027,7 +1028,7 @@ void SUV::draw_mwindow_bg(MWindowGUI *gui)
        gui->draw_vframe(get_image("panel_divider"),
                x - toggle_margin / 2 - pdw / 2 + 2,
                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,
diff --git a/cinelerra-5.1/plugins/theme_unflat/data/spankeyframe.png b/cinelerra-5.1/plugins/theme_unflat/data/spankeyframe.png
new file mode 100644 (file)
index 0000000..57dd07a
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_unflat/data/spankeyframe.png differ
index c6b1cf2..9dac919 100644 (file)
@@ -865,6 +865,7 @@ void UNFLATTHEME::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",
@@ -1016,7 +1017,7 @@ void UNFLATTHEME::draw_mwindow_bg(MWindowGUI *gui)
                x - toggle_margin / 2 - pdw / 2 + 2,
                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,
                mbuttons_y - 1);