<parameter type="bool" name="obscure" default="1">
<name>Obscure</name>
</parameter>
- <parameter type="filterjob" filtertag="autotrack_rectangle:%geometry" filterparams="_serialize=1 motion_vector_list=0" consumer="null" consumerparams="all=1 terminate_on_pause=1" finalfilter="autotrack_rectangle" extraparams="key:motion_vector_list projecttreefilter storedata">
+ <parameter type="filterjob" filtertag="autotrack_rectangle" filterparams="_serialize=1 motion_vector_list=0 %params" consumer="null" consumerparams="all=1 terminate_on_pause=1" finalfilter="autotrack_rectangle" extraparams="key:motion_vector_list projecttreefilter storedata">
<name>Analyse</name>
</parameter>
</effect>
parameters.addParam(QString("filter%1.tag").arg(subeffectix), subeffect.attribute("tag"));
parameters.addParam(QString("filter%1.kdenlive_info").arg(subeffectix), subeffect.attribute("kdenlive_info"));
QDomNodeList subparams = subeffect.elementsByTagName("parameter");
- adjustEffectParameters(parameters, subparams, QString("filter%1.").arg(subeffectix));
+ adjustEffectParameters(parameters, subparams, m_document->mltProfile(), QString("filter%1.").arg(subeffectix));
}
}
QDomNodeList params = effect.elementsByTagName("parameter");
- adjustEffectParameters(parameters, params);
+ adjustEffectParameters(parameters, params, m_document->mltProfile());
return parameters;
}
-void CustomTrackView::adjustEffectParameters(EffectsParameterList ¶meters, QDomNodeList params, const QString &prefix)
+void CustomTrackView::adjustEffectParameters(EffectsParameterList ¶meters, QDomNodeList params, MltVideoProfile profile, const QString &prefix)
{
QLocale locale;
for (int i = 0; i < params.count(); i++) {
if (e.attribute("factor", "1") != "1" || e.attribute("offset", "0") != "0") {
double fact;
if (e.attribute("factor").contains('%')) {
- fact = ProfilesDialog::getStringEval(m_document->mltProfile(), e.attribute("factor"));
+ fact = ProfilesDialog::getStringEval(profile, e.attribute("factor"));
} else {
fact = e.attribute("factor", "1").toDouble();
}
}
// Make sure there is no collision
QList<QGraphicsItem *> children = m_selectionGroup->childItems();
- ClipItem *item;
+ ClipItem *item = NULL;
for (int i = 0; i < children.count(); i++) {
if (children.at(i)->type() == AVWIDGET) {
item = (ClipItem*) children.at(i);
break;
}
}
+ if (!item) {
+ emit displayMessage(i18n("No clip found"), ErrorMessage);
+ return;
+ }
QMap <QString, QString> data = item->baseClip()->analysisData();
if (data.isEmpty()) {
emit displayMessage(i18n("No keyframe data found in clip"), ErrorMessage);
void slotAddEffect(ClipItem *clip, QDomElement effect);
void slotImportClipKeyframes(GRAPHICSRECTITEM type);
+ /** @brief Get effect parameters ready for MLT*/
+ static void adjustEffectParameters(EffectsParameterList ¶meters, QDomNodeList params, MltVideoProfile profile, const QString &prefix = QString());
+
protected:
virtual void drawBackground(QPainter * painter, const QRectF & rect);
//virtual void drawForeground ( QPainter * painter, const QRectF & rect );
/** @brief Prepare an add clip command for an effect */
void processEffect(ClipItem *item, QDomElement effect, int offset, QUndoCommand *effectCommand);
-
- /** @brief Get effect parameters ready for MLT*/
- void adjustEffectParameters(EffectsParameterList ¶meters, QDomNodeList params, const QString &prefix = QString());
private slots:
void slotRefreshGuides();
#include "projectlist.h"
#include "mainwindow.h"
#include "parametercontainer.h"
+#include "../customtrackview.h"
#include <KUrlRequester>
#include <KFileDialog>
QDomElement pa = namenode.item(i).toElement();
QString type = pa.attribute("type");
if (type == "filterjob") {
- QString filtertag = pa.attribute("filtertag");
- if (filtertag.contains("%geometry")) {
+ QString filterparams = pa.attribute("filterparams");
+ if (filterparams.contains("%params")) {
// Replace with current geometry
- if (m_geometryWidget) {
- QString data = m_geometryWidget->getValue();
- filtertag.replace("%geometry", data);
- kDebug()<<"// Setting geometry: "<<data<<", RES: "<<filtertag;
- }
+ EffectsParameterList parameters;
+ QDomNodeList params = m_effect.elementsByTagName("parameter");
+ CustomTrackView::adjustEffectParameters(parameters, params, m_metaInfo->profile);
+ QString paramData;
+ for (int j = 0; j < parameters.count(); j++)
+ paramData.append(parameters.at(j).name()+"="+parameters.at(j).value()+" ");
+ filterparams.replace("%params", paramData);
}
QStringList extra = pa.attribute("extraparams").split(' ', QString::SkipEmptyParts);
- emit startFilterJob(filtertag, pa.attribute("filterparams"), pa.attribute("finalfilter"), pa.attribute("consumer"), pa.attribute("consumerparams"), extra);
- kDebug()<<" - - -PROPS:\n"<<"filtertag"<<"-"<< pa.attribute("filterparams")<<"-"<< pa.attribute("consumer")<<"-"<< pa.attribute("consumerparams")<<"-"<< pa.attribute("extraparams");
+ emit startFilterJob(pa.attribute("filtertag"), filterparams, pa.attribute("finalfilter"), pa.attribute("consumer"), pa.attribute("consumerparams"), extra);
+ kDebug()<<" - - -PROPS:\n"<<pa.attribute("filtertag")<<"-"<< filterparams<<"-"<< pa.attribute("consumer")<<"-"<< pa.attribute("consumerparams")<<"-"<< pa.attribute("extraparams");
break;
}
}