emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/scad-mode b1e0bbf00d 2/3: Use a macro to generate camera m


From: ELPA Syncer
Subject: [nongnu] elpa/scad-mode b1e0bbf00d 2/3: Use a macro to generate camera movement commands
Date: Sun, 13 Nov 2022 12:59:21 -0500 (EST)

branch: elpa/scad-mode
commit b1e0bbf00daac718f047114d78be05baeca0b024
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>

    Use a macro to generate camera movement commands
---
 scad-mode.el | 54 ++++++++++++++++++++++++++++++++----------------------
 1 file changed, 32 insertions(+), 22 deletions(-)

diff --git a/scad-mode.el b/scad-mode.el
index 5ad778359e..73a97fdb8f 100644
--- a/scad-mode.el
+++ b/scad-mode.el
@@ -382,17 +382,19 @@ Key bindings:
               scad-preview-projection (default-value 'scad-preview-projection))
   (scad--preview-render))
 
-(defun scad--preview-move (idx val)
-  "Increment camera IDX by VAL."
-  (cl-incf (nth idx scad-preview-camera) val)
-  (scad--preview-render))
-
-(defun scad--preview-size (factor)
-  "Resize preview by FACTOR."
-  (setf (car scad-preview-size) (round (* (car scad-preview-size) factor))
+(defun scad-preview-size+ (&optional factor)
+  "Grow image size by FACTOR."
+  (interactive)
+  (setf factor (or factor 1.1)
+        (car scad-preview-size) (round (* (car scad-preview-size) factor))
         (cdr scad-preview-size) (round (* (cdr scad-preview-size) factor)))
   (scad--preview-render))
 
+(defun scad-preview-size- (&optional factor)
+  "Shrink image size by FACTOR."
+  (interactive)
+  (scad-preview-size+ (/ (or factor 1.1))))
+
 (defun scad-preview-projection ()
   "Toggle projection."
   (interactive)
@@ -402,20 +404,28 @@ Key bindings:
                 'ortho))
   (scad--preview-render))
 
-(defun scad-preview-translate-x+ () (interactive) (scad--preview-move 0 10))
-(defun scad-preview-translate-x- () (interactive) (scad--preview-move 0 -10))
-(defun scad-preview-translate-z+ () (interactive) (scad--preview-move 2 10))
-(defun scad-preview-translate-z- () (interactive) (scad--preview-move 2 -10))
-(defun scad-preview-rotate-x+ () (interactive) (scad--preview-move 3 20))
-(defun scad-preview-rotate-x- () (interactive) (scad--preview-move 3 -20))
-(defun scad-preview-rotate-y+ () (interactive) (scad--preview-move 4 20))
-(defun scad-preview-rotate-y- () (interactive) (scad--preview-move 4 -20))
-(defun scad-preview-rotate-z+ () (interactive) (scad--preview-move 5 20))
-(defun scad-preview-rotate-z- () (interactive) (scad--preview-move 5 -20))
-(defun scad-preview-distance- () (interactive) (scad--preview-move 6 100))
-(defun scad-preview-distance+ () (interactive) (scad--preview-move 6 -100))
-(defun scad-preview-size- () (interactive) (scad--preview-size (/ 1.1)))
-(defun scad-preview-size+ () (interactive) (scad--preview-size 1.1))
+(defmacro scad--define-preview-move (name idx off)
+  "Define camera move function NAME which increments IDX by OFF."
+  `(defun ,(intern (format "scad-preview-%s" name)) (&optional offset)
+     "Move camera by OFFSET."
+     (interactive)
+     (cl-incf (nth ,idx scad-preview-camera) (or offset ,off))
+     (scad--preview-render)))
+
+(scad--define-preview-move translate-x+ 0 10)
+(scad--define-preview-move translate-x- 0 -10)
+(scad--define-preview-move translate-y+ 1 10)
+(scad--define-preview-move translate-y- 1 -10)
+(scad--define-preview-move translate-z+ 2 10)
+(scad--define-preview-move translate-z- 2 -10)
+(scad--define-preview-move rotate-x+ 3 20)
+(scad--define-preview-move rotate-x- 3 -20)
+(scad--define-preview-move rotate-y+ 4 20)
+(scad--define-preview-move rotate-y- 4 -20)
+(scad--define-preview-move rotate-z+ 5 20)
+(scad--define-preview-move rotate-z- 5 -20)
+(scad--define-preview-move distance- 6 100)
+(scad--define-preview-move distance+ 6 -100)
 
 (defvar-local scad--flymake-proc nil)
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]