pub mod area;
pub mod bar;
pub mod bin2d;
pub mod blank;
pub mod boxplot;
pub mod col;
pub mod contour;
pub mod count;
pub mod crossbar;
pub mod curve;
pub mod density;
pub mod density2d;
pub mod dotplot;
pub mod errorbar;
pub mod freqpoly;
pub mod hex;
pub mod histogram;
pub mod jitter;
pub mod line;
pub mod linerange;
pub mod path;
pub mod point;
pub mod pointrange;
pub mod polygon;
pub mod qq;
pub mod raster;
pub mod rect;
pub mod refline;
pub mod ribbon;
pub mod rug;
pub mod segment;
pub mod smooth;
pub mod spoke;
pub mod step;
pub mod text;
pub mod tile;
pub mod violin;
use std::collections::HashMap;
use crate::aes::Aesthetic;
use crate::coord::Coord;
use crate::data::DataFrame;
use crate::position::Position;
use crate::render::backend::DrawBackend;
use crate::render::RenderError;
use crate::scale::ScaleSet;
use crate::stat::Stat;
use crate::theme::Theme;
#[derive(Clone, Debug, Default)]
pub struct GeomParams {
pub values: HashMap<String, f64>,
pub color: Option<(u8, u8, u8)>,
pub fill: Option<(u8, u8, u8)>,
pub alpha: Option<f64>,
}
pub trait Geom: Send + Sync {
fn draw(
&self,
data: &DataFrame,
coord: &dyn Coord,
scales: &ScaleSet,
theme: &Theme,
backend: &mut dyn DrawBackend,
) -> Result<(), RenderError>;
fn required_aes(&self) -> Vec<Aesthetic>;
fn default_stat(&self) -> Box<dyn Stat>;
fn default_position(&self) -> Box<dyn Position>;
fn default_params(&self) -> GeomParams;
fn name(&self) -> &str;
fn set_series_color(&mut self, _color: (u8, u8, u8)) {}
}