tawasuyu/llimphi
Sovereign retained-mode GPU UI framework in Rust (wgpu+vello+taffy+parley), Elm loop, 40+ widgets.
1// Copyright 2024 the Velato Authors
2// SPDX-License-Identifier: Apache-2.0 OR MIT
3
4use serde::{Deserialize, Serialize};
5
6use crate::schema::{
7 animated_properties::value::FloatValue,
8 helpers::{int_boolean::BoolInt, visual_object::VisualObject},
9};
10
11use super::visual::VisualLayer;
12
13/// Renders a Precomposition
14#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
15pub struct Layer {
16 /// Visual object dat K
17 #[serde(flatten)]
18 pub visual_object: VisualObject,
19 /// Whether the layer is 3D. Lottie doesn't actually support 3D stuff so
20 /// this should always be 0
21 #[serde(rename = "ddd", default)]
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub three_dimensional: Option<BoolInt>,
24 /// Whether the layer is hidden
25 #[serde(rename = "hd", default)]
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub hidden: Option<bool>,
28 /// Layer type
29 #[serde(rename = "ty")]
30 pub layer_type: u8,
31 /// Layer index for parenting
32 #[serde(rename = "ind")]
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub index: Option<usize>,
35 /// Parent index for parenting
36 #[serde(rename = "parent")]
37 #[serde(skip_serializing_if = "Option::is_none")]
38 pub parent_index: Option<usize>,
39 /// Time Stretch
40 #[serde(rename = "sr")]
41 #[serde(skip_serializing_if = "Option::is_none")]
42 pub time_stretch: Option<f64>,
43 /// Frame when the layer becomes visible
44 #[serde(rename = "ip")]
45 pub in_point: f64,
46 /// Frame when the layer becomes invisible
47 #[serde(rename = "op")]
48 pub out_point: f64,
49 /// Start Time
50 #[serde(skip_serializing_if = "Option::is_none")]
51 #[serde(rename = "st")]
52 pub start_time: Option<f64>,
53}