def drawPoints(self, painter, points, pointCount): deviceClipping, clipRect = qwtIsClippingNeeded(painter) if isinstance(points[0], QPointF): if deviceClipping: clippedPolygon = QPolygonF(pointCount) clippedData = clippedPolygon.data() numClippedPoints = 0 for point in points: if clipRect.contains(point): clippedData[numClippedPoints] = point numClippedPoints += 1 painter.drawPoints(clippedData, numClippedPoints) else: painter.drawPoints(points, pointCount) else: if deviceClipping: minX = np.ceil(clipRect.left()) maxX = np.floor(clipRect.right()) minY = np.ceil(clipRect.top()) maxY = np.floor(clipRect.bottom()) r = QRect(minX, minY, maxX - minX, maxY - minY) clippedPolygon = QPolygon(pointCount) clippedData = clippedPolygon.data() numClippedPoints = 0 for point in points: if r.contains(point): clippedData[numClippedPoints] = point numClippedPoints += 1 painter.drawPoints(clippedData, numClippedPoints) else: painter.drawPoints(points, pointCount)
def drawPoints(self, painter, points, pointCount): deviceClipping, clipRect = qwtIsClippingNeeded(painter) if isinstance(points[0], QPointF): if deviceClipping: clippedPolygon = QPolygonF(pointCount) clippedData = clippedPolygon.data() numClippedPoints = 0 for point in points: if clipRect.contains(point): clippedData[numClippedPoints] = point numClippedPoints += 1 painter.drawPoints(clippedData, numClippedPoints) else: painter.drawPoints(points, pointCount) else: if deviceClipping: minX = np.ceil(clipRect.left()) maxX = np.floor(clipRect.right()) minY = np.ceil(clipRect.top()) maxY = np.floor(clipRect.bottom()) r = QRect(minX, minY, maxX-minX, maxY-minY) clippedPolygon = QPolygon(pointCount) clippedData = clippedPolygon.data() numClippedPoints = 0 for point in points: if r.contains(point): clippedData[numClippedPoints] = point numClippedPoints += 1 painter.drawPoints(clippedData, numClippedPoints) else: painter.drawPoints(points, pointCount)
def series_to_polyline(xMap, yMap, series, from_, to): """ Convert series data to QPolygon(F) polyline """ polyline = QPolygonF(to-from_+1) pointer = polyline.data() dtype, tinfo = np.float, np.finfo # integers: = np.int, np.iinfo pointer.setsize(2*polyline.size()*tinfo(dtype).dtype.itemsize) memory = np.frombuffer(pointer, dtype) memory[:(to-from_)*2+1:2] = xMap.transform(series.xData()[from_:to+1]) memory[1:(to-from_)*2+2:2] = yMap.transform(series.yData()[from_:to+1]) return polyline
def series_to_polyline(xMap, yMap, series, from_, to): """ Convert series data to QPolygon(F) polyline """ polyline = QPolygonF(to - from_ + 1) pointer = polyline.data() dtype, tinfo = np.float, np.finfo # integers: = np.int, np.iinfo pointer.setsize(2 * polyline.size() * tinfo(dtype).dtype.itemsize) memory = np.frombuffer(pointer, dtype) memory[:(to - from_) * 2 + 1:2] = xMap.transform(series.xData()[from_:to + 1]) memory[1:(to - from_) * 2 + 2:2] = yMap.transform(series.yData()[from_:to + 1]) return polyline