[cairo] quartz & unbounded operators

Vladimir Vukicevic vladimir at pobox.com
Mon Mar 10 16:58:53 PDT 2008


One of the last major pieces for the Quartz backend is fixing support  
for unbounded operators.  The native Quartz implementations of these  
has the resulting rendering incorrectly bound by the mask.  I have a  
working patch that goes back after the rendering is complete and  
clears out the rest of the clip area, but this obviously leads to some  
color fringing due to coverage at antialiased edges.  (If antialiasing  
is disabled, everything is pixel-correct.)

An alternate approach is to compute the mask needed for the operation,  
clear the inverse of the mask first, and then render the source  
through the mask.  This should give the correct result.  (Right?)   
However, the way the surface backend is structured, it would take a  
good chunk of work to make that happen in a clean fashion -- basically  
every core operation will need to know how to shunt its path rendering  
off to a mask and how to draw the source through that mask.  So I'd  
rather go with the current post-rendering fixup, especially given that  
these operators aren't often used in practice.

Does this sound acceptable for now?

     - Vlad



More information about the cairo mailing list