def updateRubber(self, painter=None): """ TOWRITE :param `painter`: TOWRITE :type `painter`: `QPainter`_ """ rubberMode = self.objectRubberMode() # int if rubberMode == OBJ_RUBBER_CIRCLE_1P_RAD: sceneCenterPoint = self.objectRubberPoint( "CIRCLE_CENTER") # QPointF sceneQSnapPoint = self.objectRubberPoint( "CIRCLE_RADIUS") # QPointF itemCenterPoint = self.mapFromScene(sceneCenterPoint) # QPointF itemQSnapPoint = self.mapFromScene(sceneQSnapPoint) # QPointF itemLine = QLineF(itemCenterPoint, itemQSnapPoint) self.setObjectCenter(sceneCenterPoint) sceneLine = QLineF(sceneCenterPoint, sceneQSnapPoint) radius = sceneLine.length() # qreal self.setObjectRadius(radius) if painter: self.drawRubberLine(itemLine, painter, "VIEW_COLOR_CROSSHAIR") self.updatePath() elif rubberMode == OBJ_RUBBER_CIRCLE_1P_DIA: sceneCenterPoint = self.objectRubberPoint( "CIRCLE_CENTER") # QPointF sceneQSnapPoint = self.objectRubberPoint( "CIRCLE_DIAMETER") # QPointF itemCenterPoint = self.mapFromScene(sceneCenterPoint) # QPointF itemQSnapPoint = self.mapFromScene(sceneQSnapPoint) # QPointF itemLine = QLineF(itemCenterPoint, itemQSnapPoint) self.setObjectCenter(sceneCenterPoint) sceneLine = QLineF(sceneCenterPoint, sceneQSnapPoint) diameter = sceneLine.length() # qreal self.setObjectDiameter(diameter) if painter: self.drawRubberLine(itemLine, painter, "VIEW_COLOR_CROSSHAIR") self.updatePath() elif rubberMode == OBJ_RUBBER_CIRCLE_2P: sceneTan1Point = self.objectRubberPoint("CIRCLE_TAN1") # QPointF sceneQSnapPoint = self.objectRubberPoint("CIRCLE_TAN2") # QPointF sceneLine = QLineF(sceneTan1Point, sceneQSnapPoint) self.setObjectCenter(sceneLine.pointAt(0.5)) diameter = sceneLine.length() # qreal self.setObjectDiameter(diameter) self.updatePath() elif rubberMode == OBJ_RUBBER_CIRCLE_3P: sceneTan1Point = self.objectRubberPoint("CIRCLE_TAN1") # QPointF sceneTan2Point = self.objectRubberPoint("CIRCLE_TAN2") # QPointF sceneTan3Point = self.objectRubberPoint("CIRCLE_TAN3") # QPointF #TODO/PORT# double sceneCenterX #TODO/PORT# double sceneCenterY #TODO/PORT# getArcCenter(sceneTan1Point.x(), sceneTan1Point.y(), #TODO/PORT# sceneTan2Point.x(), sceneTan2Point.y(), #TODO/PORT# sceneTan3Point.x(), sceneTan3Point.y(), #TODO/PORT# &sceneCenterX, &sceneCenterY) sceneCenterPoint = QPointF(sceneCenterX, sceneCenterY) sceneLine = QLineF(sceneCenterPoint, sceneTan3Point) self.setObjectCenter(sceneCenterPoint) radius = sceneLine.length() # qreal self.setObjectRadius(radius) self.updatePath() elif rubberMode == OBJ_RUBBER_GRIP: if painter: gripPoint = self.objectRubberPoint("GRIP_POINT") # QPointF if gripPoint == self.objectCenter(): painter.drawEllipse(self.rect().translated( self.mapFromScene(self.objectRubberPoint('')) - self.mapFromScene(gripPoint))) else: gripRadius = QLineF( self.objectCenter(), self.objectRubberPoint('')).length() # qreal painter.drawEllipse(QPointF(), gripRadius, gripRadius) rubLine = QLineF(self.mapFromScene(gripPoint), self.mapFromScene(self.objectRubberPoint(''))) self.drawRubberLine(rubLine, painter, "VIEW_COLOR_CROSSHAIR")
def updateRubber(self, painter=None): """ TOWRITE :param `painter`: TOWRITE :type `painter`: `QPainter`_ """ rubberMode = self.objectRubberMode() # int if rubberMode == OBJ_RUBBER_CIRCLE_1P_RAD: sceneCenterPoint = self.objectRubberPoint("CIRCLE_CENTER") # QPointF sceneQSnapPoint = self.objectRubberPoint("CIRCLE_RADIUS") # QPointF itemCenterPoint = self.mapFromScene(sceneCenterPoint) # QPointF itemQSnapPoint = self.mapFromScene(sceneQSnapPoint) # QPointF itemLine = QLineF(itemCenterPoint, itemQSnapPoint) self.setObjectCenter(sceneCenterPoint) sceneLine = QLineF(sceneCenterPoint, sceneQSnapPoint) radius = sceneLine.length() # qreal self.setObjectRadius(radius) if painter: self.drawRubberLine(itemLine, painter, "VIEW_COLOR_CROSSHAIR") self.updatePath() elif rubberMode == OBJ_RUBBER_CIRCLE_1P_DIA: sceneCenterPoint = self.objectRubberPoint("CIRCLE_CENTER") # QPointF sceneQSnapPoint = self.objectRubberPoint("CIRCLE_DIAMETER") # QPointF itemCenterPoint = self.mapFromScene(sceneCenterPoint) # QPointF itemQSnapPoint = self.mapFromScene(sceneQSnapPoint) # QPointF itemLine = QLineF(itemCenterPoint, itemQSnapPoint) self.setObjectCenter(sceneCenterPoint) sceneLine = QLineF(sceneCenterPoint, sceneQSnapPoint) diameter = sceneLine.length() # qreal self.setObjectDiameter(diameter) if painter: self.drawRubberLine(itemLine, painter, "VIEW_COLOR_CROSSHAIR") self.updatePath() elif rubberMode == OBJ_RUBBER_CIRCLE_2P: sceneTan1Point = self.objectRubberPoint("CIRCLE_TAN1") # QPointF sceneQSnapPoint = self.objectRubberPoint("CIRCLE_TAN2") # QPointF sceneLine = QLineF(sceneTan1Point, sceneQSnapPoint) self.setObjectCenter(sceneLine.pointAt(0.5)) diameter = sceneLine.length() # qreal self.setObjectDiameter(diameter) self.updatePath() elif rubberMode == OBJ_RUBBER_CIRCLE_3P: sceneTan1Point = self.objectRubberPoint("CIRCLE_TAN1") # QPointF sceneTan2Point = self.objectRubberPoint("CIRCLE_TAN2") # QPointF sceneTan3Point = self.objectRubberPoint("CIRCLE_TAN3") # QPointF #TODO/PORT# double sceneCenterX #TODO/PORT# double sceneCenterY #TODO/PORT# getArcCenter(sceneTan1Point.x(), sceneTan1Point.y(), #TODO/PORT# sceneTan2Point.x(), sceneTan2Point.y(), #TODO/PORT# sceneTan3Point.x(), sceneTan3Point.y(), #TODO/PORT# &sceneCenterX, &sceneCenterY) sceneCenterPoint = QPointF(sceneCenterX, sceneCenterY) sceneLine = QLineF(sceneCenterPoint, sceneTan3Point) self.setObjectCenter(sceneCenterPoint) radius = sceneLine.length() # qreal self.setObjectRadius(radius) self.updatePath() elif rubberMode == OBJ_RUBBER_GRIP: if painter: gripPoint = self.objectRubberPoint("GRIP_POINT") # QPointF if gripPoint == self.objectCenter(): painter.drawEllipse(self.rect().translated(self.mapFromScene(self.objectRubberPoint('')) - self.mapFromScene(gripPoint))) else: gripRadius = QLineF(self.objectCenter(), self.objectRubberPoint('')).length() # qreal painter.drawEllipse(QPointF(), gripRadius, gripRadius) rubLine = QLineF(self.mapFromScene(gripPoint), self.mapFromScene(self.objectRubberPoint(''))) self.drawRubberLine(rubLine, painter, "VIEW_COLOR_CROSSHAIR")