use std::cell::RefCell;
use std::collections::{HashMap, VecDeque};
use crate::annotators::ColorPalette;
use crate::geometry::Position;
#[derive(Debug, Clone)]
pub struct TraceAnnotator {
pub palette: ColorPalette,
pub thickness: u32,
pub position: Position,
pub trace_length: usize,
pub(crate) history: RefCell<HashMap<usize, VecDeque<(f32, f32)>>>,
}
impl TraceAnnotator {
pub fn new(
palette: ColorPalette,
thickness: u32,
position: Position,
trace_length: usize,
) -> Self {
Self {
palette,
thickness,
position,
trace_length,
history: RefCell::new(HashMap::new()),
}
}
pub fn clear(&self) {
self.history.borrow_mut().clear();
}
}
impl Default for TraceAnnotator {
fn default() -> Self {
Self::new(ColorPalette::default(), 2, Position::Center, 30)
}
}