Skip to main content

pax_runtime_api/
cursor.rs

1/// The variants of mouse cursors available on mouse-supporting platforms (derived from CSS cursor values).
2#[derive(Debug, Clone, PartialEq)]
3pub enum CursorStyle {
4    // General
5    Auto,
6    Default,
7    None,
8
9    // Links & Status
10    ContextMenu,
11    Help,
12    Pointer,
13    Progress,
14    Wait,
15
16    // Selection
17    Cell,
18    Crosshair,
19    Text,
20    VerticalText,
21
22    // Drag & Drop
23    Alias,
24    Copy,
25    Move,
26    NoDrop,
27    NotAllowed,
28
29    // Resizing & Scrolling
30    AllScroll,
31    ColResize,
32    RowResize,
33    NResize,
34    EResize,
35    SResize,
36    WResize,
37    NeResize,
38    NwResize,
39    SeResize,
40    SwResize,
41    EwResize,
42    NsResize,
43    NeswResize,
44    NwseResize,
45
46    // Zooming
47    ZoomIn,
48    ZoomOut,
49
50    // Grabbing
51    Grab,
52    Grabbing,
53
54    // Custom
55    Url(String, i32, i32),
56}
57
58impl std::fmt::Display for CursorStyle {
59    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
60        // NOTE: These should match the valid css cursor names
61        match self {
62            CursorStyle::Auto => write!(f, "auto"),
63            CursorStyle::Default => write!(f, "default"),
64            CursorStyle::None => write!(f, "none"),
65            CursorStyle::ContextMenu => write!(f, "context-menu"),
66            CursorStyle::Help => write!(f, "help"),
67            CursorStyle::Pointer => write!(f, "pointer"),
68            CursorStyle::Progress => write!(f, "progress"),
69            CursorStyle::Wait => write!(f, "wait"),
70            CursorStyle::Cell => write!(f, "cell"),
71            CursorStyle::Crosshair => write!(f, "crosshair"),
72            CursorStyle::Text => write!(f, "text"),
73            CursorStyle::VerticalText => write!(f, "vertical-text"),
74            CursorStyle::Alias => write!(f, "alias"),
75            CursorStyle::Copy => write!(f, "copy"),
76            CursorStyle::Move => write!(f, "move"),
77            CursorStyle::NoDrop => write!(f, "no-drop"),
78            CursorStyle::NotAllowed => write!(f, "not-allowed"),
79            CursorStyle::AllScroll => write!(f, "all-scroll"),
80            CursorStyle::ColResize => write!(f, "col-resize"),
81            CursorStyle::RowResize => write!(f, "row-resize"),
82            CursorStyle::NResize => write!(f, "n-resize"),
83            CursorStyle::EResize => write!(f, "e-resize"),
84            CursorStyle::SResize => write!(f, "s-resize"),
85            CursorStyle::WResize => write!(f, "w-resize"),
86            CursorStyle::NeResize => write!(f, "ne-resize"),
87            CursorStyle::NwResize => write!(f, "nw-resize"),
88            CursorStyle::SeResize => write!(f, "se-resize"),
89            CursorStyle::SwResize => write!(f, "sw-resize"),
90            CursorStyle::EwResize => write!(f, "ew-resize"),
91            CursorStyle::NsResize => write!(f, "ns-resize"),
92            CursorStyle::NeswResize => write!(f, "nesw-resize"),
93            CursorStyle::NwseResize => write!(f, "nwse-resize"),
94            CursorStyle::ZoomIn => write!(f, "zoom-in"),
95            CursorStyle::ZoomOut => write!(f, "zoom-out"),
96            CursorStyle::Grab => write!(f, "grab"),
97            CursorStyle::Grabbing => write!(f, "grabbing"),
98            CursorStyle::Url(url, x, y) => write!(f, "url(\"{}\") {} {}, auto", url, x, y),
99        }
100    }
101}