From 5e94d455db0370ae1076219289c7a675b3e7fdd3 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Mon, 22 Jul 2024 11:11:58 +0200 Subject: [PATCH] Add rvalue versions to new convertedToColorSpace method Change-Id: I484d8a4258c2a0597549b6bdc6b7e5c144d3cf10 Reviewed-by: Ahmad Samir (cherry picked from commit 20e81dbe29cd9964b1a536901eba7f2c192385ef) Reviewed-by: Qt Cherry-pick Bot --- src/gui/image/qimage.cpp | 32 ++++++++++++++++++++++++++++---- src/gui/image/qimage.h | 5 ++++- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp index 87959177c75..d043ed57e1b 100644 --- a/src/gui/image/qimage.cpp +++ b/src/gui/image/qimage.cpp @@ -5057,7 +5057,8 @@ void QImage::convertToColorSpace(const QColorSpace &colorSpace) } if (d->colorSpace == colorSpace) return; - if (!qt_compatibleColorModelTarget(pixelFormat().colorModel(), colorSpace.colorModel(), colorSpace.transformModel())) { + if (!qt_compatibleColorModelTarget(pixelFormat().colorModel(), + colorSpace.colorModel(), colorSpace.transformModel())) { *this = convertedToColorSpace(colorSpace); return; } @@ -5088,7 +5089,8 @@ void QImage::convertToColorSpace(const QColorSpace &colorSpace, QImage::Format f qWarning() << "QImage::convertToColorSpace: Output colorspace is not valid"; return; } - if (!qt_compatibleColorModelTarget(toPixelFormat(format).colorModel(), colorSpace.colorModel(), colorSpace.transformModel())) { + if (!qt_compatibleColorModelTarget(toPixelFormat(format).colorModel(), + colorSpace.colorModel(), colorSpace.transformModel())) { qWarning() << "QImage::convertToColorSpace: Color space is not compatible with format"; return; } @@ -5129,6 +5131,8 @@ QImage QImage::convertedToColorSpace(const QColorSpace &colorSpace) const } /*! + \fn QImage QImage::convertedToColorSpace(const QColorSpace &colorSpace, QImage::Format format, Qt::ImageConversionFlags flags) const & + \fn QImage QImage::convertedToColorSpace(const QColorSpace &colorSpace, QImage::Format format, Qt::ImageConversionFlags flags) && \since 6.8 Returns the image converted to \a colorSpace and \a format. @@ -5140,7 +5144,7 @@ QImage QImage::convertedToColorSpace(const QColorSpace &colorSpace) const \sa colorTransformed() */ -QImage QImage::convertedToColorSpace(const QColorSpace &colorSpace, QImage::Format format, Qt::ImageConversionFlags flags) const +QImage QImage::convertedToColorSpace(const QColorSpace &colorSpace, QImage::Format format, Qt::ImageConversionFlags flags) const & { if (!d || !d->colorSpace.isValid()) return QImage(); @@ -5148,7 +5152,8 @@ QImage QImage::convertedToColorSpace(const QColorSpace &colorSpace, QImage::Form qWarning() << "QImage::convertedToColorSpace: Output colorspace is not valid"; return QImage(); } - if (!qt_compatibleColorModelTarget(toPixelFormat(format).colorModel(), colorSpace.colorModel(), colorSpace.transformModel())) { + if (!qt_compatibleColorModelTarget(toPixelFormat(format).colorModel(), + colorSpace.colorModel(), colorSpace.transformModel())) { qWarning() << "QImage::convertedToColorSpace: Color space is not compatible with format"; return QImage(); } @@ -5159,6 +5164,25 @@ QImage QImage::convertedToColorSpace(const QColorSpace &colorSpace, QImage::Form return image; } +QImage QImage::convertedToColorSpace(const QColorSpace &colorSpace, QImage::Format format, Qt::ImageConversionFlags flags) && +{ + if (!d || !d->colorSpace.isValid()) + return QImage(); + if (!colorSpace.isValidTarget()) { + qWarning() << "QImage::convertedToColorSpace: Output colorspace is not valid"; + return QImage(); + } + if (!qt_compatibleColorModelTarget(toPixelFormat(format).colorModel(), + colorSpace.colorModel(), colorSpace.transformModel())) { + qWarning() << "QImage::convertedToColorSpace: Color space is not compatible with format"; + return QImage(); + } + if (d->colorSpace == colorSpace) + return convertedTo(format, flags); + applyColorTransform(d->colorSpace.transformationToColorSpace(colorSpace), format, flags); + return std::move(*this); +} + /*! \since 5.14 diff --git a/src/gui/image/qimage.h b/src/gui/image/qimage.h index cba50e5e4cc..cad506c1282 100644 --- a/src/gui/image/qimage.h +++ b/src/gui/image/qimage.h @@ -232,7 +232,10 @@ public: QColorSpace colorSpace() const; [[nodiscard]] QImage convertedToColorSpace(const QColorSpace &colorSpace) const; - [[nodiscard]] QImage convertedToColorSpace(const QColorSpace &colorSpace, QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) const; + [[nodiscard]] QImage convertedToColorSpace(const QColorSpace &colorSpace, QImage::Format format, + Qt::ImageConversionFlags flags = Qt::AutoColor) const &; + [[nodiscard]] QImage convertedToColorSpace(const QColorSpace &colorSpace, QImage::Format format, + Qt::ImageConversionFlags flags = Qt::AutoColor) &&; void convertToColorSpace(const QColorSpace &colorSpace); void convertToColorSpace(const QColorSpace &colorSpace, QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor); void setColorSpace(const QColorSpace &colorSpace);