From 56dbd683269b82da16d8eae3f98f352301750bf5 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Tue, 28 Apr 2020 03:11:01 +0200 Subject: Move reusable `mouse` types to `iced_core` --- core/src/button_state.rs | 9 ++++++ core/src/lib.rs | 3 ++ core/src/mouse.rs | 6 ++++ core/src/mouse/button.rs | 15 ++++++++++ core/src/mouse/event.rs | 61 ++++++++++++++++++++++++++++++++++++++++ native/src/input.rs | 4 +-- native/src/input/button_state.rs | 9 ------ native/src/input/keyboard.rs | 2 +- native/src/input/mouse.rs | 5 +--- native/src/input/mouse/button.rs | 15 ---------- native/src/input/mouse/event.rs | 61 ---------------------------------------- src/lib.rs | 4 +++ src/mouse.rs | 3 ++ 13 files changed, 104 insertions(+), 93 deletions(-) create mode 100644 core/src/button_state.rs create mode 100644 core/src/mouse.rs create mode 100644 core/src/mouse/button.rs create mode 100644 core/src/mouse/event.rs delete mode 100644 native/src/input/button_state.rs delete mode 100644 native/src/input/mouse/button.rs delete mode 100644 native/src/input/mouse/event.rs create mode 100644 src/mouse.rs 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, + }, +} diff --git a/native/src/input.rs b/native/src/input.rs index 097fa730..7f5114c3 100644 --- a/native/src/input.rs +++ b/native/src/input.rs @@ -2,6 +2,4 @@ pub mod keyboard; pub mod mouse; -mod button_state; - -pub use button_state::ButtonState; +pub use iced_core::ButtonState; diff --git a/native/src/input/button_state.rs b/native/src/input/button_state.rs deleted file mode 100644 index 988043ba..00000000 --- a/native/src/input/button_state.rs +++ /dev/null @@ -1,9 +0,0 @@ -/// 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/native/src/input/keyboard.rs b/native/src/input/keyboard.rs index 928bf492..220b7f17 100644 --- a/native/src/input/keyboard.rs +++ b/native/src/input/keyboard.rs @@ -2,4 +2,4 @@ mod event; pub use event::Event; -pub use iced_core::keyboard::{KeyCode, ModifiersState}; +pub use iced_core::keyboard::*; diff --git a/native/src/input/mouse.rs b/native/src/input/mouse.rs index 7198b233..ae3f1596 100644 --- a/native/src/input/mouse.rs +++ b/native/src/input/mouse.rs @@ -1,9 +1,6 @@ //! Build mouse events. -mod button; -mod event; pub mod click; -pub use button::Button; pub use click::Click; -pub use event::{Event, ScrollDelta}; +pub use iced_core::mouse::*; diff --git a/native/src/input/mouse/button.rs b/native/src/input/mouse/button.rs deleted file mode 100644 index aeb8a55d..00000000 --- a/native/src/input/mouse/button.rs +++ /dev/null @@ -1,15 +0,0 @@ -/// 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/native/src/input/mouse/event.rs b/native/src/input/mouse/event.rs deleted file mode 100644 index aafc4fe3..00000000 --- a/native/src/input/mouse/event.rs +++ /dev/null @@ -1,61 +0,0 @@ -use super::Button; -use crate::input::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 state of the button - state: ButtonState, - - /// The button identifier - button: Button, - }, - - /// 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, - }, -} diff --git a/src/lib.rs b/src/lib.rs index 4f66cc73..77044984 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -185,6 +185,7 @@ mod sandbox; pub mod executor; pub mod keyboard; +pub mod mouse; pub mod settings; pub mod widget; pub mod window; @@ -208,3 +209,6 @@ pub use runtime::{ futures, Align, Background, Color, Command, Font, HorizontalAlignment, Length, Point, Size, Subscription, Vector, VerticalAlignment, }; + +#[cfg(not(target_arch = "wasm32"))] +pub use runtime::input::ButtonState; diff --git a/src/mouse.rs b/src/mouse.rs new file mode 100644 index 00000000..8be36d37 --- /dev/null +++ b/src/mouse.rs @@ -0,0 +1,3 @@ +//! Listen and react to mouse events. +#[cfg(not(target_arch = "wasm32"))] +pub use iced_winit::input::mouse::{Button, Event, ScrollDelta}; -- cgit