switch to element defined span lens + better size fn

This commit is contained in:
2025-11-13 14:27:31 -05:00
parent 8755c04feb
commit 73afea8c35
17 changed files with 767 additions and 646 deletions

View File

@@ -8,6 +8,7 @@ use ui::prelude::*;
use winit::{event::WindowEvent, event_loop::ActiveEventLoop, window::Window};
use crate::testing::input::Input;
use len_fns::*;
mod app;
mod input;
@@ -42,39 +43,35 @@ impl Client {
let pad_test = (
rrect.color(Color::BLUE),
(
rrect.color(Color::RED).sized(100).center(),
rrect
.color(Color::RED)
.sized((100, 100))
.center()
.width(rest(2)),
(
rrect.color(Color::ORANGE),
rrect.color(Color::LIME).pad(10.0),
)
.span(Dir::RIGHT, ratio(1)),
.span(Dir::RIGHT)
.width(rest(2)),
rrect.color(Color::YELLOW),
)
.span(Dir::RIGHT, [2, 2, 1])
.pad(10),
.span(Dir::RIGHT)
.pad(10)
.width(rest(3)),
)
.span(Dir::RIGHT, [1, 3])
.span(Dir::RIGHT)
.add_static(&mut ui);
let span_test = (
rrect.color(Color::GREEN),
rrect.color(Color::GREEN).width(100),
rrect.color(Color::ORANGE),
rrect.color(Color::CYAN),
rrect.color(Color::BLUE),
rrect.color(Color::MAGENTA),
rrect.color(Color::RED),
rrect.color(Color::BLUE).width(rel(0.5)),
rrect.color(Color::MAGENTA).width(100),
rrect.color(Color::RED).width(100),
)
.span(
Dir::LEFT,
[
fixed(100),
ratio(1),
ratio(1),
relative(0.5),
fixed(100),
fixed(100),
],
)
.span(Dir::LEFT)
.add_static(&mut ui);
let span_add = Span::empty(Dir::RIGHT).add_static(&mut ui);
@@ -86,9 +83,9 @@ impl Client {
.ui
.add(image(include_bytes!("assets/sungals.png")).center())
.any();
ctx.ui[span_add].children.push((child, sized()));
ctx.ui[span_add].children.push(child);
})
.sized(150)
.sized((150, 150))
.align(Align::BotRight);
let del_button = rect(Color::RED)
@@ -96,7 +93,7 @@ impl Client {
.on(CursorSense::click(), move |ctx: &mut Client, _| {
ctx.ui[span_add].children.pop();
})
.sized(150)
.sized((150, 150))
.align(Align::BotLeft);
let span_add_test = (span_add, add_button, del_button)
@@ -117,18 +114,18 @@ impl Client {
btext("'").family(Family::Monospace).align(Align::Top),
btext("'").family(Family::Monospace),
btext(":gamer mode").family(Family::Monospace),
rect(Color::CYAN).sized(10).center(),
rect(Color::RED).sized(100).center(),
rect(Color::PURPLE).sized(50).align(Align::Top),
rect(Color::CYAN).sized((10, 10)).center(),
rect(Color::RED).sized((100, 100)).center(),
rect(Color::PURPLE).sized((50, 50)).align(Align::Top),
)
.span(Dir::RIGHT, sized())
.span(Dir::RIGHT)
.center(),
text("pretty cool right?").size(50),
)
.span(Dir::DOWN, sized())
.span(Dir::DOWN)
.add_static(&mut ui);
let texts = Span::empty(Dir::DOWN).add_static(&mut ui);
let texts = Span::empty(Dir::DOWN).spacing(10).add_static(&mut ui);
let msg_area = (Rect::new(Color::SKY), texts.scroll().masked()).stack();
let add_text = text("add")
.editable()
@@ -153,7 +150,7 @@ impl Client {
.stack()
.size(StackSize::Child(1))
.add(&mut client.ui);
client.ui[texts].children.push((msg_box.any(), sized()));
client.ui[texts].children.push(msg_box.any());
})
.add(&mut ui);
let text_edit_scroll = (
@@ -161,14 +158,14 @@ impl Client {
(
Rect::new(Color::WHITE.darker(0.9)),
(
add_text.clone(),
add_text.clone().width(rest(1)),
Rect::new(Color::GREEN)
.on(CursorSense::click(), move |client: &mut Client, _| {
client.run_event(&add_text, Submit, ());
})
.sized(40),
.sized((40, 40)),
)
.span(Dir::RIGHT, [ratio(1), sized()])
.span(Dir::RIGHT)
.pad(10),
)
.stack()
@@ -176,7 +173,7 @@ impl Client {
.offset_layer(1)
.align(Align::Bot),
)
.span(Dir::DOWN, [ratio(1), sized()])
.span(Dir::DOWN)
.add_static(&mut ui);
let switch_button = |color, to, label| {
@@ -208,15 +205,12 @@ impl Client {
"text edit scroll",
),
)
.span(Dir::RIGHT, ratio(1));
.span(Dir::RIGHT);
let info = text("").add(&mut ui);
let info_sect = info.clone().pad(10).align(Align::Right);
(
(tabs, main).span(Dir::DOWN, [fixed(40), ratio(1)]),
info_sect,
)
((tabs.height(40), main).span(Dir::DOWN), info_sect)
.stack()
.set_root(&mut ui);