fit keyframe spanning for sketcher,tracer,crikey, rework keyframegui preset, tweak...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / pluginclient.C
index 467fa2aa8346bb3909698f9135dc8bde924b9799..94a208844658668db4048770b28b1eefb3044843 100644 (file)
@@ -1083,9 +1083,12 @@ int PluginClient::send_configure_change()
        if(server->mwindow)
                server->mwindow->undo->update_undo_before(_("tweek"), this);
 #ifdef USE_KEYFRAME_SPANNING
-       KeyFrame keyframe;
+       EDL *edl = server->edl;
+        Plugin *plugin = edl->tracks->plugin_exists(server->plugin_id);
+       KeyFrames *keyframes = plugin ? plugin->keyframes : 0;
+       KeyFrame keyframe(edl, keyframes);
        save_data(&keyframe);
-       server->apply_keyframe(&keyframe);
+       server->apply_keyframe(plugin, &keyframe);
 #else
        KeyFrame* keyframe = server->get_keyframe();
 // Call save routine in plugin
@@ -1097,6 +1100,14 @@ int PluginClient::send_configure_change()
        return 0;
 }
 
+// virtual default spanning keyframe update.  If a range is selected,
+// then changed parameters are copied to (prev + selected) keyframes.
+// redefine per client for custom keyframe updates, see tracer, sketcher, crikey
+void PluginClient::span_keyframes(KeyFrame *src, int64_t start, int64_t end)
+{
+       src->span_keyframes(start, end);
+}
+
 
 KeyFrame* PluginClient::get_prev_keyframe(int64_t position, int is_local)
 {
@@ -1164,3 +1175,4 @@ int PluginClient::gui_open()
        return server->gui_open();
 }
 
+