@ -130,26 +130,27 @@ void UBGraphicsTriangle::calculatePoints(const QRectF& r)
{
switch ( mOrientation )
{
case BottomLeft :
A1 . setX ( r . left ( ) ) ; A1 . setY ( r . top ( ) ) ;
B1 . setX ( r . left ( ) ) ; B1 . setY ( r . bottom ( ) ) ;
C1 . setX ( r . right ( ) ) ; C1 . setY ( r . bottom ( ) ) ;
break ;
case TopLeft :
A1 . setX ( r . left ( ) ) ; A1 . setY ( r . bottom ( ) ) ;
B1 . setX ( r . left ( ) ) ; B1 . setY ( r . top ( ) ) ;
C1 . setX ( r . right ( ) ) ; C1 . setY ( r . top ( ) ) ;
break ;
case TopRight :
A1 . setX ( r . right ( ) ) ; A1 . setY ( r . bottom ( ) ) ;
B1 . setX ( r . right ( ) ) ; B1 . setY ( r . top ( ) ) ;
C1 . setX ( r . left ( ) ) ; C1 . setY ( r . top ( ) ) ;
break ;
case BottomRight :
A1 . setX ( r . right ( ) ) ; A1 . setY ( r . top ( ) ) ;
B1 . setX ( r . right ( ) ) ; B1 . setY ( r . bottom ( ) ) ;
C1 . setX ( r . left ( ) ) ; C1 . setY ( r . bottom ( ) ) ;
break ;
case BottomLeft :
A1 . setX ( r . left ( ) ) ; A1 . setY ( r . top ( ) ) ;
B1 . setX ( r . left ( ) ) ; B1 . setY ( r . bottom ( ) ) ;
C1 . setX ( r . right ( ) ) ; C1 . setY ( r . bottom ( ) ) ;
break ;
case TopLeft :
A1 . setX ( r . left ( ) ) ; A1 . setY ( r . bottom ( ) ) ;
B1 . setX ( r . left ( ) ) ; B1 . setY ( r . top ( ) ) ;
C1 . setX ( r . right ( ) ) ; C1 . setY ( r . top ( ) ) ;
break ;
case TopRight :
A1 . setX ( r . right ( ) ) ; A1 . setY ( r . bottom ( ) ) ;
B1 . setX ( r . right ( ) ) ; B1 . setY ( r . top ( ) ) ;
C1 . setX ( r . left ( ) ) ; C1 . setY ( r . top ( ) ) ;
break ;
case BottomRight :
A1 . setX ( r . right ( ) ) ; A1 . setY ( r . top ( ) ) ;
B1 . setX ( r . right ( ) ) ; B1 . setY ( r . bottom ( ) ) ;
C1 . setX ( r . left ( ) ) ; C1 . setY ( r . bottom ( ) ) ;
break ;
}
C = sqrt ( rect ( ) . width ( ) * rect ( ) . width ( ) + rect ( ) . height ( ) * rect ( ) . height ( ) ) ;
@ -267,6 +268,22 @@ void UBGraphicsTriangle::paint(QPainter *painter, const QStyleOptionGraphicsItem
}
}
QPainterPath UBGraphicsTriangle : : shape ( ) const
{
QPainterPath tShape ;
QPolygonF tPolygon ;
tPolygon < < A1 < < B1 < < C1 ;
tShape . addPolygon ( tPolygon ) ;
tPolygon . clear ( ) ;
tPolygon < < A2 < < B2 < < C2 ;
tShape . addPolygon ( tPolygon ) ;
tPolygon . clear ( ) ;
return tShape ;
}
void UBGraphicsTriangle : : paintGraduations ( QPainter * painter )
{
const int centimeterGraduationHeight = 15 ;
@ -744,8 +761,7 @@ void UBGraphicsTriangle::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
{
UBStylusTool : : Enum currentTool = ( UBStylusTool : : Enum ) UBDrawingController : : drawingController ( ) - > stylusTool ( ) ;
if ( currentTool = = UBStylusTool : : Selector )
{
if ( currentTool = = UBStylusTool : : Selector ) {
mCloseSvgItem - > setParentItem ( this ) ;
mShowButtons = true ;
@ -770,6 +786,11 @@ void UBGraphicsTriangle::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
event - > accept ( ) ;
update ( ) ;
} else if ( UBDrawingController : : drawingController ( ) - > isDrawingTool ( ) ) {
setCursor ( drawRulerLineCursor ( ) ) ;
UBDrawingController : : drawingController ( ) - > mActiveRuler = this ;
event - > accept ( ) ;
}
}
@ -813,3 +834,59 @@ void UBGraphicsTriangle::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
event - > accept ( ) ;
}
}
void UBGraphicsTriangle : : StartLine ( const QPointF & scenePos , qreal width )
{
qDebug ( ) < < " morientation " < < mOrientation ;
//qDebug() << "triangle rect()" << rect();
QPointF itemPos = mapFromScene ( scenePos ) ;
qreal y ;
if ( mOrientation = = 0 | | mOrientation = = 1 ) {
y = rect ( ) . y ( ) + rect ( ) . height ( ) + width / 2 ;
} else if ( mOrientation = = 2 | | mOrientation = = 3 ) {
y = rect ( ) . y ( ) - width / 2 ;
}
if ( itemPos . x ( ) < rect ( ) . x ( ) + sLeftEdgeMargin )
itemPos . setX ( rect ( ) . x ( ) + sLeftEdgeMargin ) ;
if ( itemPos . x ( ) > rect ( ) . x ( ) + rect ( ) . width ( ) - sLeftEdgeMargin )
itemPos . setX ( rect ( ) . x ( ) + rect ( ) . width ( ) - sLeftEdgeMargin ) ;
itemPos . setY ( y ) ;
itemPos = mapToScene ( itemPos ) ;
scene ( ) - > moveTo ( itemPos ) ;
scene ( ) - > drawLineTo ( itemPos , width , true ) ;
}
void UBGraphicsTriangle : : DrawLine ( const QPointF & scenePos , qreal width )
{
QPointF itemPos = mapFromScene ( scenePos ) ;
qreal y ;
if ( mOrientation = = 0 | | mOrientation = = 1 ) {
y = rect ( ) . y ( ) + rect ( ) . height ( ) + width / 2 ;
} else if ( mOrientation = = 2 | | mOrientation = = 3 ) {
y = rect ( ) . y ( ) - width / 2 ;
}
if ( itemPos . x ( ) < rect ( ) . x ( ) + sLeftEdgeMargin )
itemPos . setX ( rect ( ) . x ( ) + sLeftEdgeMargin ) ;
if ( itemPos . x ( ) > rect ( ) . x ( ) + rect ( ) . width ( ) - sLeftEdgeMargin )
itemPos . setX ( rect ( ) . x ( ) + rect ( ) . width ( ) - sLeftEdgeMargin ) ;
itemPos . setY ( y ) ;
itemPos = mapToScene ( itemPos ) ;
// We have to use "pointed" line for marker tool
scene ( ) - > drawLineTo ( itemPos , width ,
UBDrawingController : : drawingController ( ) - > stylusTool ( ) ! = UBStylusTool : : Marker ) ;
}
void UBGraphicsTriangle : : EndLine ( )
{
}