diff options
Diffstat (limited to 'src/gui/painting/qpdfwriter.cpp')
-rw-r--r-- | src/gui/painting/qpdfwriter.cpp | 227 |
1 files changed, 42 insertions, 185 deletions
diff --git a/src/gui/painting/qpdfwriter.cpp b/src/gui/painting/qpdfwriter.cpp index 32f2194da3..bce65927ab 100644 --- a/src/gui/painting/qpdfwriter.cpp +++ b/src/gui/painting/qpdfwriter.cpp @@ -1,41 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtGui module 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include <qpdfwriter.h> @@ -310,183 +274,76 @@ void QPdfWriter::addFileAttachment(const QString &fileName, const QByteArray &da d->engine->addFileAttachment(fileName, data, mimeType); } -// Defined in QPagedPaintDevice but non-virtual, add QPdfWriter specific doc here -#ifdef Q_QDOC /*! - \fn bool QPdfWriter::setPageLayout(const QPageLayout &newPageLayout) - \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() -*/ - -/*! - \fn bool QPdfWriter::setPageSize(const QPageSize &pageSize) - \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. - - \sa pageLayout() -*/ - -/*! - \fn bool QPdfWriter::setPageOrientation(QPageLayout::Orientation orientation) - \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() -*/ - -/*! - \fn bool QPdfWriter::setPageMargins(const QMarginsF &margins) - \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. + \internal - \sa pageLayout() + Returns the metric for the given \a id. */ +int QPdfWriter::metric(PaintDeviceMetric id) const +{ + Q_D(const QPdfWriter); + return d->engine->metric(id); +} /*! - \fn bool QPdfWriter::setPageMargins(const QMarginsF &margins, QPageLayout::Unit units) - \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() + \reimp */ +bool QPdfWriter::newPage() +{ + Q_D(QPdfWriter); -/*! - \fn QPageLayout QPdfWriter::pageLayout() const - \since 5.3 - - 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() -*/ -#endif + return d->engine->newPage(); +} -#if QT_DEPRECATED_SINCE(5, 14) -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED /*! - \reimp + \enum QPdfWriter::ColorModel + \since 6.8 - \obsolete Use setPageSize(QPageSize(id)) instead + This enumeration describes the way in which the PDF engine interprets + stroking and filling colors, set as a QPainter's pen or brush (via + QPen and QBrush). - \sa setPageSize() -*/ + \value RGB All colors are converted to RGB and saved as such in the + PDF. -void QPdfWriter::setPageSize(PageSize size) -{ - setPageSize(QPageSize(QPageSize::PageSizeId(size))); -} + \value Grayscale All colors are converted to grayscale. For backwards + compatibility, they are emitted in the PDF output as RGB colors, with + identical quantities of red, green and blue. -/*! - \reimp + \value CMYK All colors are converted to CMYK and saved as such. - \obsolete Use setPageSize(QPageSize(size, QPageSize::Millimeter)) instead + \value Auto RGB colors are emitted as RGB; CMYK colors are emitted as + CMYK. Colors of any other color spec are converted to RGB. + This is the default since Qt 6.8. - \sa setPageSize() + \sa QColor, QGradient */ -void QPdfWriter::setPageSizeMM(const QSizeF &size) -{ - setPageSize(QPageSize(size, QPageSize::Millimeter)); -} -QT_WARNING_POP -#endif - /*! - \internal + \since 6.8 - Returns the metric for the given \a id. + Returns the color model used by this PDF writer. + The default is QPdfWriter::ColorModel::Auto. */ -int QPdfWriter::metric(PaintDeviceMetric id) const +QPdfWriter::ColorModel QPdfWriter::colorModel() const { Q_D(const QPdfWriter); - return d->engine->metric(id); + return static_cast<ColorModel>(d->engine->d_func()->colorModel); } /*! - \reimp + \since 6.8 + + Sets the color model used by this PDF writer to \a model. */ -bool QPdfWriter::newPage() +void QPdfWriter::setColorModel(ColorModel model) { Q_D(QPdfWriter); - - return d->engine->newPage(); -} - - -#if QT_DEPRECATED_SINCE(5, 14) -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED -/*! - \reimp - - \obsolete Use setPageMargins(QMarginsF(l, t, r, b), QPageLayout::Millimeter) instead - - \sa setPageMargins() - */ -void QPdfWriter::setMargins(const Margins &m) -{ - setPageMargins(QMarginsF(m.left, m.top, m.right, m.bottom), QPageLayout::Millimeter); + d->engine->d_func()->colorModel = static_cast<QPdfEngine::ColorModel>(model); } -QT_WARNING_POP -#endif QT_END_NAMESPACE +#include "moc_qpdfwriter.cpp" + #endif // QT_NO_PDF |