processingの簡易な記述をgl.processingにも(with-simple-draw)
processingはdrawとsetupを書かなくても実行できたりする。こんな感じに。
processing
size(400, 400); // The wrong way to specify the middle of the screen ellipse(200, 200, 50, 50); // Always the middle, no matter how the size() line changes ellipse(width/2, height/2, 50, 50);
これをgl.processingでもできるように、with-simple-drawというマクロを定義した。
上のprocessingのコードはこのマクロを使って以下のように書ける。
gl.processing (gauche)
;; with-simple-draw (use gl.processing) (with-simple-draw (400 400) ;; The wrong way to specify the middle of the screen (ellipse 200 200 50 50) ;; Always the middle, no matter how the size() line changes (ellipse (/. *width* 2) (/. *height* 2) 50 50))
with-simple-drawの定義は以下の通り
with-simple-drawのコード
(define-syntax with-simple-draw (syntax-rules () [(_ (w h) action ...) (with-simple-draw (w h "sample" 100 100) action ...)] [(_ (w h title) actioin ...) (with-simple-draw (w h title 100 100) actioin ...)] [(_ (w h title x y) action ...) (define main (setup$ (lambda () (window w h title x y)) :draw (draw$ (lambda () action ...))))])) ;; (put 'with-simple-draw 'scheme-indent-function 1)