diff options
author | HampusM <hampus@hampusmat.com> | 2024-10-16 23:47:23 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2024-10-17 00:11:53 +0200 |
commit | aace257e08f3a73c22dfc80ca1f1df1b8f550fc1 (patch) | |
tree | 633ecdb4e6e44dadc0e07139aad9939041f862dc | |
parent | 8ecd728f14da6ce1376822557fd63d3002a380de (diff) |
refactor(glfw): use FromRepr derive macro from util-macros
-rw-r--r-- | Cargo.lock | 1 | ||||
-rw-r--r-- | glfw/Cargo.toml | 1 | ||||
-rw-r--r-- | glfw/src/util.rs | 31 | ||||
-rw-r--r-- | glfw/src/window.rs | 318 |
4 files changed, 157 insertions, 194 deletions
@@ -207,6 +207,7 @@ dependencies = [ "bitflags 2.4.0", "libc", "thiserror", + "util-macros", ] [[package]] diff --git a/glfw/Cargo.toml b/glfw/Cargo.toml index b60d245..0a47e73 100644 --- a/glfw/Cargo.toml +++ b/glfw/Cargo.toml @@ -10,6 +10,7 @@ opengl = [] libc = "0.2.148" thiserror = "1.0.49" bitflags = "2.4.0" +util-macros = { path = "../util-macros" } [build-dependencies.bindgen] version = "0.68.1" diff --git a/glfw/src/util.rs b/glfw/src/util.rs index 98dcb9b..f77aaf8 100644 --- a/glfw/src/util.rs +++ b/glfw/src/util.rs @@ -8,34 +8,3 @@ pub fn is_main_thread() -> bool ttid == pid } - -macro_rules! enum_from_repr { - ( - #[repr($repr: ident)] - $(#[$attr: meta])* - $visibility: vis enum $name: ident - { - $($variant: ident = $raw: path,)* - } - ) => { - $(#[$attr])* - #[repr($repr)] - $visibility enum $name - { - $($variant = $raw,)* - } - - impl $name - { - fn from_repr(repr: $repr) -> Option<Self> - { - match repr { - $($raw => Some(Self::$variant),)* - _ => None - } - } - } - }; -} - -pub(crate) use enum_from_repr; diff --git a/glfw/src/window.rs b/glfw/src/window.rs index 53a8420..eaa0c56 100644 --- a/glfw/src/window.rs +++ b/glfw/src/window.rs @@ -5,9 +5,9 @@ use std::io::{stdout, Write}; use std::ptr::null_mut; use bitflags::bitflags; +use util_macros::FromRepr; use crate::init::{initialize, Glfw}; -use crate::util::enum_from_repr; use crate::{get_glfw_error, Error}; #[derive(Debug)] @@ -525,145 +525,141 @@ pub enum CursorMode Normal = crate::ffi::GLFW_CURSOR_NORMAL, } -enum_from_repr!( - #[repr(i32)] - #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] - pub enum Key - { - // Unknown = crate::ffi::GLFW_KEY_UNKNOWN, - Space = crate::ffi::GLFW_KEY_SPACE, - Apostrophe = crate::ffi::GLFW_KEY_APOSTROPHE, - Comma = crate::ffi::GLFW_KEY_COMMA, - Minus = crate::ffi::GLFW_KEY_MINUS, - Period = crate::ffi::GLFW_KEY_PERIOD, - Slash = crate::ffi::GLFW_KEY_SLASH, - Digit0 = crate::ffi::GLFW_KEY_0, - Digit1 = crate::ffi::GLFW_KEY_1, - Digit2 = crate::ffi::GLFW_KEY_2, - Digit3 = crate::ffi::GLFW_KEY_3, - Digit4 = crate::ffi::GLFW_KEY_4, - Digit5 = crate::ffi::GLFW_KEY_5, - Digit6 = crate::ffi::GLFW_KEY_6, - Digit7 = crate::ffi::GLFW_KEY_7, - Digit8 = crate::ffi::GLFW_KEY_8, - Digit9 = crate::ffi::GLFW_KEY_9, - Semicolon = crate::ffi::GLFW_KEY_SEMICOLON, - Equal = crate::ffi::GLFW_KEY_EQUAL, - A = crate::ffi::GLFW_KEY_A, - B = crate::ffi::GLFW_KEY_B, - C = crate::ffi::GLFW_KEY_C, - D = crate::ffi::GLFW_KEY_D, - E = crate::ffi::GLFW_KEY_E, - F = crate::ffi::GLFW_KEY_F, - G = crate::ffi::GLFW_KEY_G, - H = crate::ffi::GLFW_KEY_H, - I = crate::ffi::GLFW_KEY_I, - J = crate::ffi::GLFW_KEY_J, - K = crate::ffi::GLFW_KEY_K, - L = crate::ffi::GLFW_KEY_L, - M = crate::ffi::GLFW_KEY_M, - N = crate::ffi::GLFW_KEY_N, - O = crate::ffi::GLFW_KEY_O, - P = crate::ffi::GLFW_KEY_P, - Q = crate::ffi::GLFW_KEY_Q, - R = crate::ffi::GLFW_KEY_R, - S = crate::ffi::GLFW_KEY_S, - T = crate::ffi::GLFW_KEY_T, - U = crate::ffi::GLFW_KEY_U, - V = crate::ffi::GLFW_KEY_V, - W = crate::ffi::GLFW_KEY_W, - X = crate::ffi::GLFW_KEY_X, - Y = crate::ffi::GLFW_KEY_Y, - Z = crate::ffi::GLFW_KEY_Z, - LeftBracket = crate::ffi::GLFW_KEY_LEFT_BRACKET, - Backslash = crate::ffi::GLFW_KEY_BACKSLASH, - RightBracket = crate::ffi::GLFW_KEY_RIGHT_BRACKET, - GraveAccent = crate::ffi::GLFW_KEY_GRAVE_ACCENT, - World1 = crate::ffi::GLFW_KEY_WORLD_1, - World2 = crate::ffi::GLFW_KEY_WORLD_2, - Escape = crate::ffi::GLFW_KEY_ESCAPE, - Enter = crate::ffi::GLFW_KEY_ENTER, - Tab = crate::ffi::GLFW_KEY_TAB, - Backspace = crate::ffi::GLFW_KEY_BACKSPACE, - Insert = crate::ffi::GLFW_KEY_INSERT, - Delete = crate::ffi::GLFW_KEY_DELETE, - Right = crate::ffi::GLFW_KEY_RIGHT, - Left = crate::ffi::GLFW_KEY_LEFT, - Down = crate::ffi::GLFW_KEY_DOWN, - Up = crate::ffi::GLFW_KEY_UP, - PageUp = crate::ffi::GLFW_KEY_PAGE_UP, - PageDown = crate::ffi::GLFW_KEY_PAGE_DOWN, - Home = crate::ffi::GLFW_KEY_HOME, - End = crate::ffi::GLFW_KEY_END, - CapsLock = crate::ffi::GLFW_KEY_CAPS_LOCK, - ScrollLock = crate::ffi::GLFW_KEY_SCROLL_LOCK, - NumLock = crate::ffi::GLFW_KEY_NUM_LOCK, - PrintScreen = crate::ffi::GLFW_KEY_PRINT_SCREEN, - Pause = crate::ffi::GLFW_KEY_PAUSE, - F1 = crate::ffi::GLFW_KEY_F1, - F2 = crate::ffi::GLFW_KEY_F2, - F3 = crate::ffi::GLFW_KEY_F3, - F4 = crate::ffi::GLFW_KEY_F4, - F5 = crate::ffi::GLFW_KEY_F5, - F6 = crate::ffi::GLFW_KEY_F6, - F7 = crate::ffi::GLFW_KEY_F7, - F8 = crate::ffi::GLFW_KEY_F8, - F9 = crate::ffi::GLFW_KEY_F9, - F10 = crate::ffi::GLFW_KEY_F10, - F11 = crate::ffi::GLFW_KEY_F11, - F12 = crate::ffi::GLFW_KEY_F12, - F13 = crate::ffi::GLFW_KEY_F13, - F14 = crate::ffi::GLFW_KEY_F14, - F15 = crate::ffi::GLFW_KEY_F15, - F16 = crate::ffi::GLFW_KEY_F16, - F17 = crate::ffi::GLFW_KEY_F17, - F18 = crate::ffi::GLFW_KEY_F18, - F19 = crate::ffi::GLFW_KEY_F19, - F20 = crate::ffi::GLFW_KEY_F20, - F21 = crate::ffi::GLFW_KEY_F21, - F22 = crate::ffi::GLFW_KEY_F22, - F23 = crate::ffi::GLFW_KEY_F23, - F24 = crate::ffi::GLFW_KEY_F24, - F25 = crate::ffi::GLFW_KEY_F25, - Kp0 = crate::ffi::GLFW_KEY_KP_0, - Kp1 = crate::ffi::GLFW_KEY_KP_1, - Kp2 = crate::ffi::GLFW_KEY_KP_2, - Kp3 = crate::ffi::GLFW_KEY_KP_3, - Kp4 = crate::ffi::GLFW_KEY_KP_4, - Kp5 = crate::ffi::GLFW_KEY_KP_5, - Kp6 = crate::ffi::GLFW_KEY_KP_6, - Kp7 = crate::ffi::GLFW_KEY_KP_7, - Kp8 = crate::ffi::GLFW_KEY_KP_8, - Kp9 = crate::ffi::GLFW_KEY_KP_9, - KpDecimal = crate::ffi::GLFW_KEY_KP_DECIMAL, - KpDivide = crate::ffi::GLFW_KEY_KP_DIVIDE, - KpMultiply = crate::ffi::GLFW_KEY_KP_MULTIPLY, - KpSubtract = crate::ffi::GLFW_KEY_KP_SUBTRACT, - KpAdd = crate::ffi::GLFW_KEY_KP_ADD, - KpEnter = crate::ffi::GLFW_KEY_KP_ENTER, - KpEqual = crate::ffi::GLFW_KEY_KP_EQUAL, - LeftShift = crate::ffi::GLFW_KEY_LEFT_SHIFT, - LeftControl = crate::ffi::GLFW_KEY_LEFT_CONTROL, - LeftAlt = crate::ffi::GLFW_KEY_LEFT_ALT, - LeftSuper = crate::ffi::GLFW_KEY_LEFT_SUPER, - RightShift = crate::ffi::GLFW_KEY_RIGHT_SHIFT, - RightControl = crate::ffi::GLFW_KEY_RIGHT_CONTROL, - RightAlt = crate::ffi::GLFW_KEY_RIGHT_ALT, - RightSuper = crate::ffi::GLFW_KEY_RIGHT_SUPER, - Menu = crate::ffi::GLFW_KEY_MENU, - } -); +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, FromRepr)] +#[repr(i32)] +pub enum Key +{ + // Unknown = crate::ffi::GLFW_KEY_UNKNOWN, + Space = crate::ffi::GLFW_KEY_SPACE, + Apostrophe = crate::ffi::GLFW_KEY_APOSTROPHE, + Comma = crate::ffi::GLFW_KEY_COMMA, + Minus = crate::ffi::GLFW_KEY_MINUS, + Period = crate::ffi::GLFW_KEY_PERIOD, + Slash = crate::ffi::GLFW_KEY_SLASH, + Digit0 = crate::ffi::GLFW_KEY_0, + Digit1 = crate::ffi::GLFW_KEY_1, + Digit2 = crate::ffi::GLFW_KEY_2, + Digit3 = crate::ffi::GLFW_KEY_3, + Digit4 = crate::ffi::GLFW_KEY_4, + Digit5 = crate::ffi::GLFW_KEY_5, + Digit6 = crate::ffi::GLFW_KEY_6, + Digit7 = crate::ffi::GLFW_KEY_7, + Digit8 = crate::ffi::GLFW_KEY_8, + Digit9 = crate::ffi::GLFW_KEY_9, + Semicolon = crate::ffi::GLFW_KEY_SEMICOLON, + Equal = crate::ffi::GLFW_KEY_EQUAL, + A = crate::ffi::GLFW_KEY_A, + B = crate::ffi::GLFW_KEY_B, + C = crate::ffi::GLFW_KEY_C, + D = crate::ffi::GLFW_KEY_D, + E = crate::ffi::GLFW_KEY_E, + F = crate::ffi::GLFW_KEY_F, + G = crate::ffi::GLFW_KEY_G, + H = crate::ffi::GLFW_KEY_H, + I = crate::ffi::GLFW_KEY_I, + J = crate::ffi::GLFW_KEY_J, + K = crate::ffi::GLFW_KEY_K, + L = crate::ffi::GLFW_KEY_L, + M = crate::ffi::GLFW_KEY_M, + N = crate::ffi::GLFW_KEY_N, + O = crate::ffi::GLFW_KEY_O, + P = crate::ffi::GLFW_KEY_P, + Q = crate::ffi::GLFW_KEY_Q, + R = crate::ffi::GLFW_KEY_R, + S = crate::ffi::GLFW_KEY_S, + T = crate::ffi::GLFW_KEY_T, + U = crate::ffi::GLFW_KEY_U, + V = crate::ffi::GLFW_KEY_V, + W = crate::ffi::GLFW_KEY_W, + X = crate::ffi::GLFW_KEY_X, + Y = crate::ffi::GLFW_KEY_Y, + Z = crate::ffi::GLFW_KEY_Z, + LeftBracket = crate::ffi::GLFW_KEY_LEFT_BRACKET, + Backslash = crate::ffi::GLFW_KEY_BACKSLASH, + RightBracket = crate::ffi::GLFW_KEY_RIGHT_BRACKET, + GraveAccent = crate::ffi::GLFW_KEY_GRAVE_ACCENT, + World1 = crate::ffi::GLFW_KEY_WORLD_1, + World2 = crate::ffi::GLFW_KEY_WORLD_2, + Escape = crate::ffi::GLFW_KEY_ESCAPE, + Enter = crate::ffi::GLFW_KEY_ENTER, + Tab = crate::ffi::GLFW_KEY_TAB, + Backspace = crate::ffi::GLFW_KEY_BACKSPACE, + Insert = crate::ffi::GLFW_KEY_INSERT, + Delete = crate::ffi::GLFW_KEY_DELETE, + Right = crate::ffi::GLFW_KEY_RIGHT, + Left = crate::ffi::GLFW_KEY_LEFT, + Down = crate::ffi::GLFW_KEY_DOWN, + Up = crate::ffi::GLFW_KEY_UP, + PageUp = crate::ffi::GLFW_KEY_PAGE_UP, + PageDown = crate::ffi::GLFW_KEY_PAGE_DOWN, + Home = crate::ffi::GLFW_KEY_HOME, + End = crate::ffi::GLFW_KEY_END, + CapsLock = crate::ffi::GLFW_KEY_CAPS_LOCK, + ScrollLock = crate::ffi::GLFW_KEY_SCROLL_LOCK, + NumLock = crate::ffi::GLFW_KEY_NUM_LOCK, + PrintScreen = crate::ffi::GLFW_KEY_PRINT_SCREEN, + Pause = crate::ffi::GLFW_KEY_PAUSE, + F1 = crate::ffi::GLFW_KEY_F1, + F2 = crate::ffi::GLFW_KEY_F2, + F3 = crate::ffi::GLFW_KEY_F3, + F4 = crate::ffi::GLFW_KEY_F4, + F5 = crate::ffi::GLFW_KEY_F5, + F6 = crate::ffi::GLFW_KEY_F6, + F7 = crate::ffi::GLFW_KEY_F7, + F8 = crate::ffi::GLFW_KEY_F8, + F9 = crate::ffi::GLFW_KEY_F9, + F10 = crate::ffi::GLFW_KEY_F10, + F11 = crate::ffi::GLFW_KEY_F11, + F12 = crate::ffi::GLFW_KEY_F12, + F13 = crate::ffi::GLFW_KEY_F13, + F14 = crate::ffi::GLFW_KEY_F14, + F15 = crate::ffi::GLFW_KEY_F15, + F16 = crate::ffi::GLFW_KEY_F16, + F17 = crate::ffi::GLFW_KEY_F17, + F18 = crate::ffi::GLFW_KEY_F18, + F19 = crate::ffi::GLFW_KEY_F19, + F20 = crate::ffi::GLFW_KEY_F20, + F21 = crate::ffi::GLFW_KEY_F21, + F22 = crate::ffi::GLFW_KEY_F22, + F23 = crate::ffi::GLFW_KEY_F23, + F24 = crate::ffi::GLFW_KEY_F24, + F25 = crate::ffi::GLFW_KEY_F25, + Kp0 = crate::ffi::GLFW_KEY_KP_0, + Kp1 = crate::ffi::GLFW_KEY_KP_1, + Kp2 = crate::ffi::GLFW_KEY_KP_2, + Kp3 = crate::ffi::GLFW_KEY_KP_3, + Kp4 = crate::ffi::GLFW_KEY_KP_4, + Kp5 = crate::ffi::GLFW_KEY_KP_5, + Kp6 = crate::ffi::GLFW_KEY_KP_6, + Kp7 = crate::ffi::GLFW_KEY_KP_7, + Kp8 = crate::ffi::GLFW_KEY_KP_8, + Kp9 = crate::ffi::GLFW_KEY_KP_9, + KpDecimal = crate::ffi::GLFW_KEY_KP_DECIMAL, + KpDivide = crate::ffi::GLFW_KEY_KP_DIVIDE, + KpMultiply = crate::ffi::GLFW_KEY_KP_MULTIPLY, + KpSubtract = crate::ffi::GLFW_KEY_KP_SUBTRACT, + KpAdd = crate::ffi::GLFW_KEY_KP_ADD, + KpEnter = crate::ffi::GLFW_KEY_KP_ENTER, + KpEqual = crate::ffi::GLFW_KEY_KP_EQUAL, + LeftShift = crate::ffi::GLFW_KEY_LEFT_SHIFT, + LeftControl = crate::ffi::GLFW_KEY_LEFT_CONTROL, + LeftAlt = crate::ffi::GLFW_KEY_LEFT_ALT, + LeftSuper = crate::ffi::GLFW_KEY_LEFT_SUPER, + RightShift = crate::ffi::GLFW_KEY_RIGHT_SHIFT, + RightControl = crate::ffi::GLFW_KEY_RIGHT_CONTROL, + RightAlt = crate::ffi::GLFW_KEY_RIGHT_ALT, + RightSuper = crate::ffi::GLFW_KEY_RIGHT_SUPER, + Menu = crate::ffi::GLFW_KEY_MENU, +} -enum_from_repr!( - #[repr(i32)] - #[derive(Debug, Clone, Copy)] - pub enum KeyState - { - Pressed = crate::ffi::GLFW_PRESS, - Released = crate::ffi::GLFW_RELEASE, - Repeat = crate::ffi::GLFW_REPEAT, - } -); +#[derive(Debug, Clone, Copy, FromRepr)] +#[repr(i32)] +pub enum KeyState +{ + Pressed = crate::ffi::GLFW_PRESS, + Released = crate::ffi::GLFW_RELEASE, + Repeat = crate::ffi::GLFW_REPEAT, +} bitflags! { #[derive(Debug, Clone, Copy)] @@ -677,21 +673,19 @@ bitflags! { } } -enum_from_repr!( - #[repr(i32)] - #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] - pub enum MouseButton - { - One = crate::ffi::GLFW_MOUSE_BUTTON_1, - Two = crate::ffi::GLFW_MOUSE_BUTTON_2, - Three = crate::ffi::GLFW_MOUSE_BUTTON_3, - Four = crate::ffi::GLFW_MOUSE_BUTTON_4, - Five = crate::ffi::GLFW_MOUSE_BUTTON_5, - Six = crate::ffi::GLFW_MOUSE_BUTTON_6, - Seven = crate::ffi::GLFW_MOUSE_BUTTON_7, - Eight = crate::ffi::GLFW_MOUSE_BUTTON_8, - } -); +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, FromRepr)] +#[repr(i32)] +pub enum MouseButton +{ + One = crate::ffi::GLFW_MOUSE_BUTTON_1, + Two = crate::ffi::GLFW_MOUSE_BUTTON_2, + Three = crate::ffi::GLFW_MOUSE_BUTTON_3, + Four = crate::ffi::GLFW_MOUSE_BUTTON_4, + Five = crate::ffi::GLFW_MOUSE_BUTTON_5, + Six = crate::ffi::GLFW_MOUSE_BUTTON_6, + Seven = crate::ffi::GLFW_MOUSE_BUTTON_7, + Eight = crate::ffi::GLFW_MOUSE_BUTTON_8, +} impl MouseButton { @@ -700,15 +694,13 @@ impl MouseButton pub const RIGHT: Self = Self::Two; } -enum_from_repr!( - #[repr(i32)] - #[derive(Debug, Clone, Copy)] - pub enum MouseButtonState - { - Pressed = crate::ffi::GLFW_PRESS, - Released = crate::ffi::GLFW_RELEASE, - } -); +#[derive(Debug, Clone, Copy, FromRepr)] +#[repr(i32)] +pub enum MouseButtonState +{ + Pressed = crate::ffi::GLFW_PRESS, + Released = crate::ffi::GLFW_RELEASE, +} #[derive(Debug, Clone)] pub struct CursorPosition |