makepad_vector/path/
path_command.rs1use crate::geometry::{Point, Transform, Transformation};
2
3#[derive(Clone, Copy, Debug, PartialEq)]
5pub enum PathCommand {
6 MoveTo(Point),
7 LineTo(Point),
8 QuadraticTo(Point, Point),
9 CubicTo(Point, Point, Point),
10 Close,
11}
12
13impl Transform for PathCommand {
14 fn transform<T>(self, t: &T) -> PathCommand
15 where
16 T: Transformation,
17 {
18 match self {
19 PathCommand::MoveTo(p) => PathCommand::MoveTo(p.transform(t)),
20 PathCommand::LineTo(p) => PathCommand::LineTo(p.transform(t)),
21 PathCommand::QuadraticTo(p1, p) => {
22 PathCommand::QuadraticTo(p1.transform(t), p.transform(t))
23 }
24 PathCommand::CubicTo(p1, p2, p) => {
25 PathCommand::CubicTo(p1.transform(t), p2.transform(t), p.transform(t))
26 }
27 PathCommand::Close => PathCommand::Close,
28 }
29 }
30
31 fn transform_mut<T>(&mut self, t: &T)
32 where
33 T: Transformation,
34 {
35 *self = self.transform(t);
36 }
37}
38