position fix
This commit is contained in:
+13
-8
@@ -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()));
|
||||
|
||||
|
||||
+21
-7
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user