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;
7
8#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct ChartConfig {
11 pub visualize: VisualizeSpec,
13 pub title: Option<String>,
15 pub width: f64,
17 pub height: f64,
19 pub colors: Vec<String>,
21}
22
23pub trait ChartRenderer: Send + Sync {
25 fn render(&self, data: &DataTable, config: &ChartConfig) -> Result<ChartElement, ChartError>;
27
28 fn default_dimensions(&self, _spec: &VisualizeSpec) -> Option<Dimensions> {
30 None
31 }
32}