def addPointToRubberBand(self, point, doUpdate = True): numberOfVertices = self.rubberBand.numberOfVertices() if numberOfVertices == 2: # per un baco non ancora capito: se la linea ha solo 2 vertici e # hanno la stessa x o y (linea orizzontale o verticale) # la linea non viene disegnata perciò sposto un pochino la x o la y adjustedPoint = qad_utils.getAdjustedRubberBandVertex(self.rubberBand.getPoint(0, 0), point) self.rubberBand.addPoint(adjustedPoint, doUpdate) else: self.rubberBand.addPoint(point, doUpdate)
def moveElastic(self, point): numberOfVertices = self.__RubberBand.numberOfVertices() if numberOfVertices > 0: if numberOfVertices == 2: # per un baco non ancora capito: se la linea ha solo 2 vertici e # hanno la stessa x o y (linea orizzontale o verticale) # la linea non viene disegnata perciò sposto un pochino la x o la y adjustedPoint = qad_utils.getAdjustedRubberBandVertex(self.__RubberBand.getPoint(0, 0), point) self.__RubberBand.movePoint(numberOfVertices - 1, adjustedPoint) else: p1 = self.__RubberBand.getPoint(0, 0) if point.x() > p1.x(): # se il punto è a destra di p1 (punto iniziale) self.__RubberBand.setFillColor(self.rectangleWindowSelectionColor) else: self.__RubberBand.setFillColor(self.rectangleCrossingSelectionColor) adjustedPoint = qad_utils.getAdjustedRubberBandVertex(p1, point) self.__RubberBand.movePoint(numberOfVertices - 3, QgsPoint(p1.x(), adjustedPoint.y())) self.__RubberBand.movePoint(numberOfVertices - 2, adjustedPoint) self.__RubberBand.movePoint(numberOfVertices - 1, QgsPoint(adjustedPoint.x(), p1.y()))
def setStartPoint(self, startPoint): self.__startPoint = startPoint self.__QadSnapper.setStartPoint(startPoint) if self.getDrawMode() == QadGetPointDrawModeEnum.ELASTIC_LINE: # previsto uso della linea elastica self.__RubberBand.reset(QGis.Line) #numberOfVertices = self.__RubberBand.numberOfVertices() #if numberOfVertices == 2: # self.__RubberBand.removeLastPoint() # self.__RubberBand.removeLastPoint() self.__RubberBand.addPoint(startPoint, False) point = self.toMapCoordinates(self.canvas.mouseLastXY()) # per un baco non ancora capito: se la linea ha solo 2 vertici e # hanno la stessa x o y (linea orizzontale o verticale) # la linea non viene disegnata perciò sposto un pochino la x o la y point = qad_utils.getAdjustedRubberBandVertex(startPoint, point) self.__RubberBand.addPoint(point, True) elif self.getDrawMode() == QadGetPointDrawModeEnum.ELASTIC_RECTANGLE: # previsto uso del rettangolo elastico point = self.toMapCoordinates(self.canvas.mouseLastXY()) self.__RubberBand.reset(QGis.Polygon) self.__RubberBand.addPoint(startPoint, False) # per un baco non ancora capito: se la linea ha solo 2 vertici e # hanno la stessa x o y (linea orizzontale o verticale) # la linea non viene disegnata perciò sposto un pochino la x o la y point = qad_utils.getAdjustedRubberBandVertex(startPoint, point) self.__RubberBand.addPoint(QgsPoint(startPoint.x(), point.y()), False) self.__RubberBand.addPoint(point, False) self.__RubberBand.addPoint(QgsPoint(point.x(), startPoint.y()), True) self.__QadSnapPointsDisplayManager.setStartPoint(startPoint)