kurbo/
interop_euclid.rs

1// Copyright 2025 the Kurbo Authors
2// SPDX-License-Identifier: Apache-2.0 OR MIT
3
4use euclid::UnknownUnit;
5
6impl From<euclid::Vector2D<f64, UnknownUnit>> for crate::Vec2 {
7    fn from(value: euclid::Vector2D<f64, UnknownUnit>) -> Self {
8        Self::new(value.x, value.y)
9    }
10}
11
12impl From<crate::Vec2> for euclid::Vector2D<f64, UnknownUnit> {
13    fn from(value: crate::Vec2) -> Self {
14        Self::new(value.x, value.y)
15    }
16}
17
18impl From<euclid::Point2D<f64, UnknownUnit>> for crate::Point {
19    fn from(value: euclid::Point2D<f64, UnknownUnit>) -> Self {
20        Self::new(value.x, value.y)
21    }
22}
23
24impl From<crate::Point> for euclid::Point2D<f64, UnknownUnit> {
25    fn from(value: crate::Point) -> Self {
26        Self::new(value.x, value.y)
27    }
28}
29
30impl From<euclid::Size2D<f64, UnknownUnit>> for crate::Size {
31    fn from(value: euclid::Size2D<f64, UnknownUnit>) -> Self {
32        Self::new(value.width, value.height)
33    }
34}
35
36impl From<crate::Size> for euclid::Size2D<f64, UnknownUnit> {
37    fn from(value: crate::Size) -> Self {
38        Self::new(value.width, value.height)
39    }
40}
41
42impl From<euclid::Rect<f64, UnknownUnit>> for crate::Rect {
43    fn from(value: euclid::Rect<f64, UnknownUnit>) -> Self {
44        Self::from_origin_size(value.origin, value.size)
45    }
46}
47
48impl From<crate::Rect> for euclid::Rect<f64, UnknownUnit> {
49    fn from(value: crate::Rect) -> Self {
50        Self::new(value.origin().into(), value.size().into())
51    }
52}
53
54impl From<euclid::Box2D<f64, UnknownUnit>> for crate::Rect {
55    fn from(value: euclid::Box2D<f64, UnknownUnit>) -> Self {
56        Self::from_points(value.min, value.max)
57    }
58}
59
60impl From<crate::Rect> for euclid::Box2D<f64, UnknownUnit> {
61    fn from(value: crate::Rect) -> Self {
62        Self::new(
63            euclid::Point2D::new(value.min_x(), value.min_y()),
64            euclid::Point2D::new(value.max_x(), value.max_y()),
65        )
66    }
67}
68
69impl From<euclid::Transform2D<f64, UnknownUnit, UnknownUnit>> for crate::Affine {
70    fn from(t: euclid::Transform2D<f64, UnknownUnit, UnknownUnit>) -> Self {
71        Self::new(t.to_array())
72    }
73}
74
75impl From<crate::Affine> for euclid::Transform2D<f64, UnknownUnit, UnknownUnit> {
76    fn from(a: crate::Affine) -> Self {
77        Self::from_array(a.as_coeffs())
78    }
79}