Fix calculating label position for flipped piece.
This commit is contained in:
parent
55cc3a7d54
commit
e4481754f0
|
@ -72,46 +72,6 @@ QT_WARNING_POP
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
inline auto LineMatrix(const VPPiecePtr &piece, const QPointF &topLeft, qreal angle, const QPointF &linePos,
|
|
||||||
int maxLineWidth) -> QTransform
|
|
||||||
{
|
|
||||||
if (piece.isNull())
|
|
||||||
{
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
QTransform labelMatrix;
|
|
||||||
labelMatrix.translate(topLeft.x(), topLeft.y());
|
|
||||||
|
|
||||||
if ((piece->IsVerticallyFlipped() && piece->IsHorizontallyFlipped()) ||
|
|
||||||
(!piece->IsVerticallyFlipped() && !piece->IsHorizontallyFlipped()))
|
|
||||||
{
|
|
||||||
labelMatrix.rotate(angle);
|
|
||||||
}
|
|
||||||
else if (piece->IsVerticallyFlipped() || piece->IsHorizontallyFlipped())
|
|
||||||
{
|
|
||||||
if (piece->IsVerticallyFlipped() && !piece->IsHorizontallyFlipped())
|
|
||||||
{
|
|
||||||
labelMatrix.scale(-1, 1);
|
|
||||||
labelMatrix.rotate(-angle);
|
|
||||||
labelMatrix.translate(-maxLineWidth, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (piece->IsHorizontallyFlipped() && !piece->IsVerticallyFlipped())
|
|
||||||
{
|
|
||||||
labelMatrix.scale(-1, 1);
|
|
||||||
labelMatrix.rotate(-angle);
|
|
||||||
labelMatrix.translate(-maxLineWidth, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
labelMatrix.translate(linePos.x(), linePos.y()); // Each string has own position
|
|
||||||
labelMatrix *= piece->GetMatrix();
|
|
||||||
|
|
||||||
return labelMatrix;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
inline auto LineFont(const TextLine &tl, const QFont &base) -> QFont
|
inline auto LineFont(const TextLine &tl, const QFont &base) -> QFont
|
||||||
{
|
{
|
||||||
|
@ -448,7 +408,6 @@ void VPGraphicsPiece::InitPieceLabelSVGFont(const QVector<QPointF> &labelShape,
|
||||||
const qreal dH = QLineF(labelShape.at(1), labelShape.at(2)).length();
|
const qreal dH = QLineF(labelShape.at(1), labelShape.at(2)).length();
|
||||||
const qreal angle = -QLineF(labelShape.at(0), labelShape.at(1)).angle();
|
const qreal angle = -QLineF(labelShape.at(0), labelShape.at(1)).angle();
|
||||||
const QColor color = PieceColor();
|
const QColor color = PieceColor();
|
||||||
const int maxLineWidth = tm.MaxLineWidthSVGFont(static_cast<int>(dW), penWidth);
|
|
||||||
|
|
||||||
qreal dY = penWidth;
|
qreal dY = penWidth;
|
||||||
|
|
||||||
|
@ -467,7 +426,7 @@ void VPGraphicsPiece::InitPieceLabelSVGFont(const QVector<QPointF> &labelShape,
|
||||||
const QString qsText = tl.m_qsText;
|
const QString qsText = tl.m_qsText;
|
||||||
const qreal dX = LineAlign(tl, qsText, engine, dW, penWidth);
|
const qreal dX = LineAlign(tl, qsText, engine, dW, penWidth);
|
||||||
// set up the rotation around top-left corner matrix
|
// set up the rotation around top-left corner matrix
|
||||||
const QTransform lineMatrix = LineMatrix(piece, labelShape.at(0), angle, QPointF(dX, dY), maxLineWidth);
|
const QTransform lineMatrix = piece->LineMatrix(labelShape.at(0), angle, QPointF(dX, dY), dW);
|
||||||
|
|
||||||
auto *item = new QGraphicsPathItem(this);
|
auto *item = new QGraphicsPathItem(this);
|
||||||
item->setPath(engine.DrawPath(QPointF(), qsText));
|
item->setPath(engine.DrawPath(QPointF(), qsText));
|
||||||
|
@ -505,7 +464,6 @@ void VPGraphicsPiece::InitPieceLabelOutlineFont(const QVector<QPointF> &labelSha
|
||||||
const qreal dH = QLineF(labelShape.at(1), labelShape.at(2)).length();
|
const qreal dH = QLineF(labelShape.at(1), labelShape.at(2)).length();
|
||||||
const qreal angle = -QLineF(labelShape.at(0), labelShape.at(1)).angle();
|
const qreal angle = -QLineF(labelShape.at(0), labelShape.at(1)).angle();
|
||||||
const QColor color = PieceColor();
|
const QColor color = PieceColor();
|
||||||
const int maxLineWidth = tm.MaxLineWidthOutlineFont(static_cast<int>(dW));
|
|
||||||
qreal const penWidth = VPApplication::VApp()->PuzzleSettings()->GetLayoutLineWidth();
|
qreal const penWidth = VPApplication::VApp()->PuzzleSettings()->GetLayoutLineWidth();
|
||||||
|
|
||||||
qreal dY = 0;
|
qreal dY = 0;
|
||||||
|
@ -533,7 +491,7 @@ void VPGraphicsPiece::InitPieceLabelOutlineFont(const QVector<QPointF> &labelSha
|
||||||
|
|
||||||
const qreal dX = LineAlign(tl, tl.m_qsText, fm, dW);
|
const qreal dX = LineAlign(tl, tl.m_qsText, fm, dW);
|
||||||
// set up the rotation around top-left corner matrix
|
// set up the rotation around top-left corner matrix
|
||||||
const QTransform lineMatrix = LineMatrix(piece, labelShape.at(0), angle, QPointF(dX, dY), maxLineWidth);
|
const QTransform lineMatrix = piece->LineMatrix(labelShape.at(0), angle, QPointF(dX, dY), dW);
|
||||||
|
|
||||||
if (textAsPaths)
|
if (textAsPaths)
|
||||||
{
|
{
|
||||||
|
|
|
@ -153,42 +153,6 @@ inline auto LineAlign(const TextLine &tl, const QString &text, const QFontMetric
|
||||||
|
|
||||||
return dX;
|
return dX;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
inline auto LineMatrix(const VLayoutPiece &piece, const QPointF &topLeft, qreal angle, const QPointF &linePos,
|
|
||||||
int maxLineWidth) -> QTransform
|
|
||||||
{
|
|
||||||
QTransform labelMatrix;
|
|
||||||
labelMatrix.translate(topLeft.x(), topLeft.y());
|
|
||||||
|
|
||||||
if ((piece.IsVerticallyFlipped() && piece.IsHorizontallyFlipped()) ||
|
|
||||||
(!piece.IsVerticallyFlipped() && !piece.IsHorizontallyFlipped()))
|
|
||||||
{
|
|
||||||
labelMatrix.rotate(-angle);
|
|
||||||
}
|
|
||||||
else if (piece.IsVerticallyFlipped() || piece.IsHorizontallyFlipped())
|
|
||||||
{
|
|
||||||
if (piece.IsVerticallyFlipped())
|
|
||||||
{
|
|
||||||
labelMatrix.scale(-1, 1);
|
|
||||||
labelMatrix.rotate(angle);
|
|
||||||
labelMatrix.translate(-maxLineWidth, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (piece.IsHorizontallyFlipped())
|
|
||||||
{
|
|
||||||
labelMatrix.scale(-1, 1);
|
|
||||||
labelMatrix.rotate(angle);
|
|
||||||
labelMatrix.translate(-maxLineWidth, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
labelMatrix.translate(linePos.x(), linePos.y()); // Each string has own position
|
|
||||||
|
|
||||||
labelMatrix *= piece.GetMatrix();
|
|
||||||
|
|
||||||
return labelMatrix;
|
|
||||||
}
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -1159,7 +1123,6 @@ void VDxfEngine::ExportPieceText(const QSharedPointer<dx_ifaceBlock> &detailBloc
|
||||||
|
|
||||||
VTextManager const tm = detail.GetPieceLabelData();
|
VTextManager const tm = detail.GetPieceLabelData();
|
||||||
const QVector<TextLine> labelLines = tm.GetLabelSourceLines(qFloor(dW), tm.GetFont());
|
const QVector<TextLine> labelLines = tm.GetLabelSourceLines(qFloor(dW), tm.GetFont());
|
||||||
const int maxLineWidth = tm.MaxLineWidthOutlineFont(static_cast<int>(dW));
|
|
||||||
|
|
||||||
for (const auto &tl : labelLines)
|
for (const auto &tl : labelLines)
|
||||||
{
|
{
|
||||||
|
@ -1174,7 +1137,7 @@ void VDxfEngine::ExportPieceText(const QSharedPointer<dx_ifaceBlock> &detailBloc
|
||||||
dY += fm.height() * scale / 2;
|
dY += fm.height() * scale / 2;
|
||||||
|
|
||||||
const qreal dX = LineAlign(tl, tl.m_qsText, fm, dW);
|
const qreal dX = LineAlign(tl, tl.m_qsText, fm, dW);
|
||||||
QTransform const lineMatrix = LineMatrix(detail, labelShape.at(0), angle, QPointF(dX, dY), maxLineWidth);
|
QTransform const lineMatrix = detail.LineMatrix(labelShape.at(0), angle, QPointF(dX, dY), dW);
|
||||||
|
|
||||||
QPointF const pos = lineMatrix.map(QPointF());
|
QPointF const pos = lineMatrix.map(QPointF());
|
||||||
|
|
||||||
|
|
|
@ -158,41 +158,6 @@ inline auto LineAlign(const TextLine &tl, const QString &text, const QFontMetric
|
||||||
return dX;
|
return dX;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
auto LineMatrix(const VLayoutPiece &piece, const QPointF &topLeft, qreal angle, const QPointF &linePos,
|
|
||||||
int maxLineWidth) -> QTransform
|
|
||||||
{
|
|
||||||
QTransform labelMatrix;
|
|
||||||
labelMatrix.translate(topLeft.x(), topLeft.y());
|
|
||||||
|
|
||||||
if ((piece.IsVerticallyFlipped() && piece.IsHorizontallyFlipped()) ||
|
|
||||||
(!piece.IsVerticallyFlipped() && !piece.IsHorizontallyFlipped()))
|
|
||||||
{
|
|
||||||
labelMatrix.rotate(angle);
|
|
||||||
}
|
|
||||||
else if (piece.IsVerticallyFlipped() || piece.IsHorizontallyFlipped())
|
|
||||||
{
|
|
||||||
if (piece.IsVerticallyFlipped())
|
|
||||||
{
|
|
||||||
labelMatrix.scale(-1, 1);
|
|
||||||
labelMatrix.rotate(-angle);
|
|
||||||
labelMatrix.translate(-maxLineWidth, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (piece.IsHorizontallyFlipped())
|
|
||||||
{
|
|
||||||
labelMatrix.scale(-1, 1);
|
|
||||||
labelMatrix.rotate(-angle);
|
|
||||||
labelMatrix.translate(-maxLineWidth, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
labelMatrix.translate(linePos.x(), linePos.y()); // Each string has own position
|
|
||||||
labelMatrix *= piece.GetMatrix();
|
|
||||||
|
|
||||||
return labelMatrix;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto OptimizePattern(QVector<int> pattern) -> QVector<int>
|
auto OptimizePattern(QVector<int> pattern) -> QVector<int>
|
||||||
{
|
{
|
||||||
|
@ -751,7 +716,6 @@ void VHPGLEngine::PlotLabelSVGFont(QTextStream &out, const VLayoutPiece &detail,
|
||||||
const qreal dW = QLineF(labelShape.at(0), labelShape.at(1)).length();
|
const qreal dW = QLineF(labelShape.at(0), labelShape.at(1)).length();
|
||||||
const qreal dH = QLineF(labelShape.at(1), labelShape.at(2)).length();
|
const qreal dH = QLineF(labelShape.at(1), labelShape.at(2)).length();
|
||||||
const qreal angle = -QLineF(labelShape.at(0), labelShape.at(1)).angle();
|
const qreal angle = -QLineF(labelShape.at(0), labelShape.at(1)).angle();
|
||||||
const int maxLineWidth = tm.MaxLineWidthSVGFont(static_cast<int>(dW), m_penWidthPx);
|
|
||||||
|
|
||||||
qreal dY = m_penWidthPx;
|
qreal dY = m_penWidthPx;
|
||||||
|
|
||||||
|
@ -770,7 +734,7 @@ void VHPGLEngine::PlotLabelSVGFont(QTextStream &out, const VLayoutPiece &detail,
|
||||||
const QString qsText = tl.m_qsText;
|
const QString qsText = tl.m_qsText;
|
||||||
const qreal dX = LineAlign(tl, qsText, engine, dW, m_penWidthPx);
|
const qreal dX = LineAlign(tl, qsText, engine, dW, m_penWidthPx);
|
||||||
// set up the rotation around top-left corner matrix
|
// set up the rotation around top-left corner matrix
|
||||||
const QTransform lineMatrix = LineMatrix(detail, labelShape.at(0), angle, QPointF(dX, dY), maxLineWidth);
|
const QTransform lineMatrix = detail.LineMatrix(labelShape.at(0), angle, QPointF(dX, dY), dW);
|
||||||
|
|
||||||
QPainterPath const path = lineMatrix.map(engine.DrawPath(QPointF(), qsText));
|
QPainterPath const path = lineMatrix.map(engine.DrawPath(QPointF(), qsText));
|
||||||
PlotPainterPath(out, path, Qt::SolidLine);
|
PlotPainterPath(out, path, Qt::SolidLine);
|
||||||
|
@ -791,7 +755,6 @@ void VHPGLEngine::PlotLabelOutlineFont(QTextStream &out, const VLayoutPiece &det
|
||||||
const qreal dW = QLineF(labelShape.at(0), labelShape.at(1)).length();
|
const qreal dW = QLineF(labelShape.at(0), labelShape.at(1)).length();
|
||||||
const qreal dH = QLineF(labelShape.at(1), labelShape.at(2)).length();
|
const qreal dH = QLineF(labelShape.at(1), labelShape.at(2)).length();
|
||||||
const qreal angle = -QLineF(labelShape.at(0), labelShape.at(1)).angle();
|
const qreal angle = -QLineF(labelShape.at(0), labelShape.at(1)).angle();
|
||||||
const int maxLineWidth = tm.MaxLineWidthOutlineFont(static_cast<int>(dW));
|
|
||||||
|
|
||||||
qreal dY = 0;
|
qreal dY = 0;
|
||||||
|
|
||||||
|
@ -824,7 +787,7 @@ void VHPGLEngine::PlotLabelOutlineFont(QTextStream &out, const VLayoutPiece &det
|
||||||
const QString qsText = tl.m_qsText;
|
const QString qsText = tl.m_qsText;
|
||||||
const qreal dX = LineAlign(tl, qsText, fm, dW);
|
const qreal dX = LineAlign(tl, qsText, fm, dW);
|
||||||
// set up the rotation around top-left corner matrix
|
// set up the rotation around top-left corner matrix
|
||||||
const QTransform lineMatrix = LineMatrix(detail, labelShape.at(0), angle, QPointF(dX, dY), maxLineWidth);
|
const QTransform lineMatrix = detail.LineMatrix(labelShape.at(0), angle, QPointF(dX, dY), dW);
|
||||||
|
|
||||||
QPainterPath path;
|
QPainterPath path;
|
||||||
|
|
||||||
|
|
|
@ -1856,6 +1856,40 @@ auto VLayoutPiece::MapPassmark(VLayoutPassmark passmark, const QTransform &matri
|
||||||
return passmark;
|
return passmark;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
auto VLayoutPiece::LineMatrix(const QPointF &topLeft, qreal angle, const QPointF &linePos, qreal maxLineWidth) const
|
||||||
|
-> QTransform
|
||||||
|
{
|
||||||
|
QTransform labelMatrix;
|
||||||
|
labelMatrix.translate(topLeft.x(), topLeft.y());
|
||||||
|
|
||||||
|
if ((IsVerticallyFlipped() && IsHorizontallyFlipped()) || (!IsVerticallyFlipped() && !IsHorizontallyFlipped()))
|
||||||
|
{
|
||||||
|
labelMatrix.rotate(angle);
|
||||||
|
}
|
||||||
|
else if (IsVerticallyFlipped() || IsHorizontallyFlipped())
|
||||||
|
{
|
||||||
|
if (IsVerticallyFlipped() && !IsHorizontallyFlipped())
|
||||||
|
{
|
||||||
|
labelMatrix.scale(-1, 1);
|
||||||
|
labelMatrix.rotate(-angle);
|
||||||
|
labelMatrix.translate(-maxLineWidth, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsHorizontallyFlipped() && !IsVerticallyFlipped())
|
||||||
|
{
|
||||||
|
labelMatrix.scale(-1, 1);
|
||||||
|
labelMatrix.rotate(-angle);
|
||||||
|
labelMatrix.translate(-maxLineWidth, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
labelMatrix.translate(linePos.x(), linePos.y()); // Each string has own position
|
||||||
|
labelMatrix *= GetMatrix();
|
||||||
|
|
||||||
|
return labelMatrix;
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
auto VLayoutPiece::BoundingRect(QVector<QPointF> points) -> QRectF
|
auto VLayoutPiece::BoundingRect(QVector<QPointF> points) -> QRectF
|
||||||
{
|
{
|
||||||
|
@ -2046,7 +2080,7 @@ void VLayoutPiece::LabelStringsOutlineFont(QGraphicsItem *parent, const QVector<
|
||||||
{
|
{
|
||||||
labelMatrix.scale(-1, 1);
|
labelMatrix.scale(-1, 1);
|
||||||
labelMatrix.rotate(-angle);
|
labelMatrix.rotate(-angle);
|
||||||
labelMatrix.translate(-tm.MaxLineWidthOutlineFont(static_cast<int>(dW)), 0);
|
labelMatrix.translate(-qRound(dW), 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -240,6 +240,9 @@ public:
|
||||||
|
|
||||||
static auto MapPassmark(VLayoutPassmark passmark, const QTransform &matrix, bool mirror) -> VLayoutPassmark;
|
static auto MapPassmark(VLayoutPassmark passmark, const QTransform &matrix, bool mirror) -> VLayoutPassmark;
|
||||||
|
|
||||||
|
auto LineMatrix(const QPointF &topLeft, qreal angle, const QPointF &linePos, qreal maxLineWidth) const
|
||||||
|
-> QTransform;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void SetGrainline(const VPieceGrainline &grainline);
|
void SetGrainline(const VPieceGrainline &grainline);
|
||||||
|
|
||||||
|
|
|
@ -786,67 +786,6 @@ auto VTextManager::GetLabelSourceLines(int width, const VSvgFont &font, qreal pe
|
||||||
return lines;
|
return lines;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
auto VTextManager::MaxLineWidthOutlineFont(int width) const -> int
|
|
||||||
{
|
|
||||||
int maxWidth = 0;
|
|
||||||
for (int i = 0; i < m_liLines.count(); ++i)
|
|
||||||
{
|
|
||||||
const TextLine &tl = m_liLines.at(i);
|
|
||||||
|
|
||||||
QFont fnt = m_font;
|
|
||||||
fnt.setPointSize(qMax(fnt.pointSize() + tl.m_iFontSize, 1));
|
|
||||||
fnt.setBold(tl.m_bold);
|
|
||||||
fnt.setItalic(tl.m_italic);
|
|
||||||
|
|
||||||
QFontMetrics const fm(fnt);
|
|
||||||
|
|
||||||
QString qsText = tl.m_qsText;
|
|
||||||
|
|
||||||
if (fm.horizontalAdvance(qsText) > width)
|
|
||||||
{
|
|
||||||
qsText = fm.elidedText(qsText, Qt::ElideMiddle, width);
|
|
||||||
}
|
|
||||||
|
|
||||||
maxWidth = qMax(fm.horizontalAdvance(qsText), maxWidth);
|
|
||||||
}
|
|
||||||
|
|
||||||
return maxWidth;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
auto VTextManager::MaxLineWidthSVGFont(int width, qreal penWidth) const -> int
|
|
||||||
{
|
|
||||||
VSvgFontDatabase *db = VAbstractApplication::VApp()->SVGFontDatabase();
|
|
||||||
VSvgFontEngine engine =
|
|
||||||
db->FontEngine(m_svgFontFamily, SVGFontStyle::Normal, SVGFontWeight::Normal, m_svgFontPointSize);
|
|
||||||
VSvgFont const svgFont = engine.Font();
|
|
||||||
|
|
||||||
int maxWidth = 0;
|
|
||||||
for (int i = 0; i < m_liLines.count(); ++i)
|
|
||||||
{
|
|
||||||
const TextLine &tl = m_liLines.at(i);
|
|
||||||
|
|
||||||
VSvgFont fnt = svgFont;
|
|
||||||
fnt.SetPointSize(fnt.PointSize() + tl.m_iFontSize);
|
|
||||||
fnt.SetBold(tl.m_bold);
|
|
||||||
fnt.SetItalic(tl.m_italic);
|
|
||||||
|
|
||||||
engine = db->FontEngine(fnt);
|
|
||||||
|
|
||||||
QString qsText = tl.m_qsText;
|
|
||||||
|
|
||||||
if (engine.TextWidth(qsText, penWidth) > width)
|
|
||||||
{
|
|
||||||
qsText = engine.ElidedText(qsText, SVGTextElideMode::ElideMiddle, width);
|
|
||||||
}
|
|
||||||
|
|
||||||
maxWidth = qMax(qRound(engine.TextWidth(qsText, penWidth)), maxWidth);
|
|
||||||
}
|
|
||||||
|
|
||||||
return maxWidth;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
* @brief VTextManager::Update updates the text lines with detail data
|
* @brief VTextManager::Update updates the text lines with detail data
|
||||||
|
|
|
@ -104,9 +104,6 @@ public:
|
||||||
auto GetLabelSourceLines(int width, const QFont &font) const -> QVector<TextLine>;
|
auto GetLabelSourceLines(int width, const QFont &font) const -> QVector<TextLine>;
|
||||||
auto GetLabelSourceLines(int width, const VSvgFont &font, qreal penWidth) const -> QVector<TextLine>;
|
auto GetLabelSourceLines(int width, const VSvgFont &font, qreal penWidth) const -> QVector<TextLine>;
|
||||||
|
|
||||||
auto MaxLineWidthOutlineFont(int width) const -> int;
|
|
||||||
auto MaxLineWidthSVGFont(int width, qreal penWidth) const -> int;
|
|
||||||
|
|
||||||
void Update(const QString &qsName, const VPieceLabelData &data, const VContainer *pattern);
|
void Update(const QString &qsName, const VPieceLabelData &data, const VContainer *pattern);
|
||||||
void Update(VAbstractPattern *pDoc, const VContainer *pattern);
|
void Update(VAbstractPattern *pDoc, const VContainer *pattern);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user