#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
pub struct SeriesId(pub u64);
#[derive(Clone, Debug)]
pub struct AxesConfig {
pub x: AxisConfig,
pub y: AxisConfig,
}
#[derive(Clone, Debug)]
pub struct AxisConfig {
pub label: String,
pub axis_title_font_size: u32,
pub label_font_size: u32,
pub scale: ScaleType,
pub range: RangePolicy,
pub ticks: TickConfig,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum ScaleType {
Linear,
Log10,
LogE,
}
#[derive(Clone, Debug)]
pub enum RangePolicy {
Auto,
Manual { min: f64, max: f64 },
}
#[derive(Clone, Debug)]
pub struct TickConfig {
pub major_step: Option<f64>,
pub minor_per_major: u16,
}
#[derive(Clone, Debug)]
pub struct LegendConfig {
pub visible: bool,
pub title: Option<String>,
pub position: LegendPosition,
pub font_size: u32,
pub font_color: Color,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum LegendPosition {
TopLeft,
TopRight,
BottomLeft,
BottomRight,
}
#[derive(Clone, Debug)]
pub struct LayoutConfig {
pub title: String,
pub x_label_area_size: u32,
pub y_label_area_size: u32,
pub margin: u32,
pub title_font_size: u32,
pub title_font_color: Color,
}
#[derive(Clone, Copy, Debug)]
pub struct Color {
pub r: u8,
pub g: u8,
pub b: u8,
pub a: u8,
}
#[derive(Clone, Debug)]
pub struct SeriesStyle {
pub color: Color,
pub line_width: f32,
pub line_style: LineStyle,
pub marker: Option<MarkerStyle>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum LineStyle {
Solid,
Dashed,
Dotted,
}
#[derive(Clone, Debug)]
pub struct MarkerStyle {
pub shape: MarkerShape,
pub size: f32,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum MarkerShape {
Circle,
Square,
Triangle,
Cross,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum AxisKind {
X,
Y,
}
#[derive(Clone, Copy, Debug)]
pub enum ImageFormat {
Png,
Svg,
}
#[derive(Clone, Copy, Debug)]
pub struct ImageSize {
pub width: u32,
pub height: u32,
}