1//! Gridline
2
3use crate::{Axis, Default, Display, Grid, Script};
4
5/// Gridline properties
6#[derive(Clone, Copy)]
7pub struct Properties {
8 hidden: bool,
9}
10
11impl Default for Properties {
12 fn default() -> Properties {
13 Properties { hidden: true }
14 }
15}
16
17// TODO Lots of configuration pending: linetype, linewidth, etc
18impl Properties {
19 /// Hides the gridlines
20 ///
21 /// **Note** Both `Major` and `Minor` gridlines are hidden by default
22 pub fn hide(&mut self) -> &mut Properties {
23 self.hidden = true;
24 self
25 }
26
27 /// Shows the gridlines
28 pub fn show(&mut self) -> &mut Properties {
29 self.hidden = false;
30 self
31 }
32}
33
34impl<'a> Script for (Axis, Grid, &'a Properties) {
35 fn script(&self) -> String {
36 let &(axis, grid, properties) = self;
37 let axis = axis.display();
38 let grid = grid.display();
39
40 if properties.hidden {
41 String::new()
42 } else {
43 format!("set grid {}{}tics\n", grid, axis)
44 }
45 }
46}
47