def _add_points_for_line(self, start: QPointF, stop: QPointF): start_points = self._rect_for_point(start) stop_points = self._rect_for_point(stop) point_list = [] if start.y() == stop.y(): point_list.extend([ start_points[0], stop_points[1], stop_points[2], start_points[3] ]) elif start.y() < stop.y(): point_list.extend(start_points[0:2]) point_list.extend(stop_points[1:4]) point_list.append(start_points[3]) else: point_list.append(start_points[0]) point_list.extend(stop_points[0:3]) point_list.extend(start_points[2:4]) self.screen_polygon = self.screen_polygon.united( QPolygonF.fromList(point_list))
def _add_points_for_position(self, pos: QPointF): self.screen_polygon = self.screen_polygon.united( QPolygonF.fromList(self._rect_for_point(pos)))
def __init__(self, *args, **kwargs): super(PolyLineItem, self).__init__() self.points = [get_point(p) for p in args] self.closed = kwargs.pop('closed') self._polygon = QPolygonF(QPolygonF.fromList(self.points))