|
|
@ -224,11 +224,13 @@ void UBGraphicsDelegateFrame::mousePressEvent(QGraphicsSceneMouseEvent *event) |
|
|
|
mAngleOffset = 0; |
|
|
|
mAngleOffset = 0; |
|
|
|
|
|
|
|
|
|
|
|
mInitialTransform = buildTransform(); |
|
|
|
mInitialTransform = buildTransform(); |
|
|
|
|
|
|
|
mOriginalSize = delegated()->boundingRect().size(); |
|
|
|
|
|
|
|
|
|
|
|
mCurrentTool = toolFromPos(event->pos()); |
|
|
|
mCurrentTool = toolFromPos(event->pos()); |
|
|
|
setCursorFromAngle(QString::number((int)mAngle % 360)); |
|
|
|
setCursorFromAngle(QString::number((int)mAngle % 360)); |
|
|
|
event->accept(); |
|
|
|
event->accept(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (moving()) |
|
|
|
prepareFramesToMove(getLinkedFrames()); |
|
|
|
prepareFramesToMove(getLinkedFrames()); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
@ -358,20 +360,25 @@ QSizeF UBGraphicsDelegateFrame::getResizeVector(qreal moveX, qreal moveY) |
|
|
|
return QSizeF(dPosX, dPosY); |
|
|
|
return QSizeF(dPosX, dPosY); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void UBGraphicsDelegateFrame::resizeDelegate(qreal moveX, qreal moveY) |
|
|
|
QSizeF UBGraphicsDelegateFrame::resizeDelegate(qreal moveX, qreal moveY) |
|
|
|
{ |
|
|
|
{ |
|
|
|
QPointF fixedPoint = getFixedPointFromPos(); |
|
|
|
QSizeF incVector; |
|
|
|
|
|
|
|
mFixedPoint = getFixedPointFromPos();
|
|
|
|
|
|
|
|
|
|
|
|
UBResizableGraphicsItem* resizableItem = dynamic_cast<UBResizableGraphicsItem*>(delegated()); |
|
|
|
UBResizableGraphicsItem* resizableItem = dynamic_cast<UBResizableGraphicsItem*>(delegated()); |
|
|
|
if (resizableItem) |
|
|
|
if (resizableItem) |
|
|
|
{ |
|
|
|
{ |
|
|
|
QSizeF originalSize = delegated()->boundingRect().size();
|
|
|
|
incVector = getResizeVector(moveX, moveY); |
|
|
|
resizableItem->resize(originalSize + getResizeVector(moveX, moveY)); |
|
|
|
resizableItem->resize(mOriginalSize + incVector); |
|
|
|
|
|
|
|
|
|
|
|
if (resizingTop() || resizingLeft() || ((mMirrorX || mMirrorY) && resizingBottomRight())) |
|
|
|
if (resizingTop() || resizingLeft() || ((mMirrorX || mMirrorY) && resizingBottomRight())) |
|
|
|
{ |
|
|
|
{ |
|
|
|
delegated()->setPos(delegated()->pos()-getFixedPointFromPos()+fixedPoint); |
|
|
|
QPointF pos1 = getFixedPointFromPos(); |
|
|
|
|
|
|
|
delegated()->setPos(delegated()->pos()-pos1+mFixedPoint); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return incVector; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event) |
|
|
|
void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event) |
|
|
@ -379,17 +386,14 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event) |
|
|
|
if (None == mCurrentTool) |
|
|
|
if (None == mCurrentTool) |
|
|
|
return;
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
QLineF move; |
|
|
|
QLineF move = QLineF(mStartingPoint, event->scenePos()); |
|
|
|
if(rotating() || moving() || mOperationMode == Scaling) |
|
|
|
|
|
|
|
move = QLineF(mStartingPoint, event->scenePos()); |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
move = QLineF(event->lastScenePos(), event->scenePos()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
qreal moveX = move.length() * cos((move.angle() - mAngle) * PI / 180); |
|
|
|
qreal moveX = move.length() * cos((move.angle() - mAngle) * PI / 180); |
|
|
|
qreal moveY = -move.length() * sin((move.angle() - mAngle) * PI / 180); |
|
|
|
qreal moveY = -move.length() * sin((move.angle() - mAngle) * PI / 180); |
|
|
|
qreal width = delegated()->boundingRect().width() * mTotalScaleX; |
|
|
|
qreal width = delegated()->boundingRect().width() * mTotalScaleX; |
|
|
|
qreal height = delegated()->boundingRect().height() * mTotalScaleY; |
|
|
|
qreal height = delegated()->boundingRect().height() * mTotalScaleY; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (mOperationMode == Scaling) |
|
|
|
|
|
|
|
{
|
|
|
|
if(!rotating()) |
|
|
|
if(!rotating()) |
|
|
|
{ |
|
|
|
{ |
|
|
|
mTranslateX = moveX; |
|
|
|
mTranslateX = moveX; |
|
|
@ -491,6 +495,7 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (rotating()) |
|
|
|
if (rotating()) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -531,6 +536,8 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event) |
|
|
|
moveLinkedItems(move); |
|
|
|
moveLinkedItems(move); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (mOperationMode == Scaling || moving() || rotating()) |
|
|
|
|
|
|
|
{ |
|
|
|
QTransform tr = buildTransform(); |
|
|
|
QTransform tr = buildTransform(); |
|
|
|
|
|
|
|
|
|
|
|
if (resizingRight() || resizingBottom() || resizingBottomRight()) |
|
|
|
if (resizingRight() || resizingBottom() || resizingBottomRight()) |
|
|
@ -556,39 +563,48 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event) |
|
|
|
mTranslateX += fixedPoint.x() - bottomRight.x(); |
|
|
|
mTranslateX += fixedPoint.x() - bottomRight.x(); |
|
|
|
mTranslateY += fixedPoint.y() - bottomRight.y(); |
|
|
|
mTranslateY += fixedPoint.y() - bottomRight.y(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
else if (moving() || rotating()) |
|
|
|
|
|
|
|
|
|
|
|
if (mOperationMode == Scaling || moving() || rotating()) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
tr = buildTransform(); |
|
|
|
|
|
|
|
delegated()->setTransform(tr); |
|
|
|
delegated()->setTransform(tr); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (mOperationMode == Resizing) |
|
|
|
else // resizing/resizing horizontally
|
|
|
|
{ |
|
|
|
|
|
|
|
if (!moving() && !rotating()) |
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
if (resizingBottomRight()) |
|
|
|
if (resizingBottomRight()) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
static QSizeF incV = QSizeF(); |
|
|
|
|
|
|
|
static QSizeF incH = QSizeF(); |
|
|
|
|
|
|
|
|
|
|
|
if (mMirrorX && mMirrorY) |
|
|
|
if (mMirrorX && mMirrorY) |
|
|
|
mCurrentTool = ResizeTop; |
|
|
|
mCurrentTool = ResizeTop; |
|
|
|
else |
|
|
|
else |
|
|
|
mCurrentTool = ResizeBottom; |
|
|
|
mCurrentTool = ResizeBottom; |
|
|
|
|
|
|
|
|
|
|
|
resizeDelegate(moveX, moveY);
|
|
|
|
mOriginalSize -= incH; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
incV = resizeDelegate(moveX, moveY);
|
|
|
|
|
|
|
|
mOriginalSize += incV; |
|
|
|
|
|
|
|
|
|
|
|
if (mMirrorX && mMirrorY) |
|
|
|
if (mMirrorX && mMirrorY) |
|
|
|
mCurrentTool = ResizeLeft; |
|
|
|
mCurrentTool = ResizeLeft; |
|
|
|
else |
|
|
|
else |
|
|
|
mCurrentTool = ResizeRight; |
|
|
|
mCurrentTool = ResizeRight; |
|
|
|
|
|
|
|
|
|
|
|
resizeDelegate(moveX, moveY);
|
|
|
|
move = QLineF(event->lastScenePos(), event->scenePos()); |
|
|
|
|
|
|
|
moveX = move.length() * cos((move.angle() - mAngle) * PI / 180); |
|
|
|
|
|
|
|
moveY = -move.length() * sin((move.angle() - mAngle) * PI / 180); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mFixedPoint = getFixedPointFromPos(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
incH = resizeDelegate(moveX, moveY);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mOriginalSize -= incV; |
|
|
|
|
|
|
|
mOriginalSize += incH; |
|
|
|
|
|
|
|
|
|
|
|
mCurrentTool = ResizeBottomRight; |
|
|
|
mCurrentTool = ResizeBottomRight; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
resizeDelegate(moveX, moveY);
|
|
|
|
resizeDelegate(moveX, moveY);
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
event->accept(); |
|
|
|
event->accept(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -689,6 +705,7 @@ void UBGraphicsDelegateFrame::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) |
|
|
|
event->accept(); |
|
|
|
event->accept(); |
|
|
|
|
|
|
|
|
|
|
|
mCurrentTool = None; |
|
|
|
mCurrentTool = None; |
|
|
|
|
|
|
|
|
|
|
|
QGraphicsRectItem::mouseReleaseEvent(event); |
|
|
|
QGraphicsRectItem::mouseReleaseEvent(event); |
|
|
|
|
|
|
|
|
|
|
|
// Show the buttons
|
|
|
|
// Show the buttons
|
|
|
|