paint backend added to CVS

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 in the near future. The official
release of paint at
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 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?