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}