Пример #1
0
 def drawOutline(self, painter, xMap, yMap, from_, to):
     doAlign = QwtPainter.roundingAlignment(painter)
     if self.orientation() == Qt.Horizontal:
         v0 = xMap.transform(self.baseline())
     else:
         v0 = yMap.transform(self.baseline())
     if doAlign:
         v0 = round(v0)
     previous = QwtIntervalSample()
     polygon = QPolygonF()
     for i in range(from_, to + 1):
         sample = self.sample(i)
         if not sample.interval.isValid():
             self.flushPolygon(painter, v0, polygon)
             previous = sample
             continue
         if previous.interval.isValid():
             if not qwtIsCombinable(previous.interval, sample.interval):
                 self.flushPolygon(painter, v0, polygon)
         if self.orientation() == Qt.Vertical:
             x1 = xMap.transform(sample.interval.minValue())
             x2 = xMap.transform(sample.interval.maxValue())
             y = yMap.transform(sample.value)
             if doAlign:
                 x1 = round(x1)
                 x2 = round(x2)
                 y = round(y)
             if polygon.size() == 0:
                 polygon += QPointF(x1, v0)
             polygon += QPointF(x1, y)
             polygon += QPointF(x2, y)
         else:
             y1 = yMap.transform(sample.interval.minValue())
             y2 = yMap.transform(sample.interval.maxValue())
             x = xMap.transform(sample.value)
             if doAlign:
                 y1 = round(y1)
                 y2 = round(y2)
                 x = round(x)
             if polygon.size() == 0:
                 polygon += QPointF(v0, y1)
             polygon += QPointF(x, y1)
             polygon += QPointF(x, y2)
         previous = sample
     self.flushPolygon(painter, v0, polygon)
Пример #2
0
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    
Пример #3
0
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
Пример #4
0
    def drawPolyline(self, *args):
        if len(args) == 2:
            painter, polygon = args
            deviceClipping, clipRect = qwtIsClippingNeeded(painter)
            cpa = polygon
            if deviceClipping:
                if isinstance(polygon, QPolygonF):
                    cpa = QwtClipper().clipPolygonF(clipRect, polygon)
                else:
                    cpa = QwtClipper().clipPolygon(clipRect, polygon)
            qwtDrawPolyline(painter, cpa, cpa.size(), self.__polylineSplitting)
        elif len(args) == 3:
            painter, points, pointCount = args
            deviceClipping, clipRect = qwtIsClippingNeeded(painter)
            if deviceClipping:
                if isinstance(points[0], QPointF):
                    polygon = QPolygonF(points)
                    polygon = QwtClipper().clipPolygonF(clipRect, polygon)
                else:
                    polygon = QPolygon(points)
                    polygon = QwtClipper().clipPolygon(clipRect, polygon)
                qwtDrawPolyline(painter, polygon, polygon.size(),
                                self.__polylineSplitting)


#                polygon = QPolygonF(pointCount)
#                pointer = polygon.data()
#                pointer.setsize(pointCount*2*np.finfo(float).dtype.itemsize)
#                memory = np.frombuffer(pointer, float)
#                memory[0::2] = xdata
#                memory[1::2] = ydata
            else:
                qwtDrawPolyline(painter, points, pointCount,
                                self.__polylineSplitting)
        else:
            raise TypeError("QwtPainter.drawPolyline() takes 2 or 3 argument"\
                            "(s) (%s given)" % len(args))
Пример #5
0
    def drawPolyline(self, *args):
        if len(args) == 2:
            painter, polygon = args
            deviceClipping, clipRect = qwtIsClippingNeeded(painter)
            cpa = polygon
            if deviceClipping:
                if isinstance(polygon, QPolygonF):
                    cpa = QwtClipper().clipPolygonF(clipRect, polygon)
                else:
                    cpa = QwtClipper().clipPolygon(clipRect, polygon)
            qwtDrawPolyline(painter, cpa, cpa.size(),
                            self.__polylineSplitting)
        elif len(args) == 3:
            painter, points, pointCount = args
            deviceClipping, clipRect = qwtIsClippingNeeded(painter)
            if deviceClipping:
                if isinstance(points[0], QPointF):
                    polygon = QPolygonF(points)
                    polygon = QwtClipper().clipPolygonF(clipRect, polygon)
                else:
                    polygon = QPolygon(points)
                    polygon = QwtClipper().clipPolygon(clipRect, polygon)
                qwtDrawPolyline(painter, polygon,
                                polygon.size(), self.__polylineSplitting)
#                polygon = QPolygonF(pointCount)
#                pointer = polygon.data()
#                pointer.setsize(pointCount*2*np.finfo(float).dtype.itemsize)
#                memory = np.frombuffer(pointer, float)
#                memory[0::2] = xdata
#                memory[1::2] = ydata
            else:
                qwtDrawPolyline(painter, points, pointCount,
                                self.__polylineSplitting)
        else:
            raise TypeError("QwtPainter.drawPolyline() takes 2 or 3 argument"\
                            "(s) (%s given)" % len(args))