Skip to main content

ggplot_rs/geom/
blank.rs

1use crate::aes::Aesthetic;
2use crate::coord::Coord;
3use crate::data::DataFrame;
4use crate::position::identity::PositionIdentity;
5use crate::position::Position;
6use crate::render::backend::DrawBackend;
7use crate::render::RenderError;
8use crate::scale::ScaleSet;
9use crate::stat::identity::StatIdentity;
10use crate::stat::Stat;
11use crate::theme::Theme;
12
13use super::{Geom, GeomParams};
14
15/// Invisible geometry that extends scale ranges without drawing anything.
16/// Useful for ensuring axes include specific values.
17#[derive(Default)]
18pub struct GeomBlank;
19
20impl Geom for GeomBlank {
21    fn draw(
22        &self,
23        _data: &DataFrame,
24        _coord: &dyn Coord,
25        _scales: &ScaleSet,
26        _theme: &Theme,
27        _backend: &mut dyn DrawBackend,
28    ) -> Result<(), RenderError> {
29        Ok(())
30    }
31
32    fn required_aes(&self) -> Vec<Aesthetic> {
33        vec![]
34    }
35
36    fn default_stat(&self) -> Box<dyn Stat> {
37        Box::new(StatIdentity)
38    }
39
40    fn default_position(&self) -> Box<dyn Position> {
41        Box::new(PositionIdentity)
42    }
43
44    fn default_params(&self) -> GeomParams {
45        GeomParams::default()
46    }
47
48    fn name(&self) -> &str {
49        "blank"
50    }
51}