diff options
author | John Layt <jlayt@kde.org> | 2014-01-05 18:51:32 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-17 13:45:52 +0100 |
commit | 9e29fab38df831f33385ee25bff235a620aa20d5 (patch) | |
tree | 0fc8f608aa5124a370561462ff0515d41c4e712a | |
parent | 0c04b31d2715f68aa883107b4aa593fd95aefdfe (diff) |
QPdfWriter - Use QPageSize and QPageLayout
Add support to QPdfWriter for QPageSize, QPageLayout, and resolution.
[ChangeLog][QtGui][QPdfWriter] The QPdfWriter now supports setting
the PDF orientation, layout and resolution by using QPageSize and
QPageLayout.
Change-Id: I9c269f997ec540dac1989f355c6a2e7488947966
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
-rw-r--r-- | src/gui/painting/qpdfwriter.cpp | 229 | ||||
-rw-r--r-- | src/gui/painting/qpdfwriter.h | 12 | ||||
-rw-r--r-- | tests/auto/gui/painting/painting.pro | 1 | ||||
-rw-r--r-- | tests/auto/gui/painting/qpdfwriter/.gitignore | 1 | ||||
-rw-r--r-- | tests/auto/gui/painting/qpdfwriter/qpdfwriter.pro | 9 | ||||
-rw-r--r-- | tests/auto/gui/painting/qpdfwriter/tst_qpdfwriter.cpp | 265 |
6 files changed, 498 insertions, 19 deletions
diff --git a/src/gui/painting/qpdfwriter.cpp b/src/gui/painting/qpdfwriter.cpp index a6f752b129..08c8f42fd9 100644 --- a/src/gui/painting/qpdfwriter.cpp +++ b/src/gui/painting/qpdfwriter.cpp @@ -90,6 +90,9 @@ QPdfWriter::QPdfWriter(const QString &filename) Q_D(QPdfWriter); d->engine->setOutputFilename(filename); + + // Set QPagedPaintDevice layout to match the current paint engine layout + devicePageLayout() = d->engine->pageLayout(); } /*! @@ -101,6 +104,9 @@ QPdfWriter::QPdfWriter(QIODevice *device) Q_D(QPdfWriter); d->engine->d_func()->outDevice = device; + + // Set QPagedPaintDevice layout to match the current paint engine layout + devicePageLayout() = d->engine->pageLayout(); } /*! @@ -147,7 +153,6 @@ void QPdfWriter::setCreator(const QString &creator) d->engine->d_func()->creator = creator; } - /*! \reimp */ @@ -159,25 +164,213 @@ QPaintEngine *QPdfWriter::paintEngine() const } /*! - \reimp - */ -void QPdfWriter::setPageSize(PageSize size) + \since 5.3 + + Sets the PDF \a resolution in DPI. + + This setting affects the coordinate system as returned by, for + example QPainter::viewport(). + + \sa resolution() +*/ + +void QPdfWriter::setResolution(int resolution) { Q_D(const QPdfWriter); + if (resolution > 0) + d->engine->setResolution(resolution); +} + +/*! + \since 5.3 - QPagedPaintDevice::setPageSize(size); - d->engine->setPageSize(QPageSize(QPageSize::PageSizeId(size))); + Returns the resolution of the PDF in DPI. + + \sa setResolution() +*/ + +int QPdfWriter::resolution() const +{ + Q_D(const QPdfWriter); + return d->engine->resolution(); } /*! - \reimp - */ -void QPdfWriter::setPageSizeMM(const QSizeF &size) + \since 5.3 + + Sets the PDF page layout to \a newPageLayout. + + You should call this before calling QPainter::begin(), or immediately + before calling newPage() to apply the new page layout to a new page. + You should not call any painting methods between a call to setPageLayout() + and newPage() as the wrong paint metrics may be used. + + Returns true if the page layout was successfully set to \a newPageLayout. + + \sa pageLayout() +*/ + +bool QPdfWriter::setPageLayout(const QPageLayout &newPageLayout) { Q_D(const QPdfWriter); + // Try to set the paint engine page layout + d->engine->setPageLayout(newPageLayout); + // Set QPagedPaintDevice layout to match the current paint engine layout + devicePageLayout() = d->engine->pageLayout(); + return pageLayout().isEquivalentTo(newPageLayout); +} + +/*! + \since 5.3 + + Sets the PDF page size to \a pageSize. + + To get the current QPageSize use pageLayout().pageSize(). + + You should call this before calling QPainter::begin(), or immediately + before calling newPage() to apply the new page size to a new page. + You should not call any painting methods between a call to setPageSize() + and newPage() as the wrong paint metrics may be used. + + Returns true if the page size was successfully set to \a pageSize. - QPagedPaintDevice::setPageSizeMM(size); - d->engine->setPageSize(QPageSize(size, QPageSize::Millimeter)); + \sa pageLayout() +*/ + +bool QPdfWriter::setPageSize(const QPageSize &pageSize) +{ + Q_D(const QPdfWriter); + // Try to set the paint engine page size + d->engine->setPageSize(pageSize); + // Set QPagedPaintDevice layout to match the current paint engine layout + devicePageLayout() = d->engine->pageLayout(); + return pageLayout().pageSize().isEquivalentTo(pageSize); +} + +/*! + \since 5.3 + + Sets the PDF page \a orientation. + + The page orientation is used to define the orientation of the + page size when obtaining the page rect. + + You should call this before calling QPainter::begin(), or immediately + before calling newPage() to apply the new orientation to a new page. + You should not call any painting methods between a call to setPageOrientation() + and newPage() as the wrong paint metrics may be used. + + To get the current QPageLayout::Orientation use pageLayout().pageOrientation(). + + Returns true if the page orientation was successfully set to \a orientation. + + \sa pageLayout() +*/ + +bool QPdfWriter::setPageOrientation(QPageLayout::Orientation orientation) +{ + Q_D(const QPdfWriter); + // Set the print engine value + d->engine->setPageOrientation(orientation); + // Set QPagedPaintDevice layout to match the current paint engine layout + devicePageLayout() = d->engine->pageLayout(); + return pageLayout().orientation() == orientation; +} + +/*! + \since 5.3 + + Set the PDF page \a margins in the current page layout units. + + You should call this before calling QPainter::begin(), or immediately + before calling newPage() to apply the new margins to a new page. + You should not call any painting methods between a call to setPageMargins() + and newPage() as the wrong paint metrics may be used. + + To get the current page margins use pageLayout().pageMargins(). + + Returns true if the page margins were successfully set to \a margins. + + \sa pageLayout() +*/ + +bool QPdfWriter::setPageMargins(const QMarginsF &margins) +{ + Q_D(const QPdfWriter); + // Try to set engine margins + d->engine->setPageMargins(margins, pageLayout().units()); + // Set QPagedPaintDevice layout to match the current paint engine layout + devicePageLayout() = d->engine->pageLayout(); + return pageLayout().margins() == margins; +} + +/*! + \since 5.3 + + Set the PDF page \a margins defined in the given \a units. + + You should call this before calling QPainter::begin(), or immediately + before calling newPage() to apply the new margins to a new page. + You should not call any painting methods between a call to setPageMargins() + and newPage() as the wrong paint metrics may be used. + + To get the current page margins use pageLayout().pageMargins(). + + Returns true if the page margins were successfully set to \a margins. + + \sa pageLayout() +*/ + +bool QPdfWriter::setPageMargins(const QMarginsF &margins, QPageLayout::Unit units) +{ + Q_D(const QPdfWriter); + // Try to set engine margins + d->engine->setPageMargins(margins, units); + // Set QPagedPaintDevice layout to match the current paint engine layout + devicePageLayout() = d->engine->pageLayout(); + return pageLayout().margins() == margins && pageLayout().units() == units; +} + +/*! + Returns the current page layout. Use this method to access the current + QPageSize, QPageLayout::Orientation, QMarginsF, fullRect() and paintRect(). + + Note that you cannot use the setters on the returned object, you must either + call the individual QPdfWriter methods or use setPageLayout(). + + \sa setPageLayout(), setPageSize(), setPageOrientation(), setPageMargins() +*/ + +QPageLayout QPdfWriter::pageLayout() const +{ + Q_D(const QPdfWriter); + return d->engine->pageLayout(); +} + +/*! + \reimp + + \obsolete Use setPageSize(QPageSize(id)) instead + + \sa setPageSize() +*/ + +void QPdfWriter::setPageSize(PageSize size) +{ + setPageSize(QPageSize(QPageSize::PageSizeId(size))); +} + +/*! + \reimp + + \obsolete Use setPageSize(QPageSize(size, QPageSize::Millimeter)) instead + + \sa setPageSize() +*/ + +void QPdfWriter::setPageSizeMM(const QSizeF &size) +{ + setPageSize(QPageSize(size, QPageSize::Millimeter)); } /*! @@ -203,17 +396,15 @@ bool QPdfWriter::newPage() /*! - \reimp + \reimp + + \obsolete Use setPageMargins(QMarginsF(l, t, r, b), QPageLayout::Millimeter) instead + + \sa setPageMargins() */ void QPdfWriter::setMargins(const Margins &m) { - Q_D(QPdfWriter); - - QPagedPaintDevice::setMargins(m); - - const qreal multiplier = 72./25.4; - d->engine->setPageMargins(QMarginsF(m.left * multiplier, m.top * multiplier, - m.right * multiplier, m.bottom * multiplier), QPageLayout::Point); + setPageMargins(QMarginsF(m.left, m.top, m.right, m.bottom), QPageLayout::Millimeter); } QT_END_NAMESPACE diff --git a/src/gui/painting/qpdfwriter.h b/src/gui/painting/qpdfwriter.h index f5c25de5e9..fce0b88ea8 100644 --- a/src/gui/painting/qpdfwriter.h +++ b/src/gui/painting/qpdfwriter.h @@ -48,6 +48,7 @@ #include <QtCore/qobject.h> #include <QtGui/qpagedpaintdevice.h> +#include <QtGui/qpagelayout.h> QT_BEGIN_NAMESPACE @@ -70,6 +71,17 @@ public: bool newPage(); + void setResolution(int resolution); + int resolution() const; + + bool setPageLayout(const QPageLayout &pageLayout); + bool setPageSize(const QPageSize &pageSize); + bool setPageOrientation(QPageLayout::Orientation orientation); + bool setPageMargins(const QMarginsF &margins); + bool setPageMargins(const QMarginsF &margins, QPageLayout::Unit units); + + QPageLayout pageLayout() const; + void setPageSize(PageSize size); void setPageSizeMM(const QSizeF &size); diff --git a/tests/auto/gui/painting/painting.pro b/tests/auto/gui/painting/painting.pro index f448419b7b..0f7595c871 100644 --- a/tests/auto/gui/painting/painting.pro +++ b/tests/auto/gui/painting/painting.pro @@ -9,6 +9,7 @@ SUBDIRS=\ qpagesize \ qpainter \ qpathclipper \ + qpdfwriter \ qpen \ qpaintengine \ qtransform \ diff --git a/tests/auto/gui/painting/qpdfwriter/.gitignore b/tests/auto/gui/painting/qpdfwriter/.gitignore new file mode 100644 index 0000000000..5307a5ed2a --- /dev/null +++ b/tests/auto/gui/painting/qpdfwriter/.gitignore @@ -0,0 +1 @@ +tst_qpdfwriter diff --git a/tests/auto/gui/painting/qpdfwriter/qpdfwriter.pro b/tests/auto/gui/painting/qpdfwriter/qpdfwriter.pro new file mode 100644 index 0000000000..fda0fad3b5 --- /dev/null +++ b/tests/auto/gui/painting/qpdfwriter/qpdfwriter.pro @@ -0,0 +1,9 @@ +CONFIG += testcase +CONFIG += parallel_test +TARGET = tst_qpdfwriter +SOURCES += tst_qpdfwriter.cpp + +QT += gui-private testlib + +DEFINES += QT_USE_USING_NAMESPACE +DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/gui/painting/qpdfwriter/tst_qpdfwriter.cpp b/tests/auto/gui/painting/qpdfwriter/tst_qpdfwriter.cpp new file mode 100644 index 0000000000..f06351b7b7 --- /dev/null +++ b/tests/auto/gui/painting/qpdfwriter/tst_qpdfwriter.cpp @@ -0,0 +1,265 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtTest/QtTest> +#include <QtGlobal> +#include <QtAlgorithms> +#include <QtGui/QPageLayout> +#include <QtGui/QPdfWriter> + +class tst_QPdfWriter : public QObject +{ + Q_OBJECT + +private slots: + void basics(); + void testPageMetrics_data(); + void testPageMetrics(); +}; + +void tst_QPdfWriter::basics() +{ + QTemporaryFile file; + if (!file.open()) + QSKIP("Couldn't open temp file!"); + QPdfWriter writer(file.fileName()); + + QCOMPARE(writer.title(), QString()); + writer.setTitle(QString("Test Title")); + QCOMPARE(writer.title(), QString("Test Title")); + + QCOMPARE(writer.creator(), QString()); + writer.setCreator(QString("Test Creator")); + QCOMPARE(writer.creator(), QString("Test Creator")); + + QCOMPARE(writer.resolution(), 1200); + writer.setResolution(600); + QCOMPARE(writer.resolution(), 600); + + QCOMPARE(writer.pageLayout().pageSize().id(), QPageSize::A4); + QCOMPARE(writer.pageSize(), QPdfWriter::A4); + QCOMPARE(writer.pageSizeMM(), QSizeF(210, 297)); + + writer.setPageSize(QPageSize(QPageSize::A5)); + QCOMPARE(writer.pageLayout().pageSize().id(), QPageSize::A5); + QCOMPARE(writer.pageSize(), QPdfWriter::A5); + QCOMPARE(writer.pageSizeMM(), QSizeF(148, 210)); + + writer.setPageSize(QPdfWriter::A3); + QCOMPARE(writer.pageLayout().pageSize().id(), QPageSize::A3); + QCOMPARE(writer.pageSize(), QPdfWriter::A3); + QCOMPARE(writer.pageSizeMM(), QSizeF(297, 420)); + + writer.setPageSizeMM(QSize(210, 297)); + QCOMPARE(writer.pageLayout().pageSize().id(), QPageSize::A4); + QCOMPARE(writer.pageSize(), QPdfWriter::A4); + QCOMPARE(writer.pageSizeMM(), QSizeF(210, 297)); + + QCOMPARE(writer.pageLayout().orientation(), QPageLayout::Portrait); + writer.setPageOrientation(QPageLayout::Landscape); + QCOMPARE(writer.pageLayout().orientation(), QPageLayout::Landscape); + QCOMPARE(writer.pageSizeMM(), QSizeF(210, 297)); + + QCOMPARE(writer.pageLayout().margins(), QMarginsF(10, 10, 10, 10)); + QCOMPARE(writer.pageLayout().units(), QPageLayout::Point); + QCOMPARE(writer.margins().left, 3.53); // mm + QCOMPARE(writer.margins().right, 3.53); + QCOMPARE(writer.margins().top, 3.53); + QCOMPARE(writer.margins().bottom, 3.53); + writer.setPageMargins(QMarginsF(20, 20, 20, 20), QPageLayout::Millimeter); + QCOMPARE(writer.pageLayout().margins(), QMarginsF(20, 20, 20, 20)); + QCOMPARE(writer.pageLayout().units(), QPageLayout::Millimeter); + QCOMPARE(writer.margins().left, 20.0); + QCOMPARE(writer.margins().right, 20.0); + QCOMPARE(writer.margins().top, 20.0); + QCOMPARE(writer.margins().bottom, 20.0); + QPdfWriter::Margins margins = {50, 50, 50, 50}; + writer.setMargins(margins); + QCOMPARE(writer.pageLayout().margins(), QMarginsF(50, 50, 50, 50)); + QCOMPARE(writer.pageLayout().units(), QPageLayout::Millimeter); + QCOMPARE(writer.margins().left, 50.0); + QCOMPARE(writer.margins().right, 50.0); + QCOMPARE(writer.margins().top, 50.0); + QCOMPARE(writer.margins().bottom, 50.0); + + QCOMPARE(writer.pageLayout().fullRect(QPageLayout::Millimeter), QRectF(0, 0, 297, 210)); + QCOMPARE(writer.pageLayout().paintRect(QPageLayout::Millimeter), QRectF(50, 50, 197, 110)); +} + +// Test the old page metrics methods, see also QPrinter tests for the same. +void tst_QPdfWriter::testPageMetrics_data() +{ + QTest::addColumn<int>("pageSize"); + QTest::addColumn<qreal>("widthMMf"); + QTest::addColumn<qreal>("heightMMf"); + QTest::addColumn<bool>("setMargins"); + QTest::addColumn<qreal>("leftMMf"); + QTest::addColumn<qreal>("rightMMf"); + QTest::addColumn<qreal>("topMMf"); + QTest::addColumn<qreal>("bottomMMf"); + + QTest::newRow("A4") << int(QPdfWriter::A4) << 210.0 << 297.0 << false << 3.53 << 3.53 << 3.53 << 3.53; + QTest::newRow("A4 Margins") << int(QPdfWriter::A4) << 210.0 << 297.0 << true << 20.0 << 30.0 << 40.0 << 50.0; + QTest::newRow("Portrait") << -1 << 345.0 << 678.0 << false << 3.53 << 3.53 << 3.53 << 3.53; + QTest::newRow("Portrait Margins") << -1 << 345.0 << 678.0 << true << 20.0 << 30.0 << 40.0 << 50.0; + QTest::newRow("Landscape") << -1 << 678.0 << 345.0 << false << 3.53 << 3.53 << 3.53 << 3.53; + QTest::newRow("Landscape Margins") << -1 << 678.0 << 345.0 << true << 20.0 << 30.0 << 40.0 << 50.0; +} + +void tst_QPdfWriter::testPageMetrics() +{ + QFETCH(int, pageSize); + QFETCH(qreal, widthMMf); + QFETCH(qreal, heightMMf); + QFETCH(bool, setMargins); + QFETCH(qreal, leftMMf); + QFETCH(qreal, rightMMf); + QFETCH(qreal, topMMf); + QFETCH(qreal, bottomMMf); + + QSizeF sizeMMf = QSizeF(widthMMf, heightMMf); + + QTemporaryFile file; + if (!file.open()) + QSKIP("Couldn't open temp file!"); + QPdfWriter writer(file.fileName()); + QCOMPARE(writer.pageLayout().orientation(), QPageLayout::Portrait); + + if (setMargins) { + // Setup the given margins + QPdfWriter::Margins margins; + margins.left = leftMMf; + margins.right = rightMMf; + margins.top = topMMf; + margins.bottom = bottomMMf; + writer.setMargins(margins); + QCOMPARE(writer.margins().left, leftMMf); + QCOMPARE(writer.margins().right, rightMMf); + QCOMPARE(writer.margins().top, topMMf); + QCOMPARE(writer.margins().bottom, bottomMMf); + } + + + // Set the given size, in Portrait mode + if (pageSize < 0) { + writer.setPageSizeMM(sizeMMf); + QCOMPARE(writer.pageSize(), QPdfWriter::Custom); + QCOMPARE(writer.pageLayout().pageSize().id(), QPageSize::Custom); + } else { + writer.setPageSize(QPdfWriter::PageSize(pageSize)); + QCOMPARE(writer.pageSize(), QPdfWriter::PageSize(pageSize)); + QCOMPARE(writer.pageLayout().pageSize().id(), QPageSize::PageSizeId(pageSize)); + } + QCOMPARE(writer.pageLayout().orientation(), QPageLayout::Portrait); + QCOMPARE(writer.margins().left, leftMMf); + QCOMPARE(writer.margins().right, rightMMf); + QCOMPARE(writer.margins().top, topMMf); + QCOMPARE(writer.margins().bottom, bottomMMf); + + // QPagedPaintDevice::pageSizeMM() always returns Portrait + QCOMPARE(writer.pageSizeMM(), sizeMMf); + + // QPagedPaintDevice::widthMM() and heightMM() are paint metrics and always return set orientation + QCOMPARE(writer.widthMM(), qRound(widthMMf - leftMMf - rightMMf)); + QCOMPARE(writer.heightMM(), qRound(heightMMf - topMMf - bottomMMf)); + + // Now switch to Landscape mode, size should be unchanged, but rect and metrics should change + writer.setPageOrientation(QPageLayout::Landscape); + if (pageSize < 0) { + QCOMPARE(writer.pageSize(), QPdfWriter::Custom); + QCOMPARE(writer.pageLayout().pageSize().id(), QPageSize::Custom); + } else { + QCOMPARE(writer.pageSize(), QPdfWriter::PageSize(pageSize)); + QCOMPARE(writer.pageLayout().pageSize().id(), QPageSize::PageSizeId(pageSize)); + } + QCOMPARE(writer.pageLayout().orientation(), QPageLayout::Landscape); + QCOMPARE(writer.margins().left, leftMMf); + QCOMPARE(writer.margins().right, rightMMf); + QCOMPARE(writer.margins().top, topMMf); + QCOMPARE(writer.margins().bottom, bottomMMf); + + // QPagedPaintDevice::pageSizeMM() always returns Portrait + QCOMPARE(writer.pageSizeMM(), sizeMMf); + + // QPagedPaintDevice::widthMM() and heightMM() are paint metrics and always return set orientation + QCOMPARE(writer.widthMM(), qRound(heightMMf - leftMMf - rightMMf)); + QCOMPARE(writer.heightMM(), qRound(widthMMf - topMMf - bottomMMf)); + + // QPdfWriter::fullRect() always returns set orientation + QCOMPARE(writer.pageLayout().fullRect(QPageLayout::Millimeter), QRectF(0, 0, heightMMf, widthMMf)); + + // QPdfWriter::paintRect() always returns set orientation + QCOMPARE(writer.pageLayout().paintRect(QPageLayout::Millimeter), QRectF(leftMMf, topMMf, heightMMf - leftMMf - rightMMf, widthMMf - topMMf - bottomMMf)); + + + // Now while in Landscape mode, set the size again, results should be the same + if (pageSize < 0) { + writer.setPageSizeMM(sizeMMf); + QCOMPARE(writer.pageSize(), QPdfWriter::Custom); + QCOMPARE(writer.pageLayout().pageSize().id(), QPageSize::Custom); + } else { + writer.setPageSize(QPdfWriter::PageSize(pageSize)); + QCOMPARE(writer.pageSize(), QPdfWriter::PageSize(pageSize)); + QCOMPARE(writer.pageLayout().pageSize().id(), QPageSize::PageSizeId(pageSize)); + } + QCOMPARE(writer.pageLayout().orientation(), QPageLayout::Landscape); + QCOMPARE(writer.margins().left, leftMMf); + QCOMPARE(writer.margins().right, rightMMf); + QCOMPARE(writer.margins().top, topMMf); + QCOMPARE(writer.margins().bottom, bottomMMf); + + // QPagedPaintDevice::pageSizeMM() always returns Portrait + QCOMPARE(writer.pageSizeMM(), sizeMMf); + + // QPagedPaintDevice::widthMM() and heightMM() are paint metrics and always return set orientation + QCOMPARE(writer.widthMM(), qRound(heightMMf - leftMMf - rightMMf)); + QCOMPARE(writer.heightMM(), qRound(widthMMf - topMMf - bottomMMf)); + + // QPdfWriter::fullRect() always returns set orientation + QCOMPARE(writer.pageLayout().fullRect(QPageLayout::Millimeter), QRectF(0, 0, heightMMf, widthMMf)); + + // QPdfWriter::paintRect() always returns set orientation + QCOMPARE(writer.pageLayout().paintRect(QPageLayout::Millimeter), QRectF(leftMMf, topMMf, heightMMf - leftMMf - rightMMf, widthMMf - topMMf - bottomMMf)); +} + +QTEST_MAIN(tst_QPdfWriter) + +#include "tst_qpdfwriter.moc" |