@@ -58,6 +58,7 @@ def __init__( self, figure ):
58
58
FigureCanvasAgg .__init__ ( self , figure )
59
59
self .drawRect = False
60
60
self .rect = []
61
+ self .blitbox = None
61
62
self .replot = True
62
63
self .setAttribute (QtCore .Qt .WA_OpaquePaintEvent )
63
64
@@ -77,11 +78,11 @@ def paintEvent( self, e ):
77
78
if DEBUG : print 'FigureCanvasQtAgg.paintEvent: ' , self , \
78
79
self .get_width_height ()
79
80
80
- # only replot data when needed
81
- if type (self .replot ) is bool : # might be a bbox for blitting
82
- if self .replot :
83
- FigureCanvasAgg .draw (self )
81
+ if self .replot :
82
+ FigureCanvasAgg .draw (self )
83
+ self .replot = False
84
84
85
+ if self .blitbox is None :
85
86
# matplotlib is in rgba byte order. QImage wants to put the bytes
86
87
# into argb format and is in a 4 byte unsigned int. Little endian
87
88
# system is LSB first and expects the bytes in reverse order
@@ -91,7 +92,7 @@ def paintEvent( self, e ):
91
92
else :
92
93
stringBuffer = self .renderer ._renderer .tostring_argb ()
93
94
94
- qImage = QtGui .QImage (stringBuffer , self .renderer .width ,
95
+ qImage = QtGui .QImage (stringBuffer , self .renderer .width ,
95
96
self .renderer .height ,
96
97
QtGui .QImage .Format_ARGB32 )
97
98
p = QtGui .QPainter (self )
@@ -101,23 +102,21 @@ def paintEvent( self, e ):
101
102
if self .drawRect :
102
103
p .setPen ( QtGui .QPen ( QtCore .Qt .black , 1 , QtCore .Qt .DotLine ) )
103
104
p .drawRect ( self .rect [0 ], self .rect [1 ], self .rect [2 ], self .rect [3 ] )
104
-
105
105
p .end ()
106
- # we are blitting here
107
106
else :
108
- bbox = self .replot
107
+ bbox = self .blitbox
109
108
l , b , r , t = bbox .extents
110
109
w = int (r ) - int (l )
111
110
h = int (t ) - int (b )
112
111
t = int (b ) + h
113
- reg = FigureCanvasAgg .copy_from_bbox (self , bbox )
112
+ reg = self .copy_from_bbox (bbox )
114
113
stringBuffer = reg .to_string_argb ()
115
114
qImage = QtGui .QImage (stringBuffer , w , h , QtGui .QImage .Format_ARGB32 )
116
115
pixmap = QtGui .QPixmap .fromImage (qImage )
117
116
p = QtGui .QPainter ( self )
118
117
p .drawPixmap (QtCore .QPoint (l , self .renderer .height - t ), pixmap )
119
118
p .end ()
120
- self .replot = False
119
+ self .blitbox = None
121
120
self .drawRect = False
122
121
123
122
def draw ( self ):
@@ -133,22 +132,11 @@ def blit(self, bbox=None):
133
132
"""
134
133
Blit the region in bbox
135
134
"""
136
-
137
- self .replot = bbox
135
+ self .blitbox = bbox
138
136
l , b , w , h = bbox .bounds
139
137
t = b + h
140
138
self .repaint (l , self .renderer .height - t , w , h )
141
139
142
- def copy_from_bbox (self , * args ):
143
- """
144
- If a draw() has been called but the update() has not
145
- occurred, draw into the agg canvas before copying.
146
- """
147
- if self .replot :
148
- FigureCanvasAgg .draw (self )
149
- self .replot = False
150
- return FigureCanvasAgg .copy_from_bbox (self , * args )
151
-
152
140
def print_figure (self , * args , ** kwargs ):
153
141
FigureCanvasAgg .print_figure (self , * args , ** kwargs )
154
142
self .draw ()
0 commit comments