blob: a73f3df2757ff5d4476af9606e11acf12de8cc17 (
plain) (
tree)
|
|
mod render;
mod window;
mod window_controller;
mod window_manager;
pub use render::*;
pub use window::*;
pub use window_controller::*;
pub use window_manager::*;
pub use buffer::{Buffer, Colour};
pub use winit::{
event::{ModifiersState, ElementState},
event::VirtualKeyCode as KeyCode,
window::CursorIcon,
};
pub use std::num::NonZeroU32;
pub type Point = geometry::Point<i32>;
pub type Dimensions = geometry::Dimensions<u32>;
pub type Rect = geometry::Rect<i32, u32>;
// -----------------------------------------------------------------------------
#[derive(Copy, Clone)]
pub struct KeyboardInput {
pub action: Action,
pub key: KeyCode,
}
impl TryFrom<winit::event::KeyboardInput> for KeyboardInput {
type Error = ();
fn try_from(input: winit::event::KeyboardInput) -> Result<Self, ()> {
if let Some(key) = input.virtual_keycode {
Ok( Self { action: input.state.into(), key } )
} else {
Err(())
}
}
}
// -----------------------------------------------------------------------------
#[derive(Clone, Copy, PartialEq, Debug)]
pub enum Action { Pressed, Released }
impl Action {
pub fn is_pressed(&self) -> bool { *self == Self::Pressed }
pub fn is_released(&self) -> bool { *self == Self::Released }
}
impl From<ElementState> for Action {
fn from(value: ElementState) -> Self {
match value {
ElementState::Pressed => Action::Pressed,
ElementState::Released => Action::Released,
}
}
}
|