]> git.sesse.net Git - kdenlive/commitdiff
name on transition and update on change
authorMarco Gittler <marco@gitma.de>
Mon, 24 Mar 2008 12:17:29 +0000 (12:17 +0000)
committerMarco Gittler <marco@gitma.de>
Mon, 24 Mar 2008 12:17:29 +0000 (12:17 +0000)
simplify transition parameters
use params with factors

svn path=/branches/KDE4/; revision=2113

src/customtrackview.cpp
src/initeffects.cpp
src/initeffects.h
src/renderer.cpp
src/renderer.h
src/transition.cpp
src/transitionsettings.cpp

index be7920659d71ae1b3694d38d9156746bfb8a2b0f..f8e464b6c18aed28cc0044ef32755e5a30d642d1 100644 (file)
@@ -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);
 }
index 29a2b6924f597c01069fd010b48779d75de6c4d9..bc70a1c40a15618764bc49eb15c8891581c79b8b 100644 (file)
@@ -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);
index 4bd9f3ca7842ae624d7664e297f1fd32b3e9632e..0c8df42a84d143ce61b632b52c39d1927716337e 100644 (file)
@@ -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);
index ba3932aa287dcfdd6cfd552c40068dc9ec4cf24e..6b8863a0d48a47716a2f569adfe2f753bc6cad54 100644 (file)
@@ -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 <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();
 }
 
@@ -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 <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) {
@@ -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 <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) {
@@ -1469,9 +1486,9 @@ void Render::mltAddTransition(QString tag, int a_track, int b_track, GenTime in,
         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());
index 8092e1f0ff6f2ac46d0648d312d6f1370a45f13a..496c67ece2f8332683be915a9c05e6a2e17e3639 100644 (file)
@@ -156,9 +156,9 @@ Q_OBJECT public:
     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
index 4ad7e5769bb6e5fac4ea7cae1975aa591248aaa5..f7712fe24dcbcc905147737db6354c83231c8c10 100644 (file)
@@ -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<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;
 }
 
index 8ee01b889389b023e0beee3030317742bdcd5a1d..5d6af62ff7178e44ffab30dcd9cbdaab6680869d 100644 (file)
@@ -39,10 +39,13 @@ void TransitionSettings::slotTransitionChanged() {
 
     //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) {