[cairo] Mac Tiger Core Image

Bill Spitzak spitzak at d2.com
Thu Mar 10 10:26:08 PST 2005


> There are at least two gaps that I am currently aware of, and for
> which we've already started some discussion on the list:
> 
> 	General gradients
> 
> 	Filters

Add 3x3 transformation for patterns:

The "page curl" and other distortions, without this, will be reduced to 
drawing the image as pixels into memory. With this they can draw a 
number of triangles with the correct projected textures. Notice that 3x3 
transformations for paths or anything other than patterns is not 
necessary, it would be nice, but is not a requirement.

And (sigh) aliasing, here are my thoughts on this:

In my opinion we only need the ability to turn off antialiasing for 
individual straight lineto's, perhaps with a new aliased-lineto call. 
This will allow a higher level to construct a more complex geometry out 
of triangles, using aliasing only on the edges that attach to another 
triangle (with the same front/back facing for 3d surfaces). This is 
absolutely necessary to draw solid complex objects, using "add" as 
suggested in other postings will not work, nor will OpenGL's 
accumulation-alpha.

Unlike several other posters, I do NOT think we want to be able to turn 
off antialiasing for anything else, such as stroke, letters, or curved 
portions of paths.

Instead we need the ability to set the line width to 0, which completely 
replaces the stroke algorithim with another one that produces 
non-antialiased horizontal and vertical straight lines that are 1 unit 
rounded up to the nearest pixel thick. Diagonal lines can (and should) 
remain antialiased, though they will probably have to be adjusted to 
attach correctly to horizontal and vertical lines. This 0 value should 
be the default line width, which will stop the complaits about the thick 
default used now.

We also need the ability to "adjust" the current transformation. Add 
commands to round the transform so that the coordinate 0 in each 
direction is put on the nearest pixel center, pixel edge, or both, and 
set the scale so 1 unit is a multiple of .5, an integer, or an integer 
plus .5. This will allow small objects to be drawn nicely, far better 
than turning off antialiasing will allow.



More information about the cairo mailing list