From c4354e2d8d51cc9fc12dce9ad2d5736e400a8de4 Mon Sep 17 00:00:00 2001 From: Akshay Date: Sun, 4 Apr 2021 15:39:17 +0530 Subject: basic support for adding guides --- src/lisp/prelude.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/lisp/prelude.rs') diff --git a/src/lisp/prelude.rs b/src/lisp/prelude.rs index 336dbaf..aebff98 100644 --- a/src/lisp/prelude.rs +++ b/src/lisp/prelude.rs @@ -1,6 +1,7 @@ use crate::{ bitmap::MapPoint, brush::Brush, + guide::Guide, lisp::{ error::{EvalError, LispError}, expr::{Arity, LispExpr}, @@ -413,5 +414,19 @@ pub fn new_env() -> Result { return Ok(LispExpr::Unit); }); + primitive!(env, Arity::Exact(2), "add-guide!", |args, app| { + match args { + [axis, LispExpr::Number(LispNumber::Integer(offset))] => { + let guide = Guide { + axis: axis.try_into()?, + offset: *offset as u32, + }; + app.guides.insert(guide, true); + return Ok(LispExpr::Unit); + } + _ => return Err(EvalError::TypeMismatch.into()), + } + }); + Ok(env) } -- cgit v1.2.3