Struct Translation2D
#[repr(C)]pub struct Translation2D<T, Src, Dst> {
pub x: T,
pub y: T,
/* private fields */
}Expand description
A 2d transformation from a space to another that can only express translations.
The main benefit of this type over a Vector2D is the ability to cast
between source and destination spaces.
Example:
use euclid::{Translation2D, Point2D, point2};
struct ParentSpace;
struct ChildSpace;
type ScrollOffset = Translation2D<i32, ParentSpace, ChildSpace>;
type ParentPoint = Point2D<i32, ParentSpace>;
type ChildPoint = Point2D<i32, ChildSpace>;
let scrolling = ScrollOffset::new(0, 100);
let p1: ParentPoint = point2(0, 0);
let p2: ChildPoint = scrolling.transform_point(p1);Fields§
§x: T§y: TImplementations§
§impl<T, Src, Dst> Translation2D<T, Src, Dst>
impl<T, Src, Dst> Translation2D<T, Src, Dst>
pub const fn new(x: T, y: T) -> Translation2D<T, Src, Dst>
pub fn splat(v: T) -> Translation2D<T, Src, Dst>where
T: Clone,
pub fn identity() -> Translation2D<T, Src, Dst>where
T: Zero,
pub fn identity() -> Translation2D<T, Src, Dst>where
T: Zero,
Creates no-op translation (both x and y is zero()).
pub fn is_identity(&self) -> bool
pub fn is_identity(&self) -> bool
Check if translation does nothing (both x and y is zero()).
use euclid::default::Translation2D;
assert_eq!(Translation2D::<f32>::identity().is_identity(), true);
assert_eq!(Translation2D::new(0, 0).is_identity(), true);
assert_eq!(Translation2D::new(1, 0).is_identity(), false);
assert_eq!(Translation2D::new(0, 1).is_identity(), false);pub fn transform_size(&self, s: Size2D<T, Src>) -> Size2D<T, Dst>
pub fn transform_size(&self, s: Size2D<T, Src>) -> Size2D<T, Dst>
No-op, just cast the unit.
§impl<T, Src, Dst> Translation2D<T, Src, Dst>where
T: Copy,
impl<T, Src, Dst> Translation2D<T, Src, Dst>where
T: Copy,
pub fn to_untyped(&self) -> Translation2D<T, UnknownUnit, UnknownUnit>
pub fn to_untyped(&self) -> Translation2D<T, UnknownUnit, UnknownUnit>
Drop the units, preserving only the numeric value.
pub fn from_untyped(
t: &Translation2D<T, UnknownUnit, UnknownUnit>,
) -> Translation2D<T, Src, Dst>
pub fn from_untyped( t: &Translation2D<T, UnknownUnit, UnknownUnit>, ) -> Translation2D<T, Src, Dst>
Tag a unitless value with units.
pub fn to_transform(&self) -> Transform2D<T, Src, Dst>
pub fn to_transform(&self) -> Transform2D<T, Src, Dst>
Returns the matrix representation of this translation.
pub fn transform_point(
&self,
p: Point2D<T, Src>,
) -> Point2D<<T as Add>::Output, Dst>where
T: Add,
pub fn transform_point(
&self,
p: Point2D<T, Src>,
) -> Point2D<<T as Add>::Output, Dst>where
T: Add,
Translate a point and cast its unit.
pub fn transform_rect(&self, r: &Rect<T, Src>) -> Rect<<T as Add>::Output, Dst>where
T: Add<Output = T>,
pub fn transform_rect(&self, r: &Rect<T, Src>) -> Rect<<T as Add>::Output, Dst>where
T: Add<Output = T>,
Translate a rectangle and cast its unit.
pub fn transform_box(&self, r: &Box2D<T, Src>) -> Box2D<<T as Add>::Output, Dst>where
T: Add,
pub fn transform_box(&self, r: &Box2D<T, Src>) -> Box2D<<T as Add>::Output, Dst>where
T: Add,
Translate a 2D box and cast its unit.
pub fn inverse(&self) -> Translation2D<<T as Neg>::Output, Dst, Src>where
T: Neg,
pub fn inverse(&self) -> Translation2D<<T as Neg>::Output, Dst, Src>where
T: Neg,
Return the inverse transformation.
§impl<T, Src, Dst> Translation2D<T, Src, Dst>
impl<T, Src, Dst> Translation2D<T, Src, Dst>
pub fn cast<NewT>(self) -> Translation2D<NewT, Src, Dst>where
NewT: NumCast,
pub fn cast<NewT>(self) -> Translation2D<NewT, Src, Dst>where
NewT: NumCast,
Cast from one numeric representation to another, preserving the units.
When casting from floating vector to integer coordinates, the decimals are truncated
as one would expect from a simple cast, but this behavior does not always make sense
geometrically. Consider using round(), ceil() or floor() before casting.
pub fn try_cast<NewT>(self) -> Option<Translation2D<NewT, Src, Dst>>where
NewT: NumCast,
pub fn try_cast<NewT>(self) -> Option<Translation2D<NewT, Src, Dst>>where
NewT: NumCast,
Fallible cast from one numeric representation to another, preserving the units.
When casting from floating vector to integer coordinates, the decimals are truncated
as one would expect from a simple cast, but this behavior does not always make sense
geometrically. Consider using round(), ceil() or floor() before casting.
pub fn to_f32(self) -> Translation2D<f32, Src, Dst>
pub fn to_f32(self) -> Translation2D<f32, Src, Dst>
Cast into an f32 vector.
pub fn to_f64(self) -> Translation2D<f64, Src, Dst>
pub fn to_f64(self) -> Translation2D<f64, Src, Dst>
Cast into an f64 vector.
pub fn to_usize(self) -> Translation2D<usize, Src, Dst>
pub fn to_usize(self) -> Translation2D<usize, Src, Dst>
Cast into an usize vector, truncating decimals if any.
When casting from floating vector vectors, it is worth considering whether
to round(), ceil() or floor() before the cast in order to obtain
the desired conversion behavior.
pub fn to_u32(self) -> Translation2D<u32, Src, Dst>
pub fn to_u32(self) -> Translation2D<u32, Src, Dst>
Cast into an u32 vector, truncating decimals if any.
When casting from floating vector vectors, it is worth considering whether
to round(), ceil() or floor() before the cast in order to obtain
the desired conversion behavior.
pub fn to_i32(self) -> Translation2D<i32, Src, Dst>
pub fn to_i32(self) -> Translation2D<i32, Src, Dst>
Cast into an i32 vector, truncating decimals if any.
When casting from floating vector vectors, it is worth considering whether
to round(), ceil() or floor() before the cast in order to obtain
the desired conversion behavior.
pub fn to_i64(self) -> Translation2D<i64, Src, Dst>
pub fn to_i64(self) -> Translation2D<i64, Src, Dst>
Cast into an i64 vector, truncating decimals if any.
When casting from floating vector vectors, it is worth considering whether
to round(), ceil() or floor() before the cast in order to obtain
the desired conversion behavior.
Trait Implementations§
§impl<T, Src, Dst1, Dst2> Add<Translation2D<T, Dst1, Dst2>> for Translation2D<T, Src, Dst1>where
T: Add,
impl<T, Src, Dst1, Dst2> Add<Translation2D<T, Dst1, Dst2>> for Translation2D<T, Src, Dst1>where
T: Add,
§type Output = Translation2D<<T as Add>::Output, Src, Dst2>
type Output = Translation2D<<T as Add>::Output, Src, Dst2>
+ operator.§fn add(
self,
other: Translation2D<T, Dst1, Dst2>,
) -> <Translation2D<T, Src, Dst1> as Add<Translation2D<T, Dst1, Dst2>>>::Output
fn add( self, other: Translation2D<T, Dst1, Dst2>, ) -> <Translation2D<T, Src, Dst1> as Add<Translation2D<T, Dst1, Dst2>>>::Output
+ operation. Read more§impl<T, Src, Dst> AddAssign<Translation2D<T, Dst, Dst>> for Translation2D<T, Src, Dst>where
T: AddAssign,
impl<T, Src, Dst> AddAssign<Translation2D<T, Dst, Dst>> for Translation2D<T, Src, Dst>where
T: AddAssign,
§fn add_assign(&mut self, other: Translation2D<T, Dst, Dst>)
fn add_assign(&mut self, other: Translation2D<T, Dst, Dst>)
+= operation. Read more§impl<T, Src, Dst> Clone for Translation2D<T, Src, Dst>where
T: Clone,
impl<T, Src, Dst> Clone for Translation2D<T, Src, Dst>where
T: Clone,
§fn clone(&self) -> Translation2D<T, Src, Dst>
fn clone(&self) -> Translation2D<T, Src, Dst>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl<T, Src, Dst> Debug for Translation2D<T, Src, Dst>where
T: Debug,
impl<T, Src, Dst> Debug for Translation2D<T, Src, Dst>where
T: Debug,
§impl<T, Src, Dst> Default for Translation2D<T, Src, Dst>where
T: Zero,
impl<T, Src, Dst> Default for Translation2D<T, Src, Dst>where
T: Zero,
§fn default() -> Translation2D<T, Src, Dst>
fn default() -> Translation2D<T, Src, Dst>
§impl<'de, T, Src, Dst> Deserialize<'de> for Translation2D<T, Src, Dst>where
T: Deserialize<'de>,
impl<'de, T, Src, Dst> Deserialize<'de> for Translation2D<T, Src, Dst>where
T: Deserialize<'de>,
§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Translation2D<T, Src, Dst>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Translation2D<T, Src, Dst>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
§impl<T, Src, Dst> From<Translation2D<T, Src, Dst>> for Transform2D<T, Src, Dst>
impl<T, Src, Dst> From<Translation2D<T, Src, Dst>> for Transform2D<T, Src, Dst>
§fn from(t: Translation2D<T, Src, Dst>) -> Transform2D<T, Src, Dst>
fn from(t: Translation2D<T, Src, Dst>) -> Transform2D<T, Src, Dst>
§impl<T, Src, Dst> From<Translation2D<T, Src, Dst>> for Vector2D<T, Src>
impl<T, Src, Dst> From<Translation2D<T, Src, Dst>> for Vector2D<T, Src>
§fn from(t: Translation2D<T, Src, Dst>) -> Vector2D<T, Src>
fn from(t: Translation2D<T, Src, Dst>) -> Vector2D<T, Src>
§impl<T, Src, Dst> From<Vector2D<T, Src>> for Translation2D<T, Src, Dst>
impl<T, Src, Dst> From<Vector2D<T, Src>> for Translation2D<T, Src, Dst>
§fn from(v: Vector2D<T, Src>) -> Translation2D<T, Src, Dst>
fn from(v: Vector2D<T, Src>) -> Translation2D<T, Src, Dst>
§impl<T, Src, Dst> Hash for Translation2D<T, Src, Dst>where
T: Hash,
impl<T, Src, Dst> Hash for Translation2D<T, Src, Dst>where
T: Hash,
§impl<T, Src, Dst> PartialEq for Translation2D<T, Src, Dst>where
T: PartialEq,
impl<T, Src, Dst> PartialEq for Translation2D<T, Src, Dst>where
T: PartialEq,
§impl<T, Src, Dst> Serialize for Translation2D<T, Src, Dst>where
T: Serialize,
impl<T, Src, Dst> Serialize for Translation2D<T, Src, Dst>where
T: Serialize,
§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
§impl<T, Src, Dst1, Dst2> Sub<Translation2D<T, Dst1, Dst2>> for Translation2D<T, Src, Dst2>where
T: Sub,
impl<T, Src, Dst1, Dst2> Sub<Translation2D<T, Dst1, Dst2>> for Translation2D<T, Src, Dst2>where
T: Sub,
§type Output = Translation2D<<T as Sub>::Output, Src, Dst1>
type Output = Translation2D<<T as Sub>::Output, Src, Dst1>
- operator.§fn sub(
self,
other: Translation2D<T, Dst1, Dst2>,
) -> <Translation2D<T, Src, Dst2> as Sub<Translation2D<T, Dst1, Dst2>>>::Output
fn sub( self, other: Translation2D<T, Dst1, Dst2>, ) -> <Translation2D<T, Src, Dst2> as Sub<Translation2D<T, Dst1, Dst2>>>::Output
- operation. Read more§impl<T, Src, Dst> SubAssign<Translation2D<T, Dst, Dst>> for Translation2D<T, Src, Dst>where
T: SubAssign,
impl<T, Src, Dst> SubAssign<Translation2D<T, Dst, Dst>> for Translation2D<T, Src, Dst>where
T: SubAssign,
§fn sub_assign(&mut self, other: Translation2D<T, Dst, Dst>)
fn sub_assign(&mut self, other: Translation2D<T, Dst, Dst>)
-= operation. Read more§impl<T, Src, Dst> Zeroable for Translation2D<T, Src, Dst>where
T: Zeroable,
impl<T, Src, Dst> Zeroable for Translation2D<T, Src, Dst>where
T: Zeroable,
impl<T, Src, Dst> Copy for Translation2D<T, Src, Dst>where
T: Copy,
impl<T, Src, Dst> Eq for Translation2D<T, Src, Dst>where
T: Eq,
impl<T, Src, Dst> Pod for Translation2D<T, Src, Dst>where
T: Pod,
Src: 'static,
Dst: 'static,
Auto Trait Implementations§
impl<T, Src, Dst> Freeze for Translation2D<T, Src, Dst>where
T: Freeze,
impl<T, Src, Dst> RefUnwindSafe for Translation2D<T, Src, Dst>
impl<T, Src, Dst> Send for Translation2D<T, Src, Dst>
impl<T, Src, Dst> Sync for Translation2D<T, Src, Dst>
impl<T, Src, Dst> Unpin for Translation2D<T, Src, Dst>
impl<T, Src, Dst> UnwindSafe for Translation2D<T, Src, Dst>
Blanket Implementations§
Source§impl<T> AnyVarValue for T
impl<T> AnyVarValue for T
Source§fn clone_boxed(&self) -> BoxAnyVarValue
fn clone_boxed(&self) -> BoxAnyVarValue
Source§fn eq_any(&self, other: &(dyn AnyVarValue + 'static)) -> bool
fn eq_any(&self, other: &(dyn AnyVarValue + 'static)) -> bool
self and other are equal.Source§fn try_swap(&mut self, other: &mut (dyn AnyVarValue + 'static)) -> bool
fn try_swap(&mut self, other: &mut (dyn AnyVarValue + 'static)) -> bool
other if both are of the same type.Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
§type Bits = T
type Bits = T
Self must have the same layout as the specified Bits except for
the possible invalid bit patterns being checked during
is_valid_bit_pattern.§fn is_valid_bit_pattern(_bits: &T) -> bool
fn is_valid_bit_pattern(_bits: &T) -> bool
bits
as &Self.Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more