pub mod anim;
pub mod axes;
pub mod color;
pub mod geom;
pub mod mobject;
pub mod position;
pub mod svg;
pub mod timeline;
pub mod transform_diff;
pub use fastanim_diff::Op;
pub use kurbo;
pub use kurbo::{Point, Vec2};
pub use anim::{
Animation, AnimationExt, Ease, LaggedStart, Overlay, Parallel, RateFn, ReplacementTransform,
Sequence, Transform, Unwrite, Update, UpdateGroup, apply_function, circumscribe, create,
draw_border_then_fill, fade_in, fade_out, flash, grow_from_center, indicate, lagged_start,
move_to, replacement_transform, rotate, scale, shift, shrink_to_center, spin_in, transform,
uncreate, unwrite, wiggle, write,
};
pub use axes::Axes;
pub use color::Color;
pub use geom::{SubPath, VPath, align};
pub use mobject::{MobjectId, SceneState, Stroke, VState};
pub use position::{DEFAULT_BUFF, EDGE_BUFF, Position, arrange};
pub use svg::to_svg;
pub use timeline::{BakedTimeline, Scene};
pub use transform_diff::{DiffStyle, Group, Layout, Phasing, ReplaceStyle, TransformDiff};
pub trait Interpolate: Clone {
fn lerp(a: &Self, b: &Self, t: f32) -> Self;
}
pub const FRAME_HEIGHT: f64 = 8.0;
pub const FRAME_WIDTH: f64 = FRAME_HEIGHT * 16.0 / 9.0;
pub const UP: Vec2 = Vec2::new(0.0, 1.0);
pub const DOWN: Vec2 = Vec2::new(0.0, -1.0);
pub const LEFT: Vec2 = Vec2::new(-1.0, 0.0);
pub const RIGHT: Vec2 = Vec2::new(1.0, 0.0);
pub const ORIGIN: Point = Point::ORIGIN;