void CustomTrackView::addTransition(int startTrack, GenTime startPos , QDomElement e) {
QMap < QString, QString> map;
+ QString s;
+ QTextStream tx(&s);
+ e.save(tx, 2);
+ kDebug() << "in" << s;
- QDomNamedNodeMap attribs = e.attributes();
+ QDomNodeList attribs = e.elementsByTagName("parameter");
for (int i = 0;i < attribs.count();i++) {
- if (attribs.item(i).nodeName() != "type" &&
- attribs.item(i).nodeName() != "start" &&
- attribs.item(i).nodeName() != "end"
- )
- map[attribs.item(i).nodeName()] = attribs.item(i).nodeValue();
+ QDomNamedNodeMap atts = attribs.item(i).attributes();
+ if (!atts.namedItem("value").nodeValue().isEmpty()) {
+ map[atts.namedItem("name").nodeValue()] = atts.namedItem("value").nodeValue();
+ } else {
+ map[atts.namedItem("name").nodeValue()] = atts.namedItem("default").nodeValue();
+ }
+
}
//map["resource"] = "%luma12.pgm";
- kDebug() << "---- ADDING transition " << e.attribute("type") << ", on tracks " << m_tracksList.count() - e.attribute("transition_track").toInt() << " / " << getPreviousVideoTrack(e.attribute("transition_track").toInt());
- m_document->renderer()->mltAddTransition(e.attribute("type"), getPreviousVideoTrack(e.attribute("transition_track").toInt()), m_tracksList.count() - e.attribute("transition_track").toInt() ,
+ kDebug() << "---- ADDING transition " << e.attribute("tag") << ", on tracks " << m_tracksList.count() - e.attribute("transition_track").toInt() << " / " << getPreviousVideoTrack(e.attribute("transition_track").toInt());
+ m_document->renderer()->mltAddTransition(e.attribute("tag"), getPreviousVideoTrack(e.attribute("transition_track").toInt()), m_tracksList.count() - e.attribute("transition_track").toInt() ,
GenTime(e.attribute("start").toInt(), m_document->renderer()->fps()),
GenTime(e.attribute("end").toInt(), m_document->renderer()->fps()),
map);
void CustomTrackView::deleteTransition(int, GenTime, QDomElement e) {
QMap < QString, QString> map;
QDomNamedNodeMap attribs = e.attributes();
- m_document->renderer()->mltDeleteTransition(e.attribute("type"), getPreviousVideoTrack(e.attribute("transition_track").toInt()), m_tracksList.count() - e.attribute("transition_track").toInt() ,
+ m_document->renderer()->mltDeleteTransition(e.attribute("tag"), getPreviousVideoTrack(e.attribute("transition_track").toInt()), m_tracksList.count() - e.attribute("transition_track").toInt() ,
GenTime(e.attribute("start").toInt(), m_document->renderer()->fps()),
GenTime(e.attribute("end").toInt(), m_document->renderer()->fps()),
map);
transition.save(tx, 2);
kDebug() << "in" << s;
QMap < QString, QString> map;
- QDomNamedNodeMap attribs = transition.attributes();
+
+ QDomNodeList attribs = transition.elementsByTagName("parameter");
for (int i = 0;i < attribs.count();i++) {
- if (attribs.item(i).nodeName() != "type" &&
- attribs.item(i).nodeName() != "start" &&
- attribs.item(i).nodeName() != "end"
- )
- map[attribs.item(i).nodeName()] = attribs.item(i).nodeValue();
+ QDomNamedNodeMap atts = attribs.item(i).attributes();
+ if (!atts.namedItem("value").nodeValue().isEmpty()) {
+ map[atts.namedItem("name").nodeValue()] = atts.namedItem("value").nodeValue();
+ } else {
+ map[atts.namedItem("name").nodeValue()] = atts.namedItem("default").nodeValue();
+ }
+
}
- m_document->renderer()->mltUpdateTransition(oldTransition.attribute("type"), transition.attribute("type"), m_tracksList.count() - 1 - transition.attribute("transition_track").toInt(), m_tracksList.count() - transition.attribute("transition_track").toInt() ,
+ m_document->renderer()->mltUpdateTransition(oldTransition.attribute("tag"), transition.attribute("tag"), m_tracksList.count() - 1 - transition.attribute("transition_track").toInt(), m_tracksList.count() - transition.attribute("transition_track").toInt() ,
GenTime(transition.attribute("start").toInt(), m_document->renderer()->fps()),
GenTime(transition.attribute("end").toInt(), m_document->renderer()->fps()),
map);
transitions->append(ret.documentElement());
//kDebug() << ret.toString();
} else {
-
+ QDomDocument ret;
+ QDomElement ktrans = ret.createElement("ktransition");
+ ret.appendChild(ktrans);
+ ktrans.setAttribute("tag", name);
+ QDomElement tname = ret.createElement("name");
if (name == "luma") {
- QDomDocument ret;
- QDomElement ktrans = ret.createElement("ktransition");
- ret.appendChild(ktrans);
- ktrans.setAttribute("tag", name);
- QDomElement tname = ret.createElement("name");
tname.appendChild(ret.createTextNode("Luma"));
- ktrans.appendChild(tname);
- transitions->append(ret.documentElement());
-
- QDomDocument ret1;
- QDomElement ktrans1 = ret1.createElement("ktransition");
- ret1.appendChild(ktrans1);
- ktrans1.setAttribute("tag", name);
- QDomElement tname1 = ret.createElement("name");
- tname1.appendChild(ret1.createTextNode("Lumafile"));
- ktrans1.appendChild(tname1);
QString path(mlt_environment("MLT_DATA"));
path.append("/lumas/").append(mlt_environment("MLT_NORMALISATION"));
kDebug() << "luma:" << entries.get(i);
}
-
-
- transitions->append(ret1.documentElement());
} else if (name == "composite") {
- QDomDocument ret;
- QDomElement ktrans = ret.createElement("ktransition");
- ret.appendChild(ktrans);
- ktrans.setAttribute("tag", name);
- QDomElement tname = ret.createElement("name");
+
tname.appendChild(ret.createTextNode("Composite"));
- ktrans.appendChild(tname);
- transitions->append(ret.documentElement());
QDomDocument ret1;
QDomElement ktrans1 = ret1.createElement("ktransition");
ktrans1.setAttribute("tag", name);
QDomElement tname1 = ret.createElement("name");
tname1.appendChild(ret1.createTextNode("PIP"));
- ktrans1.appendChild(tname1);
- transitions->append(ret1.documentElement());
+
} else if (name == "mix") {
- QDomDocument ret;
- QDomElement ktrans = ret.createElement("ktransition");
- ret.appendChild(ktrans);
- ktrans.setAttribute("tag", name);
- QDomElement tname = ret.createElement("name");
tname.appendChild(ret.createTextNode("Mix"));
- ktrans.appendChild(tname);
- transitions->append(ret.documentElement());
} else if (name == "affine") {
- QDomDocument ret;
- QDomElement ktrans = ret.createElement("ktransition");
- ret.appendChild(ktrans);
- ktrans.setAttribute("tag", name);
- QDomElement tname = ret.createElement("name");
tname.appendChild(ret.createTextNode("Affine"));
- ktrans.appendChild(tname);
- transitions->append(ret.documentElement());
} else if (name == "region") {
- QDomDocument ret;
- QDomElement ktrans = ret.createElement("ktransition");
- ret.appendChild(ktrans);
- ktrans.setAttribute("tag", name);
- QDomElement tname = ret.createElement("name");
tname.appendChild(ret.createTextNode("Region"));
- ktrans.appendChild(tname);
- transitions->append(ret.documentElement());
}
+ QDomElement parameter = ret.createElement("parameter");
+ parameter.setAttribute("tag", "reverse");
+ parameter.setAttribute("default", "0");
+ parameter.setAttribute("type", "bool");
+ parameter.setAttribute("name", "reverse");
+ QDomElement pname = ret.createElement("name");
+ pname.appendChild(ret.createTextNode("Reverse Transition"));
+ parameter.appendChild(pname);
+
+ ktrans.appendChild(tname);
+ ktrans.appendChild(parameter);
+ transitions->append(ret.documentElement());
}
/*
m_secondClip = 0;
setFlags(QGraphicsItem::ItemClipsToShape | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
setZValue(2);
+
+ QDomDocument doc;
+ doc.setContent(QString("<ktransition tag=\"luma\">\n\
+ <name>Luma</name>\n\
+ <description>Luma Transitions</description>\n\
+ <properties id=\"luma\" tag=\"luma\" />\n\
+ <parameter type=\"bool\" name=\"reverse\" max=\"1\" min=\"0\" default=\"1\" factor=\"1\">\n\
+ <name>Reverse</name>\n\
+ </parameter>\n\
+ </ktransition>"));
+ m_transitionParameters = doc.documentElement();
+
m_referenceClip->addTransition(this);
}
params[paramElement.tagName()] = paramElement.attribute("value", QString::null);
}
if (m_invertTransition) params["reverse"] = "1";
- if (!params.isEmpty()) setTransitionParameters(params);
+ //if (!params.isEmpty()) setTransitionParameters(params);
// Check if transition is valid (not outside of clip)
if (m_transitionStart > clip->duration())
return m_transitionName;
}
-void Transition::setTransitionParameters(const QMap < QString, QString > parameters) {
- m_transitionParameters = parameters;
-}
-
-const QMap < QString, QString > Transition::transitionParameters() const {
- return m_transitionParameters;
+void Transition::setTransitionParameters(const QDomElement & elem) {
+ m_transitionParameters = elem;
}
bool Transition::invertTransition() const {
}
QDomElement Transition::toXML() {
- QDomDocument doc;
- QDomElement effect = doc.createElement("ktransition");
- effect.setAttribute("type", m_transitionName);
- effect.setAttribute("inverted", invertTransition());
- effect.setAttribute("transition_track", m_transitionTrack);
- effect.setAttribute("start", transitionStartTime().frames(m_referenceClip->fps()));
- effect.setAttribute("end", transitionEndTime().frames(m_referenceClip->fps()));
+ m_transitionParameters.setAttribute("type", m_transitionName);
+ //m_transitionParameters.setAttribute("inverted", invertTransition());
+ m_transitionParameters.setAttribute("transition_track", m_transitionTrack);
+ m_transitionParameters.setAttribute("start", transitionStartTime().frames(m_referenceClip->fps()));
+ m_transitionParameters.setAttribute("end", transitionEndTime().frames(m_referenceClip->fps()));
if (m_secondClip) {
- effect.setAttribute("clipb_starttime", m_secondClip->startPos().frames(m_referenceClip->fps()));
- effect.setAttribute("clipb_track", transitionEndTrack());
+ m_transitionParameters.setAttribute("clipb_starttime", m_secondClip->startPos().frames(m_referenceClip->fps()));
+ m_transitionParameters.setAttribute("clipb_track", transitionEndTrack());
}
- QMap<QString, QString>::Iterator it;
- for (it = m_transitionParameters.begin(); it != m_transitionParameters.end(); ++it) {
- QDomElement param = doc.createElement(it.key());
- param.setAttribute("value", it.value());
- effect.appendChild(param);
- }
+ /* QMap<QString, QString>::Iterator it;
+ for (it = m_transitionParameters.begin(); it != m_transitionParameters.end(); ++it) {
+ QDomElement param = doc.createElement(it.key());
+ param.setAttribute("value", it.value());
+ effect.appendChild(param);
+ }*/
- return effect;
+ return m_transitionParameters;
}
QString transitionName() const;
OPERATIONTYPE operationMode(QPointF pos, double scale);
void setTransitionType(QString newType);
- const QMap < QString, QString > transitionParameters() const;
- void setTransitionParameters(const QMap < QString, QString > parameters);
+ //const QMap < QString, QString > transitionParameters() const;
+ void setTransitionParameters(const QDomElement&);
void setTransitionDirection(bool inv);
int transitionTrack() const;
void setTransitionTrack(int track);
GenTime m_transitionStart;
GenTime m_transitionDuration;
- QMap < QString, QString > m_transitionParameters;
+ QDomElement m_transitionParameters;
/** The name of the transition to be displayed to user */
QString m_transitionName;
void TransitionSettings::slotTransitionChanged() {
QDomElement e = m_usedTransition->toXML();
- QDomElement newElement = e.cloneNode().toElement();
+ //set old values from e in <ktransition> to desc (like reverse and so )
QDomElement desc = m_transitions->getEffectByName(ui.listWidget->currentItem()->text());
-
- newElement.setAttribute("type", desc.attribute("tag"));
- newElement.setAttribute("invert", "1");
-
- emit transitionUpdated(e, newElement);
+ if (m_usedTransition)
+ m_usedTransition->setTransitionParameters(desc);
+ emit transitionUpdated(e, desc);
emit transferParamDesc(desc, 0, 0);
}
void TransitionSettings::slotTransitionItemSelected(Transition* t) {
setEnabled(t != NULL);
m_usedTransition = t;
+
}
void TransitionSettings::slotUpdateEffectParams(const QDomElement& oldparam, const QDomElement& param) {
- //emit transitionUpdated(oldparam, param);
-}
\ No newline at end of file
+ emit transitionUpdated(oldparam, param);
+}