[pitivi] Fix trimStart to take into account the in_point.



commit d6516838deb6e25207264c1e3fa139088752a130
Author: Alessandro Decina <alessandro d gmail com>
Date:   Fri Jul 10 12:07:24 2009 +0200

    Fix trimStart to take into account the in_point.

 pitivi/timeline/timeline.py |    4 ++--
 pitivi/timeline/track.py    |    9 ++++-----
 tests/test_track.py         |   15 ++++++++-------
 3 files changed, 14 insertions(+), 14 deletions(-)
---
diff --git a/pitivi/timeline/timeline.py b/pitivi/timeline/timeline.py
index 0b5ee56..40573dd 100644
--- a/pitivi/timeline/timeline.py
+++ b/pitivi/timeline/timeline.py
@@ -181,8 +181,8 @@ class TimelineObject(Signallable, Loggable):
         if snap:
             position = self.timeline.snapToEdge(position)
 
-        trimmed_start = self.track_objects[0].trimmed_start
-        position = min(position, self.factory.duration - trimmed_start)
+        position = min(position, self.factory.duration -
+                self.track_objects[0].in_point)
 
         for track_object in self.track_objects:
             track_object.setObjectDuration(position)
diff --git a/pitivi/timeline/track.py b/pitivi/timeline/track.py
index 157a182..526a2f1 100644
--- a/pitivi/timeline/track.py
+++ b/pitivi/timeline/track.py
@@ -280,7 +280,6 @@ class TrackObject(Signallable, Loggable):
         self.interpolators = {}
         self._rebuild_interpolators = True
         self.gnl_object = obj = self._makeGnlObject()
-        self.trimmed_start = 0
         self.keyframes = []
 
         if start != 0:
@@ -362,7 +361,6 @@ class TrackObject(Signallable, Loggable):
         other = cls(self.factory, self.stream, start=self.start,
             duration=self.duration, in_point=self.in_point,
             media_duration=self.media_duration, priority=self.priority)
-        other.trimmed_start = self.trimmed_start
 
         if self.track is not None:
             self.track.addTrackObject(other)
@@ -483,15 +481,16 @@ class TrackObject(Signallable, Loggable):
 
     def trimObjectStart(self, position):
         # clamp position to be inside the object
-        position = max(self.start - self.trimmed_start, position)
+        position = max(self.start - self.in_point, position)
         position = min(position, self.start + self.duration)
         new_duration = max(0, self.start + self.duration - position)
 
         delta = position - self.start
-        self.trimmed_start += delta
+        in_point = self.in_point
+        in_point += delta
         self.setObjectStart(position)
         self.setObjectDuration(new_duration)
-        self.setObjectInPoint(self.trimmed_start)
+        self.setObjectInPoint(in_point)
         self.setObjectMediaDuration(new_duration)
 
     def split(self, position, snap=False):
diff --git a/tests/test_track.py b/tests/test_track.py
index 0d04798..2dee1f0 100644
--- a/tests/test_track.py
+++ b/tests/test_track.py
@@ -147,6 +147,7 @@ class TestTrackObject(TestCase):
 
         # start at 2 seconds with length 10 seconds
         obj.start = 2 * gst.SECOND
+        obj.in_point = 1 * gst.SECOND
         obj.duration = 10 * gst.SECOND
 
         self.failUnlessEqual(self.monitor.duration_changed_count, 1)
@@ -156,7 +157,7 @@ class TestTrackObject(TestCase):
         time = 2 * gst.SECOND
         obj.trimStart(time)
         self.failUnlessEqual(obj.start, time)
-        self.failUnlessEqual(obj.in_point, 0)
+        self.failUnlessEqual(obj.in_point, 1 * gst.SECOND)
         self.failUnlessEqual(obj.duration, 10 * gst.SECOND)
         self.failUnlessEqual(obj.rate, 1)
         # we didn't change the start/in-point/duration (it was the same as before)
@@ -169,7 +170,7 @@ class TestTrackObject(TestCase):
         time = 12 * gst.SECOND
         obj.trimStart(time)
         self.failUnlessEqual(obj.start, time)
-        self.failUnlessEqual(obj.in_point, 10 * gst.SECOND)
+        self.failUnlessEqual(obj.in_point, 11 * gst.SECOND)
         self.failUnlessEqual(obj.duration, 0)
         self.failUnlessEqual(obj.rate, 1)
         self.failUnlessEqual(monitor.start_changed_count, 1)
@@ -178,11 +179,11 @@ class TestTrackObject(TestCase):
 
         # trim before lower edge, should clamp
         monitor = TrackSignalMonitor(obj)
-        time = 1 * gst.SECOND
+        time = 0 * gst.SECOND
         obj.trimStart(time)
-        self.failUnlessEqual(obj.start, 2 * gst.SECOND)
+        self.failUnlessEqual(obj.start, 1 * gst.SECOND)
         self.failUnlessEqual(obj.in_point, 0)
-        self.failUnlessEqual(obj.duration, 10 * gst.SECOND)
+        self.failUnlessEqual(obj.duration, 11 * gst.SECOND)
         self.failUnlessEqual(obj.rate, 1)
         self.failUnlessEqual(monitor.start_changed_count, 1)
         self.failUnlessEqual(monitor.in_point_changed_count, 1)
@@ -193,7 +194,7 @@ class TestTrackObject(TestCase):
         time = 13 * gst.SECOND
         obj.trimStart(time)
         self.failUnlessEqual(obj.start, 12 * gst.SECOND)
-        self.failUnlessEqual(obj.in_point, 10 * gst.SECOND)
+        self.failUnlessEqual(obj.in_point, 11 * gst.SECOND)
         self.failUnlessEqual(obj.duration, 0)
         self.failUnlessEqual(obj.rate, 1)
         self.failUnlessEqual(monitor.start_changed_count, 1)
@@ -205,7 +206,7 @@ class TestTrackObject(TestCase):
         time = 4 * gst.SECOND
         obj.trimStart(time)
         self.failUnlessEqual(obj.start, time)
-        self.failUnlessEqual(obj.in_point, 2 * gst.SECOND)
+        self.failUnlessEqual(obj.in_point, 3 * gst.SECOND)
         self.failUnlessEqual(obj.duration, 8 * gst.SECOND)
         self.failUnlessEqual(obj.rate, 1)
         self.failUnlessEqual(monitor.start_changed_count, 1)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]