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