I've split backend_gtk.py into two parts:
backend_gdk.py - an image backend, like Agg and Cairo.
backend_gtk.py - an GUI backend, that uses gdk rendering
I don't think that a gdk backend is that much use by itself (since Agg
is probably better for most people to use), but I think it has these
- the split is more consistent with the way Agg/GTKAgg and
Cairo/GTKCairo are written - the rendering (image backend) is separated
from the GUI.
- it allows me to run examples/backend_driver.py on gdk (without having
gtk widgets popup on screen) and compare performance etc to Agg and
- it makes it easier to delete GDK rendering (while keeping the GTK GUI)
at a later date, if it is no longer required.
Here's the backend_driver results I got for some of the backends,
Backend Template took 0.89 minutes to complete
template ratio 1.000, template residual 0.000
Backend SVG took 1.06 minutes to complete
template ratio 1.185, template residual 0.166
Backend PS took 1.32 minutes to complete
template ratio 1.480, template residual 0.429
Backend Agg took 1.36 minutes to complete
template ratio 1.519, template residual 0.464
Backend GDK took 1.88 minutes to complete
template ratio 2.101, template residual 0.984
Backend Cairo took 2.11 minutes to complete
template ratio 2.358, template residual 1.214
Cairo is slow compared to Agg, but has similar performance to GDK.
This makes sense since GDK and Cairo are both written in Python,
which much of Agg is written in C++.