diff options
Diffstat (limited to 'rust/crates/timeline/src/defaults.rs')
| -rw-r--r-- | rust/crates/timeline/src/defaults.rs | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/rust/crates/timeline/src/defaults.rs b/rust/crates/timeline/src/defaults.rs new file mode 100644 index 00000000..504bab92 --- /dev/null +++ b/rust/crates/timeline/src/defaults.rs @@ -0,0 +1,130 @@ +use scene::{ParamValue, ParamValues, TextElement}; +use time::MediaTime; + +use crate::creation::DEFAULT_NEW_ELEMENT_DURATION; + +pub const DEFAULT_OPACITY: f64 = 1.0; +pub const DEFAULT_BLEND_MODE: &str = "normal"; +pub const DEFAULT_VOLUME: f64 = 0.0; +pub const DEFAULT_TRANSFORM_SCALE: f64 = 1.0; +pub const DEFAULT_TRANSFORM_POSITION: f64 = 0.0; +pub const DEFAULT_TRANSFORM_ROTATE: f64 = 0.0; + +pub const DEFAULT_TEXT_LETTER_SPACING: f64 = 0.0; +pub const DEFAULT_TEXT_LINE_HEIGHT: f64 = 1.2; + +#[derive(Clone, Debug, PartialEq)] +pub struct DefaultTextBackground { + pub enabled: bool, + pub color: String, + pub corner_radius: f64, + pub padding_x: f64, + pub padding_y: f64, + pub offset_x: f64, + pub offset_y: f64, +} + +pub fn default_text_background() -> DefaultTextBackground { + DefaultTextBackground { + enabled: false, + color: "#000000".to_string(), + corner_radius: 0.0, + padding_x: 30.0, + padding_y: 42.0, + offset_x: 0.0, + offset_y: 0.0, + } +} + +pub fn default_text_params() -> ParamValues { + let background = default_text_background(); + ParamValues::from([ + ("content".to_string(), ParamValue::String("Default text".to_string())), + ("fontSize".to_string(), ParamValue::Number(15.0)), + ("fontFamily".to_string(), ParamValue::String("Arial".to_string())), + ("color".to_string(), ParamValue::String("#ffffff".to_string())), + ("textAlign".to_string(), ParamValue::String("center".to_string())), + ("fontWeight".to_string(), ParamValue::String("normal".to_string())), + ("fontStyle".to_string(), ParamValue::String("normal".to_string())), + ("textDecoration".to_string(), ParamValue::String("none".to_string())), + ( + "letterSpacing".to_string(), + ParamValue::Number(DEFAULT_TEXT_LETTER_SPACING), + ), + ( + "lineHeight".to_string(), + ParamValue::Number(DEFAULT_TEXT_LINE_HEIGHT), + ), + ( + "background.enabled".to_string(), + ParamValue::Bool(background.enabled), + ), + ( + "background.color".to_string(), + ParamValue::String(background.color), + ), + ( + "background.cornerRadius".to_string(), + ParamValue::Number(background.corner_radius), + ), + ( + "background.paddingX".to_string(), + ParamValue::Number(background.padding_x), + ), + ( + "background.paddingY".to_string(), + ParamValue::Number(background.padding_y), + ), + ( + "background.offsetX".to_string(), + ParamValue::Number(background.offset_x), + ), + ( + "background.offsetY".to_string(), + ParamValue::Number(background.offset_y), + ), + ( + "transform.positionX".to_string(), + ParamValue::Number(DEFAULT_TRANSFORM_POSITION), + ), + ( + "transform.positionY".to_string(), + ParamValue::Number(DEFAULT_TRANSFORM_POSITION), + ), + ( + "transform.scaleX".to_string(), + ParamValue::Number(DEFAULT_TRANSFORM_SCALE), + ), + ( + "transform.scaleY".to_string(), + ParamValue::Number(DEFAULT_TRANSFORM_SCALE), + ), + ( + "transform.rotate".to_string(), + ParamValue::Number(DEFAULT_TRANSFORM_ROTATE), + ), + ("opacity".to_string(), ParamValue::Number(DEFAULT_OPACITY)), + ( + "blendMode".to_string(), + ParamValue::String(DEFAULT_BLEND_MODE.to_string()), + ), + ]) +} + +pub fn default_text_element(id: impl Into<String>) -> TextElement { + TextElement { + base: scene::BaseTimelineElement { + id: id.into(), + name: "Text".to_string(), + duration: DEFAULT_NEW_ELEMENT_DURATION, + start_time: MediaTime::ZERO, + trim_start: MediaTime::ZERO, + trim_end: MediaTime::ZERO, + source_duration: None, + animations: None, + params: default_text_params(), + }, + hidden: None, + effects: None, + } +} |
