From 7ef1929906070b43792ba7cdd78f2aeeeae6131b Mon Sep 17 00:00:00 2001 From: griffi-gh Date: Sun, 4 Aug 2024 18:06:49 +0200 Subject: [PATCH] Begin major refactor --- Cargo.toml | 2 +- README.md | 4 ++-- hui-examples/Cargo.toml | 8 ++++---- hui-glium/Cargo.toml | 4 ++-- hui-painter/Cargo.toml | 20 ++++++++++++++++++++ hui-painter/src/lib.rs | 17 +++++++++++++++++ hui-painter/src/rect.rs | 19 +++++++++++++++++++ hui-shared/Cargo.toml | 7 +++++++ hui-shared/src/lib.rs | 1 + {hui => hui-shared}/src/rect.rs | 0 {hui => hui-shared}/src/rect/color.rs | 0 {hui => hui-shared}/src/rect/corners.rs | 0 {hui => hui-shared}/src/rect/rect.rs | 0 {hui => hui-shared}/src/rect/sides.rs | 0 hui-wgpu/Cargo.toml | 2 +- hui-winit/Cargo.toml | 11 ++++++----- hui-winit/src/lib.rs | 12 ++++++------ hui/Cargo.toml | 8 +++++--- hui/src/lib.rs | 3 ++- 19 files changed, 93 insertions(+), 25 deletions(-) create mode 100644 hui-painter/Cargo.toml create mode 100644 hui-painter/src/lib.rs create mode 100644 hui-painter/src/rect.rs create mode 100644 hui-shared/Cargo.toml create mode 100644 hui-shared/src/lib.rs rename {hui => hui-shared}/src/rect.rs (100%) rename {hui => hui-shared}/src/rect/color.rs (100%) rename {hui => hui-shared}/src/rect/corners.rs (100%) rename {hui => hui-shared}/src/rect/rect.rs (100%) rename {hui => hui-shared}/src/rect/sides.rs (100%) diff --git a/Cargo.toml b/Cargo.toml index 3fa6631..99cdea0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,3 +1,3 @@ [workspace] resolver = "2" -members = ["hui", "hui-derive", "hui-examples", "hui-glium", "hui-wgpu", "hui-winit"] +members = ["hui", "hui-derive", "hui-examples", "hui-glium", "hui-painter", "hui-shared", "hui-wgpu", "hui-winit"] diff --git a/README.md b/README.md index f383f8d..a6a0b78 100644 --- a/README.md +++ b/README.md @@ -86,11 +86,11 @@ hui-glium = <master>
- glium = "0.34" + glium = "0.35" hui-winit = <master>
- winit = "0.30" or winit = "0.29" + winit = "0.30" hui-wgpu = <master>
diff --git a/hui-examples/Cargo.toml b/hui-examples/Cargo.toml index fc7dcd0..9a30f18 100644 --- a/hui-examples/Cargo.toml +++ b/hui-examples/Cargo.toml @@ -8,11 +8,11 @@ publish = false [dev-dependencies] hui = { path = "../hui" } hui-glium = { path = "../hui-glium" } -hui-winit = { path = "../hui-winit", features = ["winit_29"] } +hui-winit = { path = "../hui-winit" } kubi-logging = { git = "https://github.com/griffi-gh/kubi", rev = "c162893fd" } -glium = "0.34" -winit = "0.29" -glam = "0.27" +glium = "0.35" +winit = "0.30" +glam = "0.28" log = "0.4" image = { version = "0.25", features = ["jpeg", "png"] } diff --git a/hui-glium/Cargo.toml b/hui-glium/Cargo.toml index 9448d2b..13dae9c 100644 --- a/hui-glium/Cargo.toml +++ b/hui-glium/Cargo.toml @@ -17,6 +17,6 @@ include = [ [dependencies] hui = { version = "=0.1.0-alpha.5", path = "../hui", default-features = false } -glium = { version = "0.34", default-features = false } -glam = "0.27" +glium = { version = "0.35", default-features = false } +glam = "0.28" log = "0.4" diff --git a/hui-painter/Cargo.toml b/hui-painter/Cargo.toml new file mode 100644 index 0000000..4e651a8 --- /dev/null +++ b/hui-painter/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "hui-painter" +description = "UI rendering middleware for hUI, abstracts away triangulation, text rendering and all the other hard stuff." +repository = "https://github.com/griffi-gh/hui" +readme = "../README.md" +authors = ["griffi-gh "] +rust-version = "1.75" +version = "0.1.0-alpha.5" +edition = "2021" +license = "GPL-3.0-or-later" +publish = true +include = [ + "assets/**/*", + "src/**/*.rs", + "Cargo.toml", +] + +[dependencies] +hui-shared = { version = "0.1.0-alpha.5", path = "../hui-shared" } +glam = "0.28" diff --git a/hui-painter/src/lib.rs b/hui-painter/src/lib.rs new file mode 100644 index 0000000..da84108 --- /dev/null +++ b/hui-painter/src/lib.rs @@ -0,0 +1,17 @@ +//TODO painter rewrite + +mod rect; +pub use rect::PaintRectParams; + +pub struct PaintTransformParams { + transform: glam::Affine2, +} + +pub enum PaintCommand { + Rect(PaintRectParams), + Transform(PaintTransformParams, Box), +} + +pub struct Painter { + +} diff --git a/hui-painter/src/rect.rs b/hui-painter/src/rect.rs new file mode 100644 index 0000000..c54048d --- /dev/null +++ b/hui-painter/src/rect.rs @@ -0,0 +1,19 @@ +use glam::Vec2; +use hui_shared::rect::{Corners, FillColor}; + +pub struct PaintRectParams { + /// Position of the top-left corner of the rectangle. + pub position: Vec2, + + /// Position of the bottom-right corner of the rectangle. + pub size: Vec2, + + /// Color of the rectangle. + pub color: FillColor, + + /// Border width. + pub border_radius: Corners, + + /// Border color. + pub border_radius_points_override: Option, +} diff --git a/hui-shared/Cargo.toml b/hui-shared/Cargo.toml new file mode 100644 index 0000000..8896e63 --- /dev/null +++ b/hui-shared/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "hui-shared" +version = "0.1.0-alpha.5" +edition = "2021" + +[dependencies] +glam = "0.28" diff --git a/hui-shared/src/lib.rs b/hui-shared/src/lib.rs new file mode 100644 index 0000000..2330a35 --- /dev/null +++ b/hui-shared/src/lib.rs @@ -0,0 +1 @@ +pub mod rect; diff --git a/hui/src/rect.rs b/hui-shared/src/rect.rs similarity index 100% rename from hui/src/rect.rs rename to hui-shared/src/rect.rs diff --git a/hui/src/rect/color.rs b/hui-shared/src/rect/color.rs similarity index 100% rename from hui/src/rect/color.rs rename to hui-shared/src/rect/color.rs diff --git a/hui/src/rect/corners.rs b/hui-shared/src/rect/corners.rs similarity index 100% rename from hui/src/rect/corners.rs rename to hui-shared/src/rect/corners.rs diff --git a/hui/src/rect/rect.rs b/hui-shared/src/rect/rect.rs similarity index 100% rename from hui/src/rect/rect.rs rename to hui-shared/src/rect/rect.rs diff --git a/hui/src/rect/sides.rs b/hui-shared/src/rect/sides.rs similarity index 100% rename from hui/src/rect/sides.rs rename to hui-shared/src/rect/sides.rs diff --git a/hui-wgpu/Cargo.toml b/hui-wgpu/Cargo.toml index ac85675..4eb95eb 100644 --- a/hui-wgpu/Cargo.toml +++ b/hui-wgpu/Cargo.toml @@ -20,4 +20,4 @@ hui = { version = "=0.1.0-alpha.5", path = "../hui", default-features = false } wgpu = { version = "0.20", default-features = false, features = ["wgsl"]} bytemuck = "1.15" log = "0.4" -glam = "0.27" +glam = "0.28" diff --git a/hui-winit/Cargo.toml b/hui-winit/Cargo.toml index 00c622d..8354f6f 100644 --- a/hui-winit/Cargo.toml +++ b/hui-winit/Cargo.toml @@ -15,12 +15,13 @@ include = [ [dependencies] hui = { version = "=0.1.0-alpha.5", path = "../hui", default-features = false } -winit_30 = { package = "winit", version = "0.30", default-features = false, optional = true } -winit_29 = { package = "winit", version = "0.29", default-features = false, optional = true } -glam = "0.27" +winit = { version = "0.30", default-features = false } +# winit_30 = { package = "winit", version = "0.30", default-features = false, optional = true } +# winit_29 = { package = "winit", version = "0.29", default-features = false, optional = true } +glam = "0.28" log = "0.4" [features] default = [] -winit_30 = ["dep:winit_30"] -winit_29 = ["dep:winit_29"] +# winit_30 = ["dep:winit_30"] +# winit_29 = ["dep:winit_29"] diff --git a/hui-winit/src/lib.rs b/hui-winit/src/lib.rs index 5dec0f9..43dae5c 100644 --- a/hui-winit/src/lib.rs +++ b/hui-winit/src/lib.rs @@ -1,9 +1,9 @@ -#[cfg(all(feature = "winit_30", feature = "winit_29"))] -compile_error!("Only one of the winit_30 and winit_29 features can be enabled at a time"); -#[cfg(not(any(feature = "winit_30", feature = "winit_29")))] -compile_error!("One of the winit_30 and winit_29 features must be enabled"); -#[cfg(feature = "winit_30")] extern crate winit_30 as winit; -#[cfg(feature = "winit_29")] extern crate winit_29 as winit; +// #[cfg(all(feature = "winit_30", feature = "winit_29"))] +// compile_error!("Only one of the winit_30 and winit_29 features can be enabled at a time"); +// #[cfg(not(any(feature = "winit_30", feature = "winit_29")))] +// compile_error!("One of the winit_30 and winit_29 features must be enabled"); +// #[cfg(feature = "winit_30")] extern crate winit_30 as winit; +// #[cfg(feature = "winit_29")] extern crate winit_29 as winit; use glam::vec2; use hui::{event::UiEvent, UiInstance}; diff --git a/hui/Cargo.toml b/hui/Cargo.toml index 1ecd3ca..d641899 100644 --- a/hui/Cargo.toml +++ b/hui/Cargo.toml @@ -17,10 +17,12 @@ include = [ [dependencies] hui-derive = { version = "0.1.0-alpha.5", path = "../hui-derive", optional = true } +hui-shared = { version = "0.1.0-alpha.5", path = "../hui-shared" } +hui-painter = { version = "0.1.0-alpha.5", path = "../hui-painter" } hashbrown = "0.14" nohash-hasher = "0.2" -glam = "0.27" -fontdue = "0.8" +glam = "0.28.0" +fontdue = "0.9" rect_packer = "0.2" log = "0.4" document-features = "0.2" @@ -28,7 +30,7 @@ derive_setters = "0.1" derive_more = "0.99" tinyset = "0.4" image = { version = "0.25", default-features = false, optional = true } -rustc-hash = "1.1" +rustc-hash = "2.0" [features] default = ["el_all", "image", "builtin_font", "pixel_perfect_text", "derive"] diff --git a/hui/src/lib.rs b/hui/src/lib.rs index 1abf0e3..212dc8f 100644 --- a/hui/src/lib.rs +++ b/hui/src/lib.rs @@ -11,10 +11,11 @@ #![forbid(unsafe_op_in_unsafe_fn)] #![allow(unused_parens)] +pub use hui_shared::*; + mod instance; mod macros; pub mod layout; -pub mod rect; pub mod element; pub mod event; pub mod input;