add axis to flip so spans w negative sign work correctly

This commit is contained in:
2025-09-27 23:47:42 -04:00
parent dc9340b26c
commit b2950566af
2 changed files with 14 additions and 10 deletions

View File

@@ -33,7 +33,7 @@ impl Widget for Span {
}
axis.bot_right.set(start);
if self.dir.sign == Sign::Neg {
child_region.flip();
child_region.flip(self.dir.axis);
}
painter.widget_within(child, child_region);
}

View File

@@ -87,13 +87,14 @@ impl UiVec2 {
}
}
pub fn flip(&mut self) {
self.rel = 1.0 - self.rel;
self.abs = -self.abs;
/// reflection about an axis
pub fn flip(&mut self, axis: Axis) {
*self.rel.axis_mut(axis) = 1.0 - self.rel.axis(axis);
*self.abs.axis_mut(axis) = -self.abs.axis(axis);
}
pub fn flipped(mut self) -> Self {
self.flip();
pub fn flipped(mut self, axis: Axis) -> Self {
self.flip(axis);
self
}
@@ -227,10 +228,13 @@ impl UiRegion {
}
}
pub fn flip(&mut self) {
self.top_left.flip();
self.bot_right.flip();
std::mem::swap(&mut self.top_left, &mut self.bot_right);
pub fn flip(&mut self, axis: Axis) {
self.top_left.flip(axis);
self.bot_right.flip(axis);
let tl = self.top_left.axis_mut(axis);
let br = self.bot_right.axis_mut(axis);
std::mem::swap(tl.rel, br.rel);
std::mem::swap(tl.abs, br.abs);
}
pub fn shift(&mut self, offset: impl Into<UiVec2>) {