Compare commits

..

No commits in common. "7d276461ededdc5943ae0d84f544590c857c6404" and "8c3de72a517e42c34ed954a5dfed5a64d10eb7a5" have entirely different histories.

8 changed files with 24 additions and 56 deletions

View file

@ -18,7 +18,6 @@
- Support for options Force Flipping and Forbid Flipping in Puzzle. - Support for options Force Flipping and Forbid Flipping in Puzzle.
- Remember selected dimension values. - Remember selected dimension values.
- Fix segmenting a simple curve. - Fix segmenting a simple curve.
- Fix export tiled pdf on Mac OS.
# Valentina 0.7.51 April 18, 2022 # Valentina 0.7.51 April 18, 2022
- Z value change for a layout piece. - Z value change for a layout piece.

View file

@ -134,8 +134,12 @@ auto VPLayoutSettings::GetTilesSize() const -> QSizeF
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
auto VPLayoutSettings::GetTilesSize(Unit unit) const -> QSizeF auto VPLayoutSettings::GetTilesSize(Unit unit) const -> QSizeF
{ {
return {UnitConvertor(m_tilesSize.width(), Unit::Px, unit), QSizeF convertedSize = QSizeF(
UnitConvertor(m_tilesSize.height(), Unit::Px, unit)}; UnitConvertor(m_tilesSize.width(), Unit::Px, unit),
UnitConvertor(m_tilesSize.height(), Unit::Px, unit)
);
return convertedSize;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -2574,10 +2574,7 @@ void VPMainWindow::ExportPdfTiledFile(const VPExportData &data)
bool firstPage = true; bool firstPage = true;
for (const auto& sheet : data.sheets) for (const auto& sheet : data.sheets)
{ {
if (not GeneratePdfTiledFile(sheet, data.showTilesScheme, &painter, printer, firstPage)) GeneratePdfTiledFile(sheet, data.showTilesScheme, &painter, printer, firstPage);
{
break;
}
} }
} }
else else
@ -2592,17 +2589,14 @@ void VPMainWindow::ExportPdfTiledFile(const VPExportData &data)
QPainter painter; QPainter painter;
bool firstPage = true; bool firstPage = true;
if (not GeneratePdfTiledFile(data.sheets.at(i), data.showTilesScheme, &painter, printer, firstPage)) GeneratePdfTiledFile(data.sheets.at(i), data.showTilesScheme, &painter, printer, firstPage);
{
break;
}
} }
} }
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
auto VPMainWindow::GeneratePdfTiledFile(const VPSheetPtr &sheet, bool showTilesScheme, QPainter *painter, void VPMainWindow::GeneratePdfTiledFile(const VPSheetPtr &sheet, bool showTilesScheme, QPainter *painter,
const QSharedPointer<QPrinter> &printer, bool &firstPage) -> bool const QSharedPointer<QPrinter> &printer, bool &firstPage)
{ {
SCASSERT(not sheet.isNull()) SCASSERT(not sheet.isNull())
SCASSERT(painter != nullptr) SCASSERT(painter != nullptr)
@ -2627,7 +2621,7 @@ auto VPMainWindow::GeneratePdfTiledFile(const VPSheetPtr &sheet, bool showTilesS
if (not painter->begin(printer.data())) if (not painter->begin(printer.data()))
{ // failed to open file { // failed to open file
qCritical() << tr("Failed to open file, is it writable?"); qCritical() << tr("Failed to open file, is it writable?");
return false; return;
} }
painter->setPen(QPen(Qt::black, VAbstractApplication::VApp()->Settings()->WidthMainLine(), Qt::SolidLine, painter->setPen(QPen(Qt::black, VAbstractApplication::VApp()->Settings()->WidthMainLine(), Qt::SolidLine,
@ -2640,7 +2634,7 @@ auto VPMainWindow::GeneratePdfTiledFile(const VPSheetPtr &sheet, bool showTilesS
{ {
if (not DrawTilesScheme(printer.data(), painter, sheet, firstPage)) if (not DrawTilesScheme(printer.data(), painter, sheet, firstPage))
{ {
return false; return;
} }
firstPage = false; firstPage = false;
} }
@ -2657,7 +2651,7 @@ auto VPMainWindow::GeneratePdfTiledFile(const VPSheetPtr &sheet, bool showTilesS
if (not printer->newPage()) if (not printer->newPage())
{ {
qWarning("failed in flushing page to disk, disk full?"); qWarning("failed in flushing page to disk, disk full?");
return false; return;
} }
} }
@ -2668,8 +2662,6 @@ auto VPMainWindow::GeneratePdfTiledFile(const VPSheetPtr &sheet, bool showTilesS
} }
sheet->SceneData()->CleanAfterExport(); sheet->SceneData()->CleanAfterExport();
return true;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -2778,9 +2770,8 @@ auto VPMainWindow::DrawTilesScheme(QPrinter *printer, QPainter *painter, const V
target = QRectF(0, 0, width, height); target = QRectF(0, 0, width, height);
} }
target = VPrintLayout::SceneTargetRect(printer, target); sheet->SceneData()->Scene()->render(painter, VPrintLayout::SceneTargetRect(printer, target), source,
Qt::KeepAspectRatio);
sheet->SceneData()->Scene()->render(painter, target, source, Qt::KeepAspectRatio);
VWatermarkData watermarkData = m_layout->TileFactory()->WatermarkData(); VWatermarkData watermarkData = m_layout->TileFactory()->WatermarkData();
if (watermarkData.opacity > 0) if (watermarkData.opacity > 0)

View file

@ -479,8 +479,8 @@ private:
static void ExportUnifiedPdfFile(const VPExportData &data); static void ExportUnifiedPdfFile(const VPExportData &data);
static void GenerateUnifiedPdfFile(const VPExportData &data, const QString &name); static void GenerateUnifiedPdfFile(const VPExportData &data, const QString &name);
void ExportPdfTiledFile(const VPExportData &data); void ExportPdfTiledFile(const VPExportData &data);
auto GeneratePdfTiledFile(const VPSheetPtr &sheet, bool showTilesScheme, QPainter *painter, void GeneratePdfTiledFile(const VPSheetPtr &sheet, bool showTilesScheme, QPainter *painter,
const QSharedPointer<QPrinter> &printer, bool &firstPage) -> bool; const QSharedPointer<QPrinter> &printer, bool &firstPage);
void UpdateScaleConnection() const; void UpdateScaleConnection() const;

View file

@ -174,11 +174,6 @@ void VPTileFactory::drawTile(QPainter *painter, QPrinter *printer, const VPSheet
// add the tiles decorations (cutting and gluing lines, scissors, infos etc.) // add the tiles decorations (cutting and gluing lines, scissors, infos etc.)
painter->setPen(PenTileInfos()); painter->setPen(PenTileInfos());
painter->save();
const QPair<qreal, qreal> scale = VPrintLayout::PrinterScaleDiff(printer);
painter->scale(scale.first, scale.second);
if(row > 0) if(row > 0)
{ {
// add top triangle // add top triangle
@ -222,7 +217,7 @@ void VPTileFactory::drawTile(QPainter *painter, QPrinter *printer, const VPSheet
DrawSolidBottomLine(painter, col, nbCol); DrawSolidBottomLine(painter, col, nbCol);
} }
DrawRuler(painter, scale.first); DrawRuler(painter);
DrawWatermark(painter); DrawWatermark(painter);
if(col < nbCol-1) if(col < nbCol-1)
@ -240,8 +235,6 @@ void VPTileFactory::drawTile(QPainter *painter, QPrinter *printer, const VPSheet
// prepare the painting for the text information // prepare the painting for the text information
DrawTextInformation(painter, row, col, nbRow, nbCol, sheet->GetName()); DrawTextInformation(painter, row, col, nbRow, nbCol, sheet->GetName());
painter->restore();
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -301,7 +294,7 @@ auto VPTileFactory::WatermarkData() const -> const VWatermarkData &
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VPTileFactory::DrawRuler(QPainter *painter, qreal scale) const void VPTileFactory::DrawRuler(QPainter *painter) const
{ {
VPLayoutPtr layout = m_layout.toStrongRef(); VPLayoutPtr layout = m_layout.toStrongRef();
if(layout.isNull()) if(layout.isNull())
@ -337,21 +330,15 @@ void VPTileFactory::DrawRuler(QPainter *painter, qreal scale) const
} }
else else
{ {
painter->save(); QString units = rulerUnits != Unit::Inch ? tr("cm", "unit") : tr("in", "unit");
QFont fnt = painter->font(); QFont fnt = painter->font();
const int size = qRound(10/scale); fnt.setPointSize(10);
size > 0 ? fnt.setPointSize(size) : fnt.setPointSize(10);
painter->setFont(fnt);
qreal unitsWidth = 0; qreal unitsWidth = 0;
QFontMetrics fm(fnt); QFontMetrics fm(fnt);
QString units = rulerUnits != Unit::Inch ? tr("cm", "unit") : tr("in", "unit");
unitsWidth = TextWidth(fm, units); unitsWidth = TextWidth(fm, units);
painter->drawText(QPointF(step*0.5-unitsWidth*0.6, painter->drawText(QPointF(step*0.5-unitsWidth*0.6,
m_drawingAreaHeight - tileStripeWidth + notchHeight+shortNotchHeight), units); m_drawingAreaHeight - tileStripeWidth + notchHeight+shortNotchHeight), units);
painter->restore();
} }
++i; ++i;
} }

View file

@ -123,7 +123,7 @@ private:
VWatermarkData m_watermarkData{}; VWatermarkData m_watermarkData{};
void DrawRuler(QPainter *painter, qreal scale) const; void DrawRuler(QPainter *painter) const;
void DrawWatermark(QPainter *painter) const; void DrawWatermark(QPainter *painter) const;
auto PenTileInfos() const -> QPen; auto PenTileInfos() const -> QPen;

View file

@ -750,7 +750,7 @@ auto VPrintLayout::ContinueIfLayoutStale(QWidget *parent) -> int
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
auto VPrintLayout::SceneTargetRect(QPrinter *printer, const QRectF &source) -> QRectF QRectF VPrintLayout::SceneTargetRect(QPrinter *printer, const QRectF &source)
{ {
SCASSERT(printer != nullptr) SCASSERT(printer != nullptr)
@ -769,18 +769,6 @@ auto VPrintLayout::SceneTargetRect(QPrinter *printer, const QRectF &source) -> Q
x = 0; y = 0; x = 0; y = 0;
} }
QPair<qreal, qreal> scaleDiff = PrinterScaleDiff(printer);
const double xscale = scaleDiff.first;
const double yscale = scaleDiff.second;
return {x * xscale, y * yscale, source.width() * xscale, source.height() * yscale};
}
//---------------------------------------------------------------------------------------------------------------------
auto VPrintLayout::PrinterScaleDiff(QPrinter *printer) -> QPair<qreal, qreal>
{
SCASSERT(printer != nullptr)
// Here we try understand difference between printer's dpi and our. // Here we try understand difference between printer's dpi and our.
// Get printer rect according to our dpi. // Get printer rect according to our dpi.
const QRectF printerPageRect(0, 0, ToPixel(printer->pageRect(QPrinter::Millimeter).width(), Unit::Mm), const QRectF printerPageRect(0, 0, ToPixel(printer->pageRect(QPrinter::Millimeter).width(), Unit::Mm),
@ -789,5 +777,5 @@ auto VPrintLayout::PrinterScaleDiff(QPrinter *printer) -> QPair<qreal, qreal>
const double xscale = pageRect.width() / printerPageRect.width(); const double xscale = pageRect.width() / printerPageRect.width();
const double yscale = pageRect.height() / printerPageRect.height(); const double yscale = pageRect.height() / printerPageRect.height();
return qMakePair(xscale, yscale); return QRectF(x * xscale, y * yscale, source.width() * xscale, source.height() * yscale);
} }

View file

@ -122,7 +122,6 @@ public:
static auto ContinueIfLayoutStale(QWidget *parent) -> int; static auto ContinueIfLayoutStale(QWidget *parent) -> int;
static auto SceneTargetRect(QPrinter *printer, const QRectF &source) -> QRectF; static auto SceneTargetRect(QPrinter *printer, const QRectF &source) -> QRectF;
static auto PrinterScaleDiff(QPrinter *printer) -> QPair<qreal, qreal>;
private slots: private slots:
void PrintPages (QPrinter *printer); void PrintPages (QPrinter *printer);