aboutsummaryrefslogtreecommitdiff
path: root/src/lisp/prelude.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lisp/prelude.rs')
-rw-r--r--src/lisp/prelude.rs13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/lisp/prelude.rs b/src/lisp/prelude.rs
index d2a6ae6..bdaf639 100644
--- a/src/lisp/prelude.rs
+++ b/src/lisp/prelude.rs
@@ -9,7 +9,7 @@ use crate::{
9 primitive, 9 primitive,
10}; 10};
11 11
12use std::{convert::TryInto, fs::File, io::Write, path::PathBuf}; 12use std::{convert::TryInto, fs::File, io::Write};
13 13
14use log::info; 14use log::info;
15 15
@@ -196,13 +196,18 @@ pub fn new_env() -> Environment {
196 196
197 primitive!(env, Arity::Atmost(1), "brush", |args, app| { 197 primitive!(env, Arity::Atmost(1), "brush", |args, app| {
198 info!("brush {}", &args[0]); 198 info!("brush {}", &args[0]);
199 let old_size = if matches!(app.brush, Brush::Line { .. } | Brush::Circle { .. }) {
200 app.brush.size().unwrap()
201 } else {
202 0
203 };
199 if let [LispExpr::Quote(kind, _)] = args { 204 if let [LispExpr::Quote(kind, _)] = args {
200 if is_ident(kind) { 205 if is_ident(kind) {
201 match (&**kind).as_ref() { 206 match (&**kind).as_ref() {
202 "fill" => app.brush = Brush::Fill, 207 "fill" => app.brush = Brush::Fill,
203 "circle" => app.brush = Brush::new(), 208 "circle" => app.brush = Brush::new(old_size),
204 "line" => app.brush = Brush::line(0, false), 209 "line" => app.brush = Brush::line(old_size, false),
205 "line-extend" => app.brush = Brush::line(0, true), 210 "line-extend" => app.brush = Brush::line(old_size, true),
206 _ => return Err(EvalError::CustomInternal("unknown brush type").into()), 211 _ => return Err(EvalError::CustomInternal("unknown brush type").into()),
207 } 212 }
208 } 213 }