Skip to main content

orinium_browser/engine/animation/
mod.rs

1//! CSS transition and animation runtime.
2//!
3//! This module is engine-internal and clock-injected: callers provide the
4//! current time and visibility state, and the runtime returns animated style
5//! overrides plus activity/dirty flags. It performs no I/O.
6
7pub mod easing;
8pub mod parse;
9pub mod runtime;
10pub mod types;
11
12pub use runtime::{AnimationInputs, AnimationRuntime, ElementAnimationState, SampleResult};
13
14use std::collections::HashMap;
15
16use crate::engine::css::values::CssValue;
17use crate::engine::layouter::dom_snapshot::NodeId;
18
19/// Animated property values to overlay on an element's effective style.
20pub type AnimatedOverrides = HashMap<NodeId, HashMap<String, CssValue>>;
21
22#[cfg(test)]
23mod tests {
24    use super::*;
25    use crate::engine::layouter::css_resolver::KeyframesRegistry;
26    use crate::engine::layouter::types::ColorScheme;
27
28    #[test]
29    fn sample_defaults_to_idle() {
30        let mut runtime = AnimationRuntime::new();
31        let inputs = AnimationInputs::new();
32        let kf = KeyframesRegistry::new();
33        let result = runtime.sample(0.0, true, &inputs, &kf, ColorScheme::Light);
34        assert!(!result.active);
35        assert!(!result.dirty);
36        assert!(result.overrides.is_empty());
37    }
38}