pub(crate) mod animatable;
pub mod iced_ext;
pub mod keyframes;
pub mod prelude;
pub mod property;
pub mod runtime;
pub mod timeline;
pub mod timing;
pub use iced_ext::{EffectSnapshot, effect_snapshot, tick_effect_snapshot_for};
pub use keyframes::{Keyframe, Keyframes, KeyframesBuilder};
pub use property::{
BACKGROUND, BORDER_COLOR, HEIGHT, OPACITY, PADDING, PropertyKey, PropertySnapshot,
PropertySpec, PropertyValue, RADIUS, SCALE, SHADOW, TEXT_COLOR, TRANSLATE, TransformValue,
WIDTH,
};
pub use runtime::{
AnimationHandle, AnimationPlaybackState, AnimationRegistration, AnimationRuntime,
AnimationTargetId, AnimationTick, TargetedPropertySnapshot, TickPolicy,
};
pub use timeline::{
Hold, Parallel, PropertyTrackBuilder, Sequence, Timeline, TimelineMarker, TimelineStep, Track,
};
pub use timing::{
Delay, Direction, Duration, Easing, FillMode, IterationCount, NormalizedTiming, Timing,
TimingPhase, TimingSampleState,
};
const EPSILON_F32: f32 = 1e-5;
const EPSILON_F64: f64 = 1e-10;
pub(crate) fn nearly_equal_f64(a: f64, b: f64) -> bool {
(a - b).abs() < EPSILON_F64
}
pub(crate) fn nearly_equal_f32(a: f32, b: f32) -> bool {
(a - b).abs() < EPSILON_F32
}