Here I attached diff files of my changes, compared to matplotlib-0.91.2
release.
Gregor Thalhammer
--- Kopie von backend_wx.py Mon Mar 31 10:28:22 2008
+++ backend_wx.py Sun Apr 6 10:23:09 2008
@@ -752,11 +752,14 @@
self._isRealized = False
self._isConfigured = False
self._printQued = []
+ self._need_rerender = True
if wx.VERSION_STRING >= '2.5':
# Event handlers 2.5
self.Bind(wx.EVT_SIZE, self._onSize)
self.Bind(wx.EVT_PAINT, self._onPaint)
+ #self.Bind(wx.EVT_ERASE_BACKGROUND, self._onEraseBackground)
+ #self.Bind(wx.EVT_IDLE, self._onIdle)
self.Bind(wx.EVT_KEY_DOWN, self._onKeyDown)
self.Bind(wx.EVT_KEY_UP, self._onKeyUp)
self.Bind(wx.EVT_RIGHT_DOWN, self._onRightButtonDown)
@@ -952,7 +955,8 @@
self.renderer = RendererWx(self.bitmap, self.figure.dpi)
self.figure.draw(self.renderer)
if repaint:
- self.gui_repaint()
+ self.Refresh()
+ #gui_repaint()
def _get_imagesave_wildcards(self):
'return the wildcard string for the filesave dialog'
@@ -1067,7 +1071,8 @@
self.print_figure(fname, dpi, facecolor, edgecolor)
self._printQued = []
-
+ def _onEraseBackground(self, evt):
+ pass
def _onPaint(self, evt):
"""
@@ -1078,12 +1083,22 @@
if not self._isRealized:
self.realize()
- # Render to the bitmap
- #self.draw(repaint=False)
+ #only recreate bitmap if needed
+ if self._need_rerender:
+ self.draw(repaint=False)
+ self._need_rerender = False
+
+ #repaint only damaged parts of window
+ dc = wx.PaintDC(self)
+ source = wx.MemoryDC(self.bitmap)
+ box = self.UpdateRegion.Box
+ dc.Blit(box.X, box.Y, box.Width, box.Height,
+ source,
+ box.X, box.Y)
+ source.SelectObject(wx.NullBitmap) #needed?
- # Update the display using a PaintDC
- self.gui_repaint(drawDC=wx.PaintDC(self))
- evt.Skip()
+ def _onIdle(self, evt):
+ print "OnIdle"
def _onSize(self, evt):
"""
--- Kopie von backend_wxagg.py Fri Jan 11 21:39:09 2008
+++ backend_wxagg.py Sun Apr 6 11:24:27 2008
@@ -58,42 +58,28 @@
Render the figure using agg.
"""
DEBUG_MSG("draw()", 1, self)
+
FigureCanvasAgg.draw(self)
self.bitmap = _convert_agg_to_wx_bitmap(self.get_renderer(), None)
if repaint:
- self.gui_repaint()
+ self.Refresh(eraseBackground = False)
+ self.Update()
def blit(self, bbox=None):
- """
- Transfer the region of the agg buffer defined by bbox to the display.
- If bbox is None, the entire buffer is transferred.
- """
+ self.bitmap = _convert_agg_to_wx_bitmap(self.get_renderer(), None)
+
if bbox is None:
- self.bitmap = _convert_agg_to_wx_bitmap(self.get_renderer(), None)
- self.gui_repaint()
- return
-
- l, b, w, h = bbox.get_bounds()
- r = l + w
- t = b + h
- x = int(l)
- y = int(self.bitmap.GetHeight() - t)
-
- srcBmp = _convert_agg_to_wx_bitmap(self.get_renderer(), None)
- srcDC = wx.MemoryDC()
- srcDC.SelectObject(srcBmp)
-
- destDC = wx.MemoryDC()
- destDC.SelectObject(self.bitmap)
-
- destDC.BeginDrawing()
- destDC.Blit(x, y, int(w), int(h), srcDC, x, y)
- destDC.EndDrawing()
-
- destDC.SelectObject(wx.NullBitmap)
- srcDC.SelectObject(wx.NullBitmap)
- self.gui_repaint()
+ self.Refresh(eraseBackground = False)
+ else:
+ l, b, w, h = bbox.get_bounds()
+ x = int(l)
+ y = int(self.bitmap.GetHeight() - (b+h))
+ w = int(w)
+ h = int(h)
+ self.RefreshRect(wx.Rect(x, y, w, h),
+ eraseBackground = False)
+ self.Update() #needed?
filetypes = FigureCanvasAgg.filetypes
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Register now and save $200. Hurry, offer ends at 11:59 p.m.,
Monday, April 7! Use priority code J8TLD2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel