Remove *_v methods

This commit is contained in:
Brendan Zabarauskas 2012-11-26 00:08:35 +10:00
parent 911eb6bbc1
commit 89f5c6c3e7
2 changed files with 16 additions and 66 deletions

View file

@ -126,6 +126,8 @@ pub trait Clamp {
pure fn clamp(mn: &self, mx: &self) -> self; pure fn clamp(mn: &self, mx: &self) -> self;
} }
#[inline(always)] pub pure fn clamp<T:Clamp>(x: &T, mn: &T, mx: &T) -> T { x.clamp(mn, mx) }
pub impl u8: Clamp { #[inline(always)] pure fn clamp(mn: &u8, mx: &u8) -> u8 { min(&max(&self, mn), mx) } } pub impl u8: Clamp { #[inline(always)] pure fn clamp(mn: &u8, mx: &u8) -> u8 { min(&max(&self, mn), mx) } }
pub impl u16: Clamp { #[inline(always)] pure fn clamp(mn: &u16, mx: &u16) -> u16 { min(&max(&self, mn), mx) } } pub impl u16: Clamp { #[inline(always)] pure fn clamp(mn: &u16, mx: &u16) -> u16 { min(&max(&self, mn), mx) } }
pub impl u32: Clamp { #[inline(always)] pure fn clamp(mn: &u32, mx: &u32) -> u32 { min(&max(&self, mn), mx) } } pub impl u32: Clamp { #[inline(always)] pure fn clamp(mn: &u32, mx: &u32) -> u32 { min(&max(&self, mn), mx) } }
@ -140,52 +142,26 @@ pub impl f32: Clamp { #[inline(always)] pure fn clamp(mn: &f32, mx: &f32)
pub impl f64: Clamp { #[inline(always)] pure fn clamp(mn: &f64, mx: &f64) -> f64 { min(&max(&self, mn), mx) } } pub impl f64: Clamp { #[inline(always)] pure fn clamp(mn: &f64, mx: &f64) -> f64 { min(&max(&self, mn), mx) } }
pub impl float: Clamp { #[inline(always)] pure fn clamp(mn: &float, mx: &float) -> float { min(&max(&self, mn), mx) } } pub impl float: Clamp { #[inline(always)] pure fn clamp(mn: &float, mx: &float) -> float { min(&max(&self, mn), mx) } }
pub trait ClampV<T> { pub impl<T:Copy Clamp> Vec2<T>: Clamp {
pure fn clamp(mn: &T, mx: &T) -> self;
pure fn clamp_v(mn: &self, mx: &self) -> self;
}
pub impl<T:Copy Clamp> Vec2<T>: ClampV<T> {
#[inline(always)] #[inline(always)]
pure fn clamp(mn: &T, mx: &T) -> Vec2<T> { pure fn clamp(mn: &Vec2<T>, mx: &Vec2<T>) -> Vec2<T> {
Vec2::new(self[0].clamp(mn, mx),
self[1].clamp(mn, mx))
}
#[inline(always)]
pure fn clamp_v(mn: &Vec2<T>, mx: &Vec2<T>) -> Vec2<T> {
Vec2::new(self[0].clamp(&mn[0], &mx[0]), Vec2::new(self[0].clamp(&mn[0], &mx[0]),
self[1].clamp(&mn[1], &mx[1])) self[1].clamp(&mn[1], &mx[1]))
} }
} }
pub impl<T:Copy Clamp> Vec3<T>: ClampV<T> { pub impl<T:Copy Clamp> Vec3<T>: Clamp {
#[inline(always)] #[inline(always)]
pure fn clamp(mn: &T, mx: &T) -> Vec3<T> { pure fn clamp(mn: &Vec3<T>, mx: &Vec3<T>) -> Vec3<T> {
Vec3::new(self[0].clamp(mn, mx),
self[1].clamp(mn, mx),
self[2].clamp(mn, mx))
}
#[inline(always)]
pure fn clamp_v(mn: &Vec3<T>, mx: &Vec3<T>) -> Vec3<T> {
Vec3::new(self[0].clamp(&mn[0], &mx[0]), Vec3::new(self[0].clamp(&mn[0], &mx[0]),
self[1].clamp(&mn[1], &mx[1]), self[1].clamp(&mn[1], &mx[1]),
self[2].clamp(&mn[2], &mx[2])) self[2].clamp(&mn[2], &mx[2]))
} }
} }
pub impl<T:Copy Clamp> Vec4<T>: ClampV<T> { pub impl<T:Copy Clamp> Vec4<T>: Clamp {
#[inline(always)] #[inline(always)]
pure fn clamp(mn: &T, mx: &T) -> Vec4<T> { pure fn clamp(mn: &Vec4<T>, mx: &Vec4<T>) -> Vec4<T> {
Vec4::new(self[0].clamp(mn, mx),
self[1].clamp(mn, mx),
self[2].clamp(mn, mx),
self[3].clamp(mn, mx))
}
#[inline(always)]
pure fn clamp_v(mn: &Vec4<T>, mx: &Vec4<T>) -> Vec4<T> {
Vec4::new(self[0].clamp(&mn[0], &mx[0]), Vec4::new(self[0].clamp(&mn[0], &mx[0]),
self[1].clamp(&mn[1], &mx[1]), self[1].clamp(&mn[1], &mx[1]),
self[2].clamp(&mn[2], &mx[2]), self[2].clamp(&mn[2], &mx[2]),

View file

@ -5,6 +5,8 @@ pub trait Mix {
pure fn mix(other: &self, value: &self) -> self; pure fn mix(other: &self, value: &self) -> self;
} }
#[inline(always)] pub pure fn mix<T:Mix>(a: &T, b: &T, value: &T) -> T { a.mix(b, value) }
pub impl f32: Mix { pub impl f32: Mix {
#[inline(always)] #[inline(always)]
pure fn mix(other: &f32, value: &f32) -> f32 { pure fn mix(other: &f32, value: &f32) -> f32 {
@ -26,54 +28,26 @@ pub impl float: Mix {
} }
} }
pub impl<T:Copy Mix> Vec2<T>: Mix {
pub trait MixV<T> {
pure fn mix(other: &self, value: &T) -> self;
pure fn mix_v(other: &self, values: &self) -> self;
}
pub impl<T:Copy Mix> Vec2<T>: MixV<T> {
#[inline(always)] #[inline(always)]
pure fn mix(other: &Vec2<T>, value: &T) -> Vec2<T> { pure fn mix(other: &Vec2<T>, values: &Vec2<T>) -> Vec2<T> {
Vec2::new(self[0].mix(&other[0], value),
self[1].mix(&other[1], value))
}
#[inline(always)]
pure fn mix_v(other: &Vec2<T>, values: &Vec2<T>) -> Vec2<T> {
Vec2::new(self[0].mix(&other[0], &values[0]), Vec2::new(self[0].mix(&other[0], &values[0]),
self[1].mix(&other[1], &values[1])) self[1].mix(&other[1], &values[1]))
} }
} }
pub impl<T:Copy Mix> Vec3<T>: MixV<T> { pub impl<T:Copy Mix> Vec3<T>: Mix {
#[inline(always)] #[inline(always)]
pure fn mix(other: &Vec3<T>, value: &T) -> Vec3<T> { pure fn mix(other: &Vec3<T>, values: &Vec3<T>) -> Vec3<T> {
Vec3::new(self[0].mix(&other[0], value),
self[1].mix(&other[1], value),
self[2].mix(&other[2], value))
}
#[inline(always)]
pure fn mix_v(other: &Vec3<T>, values: &Vec3<T>) -> Vec3<T> {
Vec3::new(self[0].mix(&other[0], &values[0]), Vec3::new(self[0].mix(&other[0], &values[0]),
self[1].mix(&other[1], &values[1]), self[1].mix(&other[1], &values[1]),
self[2].mix(&other[2], &values[2])) self[2].mix(&other[2], &values[2]))
} }
} }
pub impl<T:Copy Mix> Vec4<T>: MixV<T> { pub impl<T:Copy Mix> Vec4<T>: Mix {
#[inline(always)] #[inline(always)]
pure fn mix(other: &Vec4<T>, value: &T) -> Vec4<T> { pure fn mix(other: &Vec4<T>, values: &Vec4<T>) -> Vec4<T> {
Vec4::new(self[0].mix(&other[0], value),
self[1].mix(&other[1], value),
self[2].mix(&other[2], value),
self[3].mix(&other[3], value))
}
#[inline(always)]
pure fn mix_v(other: &Vec4<T>, values: &Vec4<T>) -> Vec4<T> {
Vec4::new(self[0].mix(&other[0], &values[0]), Vec4::new(self[0].mix(&other[0], &values[0]),
self[1].mix(&other[1], &values[1]), self[1].mix(&other[1], &values[1]),
self[2].mix(&other[2], &values[2]), self[2].mix(&other[2], &values[2]),