From: John H. <jdh...@ac...> - 2004-02-05 16:11:24
|
David Moore has stealthily written a paint backend for matplotlib. paint is a libart wrapper http://www.levien.com/libart The official libart documentation is sparse, but I found these documents very helpful http://www.gnome.org/~mathieu/libart http://developer.gnome.org/doc/books/WGA/graphics-libart.html 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 da...@sj.... 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 Vera. * 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? JDH |