diff options
author | Andy Shaw <andy.shaw@digia.com> | 2013-09-13 22:39:04 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-23 23:17:35 +0200 |
commit | be8999038ff4afdfca8fa693a7e0e3dbaae54c97 (patch) | |
tree | c1fa275760414d7ee507b6894cc364d9ca7ffe0f /src/printsupport | |
parent | ddefc7627d70c46dadfa934dd3754a2aff0dbfea (diff) |
When calling setPageSizeMM then the size needs to be passed as MM
This simplifies the code a bit and ensures that it is respecting what
the relevant function expects the size to be as.
Change-Id: Iec88fab84c27a33d6f1a9e9413ea6beb0a39c68d
Reviewed-by: John Layt <jlayt@kde.org>
Diffstat (limited to 'src/printsupport')
-rw-r--r-- | src/printsupport/kernel/qprinter.cpp | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/src/printsupport/kernel/qprinter.cpp b/src/printsupport/kernel/qprinter.cpp index 3e64582b06..9751389d6f 100644 --- a/src/printsupport/kernel/qprinter.cpp +++ b/src/printsupport/kernel/qprinter.cpp @@ -127,6 +127,28 @@ Q_PRINTSUPPORT_EXPORT double qt_multiplierForUnit(QPrinter::Unit unit, int resol return 1.0; } +/// return the QSize from the specified in unit as millimeters +Q_PRINTSUPPORT_EXPORT QSizeF qt_SizeFromUnitToMillimeter(const QSizeF &size, QPrinter::Unit unit, double resolution) +{ + switch (unit) { + case QPrinter::Millimeter: + return size; + case QPrinter::Point: + return size * 0.352777778; + case QPrinter::Inch: + return size * 25.4; + case QPrinter::Pica: + return size * 4.23333333334; + case QPrinter::Didot: + return size * 0.377; + case QPrinter::Cicero: + return size * 4.511666667; + case QPrinter::DevicePixel: + return size * (0.352777778 * 72.0 / resolution); + } + return size; +} + // not static: it's needed in qpagesetupdialog_unix.cpp Q_PRINTSUPPORT_EXPORT QSizeF qt_printerPaperSize(QPrinter::Orientation orientation, QPrinter::PaperSize paperSize, @@ -983,9 +1005,7 @@ void QPrinter::setPaperSize(const QSizeF &paperSize, QPrinter::Unit unit) Q_D(QPrinter); if (d->paintEngine->type() != QPaintEngine::Pdf) ABORT_IF_ACTIVE("QPrinter::setPaperSize"); - const qreal multiplier = qt_multiplierForUnit(unit, resolution()); - QSizeF size(paperSize.width() * multiplier * 25.4/72., paperSize.height() * multiplier * 25.4/72.); - setPageSizeMM(size); + setPageSizeMM(qt_SizeFromUnitToMillimeter(paperSize, unit, resolution())); } /*! |