aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2021-04-02 17:53:52 +0200
committerThomas White <taw@physics.org>2021-04-02 17:53:52 +0200
commit0f3a785dbd1dfcf1bfa636463b766b8f256e2e9f (patch)
tree1dc429e5b4e3a23d8ab83b148a6317c5f42d87b6
parent348885be43fd8c97b2eea6623ab3632939d77dcf (diff)
Give programmer values absolute priority
-rw-r--r--guile/starlet/base.scm38
1 files changed, 22 insertions, 16 deletions
diff --git a/guile/starlet/base.scm b/guile/starlet/base.scm
index d53720e..105df54 100644
--- a/guile/starlet/base.scm
+++ b/guile/starlet/base.scm
@@ -442,23 +442,30 @@ pre-existing contents."
'no-value)))
(define (current-value fix attr-name tnow)
- (if (intensity? attr-name)
+ (let ((programmer-val (state-find fix attr-name programmer-state)))
+ (if (eq? 'no-value programmer-val)
- ;; HTP for intensity
- (fold (lambda (state prev)
- (let ((val (state-find fix attr-name state)))
- (if (eq? 'no-value val)
- prev
- (let ((real-val (value->number val tnow)))
- (max real-val prev)))))
- 0.0
- (atomic-box-ref state-list))
+ ;; Look in the states
+ (if (intensity? attr-name)
- ;; Priority order for everything else
- (let ((val (first-val fix attr-name tnow (atomic-box-ref state-list))))
- (if (eq? 'no-value val)
- (get-attr-home-val fix attr-name)
- (value->number val tnow)))))
+ ;; HTP for intensity
+ (fold (lambda (state prev)
+ (let ((val (state-find fix attr-name state)))
+ (if (eq? 'no-value val)
+ prev
+ (let ((real-val (value->number val tnow)))
+ (max real-val prev)))))
+ 0.0
+ (atomic-box-ref state-list))
+
+ ;; Priority order for everything else
+ (let ((val (first-val fix attr-name tnow (atomic-box-ref state-list))))
+ (if (eq? 'no-value val)
+ (get-attr-home-val fix attr-name)
+ (value->number val tnow))))
+
+ ;; Use programmer value, if we have it
+ programmer-val)))
(define-syntax attr-continuous
@@ -482,7 +489,6 @@ pre-existing contents."
(define current-state (make-parameter programmer-state))
-(register-state! (current-state))
(define-syntax lighting-state