| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -10,22 +10,30 @@ class FigureCanvasQTCairo(FigureCanvasQT, FigureCanvasCairo): | |||
| 10 | 10 | def __init__(self, figure): | |
| 11 | 11 | super(FigureCanvasQTCairo, self).__init__(figure=figure) | |
| 12 | 12 | self._renderer = RendererCairo(self.figure.dpi) | |
| 13 | + self._renderer.set_width_height(-1, -1) # Invalid values. | ||
| 14 | + | ||
| 15 | + def draw(self): | ||
| 16 | + if hasattr(self._renderer.gc, "ctx"): | ||
| 17 | + self.figure.draw(self._renderer) | ||
| 18 | + super(FigureCanvasQTCairo, self).draw() | ||
| 13 | 19 | ||
| 14 | 20 | def paintEvent(self, event): | |
| 15 | 21 | self._update_dpi() | |
| 16 | 22 | dpi_ratio = self._dpi_ratio | |
| 17 | 23 | width = dpi_ratio * self.width() | |
| 18 | 24 | height = dpi_ratio * self.height() | |
| 19 | - surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height) | ||
| 20 | - self._renderer.set_ctx_from_surface(surface) | ||
| 21 | - self._renderer.set_width_height(width, height) | ||
| 22 | - self.figure.draw(self._renderer) | ||
| 23 | - buf = surface.get_data() | ||
| 25 | + if (width, height) != self._renderer.get_canvas_width_height(): | ||
| 26 | + surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height) | ||
| 27 | + self._renderer.set_ctx_from_surface(surface) | ||
| 28 | + self._renderer.set_width_height(width, height) | ||
| 29 | + self.figure.draw(self._renderer) | ||
| 30 | + buf = self._renderer.gc.ctx.get_target().get_data() | ||
| 24 | 31 | qimage = QtGui.QImage(buf, width, height, | |
| 25 | 32 | QtGui.QImage.Format_ARGB32_Premultiplied) | |
| 26 | 33 | # Adjust the buf reference count to work around a memory leak bug in | |
| 27 | 34 | # QImage under PySide on Python 3. | |
| 28 | 35 | if QT_API == 'PySide' and six.PY3: | |
| 36 | + import ctypes | ||
| 29 | 37 | ctypes.c_long.from_address(id(buf)).value = 1 | |
| 30 | 38 | if hasattr(qimage, 'setDevicePixelRatio'): | |
| 31 | 39 | # Not available on Qt4 or some older Qt5. | |
| Back | FazBrowse Home | New Git URL |
0 commit comments