}
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;
-
- QDomNodeList attribs = e.elementsByTagName("parameter");
- for (int i = 0;i < attribs.count();i++) {
- 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("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);
+ e);
m_document->setModified(true);
}
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);
+ e);
m_document->setModified(true);
}
}
void CustomTrackView::updateTransition(int track, GenTime pos, QDomElement oldTransition, QDomElement transition) {
- QString s;
- QTextStream tx(&s);
- transition.save(tx, 2);
- kDebug() << "in" << s;
- QMap < QString, QString> map;
- QDomNodeList attribs = transition.elementsByTagName("parameter");
- for (int i = 0;i < attribs.count();i++) {
- 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("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);
+ transition);
repaint();
m_document->setModified(true);
}
imagefiles.append(",");
imagefiles.append(entries.get(i));
}
- paramList.append(quickParameterFill(ret, "Softness", "softness", "double", "0", "0", "360"));
+ paramList.append(quickParameterFill(ret, "Softness", "softness", "double", "0", "0", "100", "", "100"));
paramList.append(quickParameterFill(ret, "Invert", "invert", "bool", "0", "0", "1"));
paramList.append(quickParameterFill(ret, "ImageFile", "resource", "list", "", "", "", imagefiles));
*/
}
}
-QDomElement initEffects::quickParameterFill(QDomDocument & doc, QString name, QString tag, QString type, QString def, QString min, QString max, QString list) {
+QDomElement initEffects::quickParameterFill(QDomDocument & doc, QString name, QString tag, QString type, QString def, QString min, QString max, QString list, QString factor) {
QDomElement parameter = doc.createElement("parameter");
parameter.setAttribute("tag", tag);
parameter.setAttribute("default", def);
parameter.setAttribute("min", min);
if (!list.isEmpty())
parameter.setAttribute("paramlist", list);
+ if (!factor.isEmpty())
+ parameter.setAttribute("factor", factor);
QDomElement pname = doc.createElement("name");
pname.appendChild(doc.createTextNode(name));
parameter.appendChild(pname);
static Mlt::Repository *parseEffectFiles(EffectsList *audioEffectList, EffectsList *videoEffectList, EffectsList *transitions);
static QDomDocument createDescriptionFromMlt(Mlt::Repository* repository, const QString& type, const QString& name);
static void fillTransitionsList(Mlt::Repository *, EffectsList* transitions, QStringList names);
- static QDomElement quickParameterFill(QDomDocument & doc, QString name, QString tag, QString type, QString def = QString(), QString min = QString(), QString max = QString());
+ static QDomElement quickParameterFill(QDomDocument & doc, QString name, QString tag, QString type, QString def = QString(), QString min = QString(), QString max = QString(), QString list = QString(), QString factor = QString());
static void parseEffectFile(EffectsList *audioEffectList, EffectsList *videoEffectList, QString name, QStringList filtersList, QStringList producersList);
static char* ladspaEffectString(int ladspaId, QStringList params);
static void ladspaEffectFile(const QString & fname, int ladspaId, QStringList params);
m_isBlocked = false;
}
-void Render::mltUpdateTransition(QString oldTag, QString tag, int a_track, int b_track, GenTime in, GenTime out, QMap <QString, QString> args) {
+void Render::mltUpdateTransition(QString oldTag, QString tag, int a_track, int b_track, GenTime in, GenTime out, QDomElement xml) {
kDebug() << "update transition" << tag;
- mltDeleteTransition(oldTag, a_track, b_track, in, out, args, false);
- mltAddTransition(tag, a_track, b_track, in, out, args);
+ mltDeleteTransition(oldTag, a_track, b_track, in, out, xml, false);
+ mltAddTransition(tag, a_track, b_track, in, out, xml);
mltSavePlaylist();
}
kDebug() << "newTractor inserted";
}
-void Render::mltDeleteTransition(QString tag, int a_track, int b_track, GenTime in, GenTime out, QMap <QString, QString> args, bool do_refresh) {
+void Render::mltDeleteTransition(QString tag, int a_track, int b_track, GenTime in, GenTime out, QDomElement xml, bool do_refresh) {
Mlt::Tractor *tractor = getTractor();
if (tractor) {
}
-void Render::mltAddTransition(QString tag, int a_track, int b_track, GenTime in, GenTime out, QMap <QString, QString> args, bool do_refresh) {
+void Render::mltAddTransition(QString tag, int a_track, int b_track, GenTime in, GenTime out, QDomElement xml, bool do_refresh) {
+
+ QDomNodeList attribs = xml.elementsByTagName("parameter");
+ QMap<QString, QString> map;
+ for (int i = 0;i < attribs.count();i++) {
+ QDomNamedNodeMap atts = attribs.item(i).attributes();
+ QString name = atts.namedItem("name").nodeValue();
+ map[name] = atts.namedItem("default").nodeValue();
+ if (!atts.namedItem("value").nodeValue().isEmpty()) {
+ map[name] = atts.namedItem("value").nodeValue();
+ }
+ if (!atts.namedItem("factor").nodeValue().isEmpty() && atts.namedItem("factor").nodeValue().toDouble() > 0) {
+ map[name] = QString::number(map[name].toDouble() / atts.namedItem("factor").nodeValue().toDouble());
+ //map[name]=map[name].replace(".",","); //FIXME how to solve locale conversion of . ,
+ }
+
+
+ }
Mlt::Tractor *tractor = getTractor();
if (tractor) {
QMap<QString, QString>::Iterator it;
QString key;
- kDebug() << " ------ ADDING TRANSITION PARAMs: " << args.count();
+ kDebug() << " ------ ADDING TRANSITION PARAMs: " << map.count();
- for (it = args.begin(); it != args.end(); ++it) {
+ for (it = map.begin(); it != map.end(); ++it) {
key = it.key();
char *name = decodedString(key);
char *value = decodedString(it.value());
void mltEditEffect(int track, GenTime position, QMap <QString, QString> args);
void mltChangeTrackState(int track, bool mute, bool blind);
void mltMoveTransition(QString type, int startTrack, int trackOffset, GenTime oldIn, GenTime oldOut, GenTime newIn, GenTime newOut);
- void mltAddTransition(QString tag, int a_track, int b_track, GenTime in, GenTime out, QMap <QString, QString> args, bool refresh = true);
- void mltDeleteTransition(QString tag, int a_track, int b_track, GenTime in, GenTime out, QMap <QString, QString> args, bool refresh = true);
- void mltUpdateTransition(QString oldTag, QString tag, int a_track, int b_track, GenTime in, GenTime out, QMap <QString, QString> args);
+ void mltAddTransition(QString tag, int a_track, int b_track, GenTime in, GenTime out, QDomElement xml, bool refresh = true);
+ void mltDeleteTransition(QString tag, int a_track, int b_track, GenTime in, GenTime out, QDomElement xml, bool refresh = true);
+ void mltUpdateTransition(QString oldTag, QString tag, int a_track, int b_track, GenTime in, GenTime out, QDomElement xml);
private: // Private attributes & methods
painter->setClipRect(option->exposedRect);
painter->drawPixmap((int)(br.x() + 10), (int)(br.y() + 10), transitionPixmap());
painter->drawPath(resultClipPath.intersected(clippath));
-
+ painter->setPen(QColor(0, 0, 0, 180));
+ painter->drawText((int)br.x() + 31, (int)br.y() + 21, transitionName());
+ painter->setPen(QColor(255, 255, 255, 180));
+ painter->drawText((int)br.x() + 30, (int)br.y() + 20, transitionName());
QPen pen = painter->pen();
if (isSelected()) {
pen.setColor(Qt::red);
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);
- }*/
-
return m_transitionParameters;
}
//set old values from e in <ktransition> to desc (like reverse and so )
QDomElement desc = m_transitions->getEffectByName(ui.listWidget->currentItem()->text());
- if (m_usedTransition)
+ if (m_usedTransition) {
m_usedTransition->setTransitionParameters(desc);
+ m_usedTransition->update();
+ }
emit transitionUpdated(e, m_usedTransition->toXML());
emit transferParamDesc(desc, 0, 0);
+
}
void TransitionSettings::slotTransitionItemSelected(Transition* t) {