From fff747a644d3b888eae6ad804117db24cac0cd4e Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Mon, 12 Feb 2018 08:02:25 +0100 Subject: [PATCH 1/3] Fix wxcairo byteorder. --- lib/matplotlib/backends/backend_wxcairo.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/backends/backend_wxcairo.py b/lib/matplotlib/backends/backend_wxcairo.py index bd61fa03780a..71a6831c7c80 100644 --- a/lib/matplotlib/backends/backend_wxcairo.py +++ b/lib/matplotlib/backends/backend_wxcairo.py @@ -3,6 +3,9 @@ import six +import sys + +import numpy as np import wx from .backend_cairo import cairo, FigureCanvasCairo, RendererCairo @@ -41,8 +44,13 @@ def draw(self, drawDC=None): self._renderer.set_ctx_from_surface(surface) self._renderer.set_width_height(width, height) self.figure.draw(self._renderer) - buf = surface.get_data() - self.bitmap = wxc.BitmapFromBuffer(width, height, buf) + buf = np.frombuffer(surface.get_data(), dtype="uint8").reshape((height, width, 4)) + if sys.byteorder == "little": + b, g, r, a = np.rollaxis(buf, -1) + else: + a, r, g, b = np.rollaxis(buf, -1) + rgba8888 = np.dstack([r, g, b, a]) + self.bitmap = wxc.BitmapFromBuffer(width, height, rgba8888) self._isDrawn = True self.gui_repaint(drawDC=drawDC, origin='WXCairo') From 95f07482b77dec363ec00db91643a040ab484aea Mon Sep 17 00:00:00 2001 From: DietmarSchwertberger Date: Sat, 17 Feb 2018 16:17:27 +0100 Subject: [PATCH 2/3] use wx.lib.wxcairo.BitmapFromImageSurface to convert from cairo to wx --- lib/matplotlib/backends/backend_wxcairo.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/lib/matplotlib/backends/backend_wxcairo.py b/lib/matplotlib/backends/backend_wxcairo.py index 71a6831c7c80..7b85513d753f 100644 --- a/lib/matplotlib/backends/backend_wxcairo.py +++ b/lib/matplotlib/backends/backend_wxcairo.py @@ -11,7 +11,7 @@ from .backend_cairo import cairo, FigureCanvasCairo, RendererCairo from .backend_wx import ( _BackendWx, _FigureCanvasWxBase, FigureFrameWx, NavigationToolbar2Wx) -from . import wx_compat as wxc +import wx.lib.wxcairo as wxcairo class FigureFrameWxCairo(FigureFrameWx): @@ -44,13 +44,7 @@ def draw(self, drawDC=None): self._renderer.set_ctx_from_surface(surface) self._renderer.set_width_height(width, height) self.figure.draw(self._renderer) - buf = np.frombuffer(surface.get_data(), dtype="uint8").reshape((height, width, 4)) - if sys.byteorder == "little": - b, g, r, a = np.rollaxis(buf, -1) - else: - a, r, g, b = np.rollaxis(buf, -1) - rgba8888 = np.dstack([r, g, b, a]) - self.bitmap = wxc.BitmapFromBuffer(width, height, rgba8888) + self.bitmap = wxcairo.BitmapFromImageSurface(surface) self._isDrawn = True self.gui_repaint(drawDC=drawDC, origin='WXCairo') From 54a7b6ca1bc3e3c57e3191441915a63d7e2e63b9 Mon Sep 17 00:00:00 2001 From: DietmarSchwertberger Date: Sat, 17 Feb 2018 16:27:53 +0100 Subject: [PATCH 3/3] remove now unused imports again --- lib/matplotlib/backends/backend_wxcairo.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/matplotlib/backends/backend_wxcairo.py b/lib/matplotlib/backends/backend_wxcairo.py index 7b85513d753f..8bd71f5b8d4e 100644 --- a/lib/matplotlib/backends/backend_wxcairo.py +++ b/lib/matplotlib/backends/backend_wxcairo.py @@ -3,9 +3,6 @@ import six -import sys - -import numpy as np import wx from .backend_cairo import cairo, FigureCanvasCairo, RendererCairo