Skip to content

Instantly share code, notes, and snippets.

@nbqx
Created June 13, 2011 04:02
Show Gist options
  • Save nbqx/1022298 to your computer and use it in GitHub Desktop.
Save nbqx/1022298 to your computer and use it in GitHub Desktop.
(define init-qc-window
(lambda ()
(objc:make "NSWindow"
"initWithContentRect:styleMask:backing:defer:"
(list 0 0 640 480)
1 2 0)))
(define create-qcview
(lambda (file)
(let ((qcv (objc:make "QCView" "init")))
(objc:call qcv "loadCompositionFromFile:" file)
qcv)))
(define set-value-to-qtz
(lambda (qtz key value)
(objc:call qtz "setValue:forInputKey:" value key)))
(define start-rendering
(lambda (win qcv)
(objc:call win "setContentView:" qcv)
(objc:call qcv "startRendering")))
(define get-image-from-qcview
(lambda (qcv)
(objc:call "NSBitmapImageRep"
"imageRepWithData:"
(objc:call (objc:call *qcv* "valueForOutputKey:" "outputImage")
"TIFFRepresentation"))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define *canvas* (gfx:make-canvas 640 480))
(define qc-file "/path/to/test.qtz")
(define *qc-win* (init-qc-window))
(define *qcv* (create-qcview qc-file))
(set-value-to-qtz *qcv* "inputImage" (gfx:get-code-image))
(set-value-to-qtz *qcv* "x" (objc:make-number 10))
(set-value-to-qtz *qcv* "y" (objc:make-number -5))
(start-rendering *qc-win* *qcv*)
(define loop
(lambda (time)
(let* ((code (gfx:get-code-image))
(qc (set-value-to-qtz *qcv* "inputImage" code))
(img (get-image-from-qcview qc)))
(gfx:draw-image (+ time 2000) *canvas* code 1)
(objc:release (+ time 2000) img)
(objc:release (+ time 2000) code)
(callback (+ time 2000) 'loop (+ time 5000)))))
(loop (now))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment