@@ -62,27 +62,16 @@ def __init__(self, figure, width, height, dpi, vector_renderer,
6262
6363 self ._bbox_inches_restore = bbox_inches_restore
6464
65- self ._set_current_renderer (vector_renderer )
66-
67- _methods = """
68- close_group draw_image draw_markers draw_path
69- draw_path_collection draw_quad_mesh draw_tex draw_text
70- finalize flipy get_canvas_width_height get_image_magnification
71- get_texmanager get_text_width_height_descent new_gc open_group
72- option_image_nocomposite points_to_pixels strip_math
73- start_filter stop_filter draw_gouraud_triangle
74- draw_gouraud_triangles option_scale_image
75- _text2path _get_text_path_transform height width
76- """ .split ()
77-
78- def _set_current_renderer (self , renderer ):
79- self ._renderer = renderer
80-
81- for method in self ._methods :
82- if hasattr (renderer , method ):
83- setattr (self , method , getattr (renderer , method ))
84- renderer .start_rasterizing = self .start_rasterizing
85- renderer .stop_rasterizing = self .stop_rasterizing
65+ self ._renderer = vector_renderer
66+
67+ def __getattr__ (self , attr ):
68+ # Proxy everything that hasn't been overridden to the base
69+ # renderer. Things that *are* overridden can call methods
70+ # on self._renderer directly, but must not cache/store
71+ # methods (because things like RendererAgg change their
72+ # methods on the fly in order to optimise proxying down
73+ # to the underlying C implementation).
74+ return getattr (self ._renderer , attr )
8675
8776 def start_rasterizing (self ):
8877 """
@@ -105,7 +94,7 @@ def start_rasterizing(self):
10594 if self ._rasterizing == 0 :
10695 self ._raster_renderer = self ._raster_renderer_class (
10796 self ._width * self .dpi , self ._height * self .dpi , self .dpi )
108- self ._set_current_renderer ( self ._raster_renderer )
97+ self ._renderer = self ._raster_renderer
10998 self ._rasterizing += 1
11099
111100 def stop_rasterizing (self ):
@@ -119,7 +108,7 @@ def stop_rasterizing(self):
119108 """
120109 self ._rasterizing -= 1
121110 if self ._rasterizing == 0 :
122- self ._set_current_renderer ( self ._vector_renderer )
111+ self ._renderer = self ._vector_renderer
123112
124113 height = self ._height * self .dpi
125114 buffer , bounds = self ._raster_renderer .tostring_rgba_minimized ()
0 commit comments