;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; 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 spot (gfx:make-filter "CISpotLight"))
(define loop
(lambda (r g b)
(let* ((camera-image (gfx:get-live-frame))
(filtered-image (gfx:apply-filter spot camera-image))
(bgimage (gfx:make-image 640 480)))
(gfx:clear-image bgimage '(0 0 0 1))
(gfx:image2image filtered-image bgimage 1)
(gfx:draw-image (+ (now) 10) *canvas* bgimage 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)