<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title></title>
</head>
<body>
I have the following macros <tt>define-public-draw-procs</tt>, <tt>define-draw-proc</tt>
and class <tt>drawing-canvas% </tt>defined:<br>
<br>
(define-macro define-draw-proc<br>
&nbsp; (lambda (name)<br>
&nbsp;&nbsp;&nbsp; `(define (,name . args)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (set! the-log (cons (cons ',name args)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the-log))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (on-paint))))<br>
<br>
(define-macro define-public-draw-procs<br>
&nbsp; (lambda names<br>
&nbsp;&nbsp;&nbsp; (append `(begin)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (map (lambda (name)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `(define-draw-proc ,name))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; names)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (map (lambda (name)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `(public ,name))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; names)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `((void)))))<br>
<br>
(define drawing-canvas%<br>
&nbsp; (class canvas%<br>
&nbsp;&nbsp;&nbsp; (inherit get-dc)<br>
&nbsp;&nbsp;&nbsp; (inherit get-width)<br>
&nbsp;&nbsp;&nbsp; (inherit get-height)<br>
&nbsp;&nbsp;&nbsp; (define first-time? #t)<br>
&nbsp;&nbsp;&nbsp; (define bmp '---)<br>
&nbsp;&nbsp;&nbsp; (define bmp-dc '---)<br>
&nbsp;&nbsp;&nbsp; (define (do-first-time)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (set! bmp (make-object bitmap% (get-width) (get-height) #f))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (set! bmp-dc (instantiate bitmap-dc% ()))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (send bmp-dc set-bitmap bmp)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (set! first-time? #f))<br>
&nbsp;&nbsp;&nbsp; (define the-log empty)<br>
&nbsp;&nbsp;&nbsp; (define-public-draw-procs draw-arc<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; draw-bitmap<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; draw-bitmap-section<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; draw-ellipse<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; draw-line<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; draw-lines<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; draw-point<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; draw-polygon<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; draw-rectangle<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; draw-rounded-rectangle<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; draw-spline<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; draw-text<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set-pen<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set-brush)<br>
&nbsp;&nbsp;&nbsp; (define (get-log)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the-log)<br>
&nbsp;&nbsp;&nbsp; (define (set-log! v)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (set! the-log v)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (on-paint))<br>
&nbsp;&nbsp;&nbsp; (define (clear-log!)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (set! the-log empty)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (on-paint))<br>
&nbsp;&nbsp;&nbsp; (public get-log set-log! clear-log!)<br>
&nbsp;&nbsp;&nbsp; (define/override (on-paint)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if first-time? (do-first-time))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (send bmp-dc clear)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (set! the-log (draw-on-dc bmp-dc the-log))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (send (get-dc) draw-bitmap bmp 0 0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (void))<br>
&nbsp;&nbsp;&nbsp; (super-instantiate ())))<br>
<br>
This works just fine with <br>
&nbsp;&nbsp;&nbsp; (define/override (on-paint)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (send (get-dc) clear)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (set! the-log (draw-on-dc (get-dc) the-log))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (void))<br>
But here, it shows an empty canvas%...<br>
Now, what can be the problem?<br>
Is my draw-bitmap syntax wrong?<br>
Robby suggested a solution, but it's quite complicated, I'm trying to
find a simple solution that doesn't use modules, semaphores and the
likes (because I have <b>no</b> idea how to use them). He said he
wasn't sure about the organization of my code, so I put the class
declaration here... That's about it.<br>
<br>
Katsmall the Wise<br>
<a class="moz-txt-link-abbreviated" href="mailto:kela_bit@netvision.net.il">kela_bit@netvision.net.il</a><br>
</body>
</html>