From 700f1027cb33a3d11d6cc9700ac753ef17ae94e5 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sat, 11 Sep 2021 16:59:53 +0200 Subject: state-source: Clamp continuous attributes to range --- guile/starlet/state.scm | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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))) -- cgit v1.2.3