[cairo] API request: obtain the trapezoids that are outsideofthe surface

Jost Boekemeier jost2345 at yahoo.de
Fri Aug 27 08:32:33 PDT 2004


On Thu, 2004-08-26 at 09:56, Turner, David wrote:
> > > tesselation, which is essentially a device-specific operation.
> > 
> > In what way is that a device-specific operation?  
> > 
> Some backends accept coordinates with finite precision

Ah, now I understand what you mean with device-specific.  The tesselator
is not device-specific because there's only one.  But it indeed
calculates integers(!), so to compensate the loss of precision it must
use some tricks which require knowledge about pixel positions. 


> One solution to the problem is to use an algorithm like the one
> described here: http://cm.bell-labs.com/cm/cs/doc/93/2-27.ps.gz

Thanks for the pointer.  I will read it, if I have some time.


> If you really want to support "correct" path scaling within RENDER,
> you need to move the tesselation code within the XServer, 

Not sure about this one.  But if we want to support fast point- and
length-animations in the future, we must change XRender to accept
additional information.  At the moment only a translation animation is
supported.

Does anyone know how MS solves this?


> > > the function uses the ctm to _immediately_ transform the coordinate
> > 
> > Yes.  Otherwise one could not decide what to send to the backend.
> > 
> You could decide to apply it when the path_fill or path_stroke operations
> are called.

That's how it's implemented.  The state (color, line width, ctm, ...) is
applied during tesselation, not earlier.  That means that you cannot
have a path where a sub-path has a different line-width, color or
matrix.  If you allow different line-widths for the sub-paths you will
have some problems calculating the bounding-box for the path, for
example.


Jost




More information about the cairo mailing list