summaryrefslogtreecommitdiffstats
path: root/src/gui/image
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-02-26 14:55:33 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-08-02 21:07:54 +0200
commit05251bca1dc5aabdd1e4548a1bf1bf757f615791 (patch)
tree377406bb433923001f2aa937eaf8fc89ecf23be7 /src/gui/image
parent092074f9df073c9af075810602d61ac54a115d89 (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.cpp16
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");