;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; CINEMA.
;;
;; Turn your isight on and away you go :)
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define *canvas* (gfx:make-canvas))
(gfx:start-live-video)
(gfx:clear-canvas (now) *canvas* '(0 0 0 1))
(define range-limit
(lambda (value min max)
(cond ((< value min) min)
((> value max) max)
(else value))))
(define loop
(lambda (r g b)
(let* ((camera-image (gfx:get-live-frame))
(params (list (cons "inputBrightness" 3.0)
(cons "inputLightPosition" (vector 650 500 100))
(cons "inputLightPointsAt" (vector 0 0 0))
(cons "inputColor" (list r g b 1.0))
(cons "inputConcentration" .1)))
(filtered-image (gfx:filter-image camera-image "CISpotLight" params)))
(gfx:clear-canvas (now) *canvas* '(0 0 0 1))
(gfx:draw-image (+ (now) 10) *canvas* filtered-image 1.0)
(callback (+ (now) 5000) loop
(range-limit ((random (list + -)) r 0.05) 0.0 1.0)
(range-limit ((random (list + -)) g 0.05) 0.0 1.0)
(range-limit ((random (list + -)) b 0.05) 0.0 1.0)))))
(callback (+ (now) (* *second* 2)) 'loop 1.0 1.0 1.0)