Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit fff747a

Browse files
committed
Fix wxcairo byteorder.
1 parent 2099af4 commit fff747a

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

lib/matplotlib/backends/backend_wxcairo.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33

44
import six
55

6+
import sys
7+
8+
import numpy as np
69
import wx
710

811
from .backend_cairo import cairo, FigureCanvasCairo, RendererCairo
@@ -41,8 +44,13 @@ def draw(self, drawDC=None):
4144
self._renderer.set_ctx_from_surface(surface)
4245
self._renderer.set_width_height(width, height)
4346
self.figure.draw(self._renderer)
44-
buf = surface.get_data()
45-
self.bitmap = wxc.BitmapFromBuffer(width, height, buf)
47+
buf = np.frombuffer(surface.get_data(), dtype="uint8").reshape((height, width, 4))
48+
if sys.byteorder == "little":
49+
b, g, r, a = np.rollaxis(buf, -1)
50+
else:
51+
a, r, g, b = np.rollaxis(buf, -1)
52+
rgba8888 = np.dstack([r, g, b, a])
53+
self.bitmap = wxc.BitmapFromBuffer(width, height, rgba8888)
4654
self._isDrawn = True
4755
self.gui_repaint(drawDC=drawDC, origin='WXCairo')
4856

0 commit comments

Comments
 (0)