|
27 | 27 | from qwt.plot_directpainter import QwtPlotDirectPainter |
28 | 28 | from qwt.qthelpers import qcolor_from_str |
29 | 29 |
|
| 30 | +from qtpy import PYSIDE2 |
30 | 31 | from qtpy.QtGui import QPen, QBrush, QPainter, QPolygonF, QColor |
31 | 32 | from qtpy.QtCore import QSize, Qt, QRectF, QPointF |
32 | 33 |
|
@@ -59,15 +60,23 @@ def series_to_polyline(xMap, yMap, series, from_, to): |
59 | 60 | """ |
60 | 61 | Convert series data to QPolygon(F) polyline |
61 | 62 | """ |
62 | | - polyline = QPolygonF(to - from_ + 1) |
63 | | - pointer = polyline.data() |
64 | | - dtype, tinfo = np.float, np.finfo # integers: = np.int, np.iinfo |
65 | | - pointer.setsize(2 * polyline.size() * tinfo(dtype).dtype.itemsize) |
66 | | - memory = np.frombuffer(pointer, dtype) |
67 | | - memory[: (to - from_) * 2 + 1 : 2] = xMap.transform(series.xData()[from_ : to + 1]) |
68 | | - memory[1 : (to - from_) * 2 + 2 : 2] = yMap.transform( |
69 | | - series.yData()[from_ : to + 1] |
70 | | - ) |
| 63 | + size = to - from_ + 1 |
| 64 | + polyline = QPolygonF(size) |
| 65 | + if not PYSIDE2: |
| 66 | + pointer = polyline.data() |
| 67 | + dtype, tinfo = np.float, np.finfo # integers: = np.int, np.iinfo |
| 68 | + pointer.setsize(2 * polyline.size() * tinfo(dtype).dtype.itemsize) |
| 69 | + memory = np.frombuffer(pointer, dtype) |
| 70 | + memory[: (to - from_) * 2 + 1 : 2] = xMap.transform( |
| 71 | + series.xData()[from_ : to + 1] |
| 72 | + ) |
| 73 | + memory[1 : (to - from_) * 2 + 2 : 2] = yMap.transform( |
| 74 | + series.yData()[from_ : to + 1] |
| 75 | + ) |
| 76 | + else: |
| 77 | + polyline.clear() |
| 78 | + for index in range(size): |
| 79 | + polyline.append(QPointF(series.xData()[index], series.yData()[index])) |
71 | 80 | return polyline |
72 | 81 |
|
73 | 82 |
|
|
0 commit comments