8000 Remove unused bbox arg to _convert_agg_to_wx_bitmap. · matplotlib/matplotlib@eec6ca5 · GitHub
[go: up one dir, main page]

Skip to content

Commit eec6ca5

Browse files
committed
Remove unused bbox arg to _convert_agg_to_wx_bitmap.
This arg is unused since 744b7f8; we only need to clip when actually blitting to the destination bitmap, not when first converting the agg buffer to a bitmap. Also make the conversion function directly take an rgba buffer as input and rename it, as it isn't really agg-specific. Also switch the construction of MemoryDC to directly pass in the Selected bitmap as arg, rather that having a separate SelectObject call (this is supported all the way back since wx3).
1 parent b22c1c9 commit eec6ca5

File tree

2 files changed

+16
-50
lines changed

2 files changed

+16
-50
lines changed

lib/matplotlib/backends/backend_wx.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -332,8 +332,7 @@ def __init__(self, bitmap, renderer):
332332

333333
8000 dc, gfx_ctx = self._cache.get(bitmap, (None, None))
334334
if dc is None:
335-
dc = wx.MemoryDC()
336-
dc.SelectObject(bitmap)
335+
dc = wx.MemoryDC(bitmap)
337336
gfx_ctx = wx.GraphicsContext.Create(dc)
338337
gfx_ctx._lastcliprect = None
339338
self._cache[bitmap] = dc, gfx_ctx

lib/matplotlib/backends/backend_wxagg.py

Lines changed: 15 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)
0