position fix

This commit is contained in:
2025-07-05 10:06:48 -05:00
parent 2f328f6762
commit 4dfbee5984
2 changed files with 35 additions and 16 deletions
+13 -8
View File
@@ -1,22 +1,27 @@
use osui::{ use osui::{
elements::grid::{HGrid, VGrid}, elements::{
extensions::{id::IdExtension, tick::TickExtension}, div::Div,
grid::{HGrid, VGrid},
},
style::Transform, style::Transform,
Screen, Screen,
}; };
fn main() { fn main() {
let mut screen = Screen::new(); let mut screen = Screen::new();
let document = IdExtension::new();
screen.extension(document.clone());
screen.extension(TickExtension(10));
let vgrid = VGrid::new(0xff0000, 1); let container = Div::new(0xffff00);
screen.draw(vgrid.clone()).component(Transform::center()); screen
.draw(container.clone())
.component(Transform::center().dimensions(70, 11));
let vgrid = VGrid::new(0x0000ff, 1);
container.draw(screen.draw(vgrid.clone()).component(Transform::center()));
for _ in 1..6 { for _ in 1..6 {
let row = HGrid::new(0xff0000, 1); let row = HGrid::new(0xff00ff, 1);
vgrid.draw(screen.draw(row.clone())); vgrid.draw(screen.draw(row.clone()));
+21 -7
View File
@@ -110,16 +110,30 @@ impl Dimension {
impl Position { impl Position {
pub fn use_position(&self, size: u16, parent: u16, m: i32, r: &mut u16) { pub fn use_position(&self, size: u16, parent: u16, m: i32, r: &mut u16) {
match self { let base = match self {
Self::Center => *r = (parent - size) / 2, Self::Center => {
Self::Const(n) => *r = *n, if parent < size {
Self::End => *r = parent - size, return;
} }
(parent - size) / 2
}
Self::Const(n) => *n,
Self::End => {
if parent < size {
return;
}
parent - size
}
};
if m > 0 { let adjusted = if m >= 0 {
*r += m as u16; base.checked_add(m as u16)
} else { } else {
*r -= -m as u16; base.checked_sub((-m) as u16)
};
if let Some(val) = adjusted {
*r = val;
} }
} }
} }