diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-02-26 14:55:33 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-08-02 21:07:54 +0200 |
commit | 05251bca1dc5aabdd1e4548a1bf1bf757f615791 (patch) | |
tree | 377406bb433923001f2aa937eaf8fc89ecf23be7 /src/gui/image | |
parent | 092074f9df073c9af075810602d61ac54a115d89 (diff) |
Add an easier way to change colorspaces
Adds setters for transfer-functions and primaries.
This allows us to remove use of private QColorSpace API from the PNG
handler.
Change-Id: Ieeff81c813c253649500acd1e53f35247b872325
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Diffstat (limited to 'src/gui/image')
-rw-r--r-- | src/gui/image/qpnghandler.cpp | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/src/gui/image/qpnghandler.cpp b/src/gui/image/qpnghandler.cpp index 3bf4e9db15..16d6c25b8b 100644 --- a/src/gui/image/qpnghandler.cpp +++ b/src/gui/image/qpnghandler.cpp @@ -53,7 +53,6 @@ #include <qcolorspace.h> #include <private/qcolorspace_p.h> -#include <private/qicc_p.h> #include <png.h> #include <pngconf.h> @@ -681,10 +680,7 @@ bool QPngHandlerPrivate::readPngImage(QImage *outImage) // This configuration forces gamma correction and // thus changes the output colorspace png_set_gamma(png_ptr, 1.0f / gamma, fileGamma); - QColorSpacePrivate *csPrivate = QColorSpacePrivate::getWritable(colorSpace); - csPrivate->transferFunction = QColorSpace::TransferFunction::Gamma; - csPrivate->gamma = 1.0f / gamma; - csPrivate->setTransferFunction(); + colorSpace = colorSpace.withTransferFunction(QColorSpace::TransferFunction::Gamma, 1.0f / gamma); colorSpaceState = GammaChrm; } @@ -984,14 +980,8 @@ bool QPNGImageWriter::writeImage(const QImage& image, volatile int compression_i if (image.colorSpace().isValid()) { QColorSpace cs = image.colorSpace(); // Support the old gamma making it override transferfunction. - if (gamma != 0.0 && !qFuzzyCompare(cs.gamma(), 1.0f / gamma)) { - QColorSpacePrivate *csPrivate = QColorSpacePrivate::getWritable(cs); - csPrivate->transferFunction = QColorSpace::TransferFunction::Gamma; - csPrivate->gamma = 1.0f / gamma; - csPrivate->setTransferFunction(); - csPrivate->iccProfile.clear(); - csPrivate->description.clear(); - } + if (gamma != 0.0 && !qFuzzyCompare(cs.gamma(), 1.0f / gamma)) + cs = cs.withTransferFunction(QColorSpace::TransferFunction::Gamma, 1.0f / gamma); QByteArray iccProfileName = QColorSpacePrivate::get(cs)->description.toLatin1(); if (iccProfileName.isEmpty()) iccProfileName = QByteArrayLiteral("Custom"); |