;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;

;; 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)

         (objc:release (+ (now) 5000) camera-image filtered-image bgimage)

         (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)