[cairo] Questions about Cairo and _cairo_bentley_ottmann_tessellate_polygon()

Ilyes Gouta ilyes.gouta at gmail.com
Mon Jul 19 21:47:35 UTC 2021


Hi Cairo devs,

I'm reading Cairo's source code and trying to figure out its inner design,
and it seems a Bentely-Ottmann implementation is heavily referenced, so via
symbols like _cairo_bentley_ottmann_tessellate_polygon()
and _cairo_bentley_ottmann_tessellate_traps().

Would it be possible to explain these functions, what's their input, what
they do and what's the output?

AFAIK, the Bentley-Ottmann algorithm is mostly for computing intersections
between segments, in the case of Cairo, is it also used for polygon
triangulations? If yes, is it possible to explain (referencing cairo source
code)?

What primitive does Cairo use internally for (final) rendering? Is it a
span-based rendering or does Cairo build triangles / quads out of the
tessellated shapes and submit these to e.g. GPUs for HW accelerated
rendering?

Finally, is there a document describing the architecture and implementation
of Cairo, in detail, such as covering the entire processing flow, from the
high level API, Bézier curves flattening, to tessellation, triangulation,
rasterization and HW acceleration?

Regards,
Ilyes
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cairographics.org/archives/cairo/attachments/20210719/c57d542a/attachment.htm>


More information about the cairo mailing list