@@ -62,27 +62,16 @@ def __init__(self, figure, width, height, dpi, vector_renderer,
62
62
63
63
self ._bbox_inches_restore = bbox_inches_restore
64
64
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 )
86
75
87
76
def start_rasterizing (self ):
88
77
"""
@@ -105,7 +94,7 @@ def start_rasterizing(self):
105
94
if self ._rasterizing == 0 :
106
95
self ._raster_renderer = self ._raster_renderer_class (
107
96
self ._width * self .dpi , self ._height * self .dpi , self .dpi )
108
- self ._set_current_renderer ( self ._raster_renderer )
97
+ self ._renderer = self ._raster_renderer
109
98
self ._rasterizing += 1
110
99
111
100
def stop_rasterizing (self ):
@@ -119,7 +108,7 @@ def stop_rasterizing(self):
119
108
"""
120
109
self ._rasterizing -= 1
121
110
if self ._rasterizing == 0 :
122
- self ._set_current_renderer ( self ._vector_renderer )
111
+ self ._renderer = self ._vector_renderer
123
112
124
113
height = self ._height * self .dpi
125
114
buffer , bounds = self ._raster_renderer .tostring_rgba_minimized ()
0 commit comments