Successful build.

--HG--
branch : feature
This commit is contained in:
Roman Telezhynskyi 2017-03-13 14:27:29 +02:00
parent 988da5fd19
commit 1ab541236d
9 changed files with 258 additions and 148 deletions

View File

@ -804,35 +804,25 @@ void VPattern::ParseDetailNodes(const QDomElement &domElement, VPiece &detail, q
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VPattern::ParsePieceDataTag(const QDomElement &domElement, VPiece &detail) const void VPattern::ParsePieceDataTag(const QDomElement &domElement, VPiece &detail) const
{ {
detail.GetPatternPieceData().SetVisible(GetParametrBool(domElement, AttrVisible, trueStr)); VPieceLabelData &ppData = detail.GetPatternPieceData();
ppData.SetVisible(GetParametrBool(domElement, AttrVisible, trueStr));
try try
{ {
QString qsLetter = GetParametrString(domElement, AttrLetter, ""); QString qsLetter = GetParametrString(domElement, AttrLetter, "");
detail.GetPatternPieceData().SetLetter(qsLetter); ppData.SetLetter(qsLetter);
} }
catch(const VExceptionEmptyParameter &e) catch(const VExceptionEmptyParameter &e)
{ {
Q_UNUSED(e) Q_UNUSED(e)
detail.GetPatternPieceData().SetLetter(""); ppData.SetLetter("");
} }
QPointF ptPos; ppData.SetPos(QPointF(GetParametrDouble(domElement, AttrMx, "0"), GetParametrDouble(domElement, AttrMy, "0")));
ptPos.setX(GetParametrDouble(domElement, AttrMx, "0")); ppData.SetLabelWidth(GetParametrString(domElement, AttrWidth, "1"));
ptPos.setY(GetParametrDouble(domElement, AttrMy, "0")); ppData.SetLabelHeight(GetParametrString(domElement, VToolSeamAllowance::AttrHeight, "1"));
detail.GetPatternPieceData().SetPos(ptPos); ppData.SetFontSize(static_cast<int>(GetParametrUInt(domElement, VToolSeamAllowance::AttrFont, "0")));
qreal dLW = GetParametrDouble(domElement, AttrWidth, "0"); ppData.SetRotation(GetParametrString(domElement, AttrRotation, "0"));
detail.GetPatternPieceData().SetLabelWidth(dLW); ppData.SetTopLeftPin(GetParametrUInt(domElement, VToolSeamAllowance::AttrTopLeftPin, NULL_ID_STR));
qreal dLH = GetParametrDouble(domElement, VToolSeamAllowance::AttrHeight, "0"); ppData.SetBottomRightPin(GetParametrUInt(domElement, VToolSeamAllowance::AttrBottomRightPin, NULL_ID_STR));
detail.GetPatternPieceData().SetLabelHeight(dLH);
int iFS = static_cast<int>(GetParametrUInt(domElement, VToolSeamAllowance::AttrFont, "0"));
detail.GetPatternPieceData().SetFontSize(iFS);
qreal dRot = GetParametrDouble(domElement, AttrRotation, "0");
detail.GetPatternPieceData().SetRotation(dRot);
const quint32 topLeftPin = GetParametrUInt(domElement, VToolSeamAllowance::AttrTopLeftPin, NULL_ID_STR);
detail.GetPatternPieceData().SetTopLeftPin(topLeftPin);
const quint32 bottomRightPin = GetParametrUInt(domElement, VToolSeamAllowance::AttrBottomRightPin, NULL_ID_STR);
detail.GetPatternPieceData().SetBottomRightPin(bottomRightPin);
QDomNodeList nodeListMCP = domElement.childNodes(); QDomNodeList nodeListMCP = domElement.childNodes();
for (int iMCP = 0; iMCP < nodeListMCP.count(); ++iMCP) for (int iMCP = 0; iMCP < nodeListMCP.count(); ++iMCP)
@ -846,57 +836,36 @@ void VPattern::ParsePieceDataTag(const QDomElement &domElement, VPiece &detail)
} }
mcp.m_iCutNumber = static_cast<int>(GetParametrUInt(domMCP, AttrCutNumber, 0)); mcp.m_iCutNumber = static_cast<int>(GetParametrUInt(domMCP, AttrCutNumber, 0));
mcp.m_ePlacement = PlacementType(GetParametrUInt(domMCP, AttrPlacement, 0)); mcp.m_ePlacement = PlacementType(GetParametrUInt(domMCP, AttrPlacement, 0));
detail.GetPatternPieceData().Append(mcp); ppData.Append(mcp);
} }
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VPattern::ParsePiecePatternInfo(const QDomElement &domElement, VPiece &detail) const void VPattern::ParsePiecePatternInfo(const QDomElement &domElement, VPiece &detail) const
{ {
detail.GetPatternInfo().SetVisible(GetParametrBool(domElement, AttrVisible, trueStr)); VPatternLabelData &patternInfo = detail.GetPatternInfo();
QPointF ptPos; patternInfo.SetVisible(GetParametrBool(domElement, AttrVisible, trueStr));
ptPos.setX(GetParametrDouble(domElement, AttrMx, "0")); patternInfo.SetPos(QPointF(GetParametrDouble(domElement, AttrMx, "0"), GetParametrDouble(domElement, AttrMy, "0")));
ptPos.setY(GetParametrDouble(domElement, AttrMy, "0")); patternInfo.SetLabelWidth(GetParametrString(domElement, AttrWidth, "1"));
detail.GetPatternInfo().SetPos(ptPos); patternInfo.SetLabelHeight(GetParametrString(domElement, VToolSeamAllowance::AttrHeight, "1"));
qreal dLW = GetParametrDouble(domElement, AttrWidth, "0"); patternInfo.SetFontSize(static_cast<int>(GetParametrUInt(domElement, VToolSeamAllowance::AttrFont, "0")));
detail.GetPatternInfo().SetLabelWidth(dLW); patternInfo.SetRotation(GetParametrString(domElement, AttrRotation, "0"));
qreal dLH = GetParametrDouble(domElement, VToolSeamAllowance::AttrHeight, "0"); patternInfo.SetTopLeftPin(GetParametrUInt(domElement, VToolSeamAllowance::AttrTopLeftPin, NULL_ID_STR));
detail.GetPatternInfo().SetLabelHeight(dLH); patternInfo.SetBottomRightPin(GetParametrUInt(domElement, VToolSeamAllowance::AttrBottomRightPin, NULL_ID_STR));
int iFS = static_cast<int>(GetParametrUInt(domElement, VToolSeamAllowance::AttrFont, "0"));
detail.GetPatternInfo().SetFontSize(iFS);
qreal dRot = GetParametrDouble(domElement, AttrRotation, "0");
detail.GetPatternInfo().SetRotation(dRot);
const quint32 topLeftPin = GetParametrUInt(domElement, VToolSeamAllowance::AttrTopLeftPin, NULL_ID_STR);
detail.GetPatternInfo().SetTopLeftPin(topLeftPin);
const quint32 bottomRightPin = GetParametrUInt(domElement, VToolSeamAllowance::AttrBottomRightPin, NULL_ID_STR);
detail.GetPatternInfo().SetBottomRightPin(bottomRightPin);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VPattern::ParsePieceGrainline(const QDomElement &domElement, VPiece &detail) const void VPattern::ParsePieceGrainline(const QDomElement &domElement, VPiece &detail) const
{ {
detail.GetGrainlineGeometry().SetVisible(GetParametrBool(domElement, AttrVisible, falseStr)); VGrainlineData &gGeometry = detail.GetGrainlineGeometry();
QPointF ptPos; gGeometry.SetVisible(GetParametrBool(domElement, AttrVisible, falseStr));
ptPos.setX(GetParametrDouble(domElement, AttrMx, "0")); gGeometry.SetPos(QPointF(GetParametrDouble(domElement, AttrMx, "0"), GetParametrDouble(domElement, AttrMy, "0")));
ptPos.setY(GetParametrDouble(domElement, AttrMy, "0")); gGeometry.SetLength(GetParametrString(domElement, AttrLength, "1"));
detail.GetGrainlineGeometry().SetPos(ptPos); gGeometry.SetRotation(GetParametrString(domElement, AttrRotation, "90"));
QString qsLength = GetParametrString(domElement, AttrLength, "0"); gGeometry.SetArrowType(static_cast<ArrowType>(GetParametrUInt(domElement, AttrArrows, "0")));
detail.GetGrainlineGeometry().SetLength(qsLength); gGeometry.SetCenterPin(GetParametrUInt(domElement, VToolSeamAllowance::AttrCenterPin, NULL_ID_STR));
QString qsRot = GetParametrString(domElement, AttrRotation, "90"); gGeometry.SetTopPin(GetParametrUInt(domElement, VToolSeamAllowance::AttrTopPin, NULL_ID_STR));
detail.GetGrainlineGeometry().SetRotation(qsRot); gGeometry.SetBottomPin(GetParametrUInt(domElement, VToolSeamAllowance::AttrBottomPin, NULL_ID_STR));
ArrowType eAT = static_cast<ArrowType>(GetParametrUInt(domElement, AttrArrows, "0"));
detail.GetGrainlineGeometry().SetArrowType(eAT);
const quint32 centerPin = GetParametrUInt(domElement, VToolSeamAllowance::AttrCenterPin, NULL_ID_STR);
detail.GetGrainlineGeometry().SetCenterPin(centerPin);
const quint32 topPin = GetParametrUInt(domElement, VToolSeamAllowance::AttrTopPin, NULL_ID_STR);
detail.GetGrainlineGeometry().SetTopPin(topPin);
const quint32 bottomPin = GetParametrUInt(domElement, VToolSeamAllowance::AttrBottomPin, NULL_ID_STR);
detail.GetGrainlineGeometry().SetBottomPin(bottomPin);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View File

@ -492,9 +492,9 @@
<xs:attribute name="fontSize" type="xs:unsignedInt"/> <xs:attribute name="fontSize" type="xs:unsignedInt"/>
<xs:attribute name="mx" type="xs:double"/> <xs:attribute name="mx" type="xs:double"/>
<xs:attribute name="my" type="xs:double"/> <xs:attribute name="my" type="xs:double"/>
<xs:attribute name="width" type="xs:double"/> <xs:attribute name="width" type="xs:string"/>
<xs:attribute name="height" type="xs:double"/> <xs:attribute name="height" type="xs:string"/>
<xs:attribute name="rotation" type="xs:double"/> <xs:attribute name="rotation" type="xs:string"/>
<xs:attribute name="topLeftPin" type="xs:unsignedInt"/> <xs:attribute name="topLeftPin" type="xs:unsignedInt"/>
<xs:attribute name="bottomRightPin" type="xs:unsignedInt"/> <xs:attribute name="bottomRightPin" type="xs:unsignedInt"/>
</xs:complexType> </xs:complexType>
@ -505,9 +505,9 @@
<xs:attribute name="fontSize" type="xs:unsignedInt"/> <xs:attribute name="fontSize" type="xs:unsignedInt"/>
<xs:attribute name="mx" type="xs:double"/> <xs:attribute name="mx" type="xs:double"/>
<xs:attribute name="my" type="xs:double"/> <xs:attribute name="my" type="xs:double"/>
<xs:attribute name="width" type="xs:double"/> <xs:attribute name="width" type="xs:string"/>
<xs:attribute name="height" type="xs:double"/> <xs:attribute name="height" type="xs:string"/>
<xs:attribute name="rotation" type="xs:double"/> <xs:attribute name="rotation" type="xs:string"/>
<xs:attribute name="topLeftPin" type="xs:unsignedInt"/> <xs:attribute name="topLeftPin" type="xs:unsignedInt"/>
<xs:attribute name="bottomRightPin" type="xs:unsignedInt"/> <xs:attribute name="bottomRightPin" type="xs:unsignedInt"/>
</xs:complexType> </xs:complexType>

View File

@ -75,11 +75,22 @@ QVector<VLayoutPiecePath> ConvertInternalPaths(const VPiece &piece, const VConta
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void FindLabelGeometry(const VPatternLabelData &labelData, const VContainer *pattern, qreal &labelWidth, bool FindLabelGeometry(const VPatternLabelData &labelData, const VContainer *pattern, qreal &rotationAngle,
qreal &labelHeight, QPointF &pos) qreal &labelWidth, qreal &labelHeight, QPointF &pos)
{ {
SCASSERT(pattern != nullptr) SCASSERT(pattern != nullptr)
try
{
Calculator cal1;
rotationAngle = cal1.EvalFormula(pattern->PlainVariables(), labelData.GetRotation());
}
catch(qmu::QmuParserError &e)
{
Q_UNUSED(e);
return false;
}
const quint32 topLeftPin = labelData.TopLeftPin(); const quint32 topLeftPin = labelData.TopLeftPin();
const quint32 bottomRightPin = labelData.BottomRightPin(); const quint32 bottomRightPin = labelData.BottomRightPin();
@ -96,7 +107,7 @@ void FindLabelGeometry(const VPatternLabelData &labelData, const VContainer *pat
pos = labelRect.topLeft(); pos = labelRect.topLeft();
return; return true;
} }
catch(const VExceptionBadId &) catch(const VExceptionBadId &)
{ {
@ -104,10 +115,44 @@ void FindLabelGeometry(const VPatternLabelData &labelData, const VContainer *pat
} }
} }
labelWidth = labelData.GetLabelWidth(); try
labelHeight = labelData.GetLabelHeight(); {
Calculator cal1;
labelWidth = cal1.EvalFormula(pattern->PlainVariables(), labelData.GetLabelWidth());
Calculator cal2;
labelHeight = cal2.EvalFormula(pattern->PlainVariables(), labelData.GetLabelHeight());
}
catch(qmu::QmuParserError &e)
{
Q_UNUSED(e);
return false;
}
const quint32 centerPin = labelData.CenterPin();
if (centerPin != NULL_ID)
{
try
{
const auto centerPinPoint = pattern->GeometricObject<VPointF>(centerPin);
const qreal lWidth = ToPixel(labelWidth, *pattern->GetPatternUnit());
const qreal lHeight = ToPixel(labelHeight, *pattern->GetPatternUnit());
pos = *centerPinPoint - QRectF(0, 0, lWidth, lHeight).center();
}
catch(const VExceptionBadId &)
{
pos = labelData.GetPos(); pos = labelData.GetPos();
} }
}
else
{
pos = labelData.GetPos();
}
return true;
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool FindGrainlineGeometry(const VGrainlineData& geom, const VContainer *pattern, qreal &length, qreal &rotationAngle, bool FindGrainlineGeometry(const VGrainlineData& geom, const VContainer *pattern, qreal &length, qreal &rotationAngle,
@ -401,7 +446,14 @@ void VLayoutPiece::SetDetail(const QString& qsName, const VPieceLabelData& data,
QPointF ptPos; QPointF ptPos;
qreal labelWidth = 0; qreal labelWidth = 0;
qreal labelHeight = 0; qreal labelHeight = 0;
FindLabelGeometry(data, pattern, labelWidth, labelHeight, ptPos); qreal labelAngle = 0;
if (not FindLabelGeometry(data, pattern, labelAngle, labelWidth, labelHeight, ptPos))
{
return;
}
labelWidth = ToPixel(labelWidth, *pattern->GetPatternUnit());
labelHeight = ToPixel(labelHeight, *pattern->GetPatternUnit());
QVector<QPointF> v; QVector<QPointF> v;
v << ptPos v << ptPos
@ -409,7 +461,7 @@ void VLayoutPiece::SetDetail(const QString& qsName, const VPieceLabelData& data,
<< QPointF(ptPos.x() + labelWidth, ptPos.y() + labelHeight) << QPointF(ptPos.x() + labelWidth, ptPos.y() + labelHeight)
<< QPointF(ptPos.x(), ptPos.y() + labelHeight); << QPointF(ptPos.x(), ptPos.y() + labelHeight);
const qreal dAng = qDegreesToRadians(data.GetRotation()); const qreal dAng = qDegreesToRadians(labelAngle);
const QPointF ptCenter(ptPos.x() + labelWidth/2, ptPos.y() + labelHeight/2); const QPointF ptCenter(ptPos.x() + labelWidth/2, ptPos.y() + labelHeight/2);
for (int i = 0; i < v.count(); ++i) for (int i = 0; i < v.count(); ++i)
{ {
@ -435,7 +487,14 @@ void VLayoutPiece::SetPatternInfo(const VAbstractPattern* pDoc, const VPatternLa
QPointF ptPos; QPointF ptPos;
qreal labelWidth = 0; qreal labelWidth = 0;
qreal labelHeight = 0; qreal labelHeight = 0;
FindLabelGeometry(geom, pattern, labelWidth, labelHeight, ptPos); qreal labelAngle = 0;
if (not FindLabelGeometry(geom, pattern, labelAngle, labelWidth, labelHeight, ptPos))
{
return;
}
labelWidth = ToPixel(labelWidth, *pattern->GetPatternUnit());
labelHeight = ToPixel(labelHeight, *pattern->GetPatternUnit());
QVector<QPointF> v; QVector<QPointF> v;
v << ptPos v << ptPos
@ -443,7 +502,7 @@ void VLayoutPiece::SetPatternInfo(const VAbstractPattern* pDoc, const VPatternLa
<< QPointF(ptPos.x() + labelWidth, ptPos.y() + labelHeight) << QPointF(ptPos.x() + labelWidth, ptPos.y() + labelHeight)
<< QPointF(ptPos.x(), ptPos.y() + labelHeight); << QPointF(ptPos.x(), ptPos.y() + labelHeight);
const qreal dAng = qDegreesToRadians(geom.GetRotation()); const qreal dAng = qDegreesToRadians(labelAngle);
const QPointF ptCenter(ptPos.x() + labelWidth/2, ptPos.y() + labelHeight/2); const QPointF ptCenter(ptPos.x() + labelWidth/2, ptPos.y() + labelHeight/2);
for (int i = 0; i < v.count(); ++i) for (int i = 0; i < v.count(); ++i)
{ {

View File

@ -59,25 +59,25 @@ VPatternLabelData::~VPatternLabelData()
{} {}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
qreal VPatternLabelData::GetLabelWidth() const QString VPatternLabelData::GetLabelWidth() const
{ {
return d->m_dLabelWidth; return d->m_dLabelWidth;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VPatternLabelData::SetLabelWidth(qreal dLabelW) void VPatternLabelData::SetLabelWidth(const QString &dLabelW)
{ {
d->m_dLabelWidth = dLabelW; d->m_dLabelWidth = dLabelW;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
qreal VPatternLabelData::GetLabelHeight() const QString VPatternLabelData::GetLabelHeight() const
{ {
return d->m_dLabelHeight; return d->m_dLabelHeight;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VPatternLabelData::SetLabelHeight(qreal dLabelH) void VPatternLabelData::SetLabelHeight(const QString &dLabelH)
{ {
d->m_dLabelHeight = dLabelH; d->m_dLabelHeight = dLabelH;
} }
@ -95,15 +95,15 @@ void VPatternLabelData::SetFontSize(int iSize)
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
qreal VPatternLabelData::GetRotation() const QString VPatternLabelData::GetRotation() const
{ {
return d->m_dRotation; return d->m_dLabelAngle;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VPatternLabelData::SetRotation(qreal dRot) void VPatternLabelData::SetRotation(const QString &dRot)
{ {
d->m_dRotation = dRot; d->m_dLabelAngle = dRot;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View File

@ -47,17 +47,17 @@ public:
virtual ~VPatternLabelData(); virtual ~VPatternLabelData();
// methods, which set up label parameters // methods, which set up label parameters
qreal GetLabelWidth() const; QString GetLabelWidth() const;
void SetLabelWidth(qreal dLabelW); void SetLabelWidth(const QString &dLabelW);
qreal GetLabelHeight() const; QString GetLabelHeight() const;
void SetLabelHeight(qreal dLabelH); void SetLabelHeight(const QString &dLabelH);
int GetFontSize() const; int GetFontSize() const;
void SetFontSize(int iSize); void SetFontSize(int iSize);
qreal GetRotation() const; QString GetRotation() const;
void SetRotation(qreal dRot); void SetRotation(const QString &dRot);
quint32 CenterPin() const; quint32 CenterPin() const;
void SetCenterPin(const quint32 &centerPin); void SetCenterPin(const quint32 &centerPin);

View File

@ -42,10 +42,10 @@ class VPatternLabelDataPrivate : public QSharedData
{ {
public: public:
VPatternLabelDataPrivate() VPatternLabelDataPrivate()
: m_dLabelWidth(0), : m_dLabelWidth(),
m_dLabelHeight(0), m_dLabelHeight(),
m_dLabelAngle(),
m_iFontSize(0), m_iFontSize(0),
m_dRotation(0),
m_centerPin(NULL_ID), m_centerPin(NULL_ID),
m_topLeftPin(NULL_ID), m_topLeftPin(NULL_ID),
m_bottomRightPin(NULL_ID) m_bottomRightPin(NULL_ID)
@ -55,8 +55,8 @@ public:
: QSharedData(data), : QSharedData(data),
m_dLabelWidth(data.m_dLabelWidth), m_dLabelWidth(data.m_dLabelWidth),
m_dLabelHeight(data.m_dLabelHeight), m_dLabelHeight(data.m_dLabelHeight),
m_dLabelAngle(data.m_dLabelAngle),
m_iFontSize(data.m_iFontSize), m_iFontSize(data.m_iFontSize),
m_dRotation(data.m_dRotation),
m_centerPin(data.m_centerPin), m_centerPin(data.m_centerPin),
m_topLeftPin(data.m_topLeftPin), m_topLeftPin(data.m_topLeftPin),
m_bottomRightPin(data.m_bottomRightPin) m_bottomRightPin(data.m_bottomRightPin)
@ -64,14 +64,14 @@ public:
~VPatternLabelDataPrivate(); ~VPatternLabelDataPrivate();
/** @brief m_dLabelWidth label width */ /** @brief m_dLabelWidth formula to calculate the width of label */
qreal m_dLabelWidth; QString m_dLabelWidth;
/** @brief m_dLabelHeight label height */ /** @brief m_dLabelHeight formula to calculate the height of label */
qreal m_dLabelHeight; QString m_dLabelHeight;
/** @brief m_dLabelAngle formula to calculate the rotation angle of label */
QString m_dLabelAngle;
/** @brief m_iFontSize label text base font size */ /** @brief m_iFontSize label text base font size */
int m_iFontSize; int m_iFontSize;
/** @brief m_dRotation label rotation */
qreal m_dRotation;
/** @brief m_centerPin center pin id */ /** @brief m_centerPin center pin id */
quint32 m_centerPin; quint32 m_centerPin;
/** @brief m_topLeftPin top left corner pin id */ /** @brief m_topLeftPin top left corner pin id */

View File

@ -213,8 +213,6 @@ void DialogSeamAllowance::SetPiece(const VPiece &piece)
m_my = piece.GetMy(); m_my = piece.GetMy();
ui->lineEditLetter->setText(piece.GetPatternPieceData().GetLetter()); ui->lineEditLetter->setText(piece.GetPatternPieceData().GetLetter());
ui->groupBoxDetailLabel->setChecked(piece.GetPatternPieceData().IsVisible());
ui->groupBoxPatternLabel->setChecked(piece.GetPatternInfo().IsVisible());
m_conMCP.clear(); m_conMCP.clear();
for (int i = 0; i < piece.GetPatternPieceData().GetMCPCount(); ++i) for (int i = 0; i < piece.GetPatternPieceData().GetMCPCount(); ++i)
@ -224,25 +222,33 @@ void DialogSeamAllowance::SetPiece(const VPiece &piece)
UpdateList(); UpdateList();
ui->groupBoxGrainline->setChecked(piece.GetGrainlineGeometry().IsVisible());
SetGrainlineAngle(piece.GetGrainlineGeometry().GetRotation());
SetGrainlineLength(piece.GetGrainlineGeometry().GetLength());
ui->comboBoxArrow->setCurrentIndex(int(piece.GetGrainlineGeometry().GetArrowType())); ui->comboBoxArrow->setCurrentIndex(int(piece.GetGrainlineGeometry().GetArrowType()));
m_oldData = piece.GetPatternPieceData(); m_oldData = piece.GetPatternPieceData();
ui->groupBoxDetailLabel->setChecked(m_oldData.IsVisible());
ChangeCurrentData(ui->comboBoxDLCenterPin, m_oldData.CenterPin()); ChangeCurrentData(ui->comboBoxDLCenterPin, m_oldData.CenterPin());
ChangeCurrentData(ui->comboBoxDLTopLeftPin, m_oldData.TopLeftPin()); ChangeCurrentData(ui->comboBoxDLTopLeftPin, m_oldData.TopLeftPin());
ChangeCurrentData(ui->comboBoxDLBottomRightPin, m_oldData.BottomRightPin()); ChangeCurrentData(ui->comboBoxDLBottomRightPin, m_oldData.BottomRightPin());
SetDLWidth(m_oldData.GetLabelWidth());
SetDLHeight(m_oldData.GetLabelHeight());
SetDLHeight(m_oldData.GetRotation());
m_oldGeom = piece.GetPatternInfo(); m_oldGeom = piece.GetPatternInfo();
ui->groupBoxPatternLabel->setChecked(m_oldGeom.IsVisible());
ChangeCurrentData(ui->comboBoxPLCenterPin, m_oldGeom.CenterPin()); ChangeCurrentData(ui->comboBoxPLCenterPin, m_oldGeom.CenterPin());
ChangeCurrentData(ui->comboBoxPLTopLeftPin, m_oldGeom.TopLeftPin()); ChangeCurrentData(ui->comboBoxPLTopLeftPin, m_oldGeom.TopLeftPin());
ChangeCurrentData(ui->comboBoxPLBottomRightPin, m_oldGeom.BottomRightPin()); ChangeCurrentData(ui->comboBoxPLBottomRightPin, m_oldGeom.BottomRightPin());
SetPLWidth(m_oldGeom.GetLabelWidth());
SetPLHeight(m_oldGeom.GetLabelHeight());
SetPLHeight(m_oldGeom.GetRotation());
m_oldGrainline = piece.GetGrainlineGeometry(); m_oldGrainline = piece.GetGrainlineGeometry();
ui->groupBoxGrainline->setChecked(m_oldGrainline.IsVisible());
ChangeCurrentData(ui->comboBoxGrainlineCenterPin, m_oldGrainline.CenterPin()); ChangeCurrentData(ui->comboBoxGrainlineCenterPin, m_oldGrainline.CenterPin());
ChangeCurrentData(ui->comboBoxGrainlineTopPin, m_oldGrainline.TopPin()); ChangeCurrentData(ui->comboBoxGrainlineTopPin, m_oldGrainline.TopPin());
ChangeCurrentData(ui->comboBoxGrainlineBottomPin, m_oldGrainline.BottomPin()); ChangeCurrentData(ui->comboBoxGrainlineBottomPin, m_oldGrainline.BottomPin());
SetGrainlineAngle(m_oldGrainline.GetRotation());
SetGrainlineLength(m_oldGrainline.GetLength());
ValidObjects(MainPathIsValid()); ValidObjects(MainPathIsValid());
EnabledGrainline(); EnabledGrainline();
@ -1794,10 +1800,10 @@ VPiece DialogSeamAllowance::CreatePiece() const
} }
piece.GetPatternPieceData().SetPos(m_oldData.GetPos()); piece.GetPatternPieceData().SetPos(m_oldData.GetPos());
piece.GetPatternPieceData().SetLabelWidth(m_oldData.GetLabelWidth()); piece.GetPatternPieceData().SetLabelWidth(GetFormulaFromUser(ui->lineEditDLWidthFormula));
piece.GetPatternPieceData().SetLabelHeight(m_oldData.GetLabelHeight()); piece.GetPatternPieceData().SetLabelHeight(GetFormulaFromUser(ui->lineEditDLHeightFormula));
piece.GetPatternPieceData().SetFontSize(m_oldData.GetFontSize()); piece.GetPatternPieceData().SetFontSize(m_oldData.GetFontSize());
piece.GetPatternPieceData().SetRotation(m_oldData.GetRotation()); piece.GetPatternPieceData().SetRotation(GetFormulaFromUser(ui->lineEditDLAngleFormula));
piece.GetPatternPieceData().SetVisible(ui->groupBoxDetailLabel->isChecked()); piece.GetPatternPieceData().SetVisible(ui->groupBoxDetailLabel->isChecked());
piece.GetPatternPieceData().SetCenterPin(getCurrentObjectId(ui->comboBoxDLCenterPin)); piece.GetPatternPieceData().SetCenterPin(getCurrentObjectId(ui->comboBoxDLCenterPin));
piece.GetPatternPieceData().SetTopLeftPin(getCurrentObjectId(ui->comboBoxDLTopLeftPin)); piece.GetPatternPieceData().SetTopLeftPin(getCurrentObjectId(ui->comboBoxDLTopLeftPin));
@ -1808,6 +1814,9 @@ VPiece DialogSeamAllowance::CreatePiece() const
piece.GetPatternInfo().SetCenterPin(getCurrentObjectId(ui->comboBoxPLCenterPin)); piece.GetPatternInfo().SetCenterPin(getCurrentObjectId(ui->comboBoxPLCenterPin));
piece.GetPatternInfo().SetTopLeftPin(getCurrentObjectId(ui->comboBoxPLTopLeftPin)); piece.GetPatternInfo().SetTopLeftPin(getCurrentObjectId(ui->comboBoxPLTopLeftPin));
piece.GetPatternInfo().SetBottomRightPin(getCurrentObjectId(ui->comboBoxPLBottomRightPin)); piece.GetPatternInfo().SetBottomRightPin(getCurrentObjectId(ui->comboBoxPLBottomRightPin));
piece.GetPatternInfo().SetLabelWidth(GetFormulaFromUser(ui->lineEditPLWidthFormula));
piece.GetPatternInfo().SetLabelHeight(GetFormulaFromUser(ui->lineEditPLHeightFormula));
piece.GetPatternInfo().SetRotation(GetFormulaFromUser(ui->lineEditPLAngleFormula));
piece.GetGrainlineGeometry() = m_oldGrainline; piece.GetGrainlineGeometry() = m_oldGrainline;
piece.GetGrainlineGeometry().SetVisible(ui->groupBoxGrainline->isChecked()); piece.GetGrainlineGeometry().SetVisible(ui->groupBoxGrainline->isChecked());

View File

@ -495,7 +495,14 @@ void VToolSeamAllowance::UpdateLabel()
QPointF pos; QPointF pos;
qreal labelWidth = 0; qreal labelWidth = 0;
qreal labelHeight = 0; qreal labelHeight = 0;
const VTextGraphicsItem::MoveTypes type = FindLabelGeometry(labelData, labelWidth, labelHeight, pos); qreal labelAngle = 0;
const VTextGraphicsItem::MoveTypes type = FindLabelGeometry(labelData, labelAngle, labelWidth, labelHeight,
pos);
if (type & VGrainlineItem::Error)
{
m_dataLabel->hide();
return;
}
m_dataLabel->SetMoveType(type); m_dataLabel->SetMoveType(type);
QFont fnt = qApp->font(); QFont fnt = qApp->font();
@ -504,7 +511,8 @@ void VToolSeamAllowance::UpdateLabel()
iFS < MIN_FONT_SIZE ? fnt.setPixelSize(MIN_FONT_SIZE) : fnt.setPixelSize(iFS); iFS < MIN_FONT_SIZE ? fnt.setPixelSize(MIN_FONT_SIZE) : fnt.setPixelSize(iFS);
} }
m_dataLabel->SetFont(fnt); m_dataLabel->SetFont(fnt);
m_dataLabel->SetSize(labelWidth, labelHeight); m_dataLabel->SetSize(ToPixel(labelWidth, *VDataTool::data.GetPatternUnit()),
ToPixel(labelHeight, *VDataTool::data.GetPatternUnit()));
m_dataLabel->UpdateData(detail.GetName(), labelData); m_dataLabel->UpdateData(detail.GetName(), labelData);
QRectF rectBB; QRectF rectBB;
@ -513,14 +521,14 @@ void VToolSeamAllowance::UpdateLabel()
rectBB.setHeight(m_dataLabel->boundingRect().height()); rectBB.setHeight(m_dataLabel->boundingRect().height());
qreal dX; qreal dX;
qreal dY; qreal dY;
if (m_dataLabel->IsContained(rectBB, labelData.GetRotation(), dX, dY) == false) if (m_dataLabel->IsContained(rectBB, labelAngle, dX, dY) == false)
{ {
pos.setX(pos.x() + dX); pos.setX(pos.x() + dX);
pos.setY(pos.y() + dY); pos.setY(pos.y() + dY);
} }
m_dataLabel->setPos(pos); m_dataLabel->setPos(pos);
m_dataLabel->setRotation(labelData.GetRotation()); m_dataLabel->setRotation(labelAngle);
m_dataLabel->Update(); m_dataLabel->Update();
m_dataLabel->show(); m_dataLabel->show();
} }
@ -544,7 +552,13 @@ void VToolSeamAllowance::UpdatePatternInfo()
QPointF pos; QPointF pos;
qreal labelWidth = 0; qreal labelWidth = 0;
qreal labelHeight = 0; qreal labelHeight = 0;
const VTextGraphicsItem::MoveTypes type = FindLabelGeometry(geom, labelWidth, labelHeight, pos); qreal labelAngle = 0;
const VTextGraphicsItem::MoveTypes type = FindLabelGeometry(geom, labelAngle, labelWidth, labelHeight, pos);
if (type & VGrainlineItem::Error)
{
m_dataLabel->hide();
return;
}
m_patternInfo->SetMoveType(type); m_patternInfo->SetMoveType(type);
QFont fnt = qApp->font(); QFont fnt = qApp->font();
@ -555,7 +569,8 @@ void VToolSeamAllowance::UpdatePatternInfo()
} }
fnt.setPixelSize(iFS); fnt.setPixelSize(iFS);
m_patternInfo->SetFont(fnt); m_patternInfo->SetFont(fnt);
m_patternInfo->SetSize(labelWidth, labelHeight); m_patternInfo->SetSize(ToPixel(labelWidth, *VDataTool::data.GetPatternUnit()),
ToPixel(labelHeight, *VDataTool::data.GetPatternUnit()));
m_patternInfo->UpdateData(doc, getData()->size(), getData()->height()); m_patternInfo->UpdateData(doc, getData()->size(), getData()->height());
QRectF rectBB; QRectF rectBB;
@ -564,14 +579,14 @@ void VToolSeamAllowance::UpdatePatternInfo()
rectBB.setHeight(m_patternInfo->boundingRect().height()); rectBB.setHeight(m_patternInfo->boundingRect().height());
qreal dX; qreal dX;
qreal dY; qreal dY;
if (m_patternInfo->IsContained(rectBB, geom.GetRotation(), dX, dY) == false) if (m_patternInfo->IsContained(rectBB, labelAngle, dX, dY) == false)
{ {
pos.setX(pos.x() + dX); pos.setX(pos.x() + dX);
pos.setY(pos.y() + dY); pos.setY(pos.y() + dY);
} }
m_patternInfo->setPos(pos); m_patternInfo->setPos(pos);
m_patternInfo->setRotation(geom.GetRotation()); m_patternInfo->setRotation(labelAngle);
m_patternInfo->Update(); m_patternInfo->Update();
m_patternInfo->GetTextLines() > 0 ? m_patternInfo->show() : m_patternInfo->hide(); m_patternInfo->GetTextLines() > 0 ? m_patternInfo->show() : m_patternInfo->hide();
} }
@ -623,10 +638,6 @@ void VToolSeamAllowance::SaveMoveDetail(const QPointF& ptPos)
VPiece oldDet = VAbstractTool::data.GetPiece(id); VPiece oldDet = VAbstractTool::data.GetPiece(id);
VPiece newDet = oldDet; VPiece newDet = oldDet;
newDet.GetPatternPieceData().SetPos(ptPos); newDet.GetPatternPieceData().SetPos(ptPos);
newDet.GetPatternPieceData().SetLabelWidth(m_dataLabel->boundingRect().width());
newDet.GetPatternPieceData().SetLabelHeight(m_dataLabel->boundingRect().height());
newDet.GetPatternPieceData().SetFontSize(m_dataLabel->GetFontSize());
newDet.GetPatternPieceData().SetRotation(m_dataLabel->rotation());
SavePieceOptions* moveCommand = new SavePieceOptions(oldDet, newDet, doc, id); SavePieceOptions* moveCommand = new SavePieceOptions(oldDet, newDet, doc, id);
moveCommand->setText(tr("move pattern piece label")); moveCommand->setText(tr("move pattern piece label"));
@ -642,10 +653,13 @@ void VToolSeamAllowance::SaveResizeDetail(qreal dLabelW, int iFontSize)
{ {
VPiece oldDet = VAbstractTool::data.GetPiece(id); VPiece oldDet = VAbstractTool::data.GetPiece(id);
VPiece newDet = oldDet; VPiece newDet = oldDet;
newDet.GetPatternPieceData().SetLabelWidth(dLabelW);
newDet.GetPatternPieceData().SetLabelHeight(m_dataLabel->boundingRect().height()); dLabelW = FromPixel(dLabelW, *VDataTool::data.GetPatternUnit());
newDet.GetPatternPieceData().SetLabelWidth(QString().setNum(dLabelW));
const qreal height = FromPixel(m_dataLabel->boundingRect().height(), *VDataTool::data.GetPatternUnit());
newDet.GetPatternPieceData().SetLabelHeight(QString().setNum(height));
newDet.GetPatternPieceData().SetFontSize(iFontSize); newDet.GetPatternPieceData().SetFontSize(iFontSize);
newDet.GetPatternPieceData().SetRotation(m_dataLabel->rotation());
SavePieceOptions* resizeCommand = new SavePieceOptions(oldDet, newDet, doc, id); SavePieceOptions* resizeCommand = new SavePieceOptions(oldDet, newDet, doc, id);
resizeCommand->setText(tr("resize pattern piece label")); resizeCommand->setText(tr("resize pattern piece label"));
connect(resizeCommand, &SavePieceOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); connect(resizeCommand, &SavePieceOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree);
@ -661,10 +675,8 @@ void VToolSeamAllowance::SaveRotationDetail(qreal dRot)
VPiece oldDet = VAbstractTool::data.GetPiece(id); VPiece oldDet = VAbstractTool::data.GetPiece(id);
VPiece newDet = oldDet; VPiece newDet = oldDet;
newDet.GetPatternPieceData().SetPos(m_dataLabel->pos()); newDet.GetPatternPieceData().SetPos(m_dataLabel->pos());
newDet.GetPatternPieceData().SetLabelWidth(m_dataLabel->boundingRect().width());
newDet.GetPatternPieceData().SetLabelHeight(m_dataLabel->boundingRect().height());
newDet.GetPatternPieceData().SetFontSize(m_dataLabel->GetFontSize()); newDet.GetPatternPieceData().SetFontSize(m_dataLabel->GetFontSize());
newDet.GetPatternPieceData().SetRotation(dRot); newDet.GetPatternPieceData().SetRotation(QString().setNum(dRot));
SavePieceOptions* rotateCommand = new SavePieceOptions(oldDet, newDet, doc, id); SavePieceOptions* rotateCommand = new SavePieceOptions(oldDet, newDet, doc, id);
rotateCommand->setText(tr("rotate pattern piece label")); rotateCommand->setText(tr("rotate pattern piece label"));
@ -682,10 +694,6 @@ void VToolSeamAllowance::SaveMovePattern(const QPointF &ptPos)
VPiece oldDet = VAbstractTool::data.GetPiece(id); VPiece oldDet = VAbstractTool::data.GetPiece(id);
VPiece newDet = oldDet; VPiece newDet = oldDet;
newDet.GetPatternInfo().SetPos(ptPos); newDet.GetPatternInfo().SetPos(ptPos);
newDet.GetPatternInfo().SetLabelWidth(m_patternInfo->boundingRect().width());
newDet.GetPatternInfo().SetLabelHeight(m_patternInfo->boundingRect().height());
newDet.GetPatternInfo().SetFontSize(m_patternInfo->GetFontSize());
newDet.GetPatternInfo().SetRotation(m_patternInfo->rotation());
SavePieceOptions* moveCommand = new SavePieceOptions(oldDet, newDet, doc, id); SavePieceOptions* moveCommand = new SavePieceOptions(oldDet, newDet, doc, id);
moveCommand->setText(tr("move pattern info label")); moveCommand->setText(tr("move pattern info label"));
@ -701,10 +709,13 @@ void VToolSeamAllowance::SaveResizePattern(qreal dLabelW, int iFontSize)
{ {
VPiece oldDet = VAbstractTool::data.GetPiece(id); VPiece oldDet = VAbstractTool::data.GetPiece(id);
VPiece newDet = oldDet; VPiece newDet = oldDet;
newDet.GetPatternInfo().SetLabelWidth(dLabelW);
newDet.GetPatternInfo().SetLabelHeight(m_patternInfo->boundingRect().height()); dLabelW = FromPixel(dLabelW, *VDataTool::data.GetPatternUnit());
newDet.GetPatternInfo().SetLabelWidth(QString().setNum(dLabelW));
qreal height = FromPixel(m_patternInfo->boundingRect().height(), *VDataTool::data.GetPatternUnit());
newDet.GetPatternInfo().SetLabelHeight(QString().setNum(height));
newDet.GetPatternInfo().SetFontSize(iFontSize); newDet.GetPatternInfo().SetFontSize(iFontSize);
newDet.GetPatternInfo().SetRotation(m_patternInfo->rotation());
SavePieceOptions* resizeCommand = new SavePieceOptions(oldDet, newDet, doc, id); SavePieceOptions* resizeCommand = new SavePieceOptions(oldDet, newDet, doc, id);
resizeCommand->setText(tr("resize pattern info label")); resizeCommand->setText(tr("resize pattern info label"));
connect(resizeCommand, &SavePieceOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); connect(resizeCommand, &SavePieceOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree);
@ -716,11 +727,10 @@ void VToolSeamAllowance::SaveRotationPattern(qreal dRot)
{ {
VPiece oldDet = VAbstractTool::data.GetPiece(id); VPiece oldDet = VAbstractTool::data.GetPiece(id);
VPiece newDet = oldDet; VPiece newDet = oldDet;
newDet.GetPatternInfo().SetPos(m_patternInfo->pos()); newDet.GetPatternInfo().SetPos(m_patternInfo->pos());
newDet.GetPatternInfo().SetLabelWidth(m_patternInfo->boundingRect().width());
newDet.GetPatternInfo().SetLabelHeight(m_patternInfo->boundingRect().height());
newDet.GetPatternInfo().SetFontSize(m_patternInfo->GetFontSize()); newDet.GetPatternInfo().SetFontSize(m_patternInfo->GetFontSize());
newDet.GetPatternInfo().SetRotation(dRot); newDet.GetPatternInfo().SetRotation(QString().setNum(dRot));
SavePieceOptions* rotateCommand = new SavePieceOptions(oldDet, newDet, doc, id); SavePieceOptions* rotateCommand = new SavePieceOptions(oldDet, newDet, doc, id);
rotateCommand->setText(tr("rotate pattern info label")); rotateCommand->setText(tr("rotate pattern info label"));
@ -763,8 +773,7 @@ void VToolSeamAllowance::SaveRotateGrainline(qreal dRot, const QPointF& ptPos)
VPiece oldDet = VAbstractTool::data.GetPiece(id); VPiece oldDet = VAbstractTool::data.GetPiece(id);
VPiece newDet = oldDet; VPiece newDet = oldDet;
dRot = qRadiansToDegrees(dRot); newDet.GetGrainlineGeometry().SetRotation(QString().setNum(qRadiansToDegrees(dRot)));
newDet.GetGrainlineGeometry().SetRotation(QString().setNum(dRot));
newDet.GetGrainlineGeometry().SetPos(ptPos); newDet.GetGrainlineGeometry().SetPos(ptPos);
SavePieceOptions* rotateCommand = new SavePieceOptions(oldDet, newDet, doc, id); SavePieceOptions* rotateCommand = new SavePieceOptions(oldDet, newDet, doc, id);
rotateCommand->setText(tr("rotate grainline")); rotateCommand->setText(tr("rotate grainline"));
@ -1167,9 +1176,27 @@ void VToolSeamAllowance::SaveDialogChange()
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VPieceItem::MoveTypes VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData& labelData, qreal &labelWidth, VPieceItem::MoveTypes VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData& labelData, qreal &rotationAngle,
qreal &labelHeight, QPointF &pos) qreal &labelWidth, qreal &labelHeight, QPointF &pos)
{ {
VPieceItem::MoveTypes restrictions = VPieceItem::AllModifications;
try
{
if (not qmu::QmuTokenParser::IsSingle(labelData.GetRotation()))
{
restrictions &= ~ VPieceItem::IsRotatable;
}
Calculator cal1;
rotationAngle = cal1.EvalFormula(VAbstractTool::data.PlainVariables(), labelData.GetRotation());
}
catch(qmu::QmuParserError &e)
{
Q_UNUSED(e);
return VPieceItem::Error;
}
const quint32 topLeftPin = labelData.TopLeftPin(); const quint32 topLeftPin = labelData.TopLeftPin();
const quint32 bottomRightPin = labelData.BottomRightPin(); const quint32 bottomRightPin = labelData.BottomRightPin();
@ -1186,7 +1213,10 @@ VPieceItem::MoveTypes VToolSeamAllowance::FindLabelGeometry(const VPatternLabelD
pos = labelRect.topLeft(); pos = labelRect.topLeft();
return VTextGraphicsItem::IsRotatable; restrictions &= ~ VPieceItem::IsMovable;
restrictions &= ~ VPieceItem::IsResizable;
return restrictions;
} }
catch(const VExceptionBadId &) catch(const VExceptionBadId &)
{ {
@ -1194,10 +1224,53 @@ VPieceItem::MoveTypes VToolSeamAllowance::FindLabelGeometry(const VPatternLabelD
} }
} }
labelWidth = labelData.GetLabelWidth(); try
labelHeight = labelData.GetLabelHeight(); {
const bool widthIsSingle = qmu::QmuTokenParser::IsSingle(labelData.GetLabelWidth());
Calculator cal1;
labelWidth = cal1.EvalFormula(VAbstractTool::data.PlainVariables(), labelData.GetLabelWidth());
const bool heightIsSingle = qmu::QmuTokenParser::IsSingle(labelData.GetLabelHeight());
Calculator cal2;
labelHeight = cal2.EvalFormula(VAbstractTool::data.PlainVariables(), labelData.GetLabelHeight());
if (not widthIsSingle || not heightIsSingle)
{
restrictions &= ~ VPieceItem::IsResizable;
}
}
catch(qmu::QmuParserError &e)
{
Q_UNUSED(e);
return VPieceItem::Error;
}
const quint32 centerPin = labelData.CenterPin();
if (centerPin != NULL_ID)
{
try
{
const auto centerPinPoint = VAbstractTool::data.GeometricObject<VPointF>(centerPin);
const qreal lWidth = ToPixel(labelWidth, *VDataTool::data.GetPatternUnit());
const qreal lHeight = ToPixel(labelHeight, *VDataTool::data.GetPatternUnit());
pos = *centerPinPoint - QRectF(0, 0, lWidth, lHeight).center();
restrictions &= ~ VPieceItem::IsMovable;
}
catch(const VExceptionBadId &)
{
pos = labelData.GetPos(); pos = labelData.GetPos();
return VTextGraphicsItem::AllModifications; }
}
else
{
pos = labelData.GetPos();
}
return restrictions;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View File

@ -152,8 +152,8 @@ private:
void RefreshGeometry(); void RefreshGeometry();
void SaveDialogChange(); void SaveDialogChange();
VPieceItem::MoveTypes FindLabelGeometry(const VPatternLabelData &labelData, qreal &labelWidth, qreal &labelHeight, VPieceItem::MoveTypes FindLabelGeometry(const VPatternLabelData &labelData, qreal &rotationAngle, qreal &labelWidth,
QPointF &pos); qreal &labelHeight, QPointF &pos);
VPieceItem::MoveTypes FindGrainlineGeometry(const VGrainlineData &geom, qreal &length, qreal &rotationAngle, VPieceItem::MoveTypes FindGrainlineGeometry(const VGrainlineData &geom, qreal &length, qreal &rotationAngle,
QPointF &pos); QPointF &pos);