diff options
author | Thomas White <taw@physics.org> | 2021-05-15 22:25:28 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2021-05-15 22:25:28 +0200 |
commit | b77fa5eabb1318a71966fe4cb736c047b4051c6a (patch) | |
tree | 76c41eda138d01e50df50c932794bce9e5a563a5 /guile | |
parent | 95197eb073035de7ae30cb76d9783b4d1dc6b45a (diff) |
Add clock durations
Diffstat (limited to 'guile')
-rw-r--r-- | guile/starlet/clock.scm | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/guile/starlet/clock.scm b/guile/starlet/clock.scm index 349aeb4..bd00d50 100644 --- a/guile/starlet/clock.scm +++ b/guile/starlet/clock.scm @@ -32,7 +32,7 @@ clock-stopped? clock-reversed? - time-elapsed)) + elapsed-fraction)) (define (time-now) @@ -123,7 +123,12 @@ (delay-time #:init-form (error "Delay time must be specified") #:init-keyword #:delay-time - #:getter get-delay-time)) + #:getter get-delay-time) + + (duration + #:init-value #f + #:init-keyword #:duration + #:getter get-duration)) (define-method (clock-stopped? (clock <starlet-delayed-clock>)) @@ -139,6 +144,12 @@ (get-delay-time clock)))) +(define-method (elapsed-fraction (clock <starlet-delayed-clock>)) + (min 1.0 + (/ (time-elapsed clock) + (get-duration clock)))) + + (define-method (stop-clock! (clock <starlet-delayed-clock>)) (error "Can only stop a top-level clock.")) @@ -151,7 +162,8 @@ (error "Can only reverse a top-level clock.")) -(define (make-delayed-clock clock delay-time) +(define (make-delayed-clock clock delay-time duration) (make <starlet-delayed-clock> #:parent clock - #:delay-time delay-time)) + #:delay-time delay-time + #:duration duration)) |