eh... its better i guess. still needs a refactor

This commit is contained in:
griffi-gh 2024-02-26 15:13:03 +01:00
parent 371f3cb61e
commit 30579928b0
2 changed files with 23 additions and 24 deletions

View file

@ -8,7 +8,7 @@ use winit::{
use hui::{ use hui::{
UiInstance, UiInstance,
element::{ element::{
ElementList, UiElementListExt, ElementList, UiElementExt,
container::Container, container::Container,
text::Text, text::Text,
}, },
@ -40,19 +40,18 @@ fn main() {
hui.begin(); hui.begin();
hui.add({ Container::default()
Container::default() .with_size((UiSize::Fraction(1.), UiSize::Fraction(1.)))
.with_size((UiSize::Fraction(1.), UiSize::Fraction(1.))) .with_padding(Sides::all(5.))
.with_padding(Sides::all(5.)) .with_background(vec3(1., 0., 0.))
.with_background(vec3(1., 0., 0.)) .with_children(|ui: &mut ElementList| {
.with_children(|ui: &mut ElementList| { Text::default()
Text::default() .with_text("Hello, world")
.with_text("Hello, world") .with_text_size(120)
.with_text_size(120) .with_color(vec4(0., 0., 0., 1.))
.with_color(vec4(0., 0., 0., 1.)) .add_child(ui);
.add_to(ui); })
}) .add_root(&mut hui, resolution);
}, resolution);
hui.end(); hui.end();

View file

@ -1,10 +1,6 @@
use std::any::Any; use std::any::Any;
use crate::{ use crate::{
draw::UiDrawCommandList, draw::UiDrawCommandList, layout::LayoutInfo, measure::Response, state::StateRepo, text::TextMeasure, UiInstance
measure::Response,
state::StateRepo,
text::TextMeasure,
layout::LayoutInfo
}; };
mod builtin; mod builtin;
@ -64,7 +60,7 @@ pub trait UiElement {
pub struct ElementList(pub Vec<Box<dyn UiElement>>); pub struct ElementList(pub Vec<Box<dyn UiElement>>);
impl ElementList { impl ElementList {
pub fn add<'a>(&mut self, element: impl UiElement + 'static) { pub fn add(&mut self, element: impl UiElement + 'static) {
self.0.push(Box::new(element)) self.0.push(Box::new(element))
} }
} }
@ -83,12 +79,16 @@ impl From<Vec<Box<dyn UiElement>>> for ElementList {
} }
} }
pub trait UiElementListExt { pub trait UiElementExt: UiElement {
fn add_to(self, ui: &mut ElementList); fn add_child(self, ui: &mut ElementList);
fn add_root(self, ui: &mut UiInstance, resolution: glam::Vec2);
} }
impl<T: UiElement + 'static> UiElementListExt for T { impl<T: UiElement + 'static> UiElementExt for T {
fn add_to(self, ui: &mut ElementList) { fn add_child(self, ui: &mut ElementList) {
ui.add(self) ui.add(self)
} }
fn add_root(self, ui: &mut UiInstance, max_size: glam::Vec2) {
ui.add(self, max_size);
}
} }