Keep original scale from raw layout data.
This commit is contained in:
parent
84cf53f612
commit
a3e5948167
|
@ -171,13 +171,19 @@ QString VPPiece::GetUniqueID() const
|
|||
void VPPiece::ClearTransformations()
|
||||
{
|
||||
// Reset the piece position to the default state
|
||||
QTransform matrix;
|
||||
SetMatrix(QTransform());
|
||||
|
||||
// restore original size
|
||||
QTransform m;
|
||||
m.scale(GetXScale(), GetYScale());
|
||||
QTransform matrix = GetMatrix();
|
||||
matrix *= m;
|
||||
SetMatrix(matrix);
|
||||
|
||||
// translate the piece so that the top left corner of the bouding rect of the piece is at the position
|
||||
// (0,0) in the sheet coordinate system
|
||||
const QPointF offset = MappedDetailBoundingRect().topLeft();
|
||||
matrix.translate(-offset.x() ,-offset.y());
|
||||
SetMatrix(matrix);
|
||||
Translate(-offset.x(), -offset.y());
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -461,6 +461,8 @@ void VPLayoutFileReader::ReadPiece(const VPPiecePtr &piece)
|
|||
piece->SetName(ReadAttributeEmptyString(attribs, ML::AttrGradationLabel));
|
||||
piece->SetCopyNumber(static_cast<quint16>(ReadAttributeUInt(attribs, ML::AttrCopyNumber, QChar('1'))));
|
||||
piece->SetHideMainPath(not ReadAttributeBool(attribs, ML::AttrShowSeamline, trueStr));
|
||||
piece->SetXScale(ReadAttributeDouble(attribs, ML::AttrXScale, QChar('1')));
|
||||
piece->SetYScale(ReadAttributeDouble(attribs, ML::AttrYScale, QChar('1')));
|
||||
|
||||
bool pieceMirrored = ReadAttributeBool(attribs, ML::AttrMirrored, falseStr);
|
||||
piece->SetMirror(pieceMirrored);
|
||||
|
@ -817,7 +819,7 @@ auto VPLayoutFileReader::ReadLabelLine() -> TextLine
|
|||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QMarginsF VPLayoutFileReader::ReadLayoutMargins(const VPLayoutPtr &layout)
|
||||
void VPLayoutFileReader::ReadLayoutMargins(const VPLayoutPtr &layout)
|
||||
{
|
||||
QXmlStreamAttributes attribs = attributes();
|
||||
|
||||
|
@ -834,7 +836,7 @@ QMarginsF VPLayoutFileReader::ReadLayoutMargins(const VPLayoutPtr &layout)
|
|||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
auto VPLayoutFileReader::ReadSheetMargins(const VPSheetPtr &sheet) -> QMarginsF
|
||||
void VPLayoutFileReader::ReadSheetMargins(const VPSheetPtr &sheet)
|
||||
{
|
||||
QXmlStreamAttributes attribs = attributes();
|
||||
|
||||
|
|
|
@ -76,8 +76,8 @@ private:
|
|||
auto ReadLabelLines() -> VTextManager;
|
||||
auto ReadLabelLine() -> TextLine;
|
||||
|
||||
auto ReadLayoutMargins(const VPLayoutPtr &layout) -> QMarginsF;
|
||||
auto ReadSheetMargins(const VPSheetPtr &sheet) -> QMarginsF;
|
||||
void ReadLayoutMargins(const VPLayoutPtr &layout);
|
||||
void ReadSheetMargins(const VPSheetPtr &sheet);
|
||||
auto ReadSize() -> QSizeF;
|
||||
|
||||
void AssertRootTag(const QString &tag) const;
|
||||
|
|
|
@ -260,6 +260,10 @@ void VPLayoutFileWriter::WritePiece(const VPPiecePtr &piece)
|
|||
[](const QString &label){return label.isEmpty();});
|
||||
SetAttribute(ML::AttrCopyNumber, piece->CopyNumber());
|
||||
SetAttributeOrRemoveIf<bool>(ML::AttrShowSeamline, not piece->IsHideMainPath(), [](bool show){return show;});
|
||||
SetAttributeOrRemoveIf<qreal>(ML::AttrXScale, piece->GetXScale(),
|
||||
[](qreal xs){return VFuzzyComparePossibleNulls(xs, 1.0);});
|
||||
SetAttributeOrRemoveIf<qreal>(ML::AttrYScale, piece->GetYScale(),
|
||||
[](qreal ys){return VFuzzyComparePossibleNulls(ys, 1.0);});
|
||||
|
||||
writeStartElement(ML::TagSeamLine);
|
||||
writeCharacters(PathToString(piece->GetContourPoints()));
|
||||
|
|
|
@ -189,7 +189,9 @@
|
|||
<xs:attribute type="Transformation" name="transform"/>
|
||||
<xs:attribute type="xs:string" name="gradationLabel"/>
|
||||
<xs:attribute type="xs:unsignedInt" name="copyNumber"/>
|
||||
<xs:attribute type="xs:boolean" name="showSeamline"/>
|
||||
<xs:attribute type="xs:boolean" name="showSeamline"/>
|
||||
<xs:attribute type="xs:float" name="xScale"/>
|
||||
<xs:attribute type="xs:float" name="yScale"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
|
@ -357,7 +359,9 @@
|
|||
<xs:attribute type="Transformation" name="transform"/>
|
||||
<xs:attribute type="xs:string" name="gradationLabel"/>
|
||||
<xs:attribute type="xs:unsignedInt" name="copyNumber"/>
|
||||
<xs:attribute type="xs:boolean" name="showSeamline"/>
|
||||
<xs:attribute type="xs:boolean" name="showSeamline"/>
|
||||
<xs:attribute type="xs:float" name="xScale"/>
|
||||
<xs:attribute type="xs:float" name="yScale"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
|
|
|
@ -314,13 +314,17 @@ void VLayoutExporter::ExportToASTMDXF(const QVector<VLayoutPiece> &details) cons
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VLayoutExporter::ExportToRLD(const QVector<VLayoutPiece> &details) const
|
||||
{
|
||||
QVector<VLayoutPiece> scaledPieces;
|
||||
scaledPieces.reserve(details.size());
|
||||
|
||||
for(auto detail : details)
|
||||
{
|
||||
detail.Scale(m_xScale, m_yScale);
|
||||
scaledPieces.append(detail);
|
||||
}
|
||||
|
||||
VRawLayoutData layoutData;
|
||||
layoutData.pieces = details;
|
||||
layoutData.pieces = scaledPieces;
|
||||
|
||||
VRawLayout generator;
|
||||
if (not generator.WriteFile(m_fileName, layoutData))
|
||||
|
|
|
@ -1058,6 +1058,9 @@ void VLayoutPiece::Translate(const QPointF &p)
|
|||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VLayoutPiece::Scale(qreal sx, qreal sy)
|
||||
{
|
||||
d->m_xScale *= sx;
|
||||
d->m_yScale *= sy;
|
||||
|
||||
QTransform m;
|
||||
m.scale(sx, sy);
|
||||
d->matrix *= m;
|
||||
|
@ -1680,6 +1683,30 @@ auto VLayoutPiece::GetGradationId() const -> QString
|
|||
return d->m_gradationId;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
auto VLayoutPiece::GetXScale() const -> qreal
|
||||
{
|
||||
return d->m_xScale;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VLayoutPiece::SetXScale(qreal xs)
|
||||
{
|
||||
d->m_xScale = xs;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
auto VLayoutPiece::GetYScale() const -> qreal
|
||||
{
|
||||
return d->m_yScale;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VLayoutPiece::SetYScale(qreal ys)
|
||||
{
|
||||
d->m_yScale = ys;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QLineF VLayoutPiece::Edge(const QVector<QPointF> &path, int i) const
|
||||
{
|
||||
|
|
|
@ -137,6 +137,12 @@ public:
|
|||
void SetGradationId(const QString &id);
|
||||
auto GetGradationId() const -> QString;
|
||||
|
||||
auto GetXScale() const -> qreal;
|
||||
void SetXScale(qreal xs);
|
||||
|
||||
auto GetYScale() const -> qreal;
|
||||
void SetYScale(qreal ys);
|
||||
|
||||
void Translate(const QPointF &p);
|
||||
void Translate(qreal dx, qreal dy);
|
||||
void Scale(qreal sx, qreal sy);
|
||||
|
|
|
@ -78,7 +78,9 @@ public:
|
|||
m_square(detail.m_square),
|
||||
m_quantity(detail.m_quantity),
|
||||
m_id(detail.m_id),
|
||||
m_gradationId(detail.m_gradationId)
|
||||
m_gradationId(detail.m_gradationId),
|
||||
m_xScale(detail.m_xScale),
|
||||
m_yScale(detail.m_yScale)
|
||||
{}
|
||||
|
||||
~VLayoutPieceData() Q_DECL_EQ_DEFAULT;
|
||||
|
@ -140,6 +142,9 @@ public:
|
|||
|
||||
QString m_gradationId{};
|
||||
|
||||
qreal m_xScale{1.0};
|
||||
qreal m_yScale{1.0};
|
||||
|
||||
private:
|
||||
Q_DISABLE_ASSIGN(VLayoutPieceData)
|
||||
|
||||
|
@ -179,6 +184,8 @@ inline QDataStream &operator<<(QDataStream &dataStream, const VLayoutPieceData &
|
|||
dataStream << piece.m_tmDetail;
|
||||
dataStream << piece.m_tmPattern;
|
||||
dataStream << piece.m_gradationId;
|
||||
dataStream << piece.m_xScale;
|
||||
dataStream << piece.m_yScale;
|
||||
|
||||
return dataStream;
|
||||
}
|
||||
|
@ -237,6 +244,8 @@ inline QDataStream &operator>>(QDataStream &dataStream, VLayoutPieceData &piece)
|
|||
dataStream >> piece.m_tmDetail;
|
||||
dataStream >> piece.m_tmPattern;
|
||||
dataStream >> piece.m_gradationId;
|
||||
dataStream >> piece.m_xScale;
|
||||
dataStream >> piece.m_yScale;
|
||||
}
|
||||
|
||||
return dataStream;
|
||||
|
|
Loading…
Reference in New Issue
Block a user