diff options
author | Liang Qi <liang.qi@qt.io> | 2020-02-13 09:14:09 +0100 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@qt.io> | 2020-02-13 18:31:40 +0100 |
commit | 6b2535ea15cdbdb2355416b604f072fc13ff36b2 (patch) | |
tree | 4bf1560bab77c8b315850c5337ba31a0ea87b5f0 /src/gui/painting/qcolorspace.cpp | |
parent | 54c2cebabdda0280b8443c6947b6fee02445e138 (diff) | |
parent | 67491e2df5357706dbf88ddaf1f030ff095b4528 (diff) |
Merge remote-tracking branch 'origin/5.15' into dev
Conflicts:
examples/widgets/graphicsview/boxes/scene.h
src/corelib/Qt5CoreMacros.cmake
src/corelib/Qt6CoreMacros.cmake
src/network/ssl/qsslsocket.cpp
src/network/ssl/qsslsocket.h
src/platformsupport/fontdatabases/windows/qwindowsfontenginedirectwrite.cpp
src/testlib/CMakeLists.txt
src/testlib/.prev_CMakeLists.txt
tests/auto/corelib/tools/qscopeguard/tst_qscopeguard.cpp
Disabled building manual tests with CMake for now, because qmake
doesn't do it, and it confuses people.
Done-With: Alexandru Croitor <alexandru.croitor@qt.io>
Done-With: Volker Hilsheimer <volker.hilsheimer@qt.io>
Change-Id: I865ae347bd01f4e59f16d007b66d175a52f1f152
Diffstat (limited to 'src/gui/painting/qcolorspace.cpp')
-rw-r--r-- | src/gui/painting/qcolorspace.cpp | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/src/gui/painting/qcolorspace.cpp b/src/gui/painting/qcolorspace.cpp index 7ebd5f1bf4..7e7bbec870 100644 --- a/src/gui/painting/qcolorspace.cpp +++ b/src/gui/painting/qcolorspace.cpp @@ -549,8 +549,12 @@ float QColorSpace::gamma() const noexcept */ void QColorSpace::setTransferFunction(QColorSpace::TransferFunction transferFunction, float gamma) { - if (!isValid() || transferFunction == QColorSpace::TransferFunction::Custom) + if (transferFunction == TransferFunction::Custom) + return; + if (!d_ptr) { + d_ptr = new QColorSpacePrivate(Primaries::Custom, transferFunction, gamma); return; + } if (d_ptr->transferFunction == transferFunction && d_ptr->gamma == gamma) return; QColorSpacePrivate::getWritable(*this); // detach @@ -585,8 +589,12 @@ QColorSpace QColorSpace::withTransferFunction(QColorSpace::TransferFunction tran */ void QColorSpace::setPrimaries(QColorSpace::Primaries primariesId) { - if (!isValid() || primariesId == QColorSpace::Primaries::Custom) + if (primariesId == Primaries::Custom) return; + if (!d_ptr) { + d_ptr = new QColorSpacePrivate(primariesId, TransferFunction::Custom, 0.0f); + return; + } if (d_ptr->primaries == primariesId) return; QColorSpacePrivate::getWritable(*this); // detach @@ -605,11 +613,13 @@ void QColorSpace::setPrimaries(QColorSpace::Primaries primariesId) void QColorSpace::setPrimaries(const QPointF &whitePoint, const QPointF &redPoint, const QPointF &greenPoint, const QPointF &bluePoint) { - if (!isValid()) - return; QColorSpacePrimaries primaries(whitePoint, redPoint, greenPoint, bluePoint); if (!primaries.areValid()) return; + if (!d_ptr) { + d_ptr = new QColorSpacePrivate(primaries, TransferFunction::Custom, 0.0f); + return; + } QColorMatrix toXyz = primaries.toXyzMatrix(); if (QColorVector(primaries.whitePoint) == d_ptr->whitePoint && toXyz == d_ptr->toXyz) return; @@ -692,12 +702,14 @@ bool operator==(const QColorSpace &colorSpace1, const QColorSpace &colorSpace2) const bool valid1 = colorSpace1.isValid(); const bool valid2 = colorSpace2.isValid(); - if (!valid1 && !valid2) - return colorSpace1.d_ptr->iccProfile == colorSpace2.d_ptr->iccProfile; - else if (!valid1 || !valid2) + if (valid1 != valid2) return false; + if (!valid1 && !valid2) { + if (!colorSpace1.d_ptr->iccProfile.isEmpty() || !colorSpace2.d_ptr->iccProfile.isEmpty()) + return colorSpace1.d_ptr->iccProfile == colorSpace2.d_ptr->iccProfile; + } - // At this point one or both color spaces are unknown but valid, and must be compared in detail instead + // At this point one or both color spaces are unknown, and must be compared in detail instead if (colorSpace1.primaries() != QColorSpace::Primaries::Custom && colorSpace2.primaries() != QColorSpace::Primaries::Custom) { if (colorSpace1.primaries() != colorSpace2.primaries()) |