David Moore has stealthily written a paint backend for matplotlib.
paint is a libart wrapper
The official libart documentation is sparse, but I found these
documents very helpful
In a nutshell, libart is a svg oriented, high performance, 2D graphics
engine that supports lots of nifty features. The paint backend
exposes some of them, and David has been extending it to expose more.
Look for pypaint.sourceforge.net in the near future. The official
release of paint at http://www.object-craft.com.au/projects/paint
won't work with backend_paint. David can you announce here when you
release it? If anyone wants to test it out before then, perhaps you
should contact David at davidm@...27...
The latest version of backend_paint.py can be obtained from CVS. Here
is a status list of known issues
* Text and linewidths don't scale with DPI - FIXED
* No dots or dashed lines - FIXED
* Patch edge colors not displayed - FIXED
* circle center locations off - FIXED
* font manager support not included - OPEN. I moved the gd truetype
font manager stuff to matplotlib.backends.ttf_font_manager so it
could be adapted for use with all true type backends, but haven't
incorporated this into the paint backend. The default font is
* no clipping - OPEN. The libart function art_svp_intersect is used
for intersecting arbitrary sorted vector paths (clipping), but this
needs to be exposed in the paint wrapper.
* draw_lines moved into the paint extension module - OPEN.
draw_lines is probably the most common operation performed in
matplotlib, sometimes with very long arrays, and it would be a big
gain and an easy port to do this at the C level. the function
should probably just construct and return a path that can be dashed
or stroked as needed at the python level.
In the longer term, I would like to be able to support some path
operations at the renderer level. Now that matplotlib has two vector
oriented backends (paint and postscript) and I would like to add PDF
and SVG, it would be nice to support some path operations in the front
end, to take advantage of their sophisticated drawing capabilities.
The question is: how to bring the other backends along?