X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fviews.scm;h=46657293c54d94bd5ee0509b43dd1a06fd9aeb4d;hb=779dc6f65b65f45439355545fb1063b40dcc44ea;hp=f021286c844fd5af6bdd0fefbe0940d41411c06e;hpb=00a5644687efd8d6701c810b96008b8c03feb4ce;p=gacela.git diff --git a/src/views.scm b/src/views.scm index f021286..4665729 100644 --- a/src/views.scm +++ b/src/views.scm @@ -26,25 +26,21 @@ (define view-type (make-record-type "view" - '(id body meshes priority) + '(id constructor body meshes priority) (lambda (record port) (format port "#" (length (view-meshes record)))))) -(define (make-view body meshes) ((record-constructor view-type) (gensym) body meshes 0)) +(define (make-view constructor) ((record-constructor view-type) (gensym) constructor #f '() 0)) (define view? (record-predicate view-type)) (define view-id (record-accessor view-type 'id)) +(define view-constructor (record-accessor view-type 'constructor)) (define view-body (record-accessor view-type 'body)) (define view-meshes (record-accessor view-type 'meshes)) (define view-priority (record-accessor view-type 'priority)) -(define-macro (define-view meshes . body) - `(make-view - ,(cond ((null? body) `(lambda () #f)) - (else `(lambda () ,@body))) - (map (lambda (m) - `(,(mesh-inner-property m 'id) . ,m)) - ,meshes))) +(define-macro (define-view body) + `(make-view (lambda () ,body))) (define activated-views '()) (define (sort-views views-alist)