@ -40,8 +40,8 @@ UBGraphicsAristo::UBGraphicsAristo()
, mResizing ( false )
, mRotating ( false )
, mOrientation ( Undefined )
, mAngle ( 0 )
, mCurrent Angle ( 0 )
, mRotated Angle ( 0 )
, mMarker Angle ( 0 )
, mStartAngle ( 0 )
, mSpan ( 180 )
, mHFlipSvgItem ( 0 )
@ -190,8 +190,11 @@ void UBGraphicsAristo::copyItemParameters(UBItem *copy) const
{
/* TODO: copy all members */
cp - > setPos ( this - > pos ( ) ) ;
cp - > setPath ( this - > path ( ) ) ;
cp - > setTransform ( this - > transform ( ) ) ;
cp - > setBoundingRect ( boundingRect ( ) ) ;
cp - > setOrientation ( mOrientation ) ;
cp - > mRotatedAngle = mRotatedAngle ;
cp - > mMarkerAngle = mMarkerAngle ;
}
}
@ -401,23 +404,23 @@ void UBGraphicsAristo::paintMarker(QPainter *painter)
/* adjusting marker button */
mMarkerSvgItem - > resetTransform ( ) ;
mMarkerSvgItem - > translate ( - markerButtonRect ( ) . left ( ) , - markerButtonRect ( ) . top ( ) ) ;
mMarkerSvgItem - > rotate ( mCurrent Angle ) ;
mMarkerSvgItem - > rotate ( mMarker Angle ) ;
mMarkerSvgItem - > translate ( markerButtonRect ( ) . left ( ) , markerButtonRect ( ) . top ( ) ) ;
qreal co = cos ( ( mCurrent Angle ) * PI / 180 ) ;
qreal si = sin ( ( mCurrent Angle ) * PI / 180 ) ;
qreal co = cos ( ( mMarker Angle ) * PI / 180 ) ;
qreal si = sin ( ( mMarker Angle ) * PI / 180 ) ;
/* Setting point composing the line (from point C) which intersects the line we want to draw. */
QPointF referencePoint ;
if ( mOrientation = = Bottom ) {
if ( ( int ) mCurrent Angle % 360 < 90 )
if ( ( int ) mMarker Angle % 360 < 90 )
referencePoint = B ;
else
referencePoint = A ;
}
else if ( mOrientation = = Top ) {
if ( ( int ) mCurrent Angle % 360 < 270 & & ( int ) mCurrent Angle % 360 > 0 )
if ( ( int ) mMarker Angle % 360 < 270 & & ( int ) mMarker Angle % 360 > 0 )
referencePoint = A ;
else
referencePoint = B ;
@ -430,7 +433,7 @@ void UBGraphicsAristo::paintMarker(QPainter *painter)
painter - > drawLine ( QLineF ( intersectionPoint , rotationCenter ( ) ) ) ;
/* drawing angle value */
qreal rightAngle = mOrientation = = Bottom ? mCurrent Angle : 360 - mCurrent Angle ;
qreal rightAngle = mOrientation = = Bottom ? mMarker Angle : 360 - mMarker Angle ;
QString angleText = QString ( " %1° " ) . arg ( rightAngle , 0 , ' f ' , 1 ) ;
@ -450,18 +453,18 @@ void UBGraphicsAristo::paintMarker(QPainter *painter)
void UBGraphicsAristo : : rotateAroundCenter ( qreal angle )
{
qreal oldAngle = mAngle ;
mAngle = angle ;
qreal oldAngle = mRotated Angle ;
mRotated Angle = angle ;
QTransform transform ;
rotateAroundCenter ( transform , rotationCenter ( ) ) ;
setTransform ( transform , true ) ;
mAngle = oldAngle + angle ; // We have to store absolute value for FLIP case
mRotated Angle = oldAngle + angle ; // We have to store absolute value for FLIP case
}
void UBGraphicsAristo : : rotateAroundCenter ( QTransform & transform , QPointF center )
{
transform . translate ( center . x ( ) , center . y ( ) ) ;
transform . rotate ( mAngle ) ;
transform . rotate ( mRotated Angle ) ;
transform . translate ( - center . x ( ) , - center . y ( ) ) ;
}
@ -582,20 +585,20 @@ void UBGraphicsAristo::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
else if ( mMarking ) {
qreal angle = currentLine . angleTo ( lastLine ) ;
mCurrent Angle + = angle ;
mCurrent Angle - = ( int ) ( mCurrent Angle / 360 ) * 360 ;
mMarker Angle + = angle ;
mMarker Angle - = ( int ) ( mMarker Angle / 360 ) * 360 ;
if ( mOrientation = = Bottom ) {
if ( mCurrent Angle > = 270 )
mCurrent Angle = 0 ;
else if ( mCurrent Angle > 180 )
mCurrent Angle = 180 ;
if ( mMarker Angle > = 270 )
mMarker Angle = 0 ;
else if ( mMarker Angle > 180 )
mMarker Angle = 180 ;
}
else if ( mOrientation = = Top ) {
if ( mCurrent Angle < 90 )
mCurrent Angle = 360 ;
else if ( mCurrent Angle < 180 )
mCurrent Angle = 180 ;
if ( mMarker Angle < 90 )
mMarker Angle = 360 ;
else if ( mMarker Angle < 180 )
mMarker Angle = 180 ;
}
update ( ) ;
}
@ -622,7 +625,7 @@ void UBGraphicsAristo::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
break ;
case HorizontalFlip :
/* substracting difference to zero [2pi] twice, to obtain the desired angle */
mCurrent Angle - = 2 * ( mCurrent Angle - ( int ) ( mCurrent Angle / 360 ) * 360 ) - 360 ;
mMarker Angle - = 2 * ( mMarker Angle - ( int ) ( mMarker Angle / 360 ) * 360 ) - 360 ;
/* setting new orientation */
switch ( mOrientation ) {
case Bottom :
@ -749,7 +752,7 @@ UBGraphicsAristo::Tool UBGraphicsAristo::toolFromPos(QPointF pos)
{
pos = pos - rotationCenter ( ) ;
qreal rotationAngle = mOrientation = = Bottom ? - mCurrent Angle : Top ? 360 * ( int ) ( mCurrent Angle / 360 + 1 ) - mCurrent Angle : 0 ;
qreal rotationAngle = mOrientation = = Bottom ? - mMarker Angle : Top ? 360 * ( int ) ( mMarker Angle / 360 + 1 ) - mMarker Angle : 0 ;
QTransform t ;
t . rotate ( rotationAngle ) ;