summaryrefslogtreecommitdiffstats
path: root/tests/auto/gui/painting
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2022-03-16 12:21:40 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2022-05-26 09:06:45 +0200
commit734c9f2df26b12b89c8a4de4ae43a15726ff1886 (patch)
tree4be65958c6b790c63cd35371485c7338cec02ae0 /tests/auto/gui/painting
parent34c21d040766d54d959ed835bdf5464f657b7693 (diff)
Expand QColorTransform
Add comparison operators and an isIdentity() method to detect (1-1) transforms. [ChangeLog][QtGui] Added QColorTransform::isIdentity() method. Added QImage::colorTransformed() transitive method. Change-Id: I5fbcd14e75f2179e43e94e8c5f42cd0a5600790b Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Diffstat (limited to 'tests/auto/gui/painting')
-rw-r--r--tests/auto/gui/painting/qcolortransform/tst_qcolortransform.cpp48
1 files changed, 31 insertions, 17 deletions
diff --git a/tests/auto/gui/painting/qcolortransform/tst_qcolortransform.cpp b/tests/auto/gui/painting/qcolortransform/tst_qcolortransform.cpp
index c09d3fc11e..c2205a02d1 100644
--- a/tests/auto/gui/painting/qcolortransform/tst_qcolortransform.cpp
+++ b/tests/auto/gui/painting/qcolortransform/tst_qcolortransform.cpp
@@ -46,6 +46,8 @@ private slots:
void mapRGB64();
void mapQColor_data();
void mapQColor();
+
+ void transformIsIdentity();
};
tst_QColorTransform::tst_QColorTransform()
@@ -55,32 +57,30 @@ tst_QColorTransform::tst_QColorTransform()
void tst_QColorTransform::mapRGB32_data()
{
QTest::addColumn<QColorTransform>("transform");
- QTest::addColumn<bool>("isIdentity");
QTest::addColumn<bool>("sharesRed");
- QTest::newRow("default") << QColorTransform() << true << true;
- QTest::newRow("sRGB to Linear") << QColorSpace(QColorSpace::SRgb).transformationToColorSpace(QColorSpace::SRgbLinear) << false << true;
- QTest::newRow("AdobeRGB to sRGB") << QColorSpace(QColorSpace::AdobeRgb).transformationToColorSpace(QColorSpace::SRgb) << false << true;
+ QTest::newRow("default") << QColorTransform() << true;
+ QTest::newRow("sRGB to Linear") << QColorSpace(QColorSpace::SRgb).transformationToColorSpace(QColorSpace::SRgbLinear) << true;
+ QTest::newRow("AdobeRGB to sRGB") << QColorSpace(QColorSpace::AdobeRgb).transformationToColorSpace(QColorSpace::SRgb) << true;
QTest::newRow("Linear AdobeRGB to Linear sRGB")
<< QColorSpace(QColorSpace::AdobeRgb).withTransferFunction(QColorSpace::TransferFunction::Linear).transformationToColorSpace(
QColorSpace::SRgb)
- << false << true;
- QTest::newRow("sRgb to AdobeRGB") << QColorSpace(QColorSpace::SRgb).transformationToColorSpace(QColorSpace::AdobeRgb) << false << true;
- QTest::newRow("DP3 to sRGB") << QColorSpace(QColorSpace::DisplayP3).transformationToColorSpace(QColorSpace::SRgb) << false << false;
+ << true;
+ QTest::newRow("sRgb to AdobeRGB") << QColorSpace(QColorSpace::SRgb).transformationToColorSpace(QColorSpace::AdobeRgb) << true;
+ QTest::newRow("DP3 to sRGB") << QColorSpace(QColorSpace::DisplayP3).transformationToColorSpace(QColorSpace::SRgb) << false;
QTest::newRow("DP3 to Linear DP3")
<< QColorSpace(QColorSpace::DisplayP3).transformationToColorSpace(
QColorSpace(QColorSpace::DisplayP3).withTransferFunction(QColorSpace::TransferFunction::Linear))
- << false << false;
+ << false;
QTest::newRow("Linear DP3 to Linear sRGB")
<< QColorSpace(QColorSpace::DisplayP3).withTransferFunction(QColorSpace::TransferFunction::Linear).transformationToColorSpace(
QColorSpace::SRgb)
- << false << false;
+ << false;
}
void tst_QColorTransform::mapRGB32()
{
QFETCH(QColorTransform, transform);
- QFETCH(bool, isIdentity);
QFETCH(bool, sharesRed);
// Do basic sanity tests of conversions between similar sane color spaces
@@ -89,7 +89,7 @@ void tst_QColorTransform::mapRGB32()
QVERIFY(qRed(result) < qGreen(result));
QVERIFY(qGreen(result) < qBlue(result));
QCOMPARE(qAlpha(result), 255);
- if (isIdentity)
+ if (transform.isIdentity())
QVERIFY(result == testColor);
else
QVERIFY(result != testColor);
@@ -99,7 +99,7 @@ void tst_QColorTransform::mapRGB32()
QVERIFY(qRed(result) > qGreen(result));
QVERIFY(qGreen(result) > qBlue(result));
QCOMPARE(qAlpha(result), 255);
- if (isIdentity)
+ if (transform.isIdentity())
QVERIFY(result == testColor);
else
QVERIFY(result != testColor);
@@ -109,7 +109,7 @@ void tst_QColorTransform::mapRGB32()
QVERIFY(qRed(result) < qGreen(result));
QVERIFY(qGreen(result) < qBlue(result));
QCOMPARE(qAlpha(result), 128);
- if (isIdentity)
+ if (transform.isIdentity())
QVERIFY(result == testColor);
else
QVERIFY(result != testColor);
@@ -148,7 +148,6 @@ void tst_QColorTransform::mapRGB64_data()
void tst_QColorTransform::mapRGB64()
{
QFETCH(QColorTransform, transform);
- QFETCH(bool, isIdentity);
QFETCH(bool, sharesRed);
QRgba64 testColor = QRgba64::fromRgba(128, 64, 32, 255);
@@ -156,7 +155,7 @@ void tst_QColorTransform::mapRGB64()
QVERIFY(result.red() > result.green());
QVERIFY(result.green() > result.blue());
QCOMPARE(result.alpha(), 0xffff);
- if (isIdentity)
+ if (transform.isIdentity())
QVERIFY(result == testColor);
else
QVERIFY(result != testColor);
@@ -189,7 +188,6 @@ void tst_QColorTransform::mapQColor_data()
void tst_QColorTransform::mapQColor()
{
QFETCH(QColorTransform, transform);
- QFETCH(bool, isIdentity);
QFETCH(bool, sharesRed);
QColor testColor(32, 64, 128);
@@ -197,7 +195,7 @@ void tst_QColorTransform::mapQColor()
QVERIFY(result.redF() < result.greenF());
QVERIFY(result.greenF() < result.blueF());
QCOMPARE(result.alphaF(), 1.0f);
- if (isIdentity)
+ if (transform.isIdentity())
QVERIFY(result == testColor);
else
QVERIFY(result != testColor);
@@ -222,5 +220,21 @@ void tst_QColorTransform::mapQColor()
QVERIFY(result.blueF() >= 1.0f);
}
+void tst_QColorTransform::transformIsIdentity()
+{
+ QColorTransform ct;
+ QVERIFY(ct.isIdentity());
+
+ QColorSpace cs = QColorSpace::SRgb;
+ ct = cs.transformationToColorSpace(QColorSpace::SRgb);
+ QVERIFY(ct.isIdentity());
+
+ ct = cs.transformationToColorSpace(QColorSpace::SRgbLinear);
+ QVERIFY(!ct.isIdentity());
+
+ ct = cs.withTransferFunction(QColorSpace::TransferFunction::Linear).transformationToColorSpace(QColorSpace::SRgbLinear);
+ QVERIFY(ct.isIdentity());
+}
+
QTEST_MAIN(tst_QColorTransform)
#include "tst_qcolortransform.moc"