Rename a length's abs component to px

`dp` is coming, and then `abs` says which of the two it is not. The
component has always been a pixel count, so the name that admits it is
the one that leaves room for a second unit beside it.

Mechanical: the field on `Len` and `UiScalar`, their constructors,
`to_abs`/`get_abs`, the matching WGSL struct member and the locals
composing it. Field order and types are unchanged, so the `Pod` layout
the shader reads is the same bytes. `f32::abs` is untouched.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
iris-aiandClaude Opus 5 committed 2026-09-14 22:29:20 -04:00
1 parent 3f7cd8251b
commit 7c50a3e51b
22 files changed
+120 -124

No files matched your search

+38 -38
View File
@@ -23,11 +23,11 @@ impl UiVec2 {
Self { x, y }
}
pub const fn abs(abs: impl const Into<Vec2>) -> Self {
let abs = abs.into();
pub const fn px(px: impl const Into<Vec2>) -> Self {
let px = px.into();
Self {
x: UiScalar::abs(abs.x),
y: UiScalar::abs(abs.y),
x: UiScalar::px(px.x),
y: UiScalar::px(px.y),
}
}
@@ -70,10 +70,10 @@ impl UiVec2 {
}
}
pub fn to_abs(&self, rel: Vec2) -> Vec2 {
pub fn to_px(&self, rel: Vec2) -> Vec2 {
Vec2 {
x: self.x.to_abs(rel.x),
y: self.y.to_abs(rel.y),
x: self.x.to_px(rel.x),
y: self.y.to_px(rel.y),
}
}
@@ -92,8 +92,8 @@ impl UiVec2 {
}
}
pub fn get_abs(&self) -> Vec2 {
(self.x.abs, self.y.abs).into()
pub fn get_px(&self) -> Vec2 {
(self.x.px, self.y.px).into()
}
pub fn get_rel(&self) -> Vec2 {
@@ -102,15 +102,15 @@ impl UiVec2 {
pub fn abs_mut(&mut self) -> Vec2View<'_> {
Vec2View {
x: &mut self.x.abs,
y: &mut self.y.abs,
x: &mut self.x.px,
y: &mut self.y.px,
}
}
}
impl Display for UiVec2 {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "rel{};abs{}", self.get_rel(), self.get_abs())
write!(f, "rel{};px{}", self.get_rel(), self.get_px())
}
}
@@ -118,8 +118,8 @@ impl_op!(UiVec2 Add add; x y);
impl_op!(UiVec2 Sub sub; x y);
const impl From<Vec2> for UiVec2 {
fn from(abs: Vec2) -> Self {
Self::abs(abs)
fn from(px: Vec2) -> Self {
Self::px(px)
}
}
@@ -127,8 +127,8 @@ const impl<T: const UiNum, U: const UiNum> From<(T, U)> for UiVec2
where
(T, U): const Destruct,
{
fn from(abs: (T, U)) -> Self {
Self::abs(abs)
fn from(px: (T, U)) -> Self {
Self::px(px)
}
}
@@ -136,34 +136,34 @@ where
#[derive(Debug, Copy, Clone, PartialEq, bytemuck::Pod, Default, bytemuck::Zeroable)]
pub struct UiScalar {
pub rel: f32,
pub abs: f32,
pub px: f32,
}
impl Eq for UiScalar {}
impl Hash for UiScalar {
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
state.write_u32(self.rel.to_bits());
state.write_u32(self.abs.to_bits());
state.write_u32(self.px.to_bits());
}
}
impl_op!(UiScalar Add add; rel abs);
impl_op!(UiScalar Sub sub; rel abs);
impl_op!(UiScalar Add add; rel px);
impl_op!(UiScalar Sub sub; rel px);
impl UiScalar {
pub const ZERO: Self = Self { rel: 0.0, abs: 0.0 };
pub const FULL: Self = Self { rel: 1.0, abs: 0.0 };
pub const ZERO: Self = Self { rel: 0.0, px: 0.0 };
pub const FULL: Self = Self { rel: 1.0, px: 0.0 };
pub const fn new(rel: f32, abs: f32) -> Self {
Self { rel, abs }
pub const fn new(rel: f32, px: f32) -> Self {
Self { rel, px }
}
pub const fn rel(rel: f32) -> Self {
Self { rel, abs: 0.0 }
Self { rel, px: 0.0 }
}
pub const fn abs(abs: f32) -> Self {
Self { rel: 0.0, abs }
pub const fn px(px: f32) -> Self {
Self { rel: 0.0, px }
}
pub const fn rel_min() -> Self {
@@ -177,28 +177,28 @@ impl UiScalar {
pub const fn max(&self, other: Self) -> Self {
Self {
rel: self.rel.max(other.rel),
abs: self.abs.max(other.abs),
px: self.px.max(other.px),
}
}
pub const fn min(&self, other: Self) -> Self {
Self {
rel: self.rel.min(other.rel),
abs: self.abs.min(other.abs),
px: self.px.min(other.px),
}
}
pub const fn offset(mut self, amt: f32) -> Self {
self.abs += amt;
self.px += amt;
self
}
pub const fn within(&self, span: &UiSpan) -> Self {
let anchor = self.rel.lerp(span.start.rel, span.end.rel);
let offset = self.abs + self.rel.lerp(span.start.abs, span.end.abs);
let offset = self.px + self.rel.lerp(span.start.px, span.end.px);
Self {
rel: anchor,
abs: offset,
px: offset,
}
}
@@ -215,15 +215,15 @@ impl UiScalar {
pub const fn flip(&mut self) {
self.rel = 1.0 - self.rel;
self.abs = -self.abs;
self.px = -self.px;
}
pub const fn to(&self, end: Self) -> UiSpan {
UiSpan { start: *self, end }
}
pub const fn to_abs(&self, rel: f32) -> f32 {
self.rel * rel + self.abs
pub const fn to_px(&self, rel: f32) -> f32 {
self.rel * rel + self.px
}
}
@@ -255,7 +255,7 @@ impl UiSpan {
self.start.flip();
self.end.flip();
std::mem::swap(&mut self.start.rel, &mut self.end.rel);
std::mem::swap(&mut self.start.abs, &mut self.end.abs);
std::mem::swap(&mut self.start.px, &mut self.end.px);
}
pub const fn shift(&mut self, offset: UiScalar) {
@@ -338,8 +338,8 @@ impl UiRegion {
pub fn to_px(&self, size: Vec2) -> PixelRegion {
PixelRegion {
top_left: self.top_left().get_rel() * size + self.top_left().get_abs(),
bot_right: self.bot_right().get_rel() * size + self.bot_right().get_abs(),
top_left: self.top_left().get_rel() * size + self.top_left().get_px(),
bot_right: self.bot_right().get_rel() * size + self.bot_right().get_px(),
}
}