I've been thinking about our Cairoification plans today, and I think we might be much better off incorporating Xara's rendering engine instead.
Two main reasons:
- Xara provides a lot of stuff that we would otherwise have to write ourselves atop Cairo (e.g. gaussian blur)
- Xara is considerably faster
I don't want to simply borrow code from Xara, though -- ideally, I'd like to componentize the relevent portions of Xara so that both projects could use and jointly maintain them, as a sort of "common pot". Xara would benefit from this, since (in the long term) to fully implement the SVG specification we'd need to contribute additional capabilities which Xara Extreme could then exploit.
To make the task managable, we'd want to approach this on a bottom-up basis: begin with the lowest-level components (e.g. the rasterizer), and work our way up to ultimately componentizing and incorporating the retained-mode graphics layer. The eventual goal would be to replace both livarot and NRArena with components shared with Xara.
I'm going to start seriously looking into the technical aspects of this once I'm done with the current spate of layers work (probably post-0.44/0.45).
-mental