; (define (kbd/register cls name func) (display "defining func: ") (display cls) (display " ") (display name) (newline)) ; (define (kbd/class-define name supers) (display "defining class: ") (display name) (display " ") (display supers) (newline)) ; (define (kbd/call cls func-name . args) #f) ; (define (kbd/set-user-data key val) #f) ; (define (kbd/get-user-data key) #f) ; (define (kbd/make-text xy wh text font size) #f) ; (define (kbd/make-rect xy wh [:round-corners 1.0]) #f) ; (define (kbd/make-layout items) #f) ; (define (kbd/width) #f) ; (define (kbd/load-font font-path) #f) (define-syntax self (syntax-rules () ((self func arg ...) (kbd/call kbd/this 'func arg ...)))) (define-syntax super (syntax-rules () ((super func arg ...) (kbd/call (kbd/super kbd/this 'func) 'func arg ...)))) (define-syntax kbd/defmember (syntax-rules () ((kbd/defmember cls ((input-func-name input-arg ...) input-body ...)) (begin (define (input-func-name kbd/this input-arg ...) (kbd/call kbd/this 'input-func-name input-arg ...)) (let ((name 'input-func-name) (func (lambda (kbd/this input-arg ...) input-body ...))) (kbd/register cls name func)))))) (define-syntax kbd/defclass (syntax-rules () ((kbd/class input-name input-supers input-rest ...) (begin (kbd/class-define 'input-name 'input-supers) (kbd/defmember 'input-name input-rest) ...))))