The following drawing backends are functional on the transforms branch:
* These could still use some optimizations to draw_markers and/or draw_path_collection.
Now onto the "problem" ones. I had asked on the mailing list a while back about the current usefulness of the Gdk and Wx backends, and the one advantage cited was that they are faster when running in a remote X session (a valid point for some uses). I can confirm that this is the case -- for a completely non-controlled experiment, I ran a remote X11 session over our network here. I get (on simple_plot_fps.py):
Gtk: 38.44 fps
GtkAgg: 1.87 fps
Wx: 19.37 fps
WxAgg: 1.83 fps
Running locally, I get:
Gtk: 49.39 fps
GtkAgg: 27.15 fps
Wx: 19.40 fps
WxAgg: 26.04 fps
Interestingly, WxAgg is faster than Wx when running locally.
What makes updating these backends on the branch difficult? The fundamental drawing operation on the branch is compound polycurves (i.e. one or more separate polylines with possible bezier curve segments).
Gdk doesn't support polycurves natively. We could convert our polycurves to polygons (by approximating the bezier curves) on the fly and send that. That shouldn't be a major slow down in the case where there aren't in fact any curves, but it would mean writing some extension code etc.
Wx supports polycurves in its new wxGraphicsContext API (but not the wxDC API that mpl uses now). This means a fairly complete rewrite of the wx backend, that would likely affect embedders as well (since you can no longer draw to an in-memory buffer, but only a true wxClientDC). wxGraphicsContext is built on top of GDI+, Quartz or Cairo depending on platform -- therefore it's not a given that it will perform well over remote X-Windows, either.
So, we need to look at the pros/cons of continuing to support these legacy APIs going forward.
Lastly, what is the status of the EMF backend? Is anyone relying on it and/or willing to look into updating it?
Science Software Branch
Operations and Engineering Division
Space Telescope Science Institute
Operated by AURA for NASA