aboutsummaryrefslogtreecommitdiff
path: root/src/brush.rs
diff options
context:
space:
mode:
authorAkshay <[email protected]>2021-03-28 08:28:58 +0100
committerAkshay <[email protected]>2021-03-28 08:28:58 +0100
commite18777e32448f465748535690666055c179d5d5f (patch)
tree4211900a8cc2f5642dac459a92fca7eac8bf36e6 /src/brush.rs
parent3e249a2086e7763a366d4cad70bd3c8e7dc9181f (diff)
add better brush drawing feedback
Diffstat (limited to 'src/brush.rs')
-rw-r--r--src/brush.rs36
1 files changed, 21 insertions, 15 deletions
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 {
23} 23}
24 24
25impl Brush { 25impl Brush {
26 pub fn grow(&mut self) -> Result<(), BrushError> { 26 pub fn grow(&mut self) {
27 match self { 27 match self {
28 Brush::Line { ref mut size, .. } => *size += 1, 28 Brush::Line { ref mut size, .. } => *size += 1,
29 Brush::Circle { ref mut size, .. } => *size += 1, 29 Brush::Circle { ref mut size, .. } => *size += 1,
30 Brush::Custom { ref mut size, .. } => *size += 1, 30 Brush::Custom { ref mut size, .. } => *size += 1,
31 _ => return Err(BrushError::CannotIncreaseSize), 31 _ => (),
32 } 32 }
33 Ok(())
34 } 33 }
35 pub fn shrink(&mut self) -> Result<(), BrushError> { 34
35 pub fn shrink(&mut self) {
36 match self { 36 match self {
37 Brush::Line { ref mut size, .. } => *size += size.saturating_sub(1), 37 Brush::Line { ref mut size, .. } => *size = size.saturating_sub(1),
38 Brush::Circle { ref mut size, .. } => *size += size.saturating_sub(1), 38 Brush::Circle { ref mut size, .. } => *size = size.saturating_sub(1),
39 Brush::Custom { ref mut size, .. } => *size += size.saturating_sub(1), 39 Brush::Custom { ref mut size, .. } => *size = size.saturating_sub(1),
40 _ => return Err(BrushError::CannotIncreaseSize), 40 _ => (),
41 } 41 }
42 Ok(())
43 } 42 }
44 pub fn new() -> Self { 43
45 Brush::Circle { size: 0 } 44 pub fn new(size: u8) -> Self {
45 Brush::Circle { size }
46 } 46 }
47
47 pub fn line(size: u8, extend: bool) -> Self { 48 pub fn line(size: u8, extend: bool) -> Self {
48 Brush::Line { 49 Brush::Line {
49 size, 50 size,
@@ -51,9 +52,18 @@ impl Brush {
51 extend, 52 extend,
52 } 53 }
53 } 54 }
55
54 pub fn is_line(&self) -> bool { 56 pub fn is_line(&self) -> bool {
55 matches!(self, Self::Line { .. }) 57 matches!(self, Self::Line { .. })
56 } 58 }
59
60 pub fn size(&self) -> Option<u8> {
61 match self {
62 Brush::Line { size, .. } => Some(size.clone()),
63 Brush::Circle { size } => Some(size.clone()),
64 _ => None,
65 }
66 }
57} 67}
58 68
59impl fmt::Display for Brush { 69impl fmt::Display for Brush {
@@ -67,7 +77,3 @@ impl fmt::Display for Brush {
67 } 77 }
68 } 78 }
69} 79}
70
71pub enum BrushError {
72 CannotIncreaseSize,
73}