[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/scad-mode 4c23eae9c2 35/47: Support both ortho/perspective
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/scad-mode 4c23eae9c2 35/47: Support both ortho/perspective projection |
Date: |
Sat, 12 Nov 2022 13:59:36 -0500 (EST) |
branch: elpa/scad-mode
commit 4c23eae9c2b884215919138dc9c7604463d904af
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
Support both ortho/perspective projection
---
README.org | 2 +-
ob-scad.el | 9 ++++++---
scad-mode.el | 43 +++++++++++++++++++++++++++++--------------
3 files changed, 36 insertions(+), 18 deletions(-)
diff --git a/README.org b/README.org
index a2d33e5bbe..cc3495ff31 100644
--- a/README.org
+++ b/README.org
@@ -21,7 +21,7 @@
* Org Babel support
-#+begin_src scad :file example.png :colorscheme Tomorrow :imgsize 200,200
+#+begin_src scad :file example.png :colorscheme Tomorrow :size 200,200
for (y=[0:2:20]) {
translate([0,0,y+1])
cube([30-2*y,30-2*y,2], true);
diff --git a/ob-scad.el b/ob-scad.el
index fda96c14ad..35935d0cf6 100644
--- a/ob-scad.el
+++ b/ob-scad.el
@@ -33,7 +33,8 @@
(defvar org-babel-header-args:scad
'((colorscheme . :any)
- (imgsize . :any)
+ (size . :any)
+ (projection . :any)
(camera . :any)
(view . :any))
"Scad specific header args.")
@@ -49,14 +50,16 @@
(list "-o" outfile
"--preview"
"--viewall"
+ (format "--projection=%s"
+ (alist-get :projection params
scad-preview-projection))
(format "--colorscheme=%s"
(alist-get :colorscheme params
scad-preview-colorscheme))
(format "--view=%s" (or (alist-get :view params)
(mapconcat #'identity
scad-preview-view ",")))
(when-let (camera (alist-get :camera params))
(format "--camera=%s" camera))
- (when-let (imgsize (alist-get :imgsize params))
- (format "--imgsize=%s" imgsize))
+ (when-let (size (alist-get :size params))
+ (format "--imgsize=%s" size))
infile)))
nil))
diff --git a/scad-mode.el b/scad-mode.el
index 8f0ef0934a..1736922ca1 100644
--- a/scad-mode.el
+++ b/scad-mode.el
@@ -112,6 +112,10 @@
"SCAD operators."
:type '(repeat string))
+(defcustom scad-preview-projection 'perspective
+ "Preview projection."
+ :type '(choice (const ortho) (const perspective)))
+
(defcustom scad-preview-camera '(0 0 0 50 0 20 500)
"Default parameters for the Gimbal camera."
:type '(repeat integer))
@@ -247,22 +251,22 @@ Key bindings:
" " (shell-quote-argument buffer-file-name))))
(defvar-local scad--preview-buffer nil)
-(defvar-local scad--preview-camera nil)
(defvar-local scad--preview-process nil)
-(defvar-local scad--preview-size nil)
(defvar-local scad--preview-mode-status nil)
(defvar-local scad--preview-mode-camera nil)
(defvar-local scad--preview-timer nil)
+(put 'scad-preview-camera 'permanent-local t)
+(put 'scad-preview-size 'permanent-local t)
+(put 'scad-preview-projection 'permanent-local t)
(put 'scad--preview-buffer 'permanent-local t)
-(put 'scad--preview-camera 'permanent-local t)
(put 'scad--preview-process 'permanent-local t)
-(put 'scad--preview-size 'permanent-local t)
+(put 'scad--preview-timer 'permanent-local t)
(put 'scad--preview-mode-status 'permanent-local t)
(put 'scad--preview-mode-camera 'permanent-local t)
-(put 'scad--preview-timer 'permanent-local t)
(defvar scad-preview-mode-map
(let ((map (make-sparse-keymap)))
+ (define-key map "p" #'scad-preview-projection)
(define-key map (kbd "M--") #'scad-preview-size-)
(define-key map (kbd "M-+") #'scad-preview-size+)
(define-key map "-" #'scad-preview-distance-)
@@ -281,7 +285,7 @@ Key bindings:
(defun scad--preview-status (status)
"Update mode line of preview buffer with STATUS."
(setq scad--preview-mode-camera (apply #'format "[%d %d %d] [%d %d %d] %d"
- scad--preview-camera)
+ scad-preview-camera)
scad--preview-mode-status status)
(force-mode-line-update))
@@ -357,13 +361,14 @@ Key bindings:
:command (list scad-command
"-o" outfile
"--preview"
+ (format "--projection=%s" scad-preview-projection)
(format "--imgsize=%d,%d"
- (car scad--preview-size)
- (cdr scad--preview-size))
+ (car scad-preview-size)
+ (cdr scad-preview-size))
(format "--view=%s"
(mapconcat #'identity scad-preview-view
","))
(format "--camera=%s"
- (mapconcat #'number-to-string
scad--preview-camera ","))
+ (mapconcat #'number-to-string
scad-preview-camera ","))
(format "--colorscheme=%s"
scad-preview-colorscheme)
infile))))))
@@ -396,19 +401,29 @@ Key bindings:
(defun scad--preview-reset (&rest _)
"Reset camera parameters and refresh."
- (setq scad--preview-camera (copy-sequence scad-preview-camera)
- scad--preview-size (copy-tree scad-preview-size))
+ (setq-local scad-preview-camera (copy-sequence (default-value
'scad-preview-camera))
+ scad-preview-size (copy-tree (default-value 'scad-preview-size))
+ 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)
+ (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))
- (cdr scad--preview-size) (round (* (cdr scad--preview-size) factor)))
+ (setf (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-projection ()
+ "Toggle projection."
+ (interactive)
+ (setq-local scad-preview-projection
+ (if (eq scad-preview-projection 'ortho)
+ 'perspective
+ 'ortho))
(scad--preview-render))
(defun scad-preview-translate-x+ () (interactive) (scad--preview-move 0 10))
- [nongnu] elpa/scad-mode 1cdc9f304f 26/47: README: Update badges, (continued)
- [nongnu] elpa/scad-mode 1cdc9f304f 26/47: README: Update badges, ELPA Syncer, 2022/11/12
- [nongnu] elpa/scad-mode 28879e735c 33/47: Update status if preview is stale, ELPA Syncer, 2022/11/12
- [nongnu] elpa/scad-mode b0d138e9ec 43/47: Print warning if the scad-preview package is installed, ELPA Syncer, 2022/11/12
- [nongnu] elpa/scad-mode e5ed92217e 10/47: Cleanup mode map, ELPA Syncer, 2022/11/12
- [nongnu] elpa/scad-mode 311797dc44 15/47: Commentary: Remove old todos, ELPA Syncer, 2022/11/12
- [nongnu] elpa/scad-mode 2c9124f718 16/47: Remove some publicly exposed variables, ELPA Syncer, 2022/11/12
- [nongnu] elpa/scad-mode 9bfaed13bc 25/47: Add support for Org babel, ELPA Syncer, 2022/11/12
- [nongnu] elpa/scad-mode 970982b253 31/47: Fix ob-scad, ELPA Syncer, 2022/11/12
- [nongnu] elpa/scad-mode 7cb7ee82a4 32/47: Enable scad-preview-mode immediately, ELPA Syncer, 2022/11/12
- [nongnu] elpa/scad-mode 1a2e992a5b 34/47: Fix custom types, ELPA Syncer, 2022/11/12
- [nongnu] elpa/scad-mode 4c23eae9c2 35/47: Support both ortho/perspective projection,
ELPA Syncer <=
- [nongnu] elpa/scad-mode a1638354e1 39/47: Log openscad output to separate buffer, ELPA Syncer, 2022/11/12
- [nongnu] elpa/scad-mode 3c5fe2c615 28/47: Improve preview mode settings, ELPA Syncer, 2022/11/12
- [nongnu] elpa/scad-mode be02b626ce 42/47: Fix flymake configuration, ELPA Syncer, 2022/11/12
- [nongnu] elpa/scad-mode 29a4f8a848 44/47: scad-export: Add file argument, ELPA Syncer, 2022/11/12
- [nongnu] elpa/scad-mode 3076e240bf 47/47: Version 93.1, ELPA Syncer, 2022/11/12