Fixed rotation

--HG--
branch : feature
This commit is contained in:
BojanKverh 2016-07-02 11:15:41 +02:00
parent 99925db9d6
commit 74a49662f6
3 changed files with 12 additions and 14 deletions

View File

@ -29,6 +29,7 @@
#include <QPainter> #include <QPainter>
#include <QStyleOptionGraphicsItem> #include <QStyleOptionGraphicsItem>
#include <QGraphicsSceneMouseEvent> #include <QGraphicsSceneMouseEvent>
#include <QGraphicsView>
#include <QTransform> #include <QTransform>
#include <QDebug> #include <QDebug>
@ -43,6 +44,7 @@
#define MIN_FONT_SIZE 12 #define MIN_FONT_SIZE 12
#define MAX_FONT_SIZE 48 #define MAX_FONT_SIZE 48
#define SPACING 2 #define SPACING 2
#define TOP_Z 2
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VTextGraphicsItem::VTextGraphicsItem(QGraphicsItem* pParent) VTextGraphicsItem::VTextGraphicsItem(QGraphicsItem* pParent)
@ -55,7 +57,7 @@ VTextGraphicsItem::VTextGraphicsItem(QGraphicsItem* pParent)
m_rectBoundingBox.setTopLeft(QPointF(0, 0)); m_rectBoundingBox.setTopLeft(QPointF(0, 0));
m_iMinH = MIN_H; m_iMinH = MIN_H;
SetSize(MIN_W, m_iMinH); SetSize(MIN_W, m_iMinH);
setZValue(2); setZValue(TOP_Z);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -137,11 +139,10 @@ void VTextGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VTextGraphicsItem::Reset() void VTextGraphicsItem::Reset()
{ {
qDebug() << "RESET" << m_eMode << m_liLines.count();
m_eMode = mNormal; m_eMode = mNormal;
m_bReleased = false; m_bReleased = false;
Update(); Update();
setZValue(2); setZValue(TOP_Z);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -206,6 +207,7 @@ void VTextGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent *pME)
m_ptStartPos = pos(); m_ptStartPos = pos();
m_ptStart = pME->scenePos(); m_ptStart = pME->scenePos();
m_szStart = m_rectBoundingBox.size(); m_szStart = m_rectBoundingBox.size();
m_ptRotCenter = mapToScene(m_rectBoundingBox.center());
m_dAngle = GetAngle(pME->scenePos()); m_dAngle = GetAngle(pME->scenePos());
m_dRotation = rotation(); m_dRotation = rotation();
if (m_eMode != mRotate) if (m_eMode != mRotate)
@ -219,9 +221,8 @@ void VTextGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent *pME)
m_eMode = mMove; m_eMode = mMove;
} }
} }
setZValue(3); setZValue(TOP_Z + 1);
UpdateBox(); UpdateBox();
qDebug() << "PRESS" << m_eMode << m_liLines.count();
} }
} }
@ -262,8 +263,6 @@ void VTextGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent* pME)
double dDist = fabs(pME->scenePos().x() - m_ptStart.x()) + fabs(pME->scenePos().y() - m_ptStart.y()); double dDist = fabs(pME->scenePos().x() - m_ptStart.x()) + fabs(pME->scenePos().y() - m_ptStart.y());
bool bShort = (dDist < 2); bool bShort = (dDist < 2);
qDebug() << "RELEASE" << m_eMode << dDist << m_liLines.count();
if (m_eMode == mMove || m_eMode == mResize) if (m_eMode == mMove || m_eMode == mResize)
{ // when released in mMove or mResize mode { // when released in mMove or mResize mode
if (bShort == true) if (bShort == true)
@ -299,7 +298,6 @@ void VTextGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent* pME)
} }
} }
m_bReleased = true; m_bReleased = true;
qDebug() << "RELEASE finished" << m_eMode << m_liLines.count();
} }
} }
@ -382,8 +380,8 @@ QStringList VTextGraphicsItem::SplitString(const QString &qs, qreal fW, const QF
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
double VTextGraphicsItem::GetAngle(QPointF pt) const double VTextGraphicsItem::GetAngle(QPointF pt) const
{ {
double dX = pt.x() - m_ptStart.x(); double dX = pt.x() - m_ptRotCenter.x();
double dY = pt.y() - m_ptStart.y(); double dY = pt.y() - m_ptRotCenter.y();
if (fabs(dX) < 1 && fabs(dY) < 1) if (fabs(dX) < 1 && fabs(dY) < 1)
return 0; return 0;

View File

@ -92,6 +92,7 @@ private:
bool m_bReleased; bool m_bReleased;
QPointF m_ptStartPos; QPointF m_ptStartPos;
QPointF m_ptStart; QPointF m_ptStart;
QPointF m_ptRotCenter;
QSizeF m_szStart; QSizeF m_szStart;
double m_dRotation; double m_dRotation;
double m_dAngle; double m_dAngle;

View File

@ -81,8 +81,7 @@ const QString VToolDetail::NodeSplinePath = QStringLiteral("NodeSplinePath");
VToolDetail::VToolDetail(VAbstractPattern *doc, VContainer *data, const quint32 &id, const Source &typeCreation, VToolDetail::VToolDetail(VAbstractPattern *doc, VContainer *data, const quint32 &id, const Source &typeCreation,
VMainGraphicsScene *scene, const QString &drawName, QGraphicsItem *parent) VMainGraphicsScene *scene, const QString &drawName, QGraphicsItem *parent)
:VAbstractTool(doc, data, id), VNoBrushScalePathItem(parent), dialog(nullptr), sceneDetails(scene), :VAbstractTool(doc, data, id), VNoBrushScalePathItem(parent), dialog(nullptr), sceneDetails(scene),
drawName(drawName), seamAllowance(new VNoBrushScalePathItem(this)), drawName(drawName), seamAllowance(new VNoBrushScalePathItem(this))
dataLabel(new VTextGraphicsItem(this)), patternInfo(new VTextGraphicsItem(this))
{ {
VDetail detail = data->GetDetail(id); VDetail detail = data->GetDetail(id);
for (int i = 0; i< detail.CountNode(); ++i) for (int i = 0; i< detail.CountNode(); ++i)
@ -119,8 +118,6 @@ VToolDetail::VToolDetail(VAbstractPattern *doc, VContainer *data, const quint32
this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus
qDebug() << "VToolDetail" << patternInfo;
connect(scene, &VMainGraphicsScene::EnableToolMove, this, &VToolDetail::EnableToolMove); connect(scene, &VMainGraphicsScene::EnableToolMove, this, &VToolDetail::EnableToolMove);
connect(scene, &VMainGraphicsScene::ItemClicked, this, &VToolDetail::ResetChildren); connect(scene, &VMainGraphicsScene::ItemClicked, this, &VToolDetail::ResetChildren);
if (typeCreation == Source::FromGui || typeCreation == Source::FromTool) if (typeCreation == Source::FromGui || typeCreation == Source::FromTool)
@ -133,11 +130,13 @@ VToolDetail::VToolDetail(VAbstractPattern *doc, VContainer *data, const quint32
} }
setAcceptHoverEvents(true); setAcceptHoverEvents(true);
dataLabel = new VTextGraphicsItem(this);
connect(dataLabel, &VTextGraphicsItem::SignalMoved, this, &VToolDetail::SaveMoveDetail); connect(dataLabel, &VTextGraphicsItem::SignalMoved, this, &VToolDetail::SaveMoveDetail);
connect(dataLabel, &VTextGraphicsItem::SignalResized, this, &VToolDetail::SaveResizeDetail); connect(dataLabel, &VTextGraphicsItem::SignalResized, this, &VToolDetail::SaveResizeDetail);
connect(dataLabel, &VTextGraphicsItem::SignalRotated, this, &VToolDetail::SaveRotationDetail); connect(dataLabel, &VTextGraphicsItem::SignalRotated, this, &VToolDetail::SaveRotationDetail);
connect(dataLabel, &VTextGraphicsItem::SignalShrink, this, &VToolDetail::UpdateAll); connect(dataLabel, &VTextGraphicsItem::SignalShrink, this, &VToolDetail::UpdateAll);
patternInfo = new VTextGraphicsItem(this);
connect(patternInfo, &VTextGraphicsItem::SignalMoved, this, &VToolDetail::SaveMovePattern); connect(patternInfo, &VTextGraphicsItem::SignalMoved, this, &VToolDetail::SaveMovePattern);
connect(patternInfo, &VTextGraphicsItem::SignalResized, this, &VToolDetail::SaveResizePattern); connect(patternInfo, &VTextGraphicsItem::SignalResized, this, &VToolDetail::SaveResizePattern);
connect(patternInfo, &VTextGraphicsItem::SignalRotated, this, &VToolDetail::SaveRotationPattern); connect(patternInfo, &VTextGraphicsItem::SignalRotated, this, &VToolDetail::SaveRotationPattern);