use super::types::{ChartAnimation, TickerDirection};
use crate::animation::easing::Easing;
use crate::animation::spring::Spring;
pub fn bar_grow_stagger(count: usize) -> ChartAnimation {
ChartAnimation::BarGrow {
duration_ms: 600,
stagger_delay_ms: 50,
easing: Easing::EaseOutCubic,
count,
}
}
pub fn bar_spring_update(count: usize) -> ChartAnimation {
ChartAnimation::BarUpdate {
spring: Spring::new().stiffness(120.0).damping(14.0),
stagger_delay_ms: 20,
count,
}
}
pub fn line_draw_in(path_length: f64) -> ChartAnimation {
ChartAnimation::LineDrawIn {
duration_ms: 1000,
easing: Easing::Linear,
path_length,
}
}
pub fn candlestick_cascade(count: usize) -> ChartAnimation {
ChartAnimation::CandlestickReveal {
wick_duration_ms: 200,
body_duration_ms: 300,
stagger_delay_ms: 30,
wick_easing: Easing::EaseOutQuad,
body_easing: Easing::EaseOutCubic,
count,
}
}
pub fn number_counter_up(to: f64, decimals: u8) -> ChartAnimation {
ChartAnimation::NumberCounter {
duration_ms: 1000,
easing: Easing::EaseOutCubic,
from: 0.0,
to,
decimals,
}
}
pub fn number_counter_update(from: f64, to: f64, decimals: u8) -> ChartAnimation {
ChartAnimation::NumberCounter {
duration_ms: 300,
easing: Easing::EaseOutCubic,
from,
to,
decimals,
}
}
pub fn data_crossfade(data_points: usize) -> ChartAnimation {
ChartAnimation::DataMorph {
duration_ms: 500,
easing: Easing::EaseInOutCubic,
data_points,
}
}
pub fn area_fill_reveal(path_length: f64) -> ChartAnimation {
ChartAnimation::AreaFill {
line_duration_ms: 1500,
fill_duration_ms: 800,
fill_delay_ms: 1000,
line_easing: Easing::Linear,
fill_easing: Easing::EaseInOutQuad,
path_length,
}
}
pub fn pie_slice_grow(count: usize) -> ChartAnimation {
ChartAnimation::PieSliceGrow {
duration_ms: 1000,
stagger_delay_ms: 100,
easing: Easing::EaseOutBack,
count,
}
}
pub fn heatmap_stagger(rows: usize, cols: usize) -> ChartAnimation {
ChartAnimation::HeatmapFade {
cell_duration_ms: 300,
stagger_delay_ms: 20,
easing: Easing::EaseOutQuad,
rows,
cols,
}
}
pub fn ticker_flash_green() -> ChartAnimation {
ChartAnimation::TickerFlash {
flash_duration_ms: 200,
fade_duration_ms: 400,
easing: Easing::EaseOutCubic,
direction: TickerDirection::Up,
}
}
pub fn ticker_flash_red() -> ChartAnimation {
ChartAnimation::TickerFlash {
flash_duration_ms: 200,
fade_duration_ms: 400,
easing: Easing::EaseOutCubic,
direction: TickerDirection::Down,
}
}
pub fn volume_bars_cascade(count: usize) -> ChartAnimation {
ChartAnimation::BarGrow {
duration_ms: 400,
stagger_delay_ms: 20,
easing: Easing::EaseOutQuad,
count,
}
}
pub fn depth_chart_flow(data_points: usize) -> ChartAnimation {
ChartAnimation::DataMorph {
duration_ms: 800,
easing: Easing::EaseInOutCubic,
data_points,
}
}
pub fn sparkline_draw(path_length: f64) -> ChartAnimation {
ChartAnimation::LineDrawIn {
duration_ms: 500,
easing: Easing::Linear,
path_length,
}
}