1 //! Gridline 2 3 use crate::{Axis, Default, Display, Grid, Script}; 4 5 /// Gridline properties 6 #[derive(Clone, Copy)] 7 pub struct Properties { 8 hidden: bool, 9 } 10 11 impl Default for Properties { default() -> Properties12 fn default() -> Properties { 13 Properties { hidden: true } 14 } 15 } 16 17 // TODO Lots of configuration pending: linetype, linewidth, etc 18 impl Properties { 19 /// Hides the gridlines 20 /// 21 /// **Note** Both `Major` and `Minor` gridlines are hidden by default hide(&mut self) -> &mut Properties22 pub fn hide(&mut self) -> &mut Properties { 23 self.hidden = true; 24 self 25 } 26 27 /// Shows the gridlines show(&mut self) -> &mut Properties28 pub fn show(&mut self) -> &mut Properties { 29 self.hidden = false; 30 self 31 } 32 } 33 34 impl<'a> Script for (Axis, Grid, &'a Properties) { script(&self) -> String35 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