]> git.sesse.net Git - kdenlive/commitdiff
Allow to modify an effect
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 20 Feb 2008 22:53:56 +0000 (22:53 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 20 Feb 2008 22:53:56 +0000 (22:53 +0000)
svn path=/branches/KDE4/; revision=1892

src/clipitem.cpp
src/clipitem.h
src/customtrackview.cpp
src/customtrackview.h
src/renderer.cpp
src/renderer.h

index 969bf5ec92848b5643c3bf37f3237835608b06cd..0bc7a5e9fca9f694e91a2f755e82fde0d218c1b5 100644 (file)
@@ -507,6 +507,20 @@ QMap <QString, QString> ClipItem::addEffect(QDomElement effect)
   return effectParams;
 }
 
+QMap <QString, QString> ClipItem::getEffectArgs(QDomElement effect)
+{
+  QMap <QString, QString> effectParams;
+  effectParams["kdenlive_ix"] = effect.attribute("kdenlive_ix");
+  effectParams["tag"] = effect.attribute("tag");
+  QDomNodeList params = effect.elementsByTagName("parameter");
+  for (int i = 0; i < params.count(); i++) {
+    QDomElement e = params.item(i).toElement();
+    if (!e.isNull())
+      effectParams[e.attribute("name")] = e.attribute("value");
+  }
+  return effectParams;
+}
+
 void ClipItem::deleteEffect(QString tag)
 {
   for (int i = 0; i < m_effectList.size(); ++i) {
index 51bbb320fff4000b8a9fdd8b615d5794d6a74edc..f938d93f266167dca4cbfa1498bf433e209e1f46 100644 (file)
@@ -64,6 +64,7 @@ class ClipItem : public QObject, public QGraphicsRectItem
     void setFadeIn(int pos, double scale);
     QStringList effectNames();
     QMap <QString, QString> addEffect(QDomElement effect);
+    QMap <QString, QString> getEffectArgs(QDomElement effect);
     void deleteEffect(QString tag);
     int effectsCount();
     QDomElement effectAt(int ix);
index 07c4541171d586bb3a06849cf484ac5ea32e3442..fc84608d5dfbd4706811dab170c553bf843e201a 100644 (file)
@@ -370,6 +370,14 @@ void CustomTrackView::slotDeleteEffect(ClipItem *clip, QDomElement effect)
   m_commandStack->push(command);
 }
 
+
+void CustomTrackView::slotUpdateClipEffect(ClipItem *clip, QDomElement effect)
+{
+    QMap <QString, QString> effectParams = clip->getEffectArgs(effect);
+    m_document->renderer()->mltEditEffect(m_tracksCount - clip->track(), GenTime(clip->startPos(), m_document->fps()), effectParams);
+}
+
+
 void CustomTrackView::addItem(DocClipBase *clip, QPoint pos)
 {
   int in =0;
index b29a64c20c360d23a4650811bb41e77a6a559dee..9bee0bb4ba40aa44445aaf5e90fe0e2ba0e4666d 100644 (file)
@@ -56,6 +56,8 @@ class CustomTrackView : public QGraphicsView
 
   public slots:
     void setCursorPos(int pos, bool seek = true);
+    void slotDeleteEffect(ClipItem *clip, QDomElement effect);
+    void slotUpdateClipEffect(ClipItem *clip, QDomElement effect);
 
   protected:
     virtual void drawBackground ( QPainter * painter, const QRectF & rect );
@@ -92,7 +94,7 @@ class CustomTrackView : public QGraphicsView
     void updateSnapPoints(ClipItem *selected);
     double getSnapPointForPos(double pos);
     ClipItem *getClipItemAt(int pos, int track);
-    void slotDeleteEffect(ClipItem *clip, QDomElement effect);
+
 
   signals:
     void cursorMoved(int);
index c651177eb8696e02a4f38caab8cb4f062f2eca4b..8940a270bb573f17d7e36c1727e88e8aa339d22b 100644 (file)
@@ -1099,13 +1099,15 @@ void Render::mltAddEffect(int track, GenTime position, QMap <QString, QString> a
 
 }
 
-void Render::mltEditEffect(int track, GenTime position, int index, QString id, QString tag, QMap <QString, QString> args)
+void Render::mltEditEffect(int track, GenTime position, QMap <QString, QString> args)
 {
+    QString index = args.value("kdenlive_ix");
+    QString tag =  args.value("tag");
     QMap<QString, QString>::Iterator it = args.begin();
     if (it.key().startsWith("#") || tag.startsWith("ladspa") || tag == "sox" || tag == "autotrack_rectangle") {
        // This is a keyframe effect, to edit it, we remove it and re-add it.
-       //mltRemoveEffect(track, position, tag, -1);
-       //mltAddEffect(track, position, tag, args);
+       mltRemoveEffect(track, position,index);
+       mltAddEffect(track, position, args);
        return;
     }
     m_isBlocked = true;
@@ -1123,27 +1125,16 @@ void Render::mltEditEffect(int track, GenTime position, int index, QString id, Q
       return;
     }
     Mlt::Service clipService(clip->get_service());
-    Mlt::Filter *filter = clipService.filter( index );
+    Mlt::Filter *filter = clipService.filter( index.toInt() );
 
-
-    if (!filter || filter->get("mlt_service") != tag) {
-       kDebug()<<"WARINIG, FILTER NOT FOUND!!!!!";
-       int index = 0;
-       filter = clipService.filter( index );
-       while (filter) {
-           if (filter->get("mlt_service") == tag && filter->get("kdenlive_id") == id) break;
-           index++;
-           filter = clipService.filter( index );
-       }
-    }
     if (!filter) {
-       kDebug()<<"WARINIG, FILTER "<<id<<" NOT FOUND!!!!!";
+       kDebug()<<"WARINIG, FILTER NOT FOUND!!!!!";
        m_isBlocked = false;
        return;
     }
 
     for ( it = args.begin(); it != args.end(); ++it ) {
-    kDebug()<<" / / INSERTING EFFECT ARGS: "<<it.key()<<": "<<it.value();
+    kDebug()<<" / / EDITING EFFECT ARGS: "<<it.key()<<": "<<it.value();
         char *name = decodedString(it.key());
         char *value = decodedString(it.value());
         filter->set(name, value);
index a1f69ffaadc1b3231acb2d014c6f1855353f20f3..b2cdaa7bcf17d8c0f859ab4b3ce527b76a811902 100644 (file)
@@ -158,7 +158,7 @@ class Render:public QObject {
     void mltRemoveClip(int track, GenTime position);
     void mltRemoveEffect(int track, GenTime position, QString index);
     void mltAddEffect(int track, GenTime position, QMap <QString, QString> args);
-    void mltEditEffect(int track, GenTime position, int index, QString id, QString tag, QMap <QString, QString> args);
+    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);