@ -49,6 +49,8 @@ UBGraphicsDelegateFrame::UBGraphicsDelegateFrame(UBGraphicsItemDelegate* pDelega
, mTotalTranslateX ( 0 )
, mTotalTranslateY ( 0 )
, mOperationMode ( Scaling )
, mFlippedX ( false )
, mFlippedY ( false )
, mMirrorX ( false )
, mMirrorY ( false )
{
@ -379,6 +381,12 @@ QSizeF UBGraphicsDelegateFrame::resizeDelegate(qreal moveX, qreal moveY)
return incVector ;
}
void UBGraphicsDelegateFrame : : scaleByPos ( qreal scaleX , qreal scaleY )
{
}
void UBGraphicsDelegateFrame : : mouseMoveEvent ( QGraphicsSceneMouseEvent * event )
{
if ( None = = mCurrentTool )
@ -451,6 +459,7 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
scaleX = - 2 * mFrameWidth / width ;
} else {
scaleX = - 1 ;
mFlippedX = ! mFlippedX ;
}
}
mScaleX = scaleX ;
@ -480,6 +489,7 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
scaleY = - 2 * mFrameWidth / width ;
} else {
scaleY = - 1 ;
mFlippedY = ! mFlippedY ;
}
}
mScaleY = scaleY ;
@ -543,15 +553,38 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
QPointF ref ;
// we just detects coordinates of corner before and after scaling and then moves object at diff between them.
if ( resizingBottomRight ( ) & & mMirrorX )
if ( resizingBottomRight ( ) & & ( mMirrorX | | mMirrorY ) )
{
mTranslateX + = mInitialTransform . map ( delegated ( ) - > boundingRect ( ) . bottomRight ( ) ) . x ( ) - tr . map ( delegated ( ) - > boundingRect ( ) . bottomRight ( ) ) . x ( ) ;
mTranslateY + = mInitialTransform . map ( delegated ( ) - > boundingRect ( ) . bottomRight ( ) ) . y ( ) - tr . map ( delegated ( ) - > boundingRect ( ) . bottomRight ( ) ) . y ( ) ;
if ( mFlippedX & & ! mMirrorX & & mFlippedY ) // && !mMirrorY)
{
mTranslateX + = mInitialTransform . map ( delegated ( ) - > boundingRect ( ) . bottomLeft ( ) ) . x ( ) - tr . map ( delegated ( ) - > boundingRect ( ) . bottomLeft ( ) ) . x ( ) ;
mTranslateY + = mInitialTransform . map ( delegated ( ) - > boundingRect ( ) . bottomLeft ( ) ) . y ( ) - tr . map ( delegated ( ) - > boundingRect ( ) . bottomLeft ( ) ) . y ( ) ;
}
else if ( ( mFlippedX | | mMirrorX ) & & ( mFlippedY | | mMirrorY ) )
{
mTranslateX + = mInitialTransform . map ( delegated ( ) - > boundingRect ( ) . bottomRight ( ) ) . x ( ) - tr . map ( delegated ( ) - > boundingRect ( ) . bottomRight ( ) ) . x ( ) ;
mTranslateY + = mInitialTransform . map ( delegated ( ) - > boundingRect ( ) . bottomRight ( ) ) . y ( ) - tr . map ( delegated ( ) - > boundingRect ( ) . bottomRight ( ) ) . y ( ) ;
}
else if ( mFlippedX | | mMirrorX )
{
mTranslateX + = mInitialTransform . map ( delegated ( ) - > boundingRect ( ) . topRight ( ) ) . x ( ) - tr . map ( delegated ( ) - > boundingRect ( ) . topRight ( ) ) . x ( ) ;
mTranslateY + = mInitialTransform . map ( delegated ( ) - > boundingRect ( ) . topRight ( ) ) . y ( ) - tr . map ( delegated ( ) - > boundingRect ( ) . topRight ( ) ) . y ( ) ;
}
else if ( mFlippedY | | mMirrorY )
{
mTranslateX + = mInitialTransform . map ( delegated ( ) - > boundingRect ( ) . bottomLeft ( ) ) . x ( ) - tr . map ( delegated ( ) - > boundingRect ( ) . bottomLeft ( ) ) . x ( ) ;
mTranslateY + = mInitialTransform . map ( delegated ( ) - > boundingRect ( ) . bottomLeft ( ) ) . y ( ) - tr . map ( delegated ( ) - > boundingRect ( ) . bottomLeft ( ) ) . y ( ) ;
}
else
{
mTranslateX + = mInitialTransform . map ( delegated ( ) - > boundingRect ( ) . bottomRight ( ) ) . x ( ) - tr . map ( delegated ( ) - > boundingRect ( ) . bottomRight ( ) ) . x ( ) ;
mTranslateY + = mInitialTransform . map ( delegated ( ) - > boundingRect ( ) . bottomRight ( ) ) . y ( ) - tr . map ( delegated ( ) - > boundingRect ( ) . bottomRight ( ) ) . y ( ) ;
}
}
else
{
mTranslateX + = mInitialTransform . map ( delegated ( ) - > boundingRect ( ) . topLeft ( ) ) . x ( ) - tr . map ( delegated ( ) - > boundingRect ( ) . topLeft ( ) ) . x ( ) ;
mTranslateY + = mInitialTransform . map ( delegated ( ) - > boundingRect ( ) . topLeft ( ) ) . y ( ) - tr . map ( delegated ( ) - > boundingRect ( ) . topLeft ( ) ) . y ( ) ;
mTranslateX + = mInitialTransform . map ( delegated ( ) - > boundingRect ( ) . topLeft ( ) ) . x ( ) - tr . map ( delegated ( ) - > boundingRect ( ) . topLeft ( ) ) . x ( ) ;
mTranslateY + = mInitialTransform . map ( delegated ( ) - > boundingRect ( ) . topLeft ( ) ) . y ( ) - tr . map ( delegated ( ) - > boundingRect ( ) . topLeft ( ) ) . y ( ) ;
}
}
else if ( resizingTop ( ) | | resizingLeft ( ) )