summaryrefslogtreecommitdiff
path: root/rust/crates/timeline/src/drag_utils.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rust/crates/timeline/src/drag_utils.rs')
-rw-r--r--rust/crates/timeline/src/drag_utils.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/rust/crates/timeline/src/drag_utils.rs b/rust/crates/timeline/src/drag_utils.rs
new file mode 100644
index 00000000..6dcc6c6f
--- /dev/null
+++ b/rust/crates/timeline/src/drag_utils.rs
@@ -0,0 +1,14 @@
+use time::{MediaTime, TICKS_PER_SECOND};
+
+use crate::snap::BASE_TIMELINE_PIXELS_PER_SECOND;
+
+pub fn get_mouse_time_from_client_x(
+ client_x: f64,
+ container_left: f64,
+ zoom_level: f64,
+ scroll_left: f64,
+) -> MediaTime {
+ let mouse_x = client_x - container_left + scroll_left;
+ let seconds = (mouse_x / (BASE_TIMELINE_PIXELS_PER_SECOND * zoom_level)).max(0.0);
+ MediaTime::from_ticks((seconds * TICKS_PER_SECOND as f64).round() as i64)
+}