Skip to main content

simple_render/ui/types/
commands.rs

1use super::*;
2
3#[derive(Clone, Debug, PartialEq)]
4pub enum DrawCommand {
5    Rect {
6        rect: Bounds,
7        clip: Clip,
8        opacity: f32,
9        paint: Paint,
10        gradient: GradientDirection,
11        radii: CornerRadius,
12    },
13    Border {
14        rect: Bounds,
15        clip: Clip,
16        opacity: f32,
17        paint: Paint,
18        gradient: GradientDirection,
19        widths: BorderWidth,
20        radii: CornerRadius,
21    },
22    Text {
23        rect: Bounds,
24        clip: Clip,
25        opacity: f32,
26        text: Text,
27    },
28    RichText {
29        rect: Bounds,
30        clip: Clip,
31        opacity: f32,
32        text: RichText,
33    },
34    Image {
35        rect: Bounds,
36        clip: Clip,
37        opacity: f32,
38        image: Image,
39    },
40}
41
42pub(in crate::ui) enum PaintCommand<'a> {
43    Rect {
44        rect: Bounds,
45        clip: Clip,
46        opacity: f32,
47        paint: &'a Paint,
48        gradient: GradientDirection,
49        radii: CornerRadius,
50    },
51    Border {
52        rect: Bounds,
53        clip: Clip,
54        opacity: f32,
55        paint: &'a Paint,
56        gradient: GradientDirection,
57        widths: BorderWidth,
58        radii: CornerRadius,
59    },
60    Text {
61        rect: Bounds,
62        clip: Clip,
63        opacity: f32,
64        text: &'a Text,
65    },
66    RichText {
67        rect: Bounds,
68        clip: Clip,
69        opacity: f32,
70        text: &'a RichText,
71    },
72    Image {
73        rect: Bounds,
74        clip: Clip,
75        opacity: f32,
76        image: &'a Image,
77    },
78}
79
80impl PaintCommand<'_> {
81    pub(in crate::ui) fn to_owned(&self) -> DrawCommand {
82        match self {
83            Self::Rect {
84                rect,
85                clip,
86                opacity,
87                paint,
88                gradient,
89                radii,
90            } => DrawCommand::Rect {
91                rect: *rect,
92                clip: *clip,
93                opacity: *opacity,
94                paint: (*paint).clone(),
95                gradient: *gradient,
96                radii: *radii,
97            },
98            Self::Border {
99                rect,
100                clip,
101                opacity,
102                paint,
103                gradient,
104                widths,
105                radii,
106            } => DrawCommand::Border {
107                rect: *rect,
108                clip: *clip,
109                opacity: *opacity,
110                paint: (*paint).clone(),
111                gradient: *gradient,
112                widths: *widths,
113                radii: *radii,
114            },
115            Self::Text {
116                rect,
117                clip,
118                opacity,
119                text,
120            } => DrawCommand::Text {
121                rect: *rect,
122                clip: *clip,
123                opacity: *opacity,
124                text: (*text).clone(),
125            },
126            Self::RichText {
127                rect,
128                clip,
129                opacity,
130                text,
131            } => DrawCommand::RichText {
132                rect: *rect,
133                clip: *clip,
134                opacity: *opacity,
135                text: (*text).clone(),
136            },
137            Self::Image {
138                rect,
139                clip,
140                opacity,
141                image,
142            } => DrawCommand::Image {
143                rect: *rect,
144                clip: *clip,
145                opacity: *opacity,
146                image: (*image).clone(),
147            },
148        }
149    }
150}