ferroui_base/rendering/composition/generated/
composition_simple_radial_gradient_brush.rs1use bitflags::bitflags;
8use crate::RelativePoint;
9use crate::RelativeScalar;
10use crate::rendering::composition::expressions::ExpressionVariant;
11use crate::rendering::composition::server::CompositionProperty;
12use crate::rendering::composition::server::CompositionPropertyOf;
13use crate::rendering::composition::server::IServerPropertyHost;
14use crate::rendering::composition::server::ServerPropertyValue;
15use crate::rendering::composition::server::ServerValueChange;
16use crate::rendering::composition::server::props_of;
17use crate::rendering::composition::transport::BatchStreamReader;
18use crate::rendering::composition::transport::BatchStreamWriter;
19use crate::rendering::composition::transport::BatchValue;
20use crate::rendering::composition::transport::BatchValueReader;
21use std::any::Any;
22use std::any::TypeId;
23use std::cell::Cell;
24use std::sync::OnceLock;
25use std::time::Duration;
26
27bitflags! {
28 #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
30 pub struct CompositionSimpleRadialGradientBrushChangedFields: u8 {
31 const CENTER = 1;
32 const GRADIENT_ORIGIN = 2;
33 const RADIUS_X = 4;
34 const RADIUS_Y = 8;
35 }
36}
37
38impl BatchValue for CompositionSimpleRadialGradientBrushChangedFields {
39 #[inline]
40 fn write_to(&self, out: &mut Vec<u8>) {
41 self.bits().write_to(out);
42 }
43
44 #[inline]
45 fn read_from(input: &mut BatchValueReader<'_>) -> Self {
46 CompositionSimpleRadialGradientBrushChangedFields::from_bits_retain(u8::read_from(input))
47 }
48}
49
50pub trait ServerCompositionSimpleRadialGradientBrushHooks: IServerPropertyHost {
53 fn base_deserialize_changes_core(&self, reader: &mut BatchStreamReader<'_>, committed_at: Duration);
56
57 fn deserialize_changes_extra(&self, _reader: &mut BatchStreamReader<'_>) {}
58 fn on_fields_deserialized(&self, _changed: CompositionSimpleRadialGradientBrushChangedFields) {}
59
60 fn on_center_changed(&self) {}
61 fn on_center_changing(&self) {}
62
63 fn on_gradient_origin_changed(&self) {}
64 fn on_gradient_origin_changing(&self) {}
65
66 fn on_radius_x_changed(&self) {}
67 fn on_radius_x_changing(&self) {}
68
69 fn on_radius_y_changed(&self) {}
70 fn on_radius_y_changing(&self) {}
71}
72
73pub struct ServerCompositionSimpleRadialGradientBrushProps {
75 center: Cell<RelativePoint>,
76 gradient_origin: Cell<RelativePoint>,
77 radius_x: Cell<RelativeScalar>,
78 radius_y: Cell<RelativeScalar>,
79}
80
81impl Default for ServerCompositionSimpleRadialGradientBrushProps {
82 fn default() -> Self {
83 Self::new()
84 }
85}
86
87impl ServerCompositionSimpleRadialGradientBrushProps {
88 pub fn new() -> Self {
91 Self {
92 center: Cell::new(Default::default()),
93 gradient_origin: Cell::new(Default::default()),
94 radius_x: Cell::new(Default::default()),
95 radius_y: Cell::new(Default::default()),
96 }
97 }
98
99 pub fn find_props(&self, type_id: TypeId) -> Option<&dyn Any> {
102 if type_id == TypeId::of::<Self>() {
103 return Some(self);
104 }
105 None
106 }
107
108 pub fn id_of_center_property() -> &'static CompositionPropertyOf<RelativePoint> {
110 static PROPERTY: OnceLock<CompositionPropertyOf<RelativePoint>> = OnceLock::new();
111 PROPERTY.get_or_init(|| {
112 CompositionProperty::register::<ServerCompositionSimpleRadialGradientBrushProps, RelativePoint>(
113 "Center",
114 "ServerCompositionSimpleRadialGradientBrush",
115 |obj| props_of::<ServerCompositionSimpleRadialGradientBrushProps>(obj).center.get(),
116 |obj, v| props_of::<ServerCompositionSimpleRadialGradientBrushProps>(obj).center.set(v),
117 Some(|obj| ExpressionVariant::create(props_of::<ServerCompositionSimpleRadialGradientBrushProps>(obj).center.get())),
118 None,
119 )
120 })
121 }
122
123 pub fn center(&self) -> RelativePoint {
125 self.center.get()
126 }
127
128 pub fn set_center(&self, host: &dyn ServerCompositionSimpleRadialGradientBrushHooks, value: RelativePoint) {
129 let old_value = self.center.get();
130 let mut changed = false;
131 if old_value.differs(&value) {
132 ServerCompositionSimpleRadialGradientBrushHooks::on_center_changing(host);
133 changed = true;
134 }
135 host.set_value(
136 Self::id_of_center_property().base(),
137 ServerValueChange {
138 equal: old_value.default_equals(&value),
139 old_resource: None,
140 new_resource: None,
141 assign: &mut || self.center.set(value),
142 },
143 );
144 if changed {
145 ServerCompositionSimpleRadialGradientBrushHooks::on_center_changed(host);
146 }
147 }
148
149 pub fn id_of_gradient_origin_property() -> &'static CompositionPropertyOf<RelativePoint> {
151 static PROPERTY: OnceLock<CompositionPropertyOf<RelativePoint>> = OnceLock::new();
152 PROPERTY.get_or_init(|| {
153 CompositionProperty::register::<ServerCompositionSimpleRadialGradientBrushProps, RelativePoint>(
154 "GradientOrigin",
155 "ServerCompositionSimpleRadialGradientBrush",
156 |obj| props_of::<ServerCompositionSimpleRadialGradientBrushProps>(obj).gradient_origin.get(),
157 |obj, v| props_of::<ServerCompositionSimpleRadialGradientBrushProps>(obj).gradient_origin.set(v),
158 Some(|obj| ExpressionVariant::create(props_of::<ServerCompositionSimpleRadialGradientBrushProps>(obj).gradient_origin.get())),
159 None,
160 )
161 })
162 }
163
164 pub fn gradient_origin(&self) -> RelativePoint {
166 self.gradient_origin.get()
167 }
168
169 pub fn set_gradient_origin(&self, host: &dyn ServerCompositionSimpleRadialGradientBrushHooks, value: RelativePoint) {
170 let old_value = self.gradient_origin.get();
171 let mut changed = false;
172 if old_value.differs(&value) {
173 ServerCompositionSimpleRadialGradientBrushHooks::on_gradient_origin_changing(host);
174 changed = true;
175 }
176 host.set_value(
177 Self::id_of_gradient_origin_property().base(),
178 ServerValueChange {
179 equal: old_value.default_equals(&value),
180 old_resource: None,
181 new_resource: None,
182 assign: &mut || self.gradient_origin.set(value),
183 },
184 );
185 if changed {
186 ServerCompositionSimpleRadialGradientBrushHooks::on_gradient_origin_changed(host);
187 }
188 }
189
190 pub fn id_of_radius_x_property() -> &'static CompositionPropertyOf<RelativeScalar> {
192 static PROPERTY: OnceLock<CompositionPropertyOf<RelativeScalar>> = OnceLock::new();
193 PROPERTY.get_or_init(|| {
194 CompositionProperty::register::<ServerCompositionSimpleRadialGradientBrushProps, RelativeScalar>(
195 "RadiusX",
196 "ServerCompositionSimpleRadialGradientBrush",
197 |obj| props_of::<ServerCompositionSimpleRadialGradientBrushProps>(obj).radius_x.get(),
198 |obj, v| props_of::<ServerCompositionSimpleRadialGradientBrushProps>(obj).radius_x.set(v),
199 Some(|obj| ExpressionVariant::create(props_of::<ServerCompositionSimpleRadialGradientBrushProps>(obj).radius_x.get())),
200 None,
201 )
202 })
203 }
204
205 pub fn radius_x(&self) -> RelativeScalar {
207 self.radius_x.get()
208 }
209
210 pub fn set_radius_x(&self, host: &dyn ServerCompositionSimpleRadialGradientBrushHooks, value: RelativeScalar) {
211 let old_value = self.radius_x.get();
212 let mut changed = false;
213 if old_value.differs(&value) {
214 ServerCompositionSimpleRadialGradientBrushHooks::on_radius_x_changing(host);
215 changed = true;
216 }
217 host.set_value(
218 Self::id_of_radius_x_property().base(),
219 ServerValueChange {
220 equal: old_value.default_equals(&value),
221 old_resource: None,
222 new_resource: None,
223 assign: &mut || self.radius_x.set(value),
224 },
225 );
226 if changed {
227 ServerCompositionSimpleRadialGradientBrushHooks::on_radius_x_changed(host);
228 }
229 }
230
231 pub fn id_of_radius_y_property() -> &'static CompositionPropertyOf<RelativeScalar> {
233 static PROPERTY: OnceLock<CompositionPropertyOf<RelativeScalar>> = OnceLock::new();
234 PROPERTY.get_or_init(|| {
235 CompositionProperty::register::<ServerCompositionSimpleRadialGradientBrushProps, RelativeScalar>(
236 "RadiusY",
237 "ServerCompositionSimpleRadialGradientBrush",
238 |obj| props_of::<ServerCompositionSimpleRadialGradientBrushProps>(obj).radius_y.get(),
239 |obj, v| props_of::<ServerCompositionSimpleRadialGradientBrushProps>(obj).radius_y.set(v),
240 Some(|obj| ExpressionVariant::create(props_of::<ServerCompositionSimpleRadialGradientBrushProps>(obj).radius_y.get())),
241 None,
242 )
243 })
244 }
245
246 pub fn radius_y(&self) -> RelativeScalar {
248 self.radius_y.get()
249 }
250
251 pub fn set_radius_y(&self, host: &dyn ServerCompositionSimpleRadialGradientBrushHooks, value: RelativeScalar) {
252 let old_value = self.radius_y.get();
253 let mut changed = false;
254 if old_value.differs(&value) {
255 ServerCompositionSimpleRadialGradientBrushHooks::on_radius_y_changing(host);
256 changed = true;
257 }
258 host.set_value(
259 Self::id_of_radius_y_property().base(),
260 ServerValueChange {
261 equal: old_value.default_equals(&value),
262 old_resource: None,
263 new_resource: None,
264 assign: &mut || self.radius_y.set(value),
265 },
266 );
267 if changed {
268 ServerCompositionSimpleRadialGradientBrushHooks::on_radius_y_changed(host);
269 }
270 }
271
272 pub fn deserialize_changes_core(
275 &self,
276 host: &dyn ServerCompositionSimpleRadialGradientBrushHooks,
277 reader: &mut BatchStreamReader<'_>,
278 committed_at: Duration,
279 ) {
280 ServerCompositionSimpleRadialGradientBrushHooks::base_deserialize_changes_core(host, reader, committed_at);
281 ServerCompositionSimpleRadialGradientBrushHooks::deserialize_changes_extra(host, reader);
282 let changed = reader.read::<CompositionSimpleRadialGradientBrushChangedFields>();
283 if changed.contains(CompositionSimpleRadialGradientBrushChangedFields::CENTER) {
284 let value = reader.read::<RelativePoint>();
285 self.set_center(host, value);
286 }
287 if changed.contains(CompositionSimpleRadialGradientBrushChangedFields::GRADIENT_ORIGIN) {
288 let value = reader.read::<RelativePoint>();
289 self.set_gradient_origin(host, value);
290 }
291 if changed.contains(CompositionSimpleRadialGradientBrushChangedFields::RADIUS_X) {
292 let value = reader.read::<RelativeScalar>();
293 self.set_radius_x(host, value);
294 }
295 if changed.contains(CompositionSimpleRadialGradientBrushChangedFields::RADIUS_Y) {
296 let value = reader.read::<RelativeScalar>();
297 self.set_radius_y(host, value);
298 }
299 ServerCompositionSimpleRadialGradientBrushHooks::on_fields_deserialized(host, changed);
300 }
301
302 pub fn serialize_all_changes(
305 writer: &mut BatchStreamWriter<'_>,
306 center: RelativePoint,
307 gradient_origin: RelativePoint,
308 radius_x: RelativeScalar,
309 radius_y: RelativeScalar,
310 ) {
311 writer.write(CompositionSimpleRadialGradientBrushChangedFields::CENTER | CompositionSimpleRadialGradientBrushChangedFields::GRADIENT_ORIGIN | CompositionSimpleRadialGradientBrushChangedFields::RADIUS_X | CompositionSimpleRadialGradientBrushChangedFields::RADIUS_Y);
312 writer.write(center);
313 writer.write(gradient_origin);
314 writer.write(radius_x);
315 writer.write(radius_y);
316 }
317}