[squeak-dev] How Morohs are rendered
Lawson English
lenglish5 at cox.net
Tue Jan 24 01:57:54 UTC 2012
On 1/23/12 3:52 PM, Bert Freudenberg wrote:
> On 23.01.2012, at 08:38, Lawson English wrote:
>
>> On the topic of fillrates and software blitters, has anyone considered the use of QuickDraw regions to speed up the process? The patent expired long ago, but the algorithm was designed to allow overlapping windows to work on the original Mac, and was quite speedy. It was only superseded by specialized hardware many years later, but still has potential uses even though no-one bothers to.
>
> How would that compare to Morphic's clipped top-down drawing, which already is quite a bit more efficient than the usual bottom-up drawing?
>
> - Bert -
>
>
>
I don't know. QuickDraw regions are basically "sparse bitmps" that are
defined by a clip rectangle + inversion points for the region inside the
rectangle. If you perform a Boolean operation on two rectangles, what
you get is a simple set of inversion points that indicates the start and
end of the resulting irregular region, per scanline. I believe that
simple vector graphics can be designed to make use of the info as well
and in fact, you can make the interior of a line part of a region simply
by drawing into one (if memory serves).
scanlines that are entirely obscured are not included in the inversion
list, only the start and end points of the lines that are partially
obscured are listed, so it is quite space and time efficient for large,
mostly rectangular areas, but pixel-exact for more complicated regions.
A blitter designed to work with QD regions would simply stop (or start)
copying for the pixels and scanlines that are defined by the inversion
points. The resolution of QD regions was for bitmaps no more than 32,000
pixels on a side (sufficient for any monitor or set of monitors
available even today), but it seems plausible that it could be extended
to 32bit-ish sized pixmaps, given the nature of how the inversion points
are defined --this would double the memory used by the region, however.
boolean operations and a "point in region" operation were designed to be
as efficient as possible and were responsible for the relative
snappiness of early macs compared to PCs running windows.
Apple stopped using QD regions when they went with PostScript-based
graphics from NeXT, but there are still possible places where they might
be useable. It is conceivable that a version of QD regions can be
created to define 3D ROIs for medical imaging by extending the region
definition to work with stacks of 2D regions in some way, but that's
another thread.
http://www.mactech.com/articles/mactech/Vol.05/05.06/ConvertPict2Rgn/index.html
http://www.computerhistory.org/highlights/macpaint/
Lawson
More information about the Squeak-dev
mailing list
|