Skip to main content

jellyflow_runtime/runtime/events/
viewport.rs

1use serde::{Deserialize, Serialize};
2
3use jellyflow_core::core::CanvasPoint;
4
5/// Viewport move gesture kind (UI-driven).
6#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
7#[serde(rename_all = "snake_case")]
8pub enum ViewportMoveKind {
9    /// Pointer-drag panning (mouse/touch drag).
10    PanDrag,
11    /// Inertial/momentum panning after releasing a pan drag.
12    PanInertia,
13    /// Panning via scroll wheel / trackpad scroll when `pan_on_scroll` is enabled.
14    PanScroll,
15    /// Zooming via scroll wheel (for example Ctrl+wheel).
16    ZoomWheel,
17    /// Zooming via pinch gesture (trackpad pinch).
18    ZoomPinch,
19    /// Zooming via double-click gesture.
20    ZoomDoubleClick,
21}
22
23#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
24#[serde(rename_all = "snake_case")]
25pub enum ViewportMoveEndOutcome {
26    Ended,
27    Canceled,
28}
29
30#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)]
31pub struct ViewportMoveStart {
32    pub kind: ViewportMoveKind,
33    pub pan: CanvasPoint,
34    pub zoom: f32,
35}
36
37#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)]
38pub struct ViewportMove {
39    pub kind: ViewportMoveKind,
40    pub pan: CanvasPoint,
41    pub zoom: f32,
42}
43
44#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)]
45pub struct ViewportMoveEnd {
46    pub kind: ViewportMoveKind,
47    pub pan: CanvasPoint,
48    pub zoom: f32,
49    pub outcome: ViewportMoveEndOutcome,
50}