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::{
elements::grid::{HGrid, VGrid},
extensions::{id::IdExtension, tick::TickExtension},
elements::{
div::Div,
grid::{HGrid, VGrid},
},
style::Transform,
Screen,
};
fn main() {
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 {
let row = HGrid::new(0xff0000, 1);
let row = HGrid::new(0xff00ff, 1);
vgrid.draw(screen.draw(row.clone()));
+22 -8
View File
@@ -110,16 +110,30 @@ impl Dimension {
impl Position {
pub fn use_position(&self, size: u16, parent: u16, m: i32, r: &mut u16) {
match self {
Self::Center => *r = (parent - size) / 2,
Self::Const(n) => *r = *n,
Self::End => *r = parent - size,
}
let base = match self {
Self::Center => {
if parent < size {
return;
}
(parent - size) / 2
}
Self::Const(n) => *n,
Self::End => {
if parent < size {
return;
}
parent - size
}
};
if m > 0 {
*r += m as u16;
let adjusted = if m >= 0 {
base.checked_add(m as u16)
} else {
*r -= -m as u16;
base.checked_sub((-m) as u16)
};
if let Some(val) = adjusted {
*r = val;
}
}
}