]> git.sesse.net Git - kdenlive/commitdiff
Fix in / out points for effects with some images (negative in points). at some point...
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 22 Jun 2010 21:13:54 +0000 (21:13 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 22 Jun 2010 21:13:54 +0000 (21:13 +0000)
svn path=/trunk/kdenlive/; revision=4541

src/clipitem.cpp
src/customtrackview.cpp

index 5f1c6686b87d2894131a81b2f87bc4c3c9dfb659..f3a3babab39b555d59972190935b49174155802a 100644 (file)
@@ -316,7 +316,7 @@ bool ClipItem::checkKeyFrames()
         bool effModified = false;
 
         // go through all params which have keyframes
-        foreach (const QString &kfr, keyframeParams) {
+        foreach(const QString &kfr, keyframeParams) {
             const QStringList keyframes = kfr.split(';', QString::SkipEmptyParts);
             QStringList newKeyFrames;
             bool cutKeyFrame = false;
@@ -1416,8 +1416,14 @@ EffectsParameterList ClipItem::addEffect(const QDomElement effect, bool /*animat
 
     // special case: the affine effect need in / out points
     if (effectId == "pan_zoom") {
-        parameters.addParam("in", QString::number(cropStart().frames(m_fps)));
-        parameters.addParam("out", QString::number((cropStart() + cropDuration()).frames(m_fps)));
+        int start = cropStart().frames(m_fps);
+        int end = (cropStart() + cropDuration()).frames(m_fps);
+        if (start < 0) {
+            end -= start;
+            start = 0;
+        }
+        parameters.addParam("in", QString::number(start));
+        parameters.addParam("out", QString::number(end));
     }
 
     QDomNodeList params = effect.elementsByTagName("parameter");
index ac927aa36ff0cd06e0b21cad80c1893d7714b037..d16ea7fdb3e2ba73f38c3bb6b0f161d80ed061c6 100644 (file)
@@ -4294,6 +4294,10 @@ void CustomTrackView::updatePositionEffects(ClipItem * item, ItemInfo info)
         QDomElement oldeffect = item->effectAt(effectPos);
         int start = item->cropStart().frames(m_document->fps());
         int max = start + item->cropDuration().frames(m_document->fps());
+       if (start < 0) {
+           max -= start;
+           start = 0;
+       }
         oldeffect.setAttribute("in", start);
         oldeffect.setAttribute("out", max);
         if (!m_document->renderer()->mltEditEffect(m_document->tracksCount() - item->track(), item->startPos(), item->getEffectArgs(oldeffect)))