From: David Lamkins

Subject: Re[2]: Re(2): ACL to MCL

Date: 1996-10-23 13:50

     Yes, MCL exposes the Mac's native view-refresh mechanism, for better 
     or worse...
     
     There are two ways to deal with this.  You've described the first, 
     which is to use the view redraw mechanism to "replay" the drawing 
     you've done in the view so far.
     
     The other way, which is identical to the BMP window you describe, is 
     to use an offscreen bitmap.  Your drawing goes to the bitmap, and the 
     view redraw call just BLTs the drawing into the view.  I think you'll 
     be able to find such code already written on the MCL CD-ROM; if not, 
     try asking on comp.lang.lisp.mcl.
     
     Dave


______________________________ Reply Separator _________________________________
Subject: Re: Re(2): ACL to MCL
Author:  Devin Hosea <alumni.Princeton.EDU at dhosea> at SMTPLINK
Date:    10/19/96 11:32 PM

[snip]
     
That is exactly the major limitation to the MCL graphics package: THERE IS 
NOTHING LIKE A BMP WINDOW, e.g. a window which "remembers" what you have 
drawn to it and is able to refresh, redisplay, etc.  The only way to 
accomplish this is to actually record (in your own code) all actions taken 
to the window, then erase it, then redraw everything.  This is something 
about MCL which is very primitive and very disturbing when trying to do a 
port.  
     
To discover this, try creating a window in MCL, and then use (draw-rectangle 
to put a black rectangle in the corner.  Then drag something over it, e.g. 
another window, and it will literally erase the rectangle.  There is no way 
to make it reappear, except to modify the actual method for the window so 
that a black box is drawn in the window whenever it is redisplayed.  MCL 
makes absolutely no 'note' of the fact that you have drawn something into the 
window.  In a sense, everything must be a piece of the window. Fortunately, 
the Macintosh, not the MCL, will automaticall refresh the window everytime it 
is screwed with, but only with what MCL thinks is supposed to be in the 
window.  The only way to do this is to keep your own record of what is 
supposed to be in the window and make sure that the resfresh-window method 
references this database/list/whatever each time it tries to refresh.
     
[snip]