mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 20:26:42 +01:00
wip(p61,e38)
This commit is contained in:
parent
9d4fcaa32b
commit
76da19d9c6
12 changed files with 172 additions and 141 deletions
|
|
@ -50,34 +50,41 @@ pub struct ScaledAxis<T> {
|
|||
|
||||
macro_rules! impl_axis_common { ($A:ident $T:ty) => {
|
||||
impl $A<$T> {
|
||||
#[inline] pub fn start_plus (&mut self, n: $T) -> $T {
|
||||
#[inline] pub fn start_set (&mut self, n: $T) -> $T {
|
||||
self.start = n;
|
||||
self.start
|
||||
}
|
||||
#[inline] pub fn start_plus (&self, n: $T) -> $T {
|
||||
(self.start + n).min(self.clamp.unwrap_or(<$T>::MAX))
|
||||
}
|
||||
#[inline] pub fn start_inc (&mut self, n: $T) -> $T {
|
||||
self.start = self.start_plus(n);
|
||||
self.start
|
||||
self.start_set(self.start_plus(n))
|
||||
}
|
||||
#[inline] pub fn start_minus (&mut self, n: $T) -> $T {
|
||||
#[inline] pub fn start_minus (&self, n: $T) -> $T {
|
||||
self.start.saturating_sub(n)
|
||||
}
|
||||
#[inline] pub fn start_dec (&mut self, n: $T) -> $T {
|
||||
self.start = self.start_minus(n);
|
||||
self.start
|
||||
}
|
||||
#[inline] pub fn point_plus (&mut self, n: $T) -> Option<$T> {
|
||||
|
||||
#[inline] pub fn point_set (&mut self, n: Option<$T>) -> Option<$T> {
|
||||
self.point = n;
|
||||
self.point
|
||||
}
|
||||
#[inline] pub fn point_plus (&self, n: $T) -> Option<$T> {
|
||||
self.point.map(|p|(p + n).min(self.clamp.unwrap_or(<$T>::MAX)))
|
||||
}
|
||||
#[inline] pub fn point_inc (&mut self, n: $T) -> Option<$T> {
|
||||
self.point = self.point_plus(n);
|
||||
self.point
|
||||
self.point_set(self.point_plus(n))
|
||||
}
|
||||
#[inline] pub fn point_minus (&mut self, n: $T) -> Option<$T> {
|
||||
#[inline] pub fn point_minus (&self, n: $T) -> Option<$T> {
|
||||
self.point.map(|p|p.saturating_sub(n))
|
||||
}
|
||||
#[inline] pub fn point_dec (&mut self, n: $T) -> Option<$T> {
|
||||
self.point = self.point_minus(n);
|
||||
self.point
|
||||
self.point_set(self.point_minus(n))
|
||||
}
|
||||
|
||||
}
|
||||
} }
|
||||
impl_axis_common!(FixedAxis u16);
|
||||
|
|
@ -85,6 +92,13 @@ impl_axis_common!(FixedAxis usize);
|
|||
impl_axis_common!(ScaledAxis u16);
|
||||
impl_axis_common!(ScaledAxis usize);
|
||||
|
||||
impl<T: Copy> ScaledAxis<T> {
|
||||
#[inline] pub fn scale_set (&mut self, n: T) -> T {
|
||||
self.scale = n;
|
||||
n
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: return impl Point and impl Size instead of [N;x]
|
||||
// to disambiguate between usage of 2-"tuple"s
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue