@@ -27,63 +27,30 @@ def draw(self, drawDC=None):
2727 Render the figure using agg.
2828 """
2929 FigureCanvasAgg .draw (self )
30-
31- self .bitmap = _convert_agg_to_wx_bitmap (self .get_renderer (), None )
30+ self .bitmap = _rgba_to_wx_bitmap (self .get_renderer ().buffer_rgba ())
3231 self ._isDrawn = True
3332 self .gui_repaint (drawDC = drawDC )
3433
3534 def blit (self , bbox = None ):
3635 # docstring inherited
36+ bitmap = _rgba_to_wx_bitmap (self .get_renderer ().buffer_rgba ())
3737 if bbox is None :
38- self .bitmap = _convert_agg_to_wx_bitmap (self .get_renderer (), None )
39- self .gui_repaint ()
40- return
41-
42- srcBmp = _convert_agg_to_wx_bitmap (self .get_renderer (), None )
43- srcDC = wx .MemoryDC ()
44- srcDC .SelectObject (srcBmp )
45-
46- destDC = wx .MemoryDC ()
47- destDC .SelectObject (self .bitmap )
48-
49- x = int (bbox .x0 )
50- y = int (self .bitmap .GetHeight () - bbox .y1 )
51- destDC .Blit (x , y , int (bbox .width ), int (bbox .height ), srcDC , x , y )
52-
53- destDC .SelectObject (wx .NullBitmap )
54- srcDC .SelectObject (wx .NullBitmap )
38+ self .bitmap = bitmap
39+ else :
40+ srcDC = wx .MemoryDC (bitmap )
41+ destDC = wx .MemoryDC (self .bitmap )
42+ x = int (bbox .x0 )
43+ y = int (self .bitmap .GetHeight () - bbox .y1 )
44+ destDC .Blit (x , y , int (bbox .width ), int (bbox .height ), srcDC , x , y )
45+ destDC .SelectObject (wx .NullBitmap )
46+ srcDC .SelectObject (wx .NullBitmap )
5547 self .gui_repaint ()
5648
5749
58- def _convert_agg_to_wx_bitmap (agg , bbox ):
59- """
60- Convert the region of the agg buffer bounded by bbox to a wx.Bitmap. If
61- bbox is None, the entire buffer is converted.
62- Note: agg must be a backend_agg.RendererAgg instance.
63- """
64- if bbox is None :
65- # agg => rgba buffer -> bitmap
66- return wx .Bitmap .FromBufferRGBA (int (agg .width ), int (agg .height ),
67- agg .buffer_rgba ())
68- else :
69- # agg => rgba buffer -> bitmap => clipped bitmap
70- srcBmp = wx .Bitmap .FromBufferRGBA (int (agg .width ), int (agg .height ),
71- agg .buffer_rgba ())
72- srcDC = wx .MemoryDC ()
73- srcDC .SelectObject (srcBmp )
74-
75- destBmp = wx .Bitmap (int (bbox .width ), int (bbox .height ))
76- destDC = wx .MemoryDC ()
77- destDC .SelectObject (destBmp )
78-
79- x = int (bbox .x0 )
80- y = int (int (agg .height ) - bbox .y1 )
81- destDC .Blit (0 , 0 , int (bbox .width ), int (bbox .height ), srcDC , x , y )
82-
83- srcDC .SelectObject (wx .NullBitmap )
84- destDC .SelectObject (wx .NullBitmap )
85-
86- return destBmp
50+ def _rgba_to_wx_bitmap (rgba ):
51+ """Convert an RGBA buffer to a wx.Bitmap."""
52+ h , w , _ = rgba .shape
53+ return wx .Bitmap .FromBufferRGBA (w , h , rgba )
8754
8855
8956@_BackendWx .export
0 commit comments