From 05251bca1dc5aabdd1e4548a1bf1bf757f615791 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Tue, 26 Feb 2019 14:55:33 +0100 Subject: 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 --- src/gui/image/qpnghandler.cpp | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) (limited to 'src/gui/image') 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 #include -#include #include #include @@ -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"); -- cgit v1.2.3