11"""
2- GTK+ Matplotlib interface using Cairo (not GDK) drawing operations.
2+ GTK+ Matplotlib interface using cairo (not GDK) drawing operations.
33Author: Steve Chaplin
44"""
5- import cairo .gtk
5+ import gtk
6+ if gtk .pygtk_version < (2 ,7 ,0 ):
7+ import cairo .gtk
68
7- from matplotlib .backends .backend_cairo import RendererCairo
8- from matplotlib .backends .backend_gtk import *
9+ import matplotlib .backends .backend_cairo as be_cairo
10+ from matplotlib .backends .backend_gtk import *
911
10-
11- backend_version = 'PyGTK(%d.%d.%d), Pycairo(%d.%d.%d )' % ( gtk . pygtk_version + cairo . version_info )
12+ backend_version = 'PyGTK(%d.%d.%d) ' % gtk . pygtk_version + \
13+ ' Pycairo(%s )' % be_cairo . backend_version
1214
1315
1416_debug = False
@@ -25,15 +27,22 @@ def new_figure_manager(num, *args, **kwargs):
2527 return FigureManagerGTK (canvas , num )
2628
2729
30+ class RendererGTKCairo (be_cairo .RendererCairo ):
31+ def set_ctx_from_pixmap (self , pixmap ):
32+ # TODO - do once in pixmap_prepare(), not before every redraw ?
33+ if gtk .pygtk_version >= (2 ,7 ,0 ):
34+ self .ctx = pixmap .cairo_create ()
35+ else :
36+ self .ctx = cairo .gtk .gdk_cairo_create (pixmap )
37+
38+ set_pixmap = set_ctx_from_pixmap
39+
40+
2841class FigureCanvasGTKCairo (FigureCanvasGTK ):
2942 def _renderer_init (self ):
30- """Override to use Cairo rather than GDK renderer"""
43+ """Override to use cairo ( rather than GDK) renderer"""
3144 if _debug : print '%s.%s()' % (self .__class__ .__name__ , _fn_name ())
32- self ._renderer = RendererCairo (self .figure .dpi )
33-
34- class NavigationToolbar2Cairo (NavigationToolbar2GTK ):
35- def _get_canvas (self , fig ):
36- return FigureCanvasGTKCairo (fig )
45+ self ._renderer = RendererGTKCairo (self .figure .dpi )
3746
3847
3948class FigureManagerGTKCairo (FigureManagerGTK ):
@@ -47,3 +56,8 @@ def _get_toolbar(self, canvas):
4756 else :
4857 toolbar = None
4958 return toolbar
59+
60+
61+ class NavigationToolbar2Cairo (NavigationToolbar2GTK ):
62+ def _get_canvas (self , fig ):
63+ return FigureCanvasGTKCairo (fig )
0 commit comments