client->window_x /* - w / 2 */, client->window_y /* - h / 2 */,
w, h, min_w, min_h, allow_resize, 0, 1)
{
+ char title[BCTEXTLEN];
+
this->client = client;
+
+// *** CONTEXT_HELP ***
+ if(client) {
+ strcpy(title, client->plugin_title());
+ if(! strcmp(title, "Overlay")) {
+ // "Overlay" plugin title is ambiguous
+ if(client->is_audio()) strcat(title, " \\(Audio\\)");
+ if(client->is_video()) strcat(title, " \\(Video\\)");
+ }
+ if(client->server->is_ffmpeg()) {
+ // FFmpeg plugins can be audio or video
+ if(client->is_audio())
+ strcpy(title, "FFmpeg Audio Plugins");
+ if(client->is_video())
+ strcpy(title, "FFmpeg Video Plugins");
+ }
+ context_help_set_keyword(title);
+ }
}
PluginClientWindow::PluginClientWindow(const char *title,
: BC_Window(title, x, y, w, h, min_w, min_h, allow_resize, 0, 1)
{
this->client = 0;
+// *** CONTEXT_HELP ***
+ context_help_set_keyword(title);
}
PluginClientWindow::~PluginClientWindow()
const char *PluginClient::get_source_path()
{
- EDL *edl = get_edl();
- Plugin *plugin = edl->tracks->plugin_exists(server->plugin_id);
+ Plugin *plugin = server->edl->tracks->plugin_exists(server->plugin_id);
int64_t source_position = plugin->startproject;
Edit *edit = plugin->track->edits->editof(source_position,PLAY_FORWARD,0);
Indexable *indexable = edit ? edit->get_source() : 0;
return server->get_use_opengl();
}
+int PluginClient::to_ram(VFrame *vframe)
+{
+ return server->to_ram(vframe);
+}
+
int PluginClient::get_total_buffers()
{
return total_in_buffers;
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
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)
{
return server->gui_open();
}
+