chartml_core/plugin/
renderer.rs1use serde::{Deserialize, Serialize};
2
3use crate::data::DataTable;
4use crate::element::{ChartElement, Dimensions};
5use crate::error::ChartError;
6use crate::spec::VisualizeSpec;
7use crate::theme::Theme;
8
9#[derive(Debug, Clone, Serialize, Deserialize)]
11pub struct ChartConfig {
12 pub visualize: VisualizeSpec,
14 pub title: Option<String>,
16 pub width: f64,
18 pub height: f64,
20 pub colors: Vec<String>,
22 #[serde(skip, default)]
25 pub theme: Theme,
26}
27
28pub trait ChartRenderer: Send + Sync {
30 fn render(&self, data: &DataTable, config: &ChartConfig) -> Result<ChartElement, ChartError>;
32
33 fn default_dimensions(&self, _spec: &VisualizeSpec) -> Option<Dimensions> {
35 None
36 }
37}