1use point2f::Point2f;
4
5#[cfg(all(windows, feature = "d2d"))]
6use winapi::um::d2d1::D2D1_TRIANGLE;
7
8#[derive(Copy, Clone, Debug, Default, PartialEq)]
10#[cfg_attr(feature = "serde_derive", derive(Serialize, Deserialize))]
11#[repr(C)]
12pub struct Triangle {
13 pub p1: Point2f,
15 pub p2: Point2f,
17 pub p3: Point2f,
19}
20
21impl<P1, P2, P3> From<(P1, P2, P3)> for Triangle
22where
23 P1: Into<Point2f>,
24 P2: Into<Point2f>,
25 P3: Into<Point2f>,
26{
27 #[inline]
28 fn from((p1, p2, p3): (P1, P2, P3)) -> Triangle {
29 Triangle {
30 p1: p1.into(),
31 p2: p2.into(),
32 p3: p3.into(),
33 }
34 }
35}
36
37#[cfg(all(windows, feature = "d2d"))]
38impl From<Triangle> for D2D1_TRIANGLE {
39 #[inline]
40 fn from(seg: Triangle) -> D2D1_TRIANGLE {
41 D2D1_TRIANGLE {
42 point1: seg.p1.into(),
43 point2: seg.p2.into(),
44 point3: seg.p3.into(),
45 }
46 }
47}
48
49#[cfg(all(windows, feature = "d2d"))]
50impl From<D2D1_TRIANGLE> for Triangle {
51 #[inline]
52 fn from(seg: D2D1_TRIANGLE) -> Triangle {
53 Triangle {
54 p1: seg.point1.into(),
55 p2: seg.point2.into(),
56 p3: seg.point3.into(),
57 }
58 }
59}