[pitivi] elements: Make sure the line remains straight when adding a keyframe when clicked



commit 0ff3bae5cebfac877fb4a567703e6b00ddd1bd1c
Author: Alexandru Băluț <alexandru balut gmail com>
Date:   Sat Mar 1 14:59:41 2014 +0100

    elements: Make sure the line remains straight when adding a keyframe when clicked
    
    Fixes https://bugzilla.gnome.org/show_bug.cgi?id=711168

 pitivi/timeline/elements.py |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)
---
diff --git a/pitivi/timeline/elements.py b/pitivi/timeline/elements.py
index dc4132e..cead1c0 100644
--- a/pitivi/timeline/elements.py
+++ b/pitivi/timeline/elements.py
@@ -774,13 +774,21 @@ class Line(Clutter.Actor):
         if self.gotDragged:
             self.gotDragged = False
             return
-        x, y = self.transposeXY(event.x, event.y)
-        value = 1.0 - (y / EXPANDED_SIZE)
-        value = max(0.0, value)
-        value = min(1.0, value)
+        x, unused_y = self.transposeXY(event.x, event.y)
         timestamp = Zoomable.pixelToNs(x)
+        value = self._valueAtTimestamp(timestamp)
         self.timelineElement.addKeyframe(value, timestamp)
 
+    def _valueAtTimestamp(self, timestamp):
+        timestamp_left = self.previousKeyframe.value.timestamp
+        value_left = self.previousKeyframe.value.value
+        timestamp_right = self.nextKeyframe.value.timestamp
+        value_right = self.nextKeyframe.value.value
+        height = value_right - value_left
+        duration = timestamp_right - timestamp_left
+        value = value_right - (timestamp_right - timestamp) * height / duration
+        return max(0.0, min(value, 1.0))
+
     def _enterEventCb(self, unused_actor, unused_event):
         self.timelineElement.set_reactive(False)
         self.timelineElement.timeline._container.embed.get_window().set_cursor(DRAG_CURSOR)


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