rustmotion_components/
positioned.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)]
15pub struct Positioned {
16 #[serde(default)]
17 pub children: Vec<ChildComponent>,
18 #[serde(default)]
19 pub style: CssStyle,
20 #[serde(flatten)]
21 pub timing: TimingConfig,
22 #[serde(default)]
23 pub timeline: Vec<TimelineStep>,
24 #[serde(default)]
25 pub time_scale: Option<f64>,
26 #[serde(default)]
27 pub time_offset: Option<f64>,
28}
29
30rustmotion_core::impl_traits!(Positioned {
31 Animatable => animation,
32 Timed => timing,
33 Styled => style,
34});
35
36impl Painter for Positioned {
37 fn paint_content(
38 &self,
39 _canvas: &Canvas,
40 _layout: &BoxLayout,
41 _props: &rustmotion_core::engine::animator::AnimatedProperties,
42 _ctx: &PaintCtx,
43 ) {
44 }
47}