Path: utzoo!attcan!uunet!lll-winken!lll-ncis!helios.ee.lbl.gov!nosc!ucsd!rutgers!bellcore!spectral!sjs From: sjs@spectral.ctt.bellcore.com (Stan Switzer) Newsgroups: comp.windows.news Subject: Re: retained canvases - application writers please read Message-ID: <13402@bellcore.bellcore.com> Date: 12 Jan 89 19:14:21 GMT References: <24631@sgi.SGI.COM> <1154@murtoa.cs.mu.oz.au> <11090@ulysses.homer.nj.att.com> Sender: news@bellcore.bellcore.com Reply-To: sjs@ctt.bellcore.com (Stan Switzer) Organization: Bellcore Lines: 48 In article <11090@ulysses.homer.nj.att.com> cjc@ulysses.homer.nj.att.com (Chris Calabrese[mav]) writes: > In article <1154@murtoa.cs.mu.oz.au>, mwp@murtoa (Michael Paddon) writes: > | [...] > | To quote the NeWS 1.1 "READ THIS FIRST" document, Page 8 > | > | "One exception to this rule (that the NeWS server may ignore > | retained hints) is that the NeWS server must honor the > | /Retained setting of parent-less canvases" > | > | I presume that a parent-less canvas is one with a null value in > | its /Parent entry, although this is not explicitly stated. Note > | that any canvas may be made parent-less at any time. > | [...] > > I just tried changing `framebuffer' to a `null' in one > of my program segments (to draw a window), and got: > [an error] Well, there ARE parentless canvases, but as Chris discovered and as I have just confirmed, you can't create them with "newcanvas" or even mutate a parented canvas into one. The only retained, parentless canvases that I can find are the result of "readcanvas." Interestingly, these canvases need never actually exist as bitmaps since they can always be recreated from the original file (my guess is that this is indeed what happens on SGI 4Sight and possibly even in the Sun version). Unfortunately, this means is that there isn't any good way of doing double-buffered displaying (as in my wbounce demo). I really don't need a full 8 to 24 bit deep backing store for this but I do need some off-screen drawing space. What I would like to be able to do is to create a retained 1 plane deep canvas that I can subsequently use for imagemaskcanvas operations. Although it seems like there must be a way to do this, I haveso far been unable to find it. Alternatively, having some canvas attribute such as /Freeze that could be toggled to batch complex operations and then display the net result when unfrozen would be very useful. A very common scenario for a graphical tool is to erase some changed area and redraw it back-to-front. It is exceedingly annoying to have to watch this tedious process--especially if it destroys an illusion of continuous change. Perhaps someone knows of a supported approach to do double buffering? Stan Switzer sjs@ctt.bellcore.com "If you can't be just, be arbitrary."