From e18777e32448f465748535690666055c179d5d5f Mon Sep 17 00:00:00 2001 From: Akshay Date: Sun, 28 Mar 2021 12:58:58 +0530 Subject: add better brush drawing feedback --- src/brush.rs | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) (limited to 'src/brush.rs') diff --git a/src/brush.rs b/src/brush.rs index 98c2b23..1a365b1 100644 --- a/src/brush.rs +++ b/src/brush.rs @@ -23,27 +23,28 @@ pub enum Brush { } impl Brush { - pub fn grow(&mut self) -> Result<(), BrushError> { + pub fn grow(&mut self) { match self { Brush::Line { ref mut size, .. } => *size += 1, Brush::Circle { ref mut size, .. } => *size += 1, Brush::Custom { ref mut size, .. } => *size += 1, - _ => return Err(BrushError::CannotIncreaseSize), + _ => (), } - Ok(()) } - pub fn shrink(&mut self) -> Result<(), BrushError> { + + pub fn shrink(&mut self) { match self { - Brush::Line { ref mut size, .. } => *size += size.saturating_sub(1), - Brush::Circle { ref mut size, .. } => *size += size.saturating_sub(1), - Brush::Custom { ref mut size, .. } => *size += size.saturating_sub(1), - _ => return Err(BrushError::CannotIncreaseSize), + Brush::Line { ref mut size, .. } => *size = size.saturating_sub(1), + Brush::Circle { ref mut size, .. } => *size = size.saturating_sub(1), + Brush::Custom { ref mut size, .. } => *size = size.saturating_sub(1), + _ => (), } - Ok(()) } - pub fn new() -> Self { - Brush::Circle { size: 0 } + + pub fn new(size: u8) -> Self { + Brush::Circle { size } } + pub fn line(size: u8, extend: bool) -> Self { Brush::Line { size, @@ -51,9 +52,18 @@ impl Brush { extend, } } + pub fn is_line(&self) -> bool { matches!(self, Self::Line { .. }) } + + pub fn size(&self) -> Option { + match self { + Brush::Line { size, .. } => Some(size.clone()), + Brush::Circle { size } => Some(size.clone()), + _ => None, + } + } } impl fmt::Display for Brush { @@ -67,7 +77,3 @@ impl fmt::Display for Brush { } } } - -pub enum BrushError { - CannotIncreaseSize, -} -- cgit v1.2.3