diff options
author | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2023-11-27 19:03:40 +0200 |
---|---|---|
committer | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2023-12-09 04:46:24 +0200 |
commit | e28a664ae12e22a2cecbd669d3d8562c742eb4a2 (patch) | |
tree | 4cec07fd8fe92dd0d513b285a4cb3f71cc0b4700 /src/gui/painting | |
parent | c49fd15a4253a79d70ae2b26ac4cc04454ffd7a0 (diff) |
pagelayout: Fix inaccuracy in marginsPixels and paintRectPixels
Do not use rounded value for conversion, which gives inaccurate result.
Example case: typical margin for A4 paper size is 8.4 pt. At 600 dpi,
the old code was using rounded point value of 8, which produces an
incorrect result:
8 / (72.0 / 600) = 67 pixels
The correct margin is of course:
8.4 / (72.0 / 600) = 70 pixels
Pick-to: 6.6
Change-Id: I44b2eeabb82fd3bf8e2dcfcba66ae96cde763875
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'src/gui/painting')
-rw-r--r-- | src/gui/painting/qpagelayout.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/gui/painting/qpagelayout.cpp b/src/gui/painting/qpagelayout.cpp index 4c57d33d5a..ec505f2cce 100644 --- a/src/gui/painting/qpagelayout.cpp +++ b/src/gui/painting/qpagelayout.cpp @@ -82,7 +82,7 @@ public: void clampMargins(const QMarginsF &margins); QMarginsF margins(QPageLayout::Unit units) const; - QMargins marginsPoints() const; + QMarginsF marginsPoints() const; QMargins marginsPixels(int resolution) const; void setDefaultMargins(const QMarginsF &minMargins); @@ -164,14 +164,14 @@ QMarginsF QPageLayoutPrivate::margins(QPageLayout::Unit units) const return qt_convertMargins(m_margins, m_units, units); } -QMargins QPageLayoutPrivate::marginsPoints() const +QMarginsF QPageLayoutPrivate::marginsPoints() const { - return qt_convertMargins(m_margins, m_units, QPageLayout::Point).toMargins(); + return qt_convertMargins(m_margins, m_units, QPageLayout::Point); } QMargins QPageLayoutPrivate::marginsPixels(int resolution) const { - return marginsPoints() / qt_pixelMultiplier(resolution); + return QMarginsF(marginsPoints() / qt_pixelMultiplier(resolution)).toMargins(); } void QPageLayoutPrivate::setDefaultMargins(const QMarginsF &minMargins) @@ -699,7 +699,7 @@ QMarginsF QPageLayout::margins(Unit units) const QMargins QPageLayout::marginsPoints() const { - return d->marginsPoints(); + return d->marginsPoints().toMargins(); } /*! @@ -866,7 +866,7 @@ QRect QPageLayout::paintRectPoints() const if (!isValid()) return QRect(); return d->m_mode == FullPageMode ? d->fullRectPoints() - : d->fullRectPoints() - d->marginsPoints(); + : d->fullRectPoints() - d->marginsPoints().toMargins(); } /*! |