From: Marco Gittler Date: Mon, 24 Mar 2008 12:17:29 +0000 (+0000) Subject: name on transition and update on change X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=2ff4712fe3d190972379a5d4648430d7a3542d4c;p=kdenlive name on transition and update on change simplify transition parameters use params with factors svn path=/branches/KDE4/; revision=2113 --- diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index be792065..f8e464b6 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -554,28 +554,12 @@ void CustomTrackView::slotAddTransition(ClipItem* clip , QDomElement transition, } 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); } @@ -586,7 +570,7 @@ void CustomTrackView::deleteTransition(int, GenTime, QDomElement e) { 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); } @@ -597,26 +581,11 @@ void CustomTrackView::slotTransitionUpdated(QDomElement old, QDomElement newEffe } 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); } diff --git a/src/initeffects.cpp b/src/initeffects.cpp index 29a2b692..bc70a1c4 100644 --- a/src/initeffects.cpp +++ b/src/initeffects.cpp @@ -443,7 +443,7 @@ void initEffects::fillTransitionsList(Mlt::Repository * repository, EffectsList* 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)); @@ -499,7 +499,7 @@ void initEffects::fillTransitionsList(Mlt::Repository * repository, EffectsList* */ } } -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); @@ -509,6 +509,8 @@ QDomElement initEffects::quickParameterFill(QDomDocument & doc, QString name, QS 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); diff --git a/src/initeffects.h b/src/initeffects.h index 4bd9f3ca..0c8df42a 100644 --- a/src/initeffects.h +++ b/src/initeffects.h @@ -37,7 +37,7 @@ public: 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); diff --git a/src/renderer.cpp b/src/renderer.cpp index ba3932aa..6b8863a0 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -1387,11 +1387,11 @@ void Render::mltMoveTransition(QString type, int startTrack, int trackOffset, Ge m_isBlocked = false; } -void Render::mltUpdateTransition(QString oldTag, QString tag, int a_track, int b_track, GenTime in, GenTime out, QMap 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(); } @@ -1404,7 +1404,7 @@ void Render::replaceTimelineTractor(Mlt::Tractor t) { kDebug() << "newTractor inserted"; } -void Render::mltDeleteTransition(QString tag, int a_track, int b_track, GenTime in, GenTime out, QMap 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) { @@ -1454,7 +1454,24 @@ void Render::mltDeleteTransition(QString tag, int a_track, int b_track, GenTime } -void Render::mltAddTransition(QString tag, int a_track, int b_track, GenTime in, GenTime out, QMap 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 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) { @@ -1469,9 +1486,9 @@ void Render::mltAddTransition(QString tag, int a_track, int b_track, GenTime in, QMap::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()); diff --git a/src/renderer.h b/src/renderer.h index 8092e1f0..496c67ec 100644 --- a/src/renderer.h +++ b/src/renderer.h @@ -156,9 +156,9 @@ Q_OBJECT public: void mltEditEffect(int track, GenTime position, QMap 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 args, bool refresh = true); - void mltDeleteTransition(QString tag, int a_track, int b_track, GenTime in, GenTime out, QMap args, bool refresh = true); - void mltUpdateTransition(QString oldTag, QString tag, int a_track, int b_track, GenTime in, GenTime out, QMap 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 diff --git a/src/transition.cpp b/src/transition.cpp index 4ad7e576..f7712fe2 100644 --- a/src/transition.cpp +++ b/src/transition.cpp @@ -207,7 +207,10 @@ void Transition::paint(QPainter *painter, 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); @@ -299,14 +302,6 @@ QDomElement Transition::toXML() { m_transitionParameters.setAttribute("clipb_track", transitionEndTrack()); } - - /* QMap::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; } diff --git a/src/transitionsettings.cpp b/src/transitionsettings.cpp index 8ee01b88..5d6af62f 100644 --- a/src/transitionsettings.cpp +++ b/src/transitionsettings.cpp @@ -39,10 +39,13 @@ void TransitionSettings::slotTransitionChanged() { //set old values from e in 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) {