aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2021-09-11 16:59:53 +0200
committerThomas White <taw@physics.org>2021-09-11 17:57:01 +0200
commit700f1027cb33a3d11d6cc9700ac753ef17ae94e5 (patch)
tree61df5fe9dd8bbaf08d510cf66e25a892cc3fd420
parent2316596bf254f33a6f0466af64a69fd1753921f6 (diff)
state-source: Clamp continuous attributes to range
-rw-r--r--guile/starlet/state.scm13
1 files changed, 12 insertions, 1 deletions
diff --git a/guile/starlet/state.scm b/guile/starlet/state.scm
index fcf5a54..78209cb 100644
--- a/guile/starlet/state.scm
+++ b/guile/starlet/state.scm
@@ -305,13 +305,24 @@ pre-existing contents."
(pretty-print (state-source a)))
+(define (clamp-to-attr-range fix attr val)
+ (if (number? val)
+ (let ((attr-obj (find-attr fix attr)))
+ (if (continuous-attribute? attr-obj)
+ (let ((range (get-attr-range attr-obj)))
+ (max (car range)
+ (min (cadr range) val)))
+ val))
+ val))
+
+
(define (state-source a)
(cons 'lighting-state
(state-map (lambda (fix attr val)
(list 'at
(get-fixture-name fix)
(list 'quote attr)
- val))
+ (clamp-to-attr-range fix attr val)))
a)))