-EffectsParameterList ClipItem::getEffectArgs(const QDomElement effect)
-{
- EffectsParameterList parameters;
- parameters.addParam("tag", effect.attribute("tag"));
- parameters.addParam("kdenlive_ix", effect.attribute("kdenlive_ix"));
- parameters.addParam("id", effect.attribute("id"));
- if (effect.hasAttribute("src")) parameters.addParam("src", effect.attribute("src"));
- if (effect.hasAttribute("disable")) parameters.addParam("disable", effect.attribute("disable"));
-
- QDomNodeList params = effect.elementsByTagName("parameter");
- for (int i = 0; i < params.count(); i++) {
- QDomElement e = params.item(i).toElement();
- //kDebug() << "/ / / /SENDING EFFECT PARAM: " << e.attribute("type") << ", NAME_ " << e.attribute("tag");
- if (e.attribute("type") == "simplekeyframe") {
-
- QStringList values = e.attribute("keyframes").split(";", QString::SkipEmptyParts);
- double factor = e.attribute("factor", "1").toDouble();
- for (int j = 0; j < values.count(); j++) {
- QString pos = values.at(j).section(":", 0, 0);
- double val = values.at(j).section(":", 1, 1).toDouble() / factor;
- values[j] = pos + "=" + QString::number(val);
- }
- // kDebug() << "/ / / /SENDING KEYFR:" << values;
- parameters.addParam(e.attribute("name"), values.join(";"));
- /*parameters.addParam(e.attribute("name"), e.attribute("keyframes").replace(":", "="));
- parameters.addParam("max", e.attribute("max"));
- parameters.addParam("min", e.attribute("min"));
- parameters.addParam("factor", e.attribute("factor", "1"));*/
- } else if (e.attribute("type") == "keyframe") {
- kDebug() << "/ / / /SENDING KEYFR EFFECT TYPE";
- parameters.addParam("keyframes", e.attribute("keyframes"));
- parameters.addParam("max", e.attribute("max"));
- parameters.addParam("min", e.attribute("min"));
- parameters.addParam("factor", e.attribute("factor", "1"));
- parameters.addParam("starttag", e.attribute("starttag", "start"));
- parameters.addParam("endtag", e.attribute("endtag", "end"));
- } else if (e.attribute("namedesc").contains(';')) {
- QString format = e.attribute("format");
- QStringList separators = format.split("%d", QString::SkipEmptyParts);
- QStringList values = e.attribute("value").split(QRegExp("[,:;x]"));
- QString neu;
- QTextStream txtNeu(&neu);
- if (values.size() > 0)
- txtNeu << (int)values[0].toDouble();
- for (int i = 0; i < separators.size() && i + 1 < values.size(); i++) {
- txtNeu << separators[i];
- txtNeu << (int)(values[i+1].toDouble());
- }
- parameters.addParam("start", neu);
- } else {
- if (e.attribute("factor", "1") != "1") {
- double fact;
- if (e.attribute("factor").startsWith('%')) {
- fact = ProfilesDialog::getStringEval(projectScene()->profile(), e.attribute("factor"));
- } else fact = e.attribute("factor", "1").toDouble();
- parameters.addParam(e.attribute("name"), QString::number(e.attribute("value").toDouble() / fact));
- } else {
- parameters.addParam(e.attribute("name"), e.attribute("value"));
- }
- }
- }
- return parameters;
-}
-