Add rvalue versions to new convertedToColorSpace method

Change-Id: I484d8a4258c2a0597549b6bdc6b7e5c144d3cf10
Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
(cherry picked from commit 20e81dbe29cd9964b1a536901eba7f2c192385ef)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Allan Sandfeld Jensen 2024-07-22 11:11:58 +02:00 committed by Qt Cherry-pick Bot
parent db78bba3f4
commit 5e94d455db
2 changed files with 32 additions and 5 deletions

View File

@ -5057,7 +5057,8 @@ void QImage::convertToColorSpace(const QColorSpace &colorSpace)
} }
if (d->colorSpace == colorSpace) if (d->colorSpace == colorSpace)
return; return;
if (!qt_compatibleColorModelTarget(pixelFormat().colorModel(), colorSpace.colorModel(), colorSpace.transformModel())) { if (!qt_compatibleColorModelTarget(pixelFormat().colorModel(),
colorSpace.colorModel(), colorSpace.transformModel())) {
*this = convertedToColorSpace(colorSpace); *this = convertedToColorSpace(colorSpace);
return; return;
} }
@ -5088,7 +5089,8 @@ void QImage::convertToColorSpace(const QColorSpace &colorSpace, QImage::Format f
qWarning() << "QImage::convertToColorSpace: Output colorspace is not valid"; qWarning() << "QImage::convertToColorSpace: Output colorspace is not valid";
return; 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"; qWarning() << "QImage::convertToColorSpace: Color space is not compatible with format";
return; 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 \since 6.8
Returns the image converted to \a colorSpace and \a format. Returns the image converted to \a colorSpace and \a format.
@ -5140,7 +5144,7 @@ QImage QImage::convertedToColorSpace(const QColorSpace &colorSpace) const
\sa colorTransformed() \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()) if (!d || !d->colorSpace.isValid())
return QImage(); return QImage();
@ -5148,7 +5152,8 @@ QImage QImage::convertedToColorSpace(const QColorSpace &colorSpace, QImage::Form
qWarning() << "QImage::convertedToColorSpace: Output colorspace is not valid"; qWarning() << "QImage::convertedToColorSpace: Output colorspace is not valid";
return QImage(); 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"; qWarning() << "QImage::convertedToColorSpace: Color space is not compatible with format";
return QImage(); return QImage();
} }
@ -5159,6 +5164,25 @@ QImage QImage::convertedToColorSpace(const QColorSpace &colorSpace, QImage::Form
return image; 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 \since 5.14

View File

@ -232,7 +232,10 @@ public:
QColorSpace colorSpace() const; QColorSpace colorSpace() const;
[[nodiscard]] QImage convertedToColorSpace(const 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);
void convertToColorSpace(const QColorSpace &colorSpace, QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor); void convertToColorSpace(const QColorSpace &colorSpace, QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor);
void setColorSpace(const QColorSpace &colorSpace); void setColorSpace(const QColorSpace &colorSpace);