1mod client;
 2mod clipboard;
 3mod cursor;
 4mod display;
 5mod serial;
 6mod window;
 7
 8/// Contains Types for configuring layer_shell surfaces.
 9pub mod layer_shell;
10
11pub(crate) use client::*;
12
13use wayland_protocols::wp::cursor_shape::v1::client::wp_cursor_shape_device_v1::Shape;
14
15use crate::CursorStyle;
16
17impl CursorStyle {
18    pub(super) fn to_shape(self) -> Shape {
19        match self {
20            CursorStyle::Arrow => Shape::Default,
21            CursorStyle::IBeam => Shape::Text,
22            CursorStyle::Crosshair => Shape::Crosshair,
23            CursorStyle::ClosedHand => Shape::Grabbing,
24            CursorStyle::OpenHand => Shape::Grab,
25            CursorStyle::PointingHand => Shape::Pointer,
26            CursorStyle::ResizeLeft => Shape::WResize,
27            CursorStyle::ResizeRight => Shape::EResize,
28            CursorStyle::ResizeLeftRight => Shape::EwResize,
29            CursorStyle::ResizeUp => Shape::NResize,
30            CursorStyle::ResizeDown => Shape::SResize,
31            CursorStyle::ResizeUpDown => Shape::NsResize,
32            CursorStyle::ResizeUpLeftDownRight => Shape::NwseResize,
33            CursorStyle::ResizeUpRightDownLeft => Shape::NeswResize,
34            CursorStyle::ResizeColumn => Shape::ColResize,
35            CursorStyle::ResizeRow => Shape::RowResize,
36            CursorStyle::IBeamCursorForVerticalLayout => Shape::VerticalText,
37            CursorStyle::OperationNotAllowed => Shape::NotAllowed,
38            CursorStyle::DragLink => Shape::Alias,
39            CursorStyle::DragCopy => Shape::Copy,
40            CursorStyle::ContextualMenu => Shape::ContextMenu,
41            CursorStyle::None => {
42                #[cfg(debug_assertions)]
43                panic!("CursorStyle::None should be handled separately in the client");
44                #[cfg(not(debug_assertions))]
45                Shape::Default
46            }
47        }
48    }
49}