#[derive(Clone)]
pub struct FigureConfig {
pub num_axis_ticks: usize,
pub num_grid_horizontal: usize,
pub num_grid_vertical: usize,
pub color_grid: [u8; 3],
pub color_axis: [u8; 3],
pub color_background: [u8; 3],
pub color_title: [u8; 3],
pub font_size_label: f32,
pub font_size_title: f32,
pub font_size_legend: f32,
pub font_size_axis: f32,
pub font_label: Option<String>,
pub font_title: Option<String>,
}
impl Default for FigureConfig {
fn default() -> Self {
Self {
num_axis_ticks: 10,
num_grid_horizontal: 10,
num_grid_vertical: 10,
color_grid: [200, 200, 200], color_axis: [0, 0, 0], color_background: [255, 255, 255], color_title: [0, 0, 0], font_size_label: 12.0,
font_size_title: 24.0,
font_size_legend: 10.0,
font_size_axis: 10.0,
font_label: None,
font_title: None,
}
}
}
impl FigureConfig {
pub fn set_font_paths(&mut self, label_path: String, title_path: String) {
self.font_label = Some(label_path);
self.font_title = Some(title_path);
}
pub fn validate(&self) -> Result<(), String> {
if self.font_label.is_none() || self.font_title.is_none() {
Err("Both font_label and font_title must be provided.".to_string())
} else {
Ok(())
}
}
}