Moved pattern info geometry into VDetail class
--HG-- branch : feature
This commit is contained in:
parent
438cb466d7
commit
f52f97740d
|
@ -48,6 +48,7 @@
|
|||
#include "../core/vapplication.h"
|
||||
#include "../vpatterndb/calculator.h"
|
||||
#include "../vpatterndb/vpatternpiecedata.h"
|
||||
#include "../vpatterndb/vpatterninfogeometry.h"
|
||||
|
||||
#include <QMessageBox>
|
||||
#include <QUndoStack>
|
||||
|
@ -138,7 +139,7 @@ void VPattern::Parse(const Document &parse)
|
|||
QStringList tags = QStringList() << TagDraw << TagIncrements << TagAuthor << TagDescription << TagNotes
|
||||
<< TagMeasurements << TagVersion << TagGradation << TagImage << TagUnit
|
||||
<< TagPatternName << TagPatternNum << TagCompanyName << TagCustomerName
|
||||
<< TagCreationDate << TagLabelPos << TagLabelSize << TagLabelFont;
|
||||
<< TagCreationDate;
|
||||
PrepareForParse(parse);
|
||||
QDomNode domNode = documentElement().firstChild();
|
||||
while (domNode.isNull() == false)
|
||||
|
@ -213,15 +214,6 @@ void VPattern::Parse(const Document &parse)
|
|||
case 14: // TagCreationDate
|
||||
qCDebug(vXML, "Creation date.");
|
||||
break;
|
||||
case 15: // TagLabelPos
|
||||
qCDebug(vXML, "Label position.");
|
||||
break;
|
||||
case 16: // TagLabelSize
|
||||
qCDebug(vXML, "Label size.");
|
||||
break;
|
||||
case 17: // TagLabelFont
|
||||
qCDebug(vXML, "Label font size.");
|
||||
break;
|
||||
default:
|
||||
qCDebug(vXML, "Wrong tag name %s", qUtf8Printable(domElement.tagName()));
|
||||
break;
|
||||
|
@ -695,6 +687,21 @@ void VPattern::ParseDetailElement(const QDomElement &domElement, const Document
|
|||
detail.GetPatternPieceData().Append(mcp);
|
||||
}
|
||||
}
|
||||
else if (element.tagName() == TagPatternInfo)
|
||||
{
|
||||
QPointF ptPos;
|
||||
ptPos.setX(element.attribute(AttrMx, "0").toDouble());
|
||||
ptPos.setY(element.attribute(AttrMy, "0").toDouble());
|
||||
detail.GetPatternInfo().SetPos(ptPos);
|
||||
qreal dLW = element.attribute(VToolDetail::AttrWidth, "0").toDouble();
|
||||
detail.GetPatternInfo().SetLabelWidth(dLW);
|
||||
qreal dLH = element.attribute(VToolDetail::AttrHeight, "0").toDouble();
|
||||
detail.GetPatternInfo().SetLabelHeight(dLH);
|
||||
int iFS = element.attribute(VToolDetail::AttrFont, "0").toInt();
|
||||
detail.GetPatternInfo().SetFontSize(iFS);
|
||||
qreal dRot = element.attribute(VToolDetail::AttrRotation, "0").toDouble();
|
||||
detail.GetPatternInfo().SetRotation(dRot);
|
||||
}
|
||||
}
|
||||
}
|
||||
VToolDetail::Create(id, detail, sceneDetail, this, data, parse, Source::FromFile);
|
||||
|
|
|
@ -23,10 +23,6 @@
|
|||
<xs:element name="company" type="xs:string" minOccurs="0" maxOccurs="1"></xs:element>
|
||||
<xs:element name="customer" type="xs:string" minOccurs="0" maxOccurs="1"></xs:element>
|
||||
<xs:element name="created" type="xs:string" minOccurs="0" maxOccurs="1"></xs:element>
|
||||
<xs:element name="labelPosition" type="xs:string" minOccurs="0" maxOccurs="1"></xs:element>
|
||||
<xs:element name="labelSize" type="xs:string" minOccurs="0" maxOccurs="1"></xs:element>
|
||||
<xs:element name="fontSize" type="xs:unsignedInt" minOccurs="0" maxOccurs="1"></xs:element>
|
||||
<xs:element name="rotation" type="xs:double" minOccurs="0" maxOccurs="1"></xs:element>
|
||||
<xs:element name="gradation" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
|
@ -364,7 +360,17 @@
|
|||
<xs:attribute name="rotation" type="xs:double"></xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="node" maxOccurs="unbounded">
|
||||
<xs:element name="patternInfo" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="fontSize" type="xs:unsignedInt"></xs:attribute>
|
||||
<xs:attribute name="mx" type="xs:double"></xs:attribute>
|
||||
<xs:attribute name="my" type="xs:double"></xs:attribute>
|
||||
<xs:attribute name="width" type="xs:double"></xs:attribute>
|
||||
<xs:attribute name="height" type="xs:double"></xs:attribute>
|
||||
<xs:attribute name="rotation" type="xs:double"></xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="node" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="nodeType" type="xs:string"></xs:attribute>
|
||||
<xs:attribute name="idObject" type="xs:unsignedInt"></xs:attribute>
|
||||
|
|
|
@ -61,16 +61,13 @@ const QString VAbstractPattern::TagHeights = QStringLiteral("heights");
|
|||
const QString VAbstractPattern::TagSizes = QStringLiteral("sizes");
|
||||
const QString VAbstractPattern::TagUnit = QStringLiteral("unit");
|
||||
const QString VAbstractPattern::TagData = QStringLiteral("data");
|
||||
const QString VAbstractPattern::TagPatternInfo = QStringLiteral("patternInfo");
|
||||
const QString VAbstractPattern::TagMCP = QStringLiteral("mcp");
|
||||
const QString VAbstractPattern::TagPatternName = QStringLiteral("patternName");
|
||||
const QString VAbstractPattern::TagPatternNum = QStringLiteral("patternNumber");
|
||||
const QString VAbstractPattern::TagCustomerName = QStringLiteral("customer");
|
||||
const QString VAbstractPattern::TagCompanyName = QStringLiteral("company");
|
||||
const QString VAbstractPattern::TagCreationDate = QStringLiteral("created");
|
||||
const QString VAbstractPattern::TagLabelPos = QStringLiteral("labelPosition");
|
||||
const QString VAbstractPattern::TagLabelSize = QStringLiteral("labelSize");
|
||||
const QString VAbstractPattern::TagLabelFont = QStringLiteral("fontSize");
|
||||
const QString VAbstractPattern::TagLabelRot = QStringLiteral("rotation");
|
||||
|
||||
const QString VAbstractPattern::AttrName = QStringLiteral("name");
|
||||
const QString VAbstractPattern::AttrVisible = QStringLiteral("visible");
|
||||
|
@ -1079,106 +1076,6 @@ QDate VAbstractPattern::GetCreationDate() const
|
|||
return QDate::currentDate();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QPointF VAbstractPattern::GetLabelPosition() const
|
||||
{
|
||||
QStringList qsl = UniqueTagText(TagLabelPos).split(",");
|
||||
QPointF ptPos(0, 0);
|
||||
if (qsl.count() == 2)
|
||||
{
|
||||
bool bOKX;
|
||||
bool bOKY;
|
||||
double fX = qsl[0].toDouble(&bOKX);
|
||||
double fY = qsl[1].toDouble(&bOKY);
|
||||
if (bOKX == true && bOKY == true)
|
||||
{
|
||||
ptPos.setX(fX);
|
||||
ptPos.setY(fY);
|
||||
}
|
||||
}
|
||||
return ptPos;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VAbstractPattern::SetLabelPosition(const QPointF& ptPos)
|
||||
{
|
||||
CheckTagExists(TagLabelPos);
|
||||
setTagText(TagLabelPos, QString::number(ptPos.x(), 'f', 3) + "," + QString::number(ptPos.y(), 'f', 3));
|
||||
modified = true;
|
||||
emit patternChanged(false);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QSizeF VAbstractPattern::GetLabelSize() const
|
||||
{
|
||||
QStringList qsl = UniqueTagText(TagLabelSize).split(",");
|
||||
QSizeF sz(0, 0);
|
||||
if (qsl.count() == 2)
|
||||
{
|
||||
bool bOKW;
|
||||
bool bOKH;
|
||||
double fW = qsl[0].toDouble(&bOKW);
|
||||
double fH = qsl[1].toDouble(&bOKH);
|
||||
if (bOKW == true && bOKH == true)
|
||||
{
|
||||
sz.setWidth(fW);
|
||||
sz.setHeight(fH);
|
||||
}
|
||||
}
|
||||
return sz;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VAbstractPattern::SetLabelSize(QSizeF sz)
|
||||
{
|
||||
CheckTagExists(TagLabelSize);
|
||||
setTagText(TagLabelSize, QString::number(sz.width(), 'f', 3) + "," + QString::number(sz.height(), 'f', 3));
|
||||
modified = true;
|
||||
emit patternChanged(false);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
int VAbstractPattern::GetFontSize() const
|
||||
{
|
||||
bool bOK;
|
||||
int iFS = UniqueTagText(TagLabelFont).toInt(&bOK);
|
||||
if (bOK == false)
|
||||
{
|
||||
iFS = 0;
|
||||
}
|
||||
return iFS;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VAbstractPattern::SetFontSize(int iFS)
|
||||
{
|
||||
CheckTagExists(TagLabelFont);
|
||||
setTagText(TagLabelFont, QString::number(iFS));
|
||||
modified = true;
|
||||
emit patternChanged(false);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
qreal VAbstractPattern::GetRotation() const
|
||||
{
|
||||
bool bOK;
|
||||
qreal dRot = UniqueTagText(TagLabelRot).toDouble(&bOK);
|
||||
if (bOK == false)
|
||||
{
|
||||
dRot = 0;
|
||||
}
|
||||
return dRot;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VAbstractPattern::SetRotation(qreal dRot)
|
||||
{
|
||||
CheckTagExists(TagLabelRot);
|
||||
setTagText(TagLabelRot, QString::number(dRot, 'f', 3));
|
||||
modified = true;
|
||||
emit patternChanged(false);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QString VAbstractPattern::GetImage() const
|
||||
{
|
||||
|
@ -1304,8 +1201,7 @@ QDomElement VAbstractPattern::CheckTagExists(const QString &tag)
|
|||
{
|
||||
const QStringList tags = QStringList() << TagUnit << TagImage << TagAuthor << TagDescription << TagNotes
|
||||
<< TagGradation << TagPatternName << TagPatternNum << TagCompanyName
|
||||
<< TagCustomerName << TagCreationDate << TagLabelPos << TagLabelSize
|
||||
<< TagLabelFont << TagLabelRot;
|
||||
<< TagCustomerName << TagCreationDate;
|
||||
switch (tags.indexOf(tag))
|
||||
{
|
||||
case 0: //TagUnit
|
||||
|
@ -1371,27 +1267,6 @@ QDomElement VAbstractPattern::CheckTagExists(const QString &tag)
|
|||
element = createElement(TagCreationDate);
|
||||
break;
|
||||
}
|
||||
case 11:
|
||||
{
|
||||
element = createElement(TagLabelPos);
|
||||
break;
|
||||
}
|
||||
case 12:
|
||||
{
|
||||
element = createElement(TagLabelSize);
|
||||
break;
|
||||
}
|
||||
case 13:
|
||||
{
|
||||
element = createElement(TagLabelFont);
|
||||
break;
|
||||
}
|
||||
|
||||
case 14:
|
||||
{
|
||||
element = createElement(TagLabelRot);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
|
|
|
@ -117,14 +117,6 @@ public:
|
|||
QString GetCustomerName() const;
|
||||
void SetCustomerName(QString qsName);
|
||||
QDate GetCreationDate() const;
|
||||
QPointF GetLabelPosition() const;
|
||||
void SetLabelPosition(const QPointF& ptPos);
|
||||
QSizeF GetLabelSize() const;
|
||||
void SetLabelSize(QSizeF sz);
|
||||
int GetFontSize() const;
|
||||
void SetFontSize(int iFS);
|
||||
qreal GetRotation() const;
|
||||
void SetRotation(qreal dRot);
|
||||
|
||||
QString GetImage() const;
|
||||
QString GetImageExtension() const;
|
||||
|
@ -175,16 +167,13 @@ public:
|
|||
static const QString TagSizes;
|
||||
static const QString TagUnit;
|
||||
static const QString TagData;
|
||||
static const QString TagPatternInfo;
|
||||
static const QString TagMCP;
|
||||
static const QString TagPatternName;
|
||||
static const QString TagPatternNum;
|
||||
static const QString TagCompanyName;
|
||||
static const QString TagCustomerName;
|
||||
static const QString TagCreationDate;
|
||||
static const QString TagLabelPos;
|
||||
static const QString TagLabelSize;
|
||||
static const QString TagLabelFont;
|
||||
static const QString TagLabelRot;
|
||||
|
||||
static const QString AttrName;
|
||||
static const QString AttrVisible;
|
||||
|
|
|
@ -527,7 +527,7 @@ QVector<VNodeDetail> VDetail::listNodePoint() const
|
|||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief Returns the full access to the pattern piece data object
|
||||
* @brief Returns full access to the pattern piece data object
|
||||
* @return pattern piece data object
|
||||
*/
|
||||
VPatternPieceData& VDetail::GetPatternPieceData()
|
||||
|
@ -545,6 +545,26 @@ const VPatternPieceData& VDetail::GetPatternPieceData() const
|
|||
return d->m_ppData;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief Returns full access to the pattern info geometry object
|
||||
* @return pattern info geometry object
|
||||
*/
|
||||
VPatternInfoGeometry& VDetail::GetPatternInfo()
|
||||
{
|
||||
return d->m_piPatternInfo;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief Returns the read only reference to the pattern info geometry object
|
||||
* @return pattern info geometry object
|
||||
*/
|
||||
const VPatternInfoGeometry& VDetail::GetPatternInfo() const
|
||||
{
|
||||
return d->m_piPatternInfo;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief indexOfNode return index in list node using id object.
|
||||
|
|
|
@ -38,6 +38,7 @@ class VDetailData;
|
|||
class VContainer;
|
||||
class QPainterPath;
|
||||
class VPatternPieceData;
|
||||
class VPatternInfoGeometry;
|
||||
|
||||
/**
|
||||
* @brief The VDetail class for path of object (points, arcs, splines).
|
||||
|
@ -90,6 +91,8 @@ public:
|
|||
QVector<VNodeDetail> listNodePoint()const;
|
||||
VPatternPieceData& GetPatternPieceData();
|
||||
const VPatternPieceData& GetPatternPieceData() const;
|
||||
VPatternInfoGeometry& GetPatternInfo();
|
||||
const VPatternInfoGeometry& GetPatternInfo() const;
|
||||
|
||||
private:
|
||||
QSharedDataPointer<VDetailData> d;
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include <QSharedData>
|
||||
#include "vnodedetail.h"
|
||||
#include "vpatternpiecedata.h"
|
||||
#include "vpatterninfogeometry.h"
|
||||
#include "../ifc/ifcdef.h"
|
||||
|
||||
#ifdef Q_CC_GNU
|
||||
|
@ -52,7 +53,7 @@ public:
|
|||
|
||||
VDetailData(const VDetailData &detail)
|
||||
:QSharedData(detail), _id(NULL_ID), nodes(detail.nodes), mx(detail.mx), my(detail.my),
|
||||
m_ppData(detail.m_ppData), inLayout(detail.inLayout)
|
||||
m_ppData(detail.m_ppData), m_piPatternInfo(detail.m_piPatternInfo), inLayout(detail.inLayout)
|
||||
{}
|
||||
|
||||
~VDetailData() {}
|
||||
|
@ -71,6 +72,8 @@ public:
|
|||
|
||||
/** @brief Pattern piece data */
|
||||
VPatternPieceData m_ppData;
|
||||
/** @brief Pattern info coordinates */
|
||||
VPatternInfoGeometry m_piPatternInfo;
|
||||
|
||||
bool inLayout;
|
||||
|
||||
|
|
|
@ -101,3 +101,9 @@ CONFIG(debug, debug|release){
|
|||
}
|
||||
}
|
||||
|
||||
HEADERS += \
|
||||
vpatterninfogeometry.h
|
||||
|
||||
SOURCES += \
|
||||
vpatterninfogeometry.cpp
|
||||
|
||||
|
|
108
src/libs/vpatterndb/vpatterninfogeometry.cpp
Normal file
108
src/libs/vpatterndb/vpatterninfogeometry.cpp
Normal file
|
@ -0,0 +1,108 @@
|
|||
/************************************************************************
|
||||
**
|
||||
** @file vpatterninfogeometry.cpp
|
||||
** @author Bojan Kverh
|
||||
** @date June 16, 2016
|
||||
**
|
||||
** @brief
|
||||
** @copyright
|
||||
** This source code is part of the Valentine project, a pattern making
|
||||
** program, whose allow create and modeling patterns of clothing.
|
||||
** Copyright (C) 2013-2015 Valentina project
|
||||
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
|
||||
**
|
||||
** Valentina is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** Valentina is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
|
||||
**
|
||||
*************************************************************************/
|
||||
|
||||
#include "vpatterninfogeometry.h"
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VPatternInfoGeometry::VPatternInfoGeometry() :
|
||||
m_ptPos(0, 0)
|
||||
{
|
||||
m_iFontSize = MIN_FONT_SIZE;
|
||||
// 0 means unknown width
|
||||
m_dLabelWidth = 0;
|
||||
m_dLabelHeight = 0;
|
||||
m_dRotation = 0;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VPatternInfoGeometry::~VPatternInfoGeometry()
|
||||
{}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QPointF VPatternInfoGeometry::GetPos() const
|
||||
{
|
||||
return m_ptPos;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VPatternInfoGeometry::SetPos(const QPointF& ptPos)
|
||||
{
|
||||
m_ptPos = ptPos;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
qreal VPatternInfoGeometry::GetLabelWidth() const
|
||||
{
|
||||
return m_dLabelWidth;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VPatternInfoGeometry::SetLabelWidth(qreal dLabelW)
|
||||
{
|
||||
m_dLabelWidth = dLabelW;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
qreal VPatternInfoGeometry::GetLabelHeight() const
|
||||
{
|
||||
return m_dLabelHeight;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VPatternInfoGeometry::SetLabelHeight(qreal dLabelH)
|
||||
{
|
||||
m_dLabelHeight = dLabelH;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
int VPatternInfoGeometry::GetFontSize() const
|
||||
{
|
||||
return m_iFontSize;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VPatternInfoGeometry::SetFontSize(int iSize)
|
||||
{
|
||||
if (iSize >= MIN_FONT_SIZE)
|
||||
m_iFontSize = iSize;
|
||||
else
|
||||
m_iFontSize = MIN_FONT_SIZE;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
qreal VPatternInfoGeometry::GetRotation() const
|
||||
{
|
||||
return m_dRotation;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VPatternInfoGeometry::SetRotation(qreal dRot)
|
||||
{
|
||||
m_dRotation = dRot;
|
||||
}
|
||||
|
70
src/libs/vpatterndb/vpatterninfogeometry.h
Normal file
70
src/libs/vpatterndb/vpatterninfogeometry.h
Normal file
|
@ -0,0 +1,70 @@
|
|||
/************************************************************************
|
||||
**
|
||||
** @file vpatterninfogeometry.h
|
||||
** @author Bojan Kverh
|
||||
** @date June 16, 2016
|
||||
**
|
||||
** @brief
|
||||
** @copyright
|
||||
** This source code is part of the Valentine project, a pattern making
|
||||
** program, whose allow create and modeling patterns of clothing.
|
||||
** Copyright (C) 2013-2015 Valentina project
|
||||
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
|
||||
**
|
||||
** Valentina is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** Valentina is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
|
||||
**
|
||||
*************************************************************************/
|
||||
|
||||
#ifndef VPATTERNINFOGEOMETRY_H
|
||||
#define VPATTERNINFOGEOMETRY_H
|
||||
|
||||
#define MIN_FONT_SIZE 12
|
||||
|
||||
#include <QPointF>
|
||||
|
||||
class VPatternInfoGeometry
|
||||
{
|
||||
public:
|
||||
VPatternInfoGeometry();
|
||||
~VPatternInfoGeometry();
|
||||
|
||||
// methods, which set up label parameters
|
||||
QPointF GetPos() const;
|
||||
void SetPos(const QPointF& ptPos);
|
||||
qreal GetLabelWidth() const;
|
||||
void SetLabelWidth(qreal dLabelW);
|
||||
qreal GetLabelHeight() const;
|
||||
void SetLabelHeight(qreal dLabelH);
|
||||
int GetFontSize() const;
|
||||
void SetFontSize(int iSize);
|
||||
qreal GetRotation() const;
|
||||
void SetRotation(qreal dRot);
|
||||
|
||||
private:
|
||||
QPointF m_ptPos;
|
||||
/** @brief Label width
|
||||
*/
|
||||
qreal m_dLabelWidth;
|
||||
/** @brief Label height
|
||||
*/
|
||||
qreal m_dLabelHeight;
|
||||
/** @brief Label font size
|
||||
*/
|
||||
int m_iFontSize;
|
||||
/** @brief Label rotation
|
||||
*/
|
||||
qreal m_dRotation;
|
||||
};
|
||||
|
||||
#endif // VPATTERNINFOGEOMETRY_H
|
|
@ -1,6 +1,6 @@
|
|||
/************************************************************************
|
||||
**
|
||||
** @file vpatternpiecedata.h
|
||||
** @file vpatternpiecedata.cpp
|
||||
** @author Bojan Kverh
|
||||
** @date June 16, 2016
|
||||
**
|
||||
|
@ -35,6 +35,7 @@ VPatternPieceData::VPatternPieceData() :
|
|||
m_iFontSize = MIN_FONT_SIZE;
|
||||
// 0 means unknown width
|
||||
m_dLabelWidth = 0;
|
||||
m_dLabelHeight = 0;
|
||||
m_dRotation = 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -249,7 +249,7 @@ void VTextGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent* pME)
|
|||
}
|
||||
double dAng = 180*(GetAngle(pME->scenePos()) - m_dAngle)/M_PI;
|
||||
setRotation(m_dRotation + dAng);
|
||||
emit SignalRotated(rotation());
|
||||
//emit SignalRotated(rotation());
|
||||
Update();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
#include "../undocommands/adddet.h"
|
||||
#include "../undocommands/deletedetail.h"
|
||||
#include "../vpatterndb/vpatternpiecedata.h"
|
||||
#include "../vpatterndb/vpatterninfogeometry.h"
|
||||
|
||||
#include <QKeyEvent>
|
||||
#include <QGraphicsSceneMouseEvent>
|
||||
|
@ -118,6 +119,8 @@ VToolDetail::VToolDetail(VAbstractPattern *doc, VContainer *data, const quint32
|
|||
this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
|
||||
this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus
|
||||
|
||||
qDebug() << "VToolDetail" << patternInfo;
|
||||
|
||||
connect(scene, &VMainGraphicsScene::EnableToolMove, this, &VToolDetail::EnableToolMove);
|
||||
connect(scene, &VMainGraphicsScene::ItemClicked, this, &VToolDetail::ResetChildren);
|
||||
if (typeCreation == Source::FromGui || typeCreation == Source::FromTool)
|
||||
|
@ -142,6 +145,7 @@ VToolDetail::VToolDetail(VAbstractPattern *doc, VContainer *data, const quint32
|
|||
connect(doc, &VAbstractPattern::patternChanged, this, &VToolDetail::UpdatePatternInfo);
|
||||
|
||||
connect(doc, &VAbstractPattern::CheckLayout, this, &VToolDetail::UpdateLabel);
|
||||
connect(doc, &VAbstractPattern::CheckLayout, this, &VToolDetail::UpdatePatternInfo);
|
||||
UpdateLabel();
|
||||
UpdatePatternInfo();
|
||||
}
|
||||
|
@ -373,6 +377,15 @@ void VToolDetail::AddToFile()
|
|||
}
|
||||
domElement.appendChild(domData);
|
||||
|
||||
domData = doc->createElement(VAbstractPattern::TagPatternInfo);
|
||||
const VPatternInfoGeometry& geom = detail.GetPatternInfo();
|
||||
doc->SetAttribute(domData, AttrMx, geom.GetPos().x());
|
||||
doc->SetAttribute(domData, AttrMy, geom.GetPos().y());
|
||||
doc->SetAttribute(domData, AttrWidth, geom.GetLabelWidth());
|
||||
doc->SetAttribute(domData, AttrHeight, geom.GetLabelHeight());
|
||||
doc->SetAttribute(domData, AttrFont, geom.GetFontSize());
|
||||
doc->SetAttribute(domData, AttrRotation, geom.GetRotation());
|
||||
|
||||
for (int i = 0; i < detail.CountNode(); ++i)
|
||||
{
|
||||
AddNode(doc, domElement, detail.at(i));
|
||||
|
@ -422,6 +435,15 @@ void VToolDetail::RefreshDataInFile()
|
|||
}
|
||||
domElement.appendChild(domData);
|
||||
|
||||
domData = doc->createElement(VAbstractPattern::TagPatternInfo);
|
||||
const VPatternInfoGeometry& geom = det.GetPatternInfo();
|
||||
doc->SetAttribute(domData, AttrMx, geom.GetPos().x());
|
||||
doc->SetAttribute(domData, AttrMy, geom.GetPos().y());
|
||||
doc->SetAttribute(domData, AttrWidth, geom.GetLabelWidth());
|
||||
doc->SetAttribute(domData, AttrHeight, geom.GetLabelHeight());
|
||||
doc->SetAttribute(domData, AttrFont, geom.GetFontSize());
|
||||
doc->SetAttribute(domData, AttrRotation, geom.GetRotation());
|
||||
|
||||
for (int i = 0; i < det.CountNode(); ++i)
|
||||
{
|
||||
AddNode(doc, domElement, det.at(i));
|
||||
|
@ -708,17 +730,19 @@ void VToolDetail::UpdateLabel()
|
|||
*/
|
||||
void VToolDetail::UpdatePatternInfo()
|
||||
{
|
||||
const VDetail detail = VAbstractTool::data.GetDetail(id);
|
||||
const VPatternInfoGeometry& geom = detail.GetPatternInfo();
|
||||
|
||||
//patternInfo->Reset();
|
||||
QFont fnt = qApp->font();
|
||||
int iFS = doc->GetFontSize();
|
||||
int iFS = geom.GetFontSize();
|
||||
if (iFS < MIN_FONT_SIZE)
|
||||
{
|
||||
iFS = MIN_FONT_SIZE;
|
||||
}
|
||||
fnt.setPixelSize(iFS);
|
||||
patternInfo->SetFont(fnt);
|
||||
QSizeF sz = doc->GetLabelSize();
|
||||
patternInfo->SetSize(sz.width(), sz.height());
|
||||
patternInfo->SetSize(geom.GetLabelWidth(), geom.GetLabelHeight());
|
||||
patternInfo->Clear();
|
||||
TextLine tl;
|
||||
|
||||
|
@ -752,8 +776,8 @@ void VToolDetail::UpdatePatternInfo()
|
|||
tl.m_qsText = qslDate.last();
|
||||
patternInfo->AddLine(tl);
|
||||
|
||||
patternInfo->setPos(doc->GetLabelPosition());
|
||||
patternInfo->setRotation(doc->GetRotation());
|
||||
patternInfo->setPos(geom.GetPos());
|
||||
patternInfo->setRotation(geom.GetRotation());
|
||||
patternInfo->Update();
|
||||
}
|
||||
|
||||
|
@ -802,7 +826,6 @@ void VToolDetail::SaveResizeDetail(qreal dLabelW, int iFontSize)
|
|||
*/
|
||||
void VToolDetail::SaveRotationDetail(qreal dRot)
|
||||
{
|
||||
qDebug() << "SAVEROTATION" << dRot;
|
||||
VDetail oldDet = VAbstractTool::data.GetDetail(id);
|
||||
VDetail newDet = oldDet;
|
||||
newDet.GetPatternPieceData().SetPos(dataLabel->pos());
|
||||
|
@ -824,8 +847,19 @@ void VToolDetail::SaveRotationDetail(qreal dRot)
|
|||
*/
|
||||
void VToolDetail::SaveMovePattern(QPointF ptPos)
|
||||
{
|
||||
qDebug() << "Pattern moved to" << ptPos;
|
||||
doc->SetLabelPosition(ptPos);
|
||||
VDetail oldDet = VAbstractTool::data.GetDetail(id);
|
||||
VDetail newDet = oldDet;
|
||||
newDet.GetPatternInfo().SetPos(ptPos);
|
||||
newDet.GetPatternInfo().SetLabelWidth(patternInfo->boundingRect().width());
|
||||
newDet.GetPatternInfo().SetLabelHeight(patternInfo->boundingRect().height());
|
||||
newDet.GetPatternInfo().SetFontSize(patternInfo->GetFontSize());
|
||||
newDet.GetPatternInfo().SetRotation(patternInfo->rotation());
|
||||
|
||||
SaveDetailOptions* moveCommand = new SaveDetailOptions(oldDet, newDet, doc, id, this->scene());
|
||||
moveCommand->setText(tr("move pattern info label"));
|
||||
connect(moveCommand, &SaveDetailOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree);
|
||||
qApp->getUndoStack()->push(moveCommand);
|
||||
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
@ -834,14 +868,33 @@ void VToolDetail::SaveMovePattern(QPointF ptPos)
|
|||
*/
|
||||
void VToolDetail::SaveResizePattern(qreal dLabelW, int iFontSize)
|
||||
{
|
||||
doc->SetLabelSize(QSizeF(dLabelW, patternInfo->boundingRect().height()));
|
||||
doc->SetFontSize(iFontSize);
|
||||
VDetail oldDet = VAbstractTool::data.GetDetail(id);
|
||||
VDetail newDet = oldDet;
|
||||
newDet.GetPatternInfo().SetLabelWidth(dLabelW);
|
||||
newDet.GetPatternInfo().SetLabelHeight(patternInfo->boundingRect().height());
|
||||
newDet.GetPatternInfo().SetFontSize(iFontSize);
|
||||
newDet.GetPatternInfo().SetRotation(patternInfo->rotation());
|
||||
SaveDetailOptions* resizeCommand = new SaveDetailOptions(oldDet, newDet, doc, id, this->scene());
|
||||
resizeCommand->setText(tr("resize pattern info label"));
|
||||
connect(resizeCommand, &SaveDetailOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree);
|
||||
qApp->getUndoStack()->push(resizeCommand);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VToolDetail::SaveRotationPattern(qreal dRot)
|
||||
{
|
||||
doc->SetRotation(dRot);
|
||||
VDetail oldDet = VAbstractTool::data.GetDetail(id);
|
||||
VDetail newDet = oldDet;
|
||||
newDet.GetPatternInfo().SetPos(patternInfo->pos());
|
||||
newDet.GetPatternInfo().SetLabelWidth(patternInfo->boundingRect().width());
|
||||
newDet.GetPatternInfo().SetLabelHeight(patternInfo->boundingRect().height());
|
||||
newDet.GetPatternInfo().SetFontSize(patternInfo->GetFontSize());
|
||||
newDet.GetPatternInfo().SetRotation(dRot);
|
||||
|
||||
SaveDetailOptions* rotateCommand = new SaveDetailOptions(oldDet, newDet, doc, id, this->scene());
|
||||
rotateCommand->setText(tr("rotate pattern info label"));
|
||||
connect(rotateCommand, &SaveDetailOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree);
|
||||
qApp->getUndoStack()->push(rotateCommand);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include "../../vwidgets/vmaingraphicsview.h"
|
||||
#include "../ifc/xml/vabstractpattern.h"
|
||||
#include "../vpatterndb/vpatternpiecedata.h"
|
||||
#include "../vpatterndb/vpatterninfogeometry.h"
|
||||
|
||||
#include <QGraphicsView>
|
||||
|
||||
|
@ -58,6 +59,7 @@ void SaveDetailOptions::undo()
|
|||
SaveDet(domElement, oldDet);
|
||||
doc->RemoveAllChildren(domElement);
|
||||
SavePatternPieceData(domElement, oldDet);
|
||||
SavePatternInfo(domElement, oldDet);
|
||||
for (int i = 0; i < oldDet.CountNode(); ++i)
|
||||
{
|
||||
VToolDetail::AddNode(doc, domElement, oldDet.at(i));
|
||||
|
@ -83,6 +85,7 @@ void SaveDetailOptions::redo()
|
|||
SaveDet(domElement, newDet);
|
||||
doc->RemoveAllChildren(domElement);
|
||||
SavePatternPieceData(domElement, newDet);
|
||||
SavePatternInfo(domElement, newDet);
|
||||
|
||||
for (int i = 0; i < newDet.CountNode(); ++i)
|
||||
{
|
||||
|
@ -156,3 +159,18 @@ void SaveDetailOptions::SavePatternPieceData(QDomElement &domElement, const VDet
|
|||
}
|
||||
domElement.appendChild(domData);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void SaveDetailOptions::SavePatternInfo(QDomElement &domElement, const VDetail &det)
|
||||
{
|
||||
QDomElement domData = doc->createElement(VAbstractPattern::TagPatternInfo);
|
||||
const VPatternInfoGeometry& data = det.GetPatternInfo();
|
||||
doc->SetAttribute(domData, AttrMx, data.GetPos().x());
|
||||
doc->SetAttribute(domData, AttrMy, data.GetPos().y());
|
||||
doc->SetAttribute(domData, VToolDetail::AttrWidth, data.GetLabelWidth());
|
||||
doc->SetAttribute(domData, VToolDetail::AttrHeight, data.GetLabelHeight());
|
||||
doc->SetAttribute(domData, VToolDetail::AttrFont, data.GetFontSize());
|
||||
doc->SetAttribute(domData, VToolDetail::AttrRotation, data.GetRotation());
|
||||
|
||||
domElement.appendChild(domData);
|
||||
}
|
||||
|
|
|
@ -54,6 +54,7 @@ private:
|
|||
QGraphicsScene *scene;
|
||||
void SaveDet(QDomElement &domElement, const VDetail &det);
|
||||
void SavePatternPieceData(QDomElement &domElement, const VDetail &det);
|
||||
void SavePatternInfo(QDomElement &domElement, const VDetail &det);
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
|
Loading…
Reference in New Issue
Block a user