rustmotion_components/
grid.rs1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3use skia_safe::Canvas;
4
5use rustmotion_core::css::CssStyle;
6use rustmotion_core::engine::layout_pass::BoxLayout;
7use rustmotion_core::schema::TimelineStep;
8use rustmotion_core::traits::{PaintCtx, Painter, TimingConfig};
9
10use crate::ChildComponent;
11
12#[derive(Debug, Serialize, Deserialize, JsonSchema)]
14pub struct Grid {
15 #[serde(default)]
16 pub children: Vec<ChildComponent>,
17 #[serde(flatten)]
18 pub timing: TimingConfig,
19 #[serde(default)]
20 pub style: CssStyle,
21 #[serde(default)]
22 pub timeline: Vec<TimelineStep>,
23 #[serde(default)]
24 pub stagger: Option<f32>,
25 #[serde(default)]
26 pub time_scale: Option<f64>,
27 #[serde(default)]
28 pub time_offset: Option<f64>,
29}
30
31rustmotion_core::impl_traits!(Grid {
32 Animatable => animation,
33 Timed => timing,
34 Styled => style,
35});
36
37impl Painter for Grid {
38 fn paint_content(
39 &self,
40 _canvas: &Canvas,
41 _layout: &BoxLayout,
42 _props: &rustmotion_core::engine::animator::AnimatedProperties,
43 _ctx: &PaintCtx,
44 ) {
45 }
46}