summaryrefslogtreecommitdiffstats
path: root/src/printsupport
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@digia.com>2013-09-13 22:39:04 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-23 23:17:35 +0200
commitbe8999038ff4afdfca8fa693a7e0e3dbaae54c97 (patch)
treec1fa275760414d7ee507b6894cc364d9ca7ffe0f /src/printsupport
parentddefc7627d70c46dadfa934dd3754a2aff0dbfea (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.cpp26
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()));
}
/*!