diff options
author | 2020-04-28 03:11:01 +0200 | |
---|---|---|
committer | 2020-04-28 03:11:01 +0200 | |
commit | 56dbd683269b82da16d8eae3f98f352301750bf5 (patch) | |
tree | 50d986a0c10f6bdab915b9ae3b53e170dd5497bf /core | |
parent | 20d79a43cce5a1bf0cb48a7668ac90d0ac82dfdc (diff) | |
download | iced-56dbd683269b82da16d8eae3f98f352301750bf5.tar.gz iced-56dbd683269b82da16d8eae3f98f352301750bf5.tar.bz2 iced-56dbd683269b82da16d8eae3f98f352301750bf5.zip |
Move reusable `mouse` types to `iced_core`
Diffstat (limited to 'core')
-rw-r--r-- | core/src/button_state.rs | 9 | ||||
-rw-r--r-- | core/src/lib.rs | 3 | ||||
-rw-r--r-- | core/src/mouse.rs | 6 | ||||
-rw-r--r-- | core/src/mouse/button.rs | 15 | ||||
-rw-r--r-- | core/src/mouse/event.rs | 61 |
5 files changed, 94 insertions, 0 deletions
diff --git a/core/src/button_state.rs b/core/src/button_state.rs new file mode 100644 index 00000000..988043ba --- /dev/null +++ b/core/src/button_state.rs @@ -0,0 +1,9 @@ +/// The state of a button. +#[derive(Debug, Hash, Ord, PartialOrd, PartialEq, Eq, Clone, Copy)] +pub enum ButtonState { + /// The button is pressed. + Pressed, + + /// The button is __not__ pressed. + Released, +} diff --git a/core/src/lib.rs b/core/src/lib.rs index c2887a0b..606c1b8b 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -15,9 +15,11 @@ #![forbid(unsafe_code)] #![forbid(rust_2018_idioms)] pub mod keyboard; +pub mod mouse; mod align; mod background; +mod button_state; mod color; mod font; mod length; @@ -28,6 +30,7 @@ mod vector; pub use align::{Align, HorizontalAlignment, VerticalAlignment}; pub use background::Background; +pub use button_state::ButtonState; pub use color::Color; pub use font::Font; pub use length::Length; diff --git a/core/src/mouse.rs b/core/src/mouse.rs new file mode 100644 index 00000000..101e04d5 --- /dev/null +++ b/core/src/mouse.rs @@ -0,0 +1,6 @@ +//! Reuse basic mouse types. +mod button; +mod event; + +pub use button::Button; +pub use event::{Event, ScrollDelta}; diff --git a/core/src/mouse/button.rs b/core/src/mouse/button.rs new file mode 100644 index 00000000..aeb8a55d --- /dev/null +++ b/core/src/mouse/button.rs @@ -0,0 +1,15 @@ +/// The button of a mouse. +#[derive(Debug, Hash, PartialEq, Eq, Clone, Copy)] +pub enum Button { + /// The left mouse button. + Left, + + /// The right mouse button. + Right, + + /// The middle (wheel) button. + Middle, + + /// Some other button. + Other(u8), +} diff --git a/core/src/mouse/event.rs b/core/src/mouse/event.rs new file mode 100644 index 00000000..52e9d851 --- /dev/null +++ b/core/src/mouse/event.rs @@ -0,0 +1,61 @@ +use super::Button; +use crate::ButtonState; + +/// A mouse event. +/// +/// _**Note:** This type is largely incomplete! If you need to track +/// additional events, feel free to [open an issue] and share your use case!_ +/// +/// [open an issue]: https://github.com/hecrj/iced/issues +#[derive(Debug, Clone, Copy, PartialEq)] +pub enum Event { + /// The mouse cursor entered the window. + CursorEntered, + + /// The mouse cursor left the window. + CursorLeft, + + /// The mouse cursor was moved + CursorMoved { + /// The X coordinate of the mouse position + x: f32, + + /// The Y coordinate of the mouse position + y: f32, + }, + + /// A mouse button was pressed or released. + Input { + /// The button identifier + button: Button, + + /// The state of the button + state: ButtonState, + }, + + /// The mouse wheel was scrolled. + WheelScrolled { + /// The scroll movement. + delta: ScrollDelta, + }, +} + +/// A scroll movement. +#[derive(Debug, Clone, Copy, PartialEq)] +pub enum ScrollDelta { + /// A line-based scroll movement + Lines { + /// The number of horizontal lines scrolled + x: f32, + + /// The number of vertical lines scrolled + y: f32, + }, + /// A pixel-based scroll movement + Pixels { + /// The number of horizontal pixels scrolled + x: f32, + /// The number of vertical pixels scrolled + y: f32, + }, +} |