File indexing completed on 2025-02-02 04:17:44

0001 /*
0002  *  SPDX-License-Identifier: GPL-3.0-or-later
0003  */
0004 
0005 #include "TestColorConversion.h"
0006 #include "KoColorConversions.h"
0007 
0008 #include <simpletest.h>
0009 
0010 void TestColorConversion::testRGBHSV()
0011 {
0012     float r, g, b, h, s, v;
0013 
0014     RGBToHSV(1, 0, 0, &h, &s, &v);
0015     QCOMPARE(h, 0.0f);
0016     QCOMPARE(s, 1.0f);
0017     QCOMPARE(v, 1.0f);
0018 
0019     RGBToHSV(1, 1, 0, &h, &s, &v);
0020     QCOMPARE(h, 60.0f);
0021     QCOMPARE(s, 1.0f);
0022     QCOMPARE(v, 1.0f);
0023 
0024     RGBToHSV(0, 1, 0, &h, &s, &v);
0025     QCOMPARE(h, 120.0f);
0026     QCOMPARE(s, 1.0f);
0027     QCOMPARE(v, 1.0f);
0028 
0029     RGBToHSV(0, 1, 1, &h, &s, &v);
0030     QCOMPARE(h, 180.0f);
0031     QCOMPARE(s, 1.0f);
0032     QCOMPARE(v, 1.0f);
0033 
0034     RGBToHSV(0, 0, 1, &h, &s, &v);
0035     QCOMPARE(h, 240.0f);
0036     QCOMPARE(s, 1.0f);
0037     QCOMPARE(v, 1.0f);
0038 
0039     RGBToHSV(1, 0, 1, &h, &s, &v);
0040     QCOMPARE(h, 300.0f);
0041     QCOMPARE(s, 1.0f);
0042     QCOMPARE(v, 1.0f);
0043 
0044     RGBToHSV(0, 0, 0, &h, &s, &v);
0045     QCOMPARE(h, -1.0f);
0046     QCOMPARE(s, 0.0f);
0047     QCOMPARE(v, 0.0f);
0048 
0049     RGBToHSV(1, 1, 1, &h, &s, &v);
0050     QCOMPARE(h, -1.0f);
0051     QCOMPARE(s, 0.0f);
0052     QCOMPARE(v, 1.0f);
0053 
0054     RGBToHSV(0.5, 0.25, 0.75, &h, &s, &v);
0055     QCOMPARE(h, 270.0f);
0056     QCOMPARE(s, 0.666667f);
0057     QCOMPARE(v, 0.75f);
0058 
0059     HSVToRGB(0, 1, 1, &r, &g, &b);
0060     QCOMPARE(r, 1.0f);
0061     QCOMPARE(g, 0.0f);
0062     QCOMPARE(b, 0.0f);
0063 
0064     HSVToRGB(60, 1, 1, &r, &g, &b);
0065     QCOMPARE(r, 1.0f);
0066     QCOMPARE(g, 1.0f);
0067     QCOMPARE(b, 0.0f);
0068 
0069     HSVToRGB(120, 1, 1, &r, &g, &b);
0070     QCOMPARE(r, 0.0f);
0071     QCOMPARE(g, 1.0f);
0072     QCOMPARE(b, 0.0f);
0073 
0074     HSVToRGB(180, 1, 1, &r, &g, &b);
0075     QCOMPARE(r, 0.0f);
0076     QCOMPARE(g, 1.0f);
0077     QCOMPARE(b, 1.0f);
0078 
0079     HSVToRGB(240, 1, 1, &r, &g, &b);
0080     QCOMPARE(r, 0.0f);
0081     QCOMPARE(g, 0.0f);
0082     QCOMPARE(b, 1.0f);
0083 
0084     HSVToRGB(300, 1, 1, &r, &g, &b);
0085     QCOMPARE(r, 1.0f);
0086     QCOMPARE(g, 0.0f);
0087     QCOMPARE(b, 1.0f);
0088 
0089     HSVToRGB(-1, 0, 0, &r, &g, &b);
0090     QCOMPARE(r, 0.0f);
0091     QCOMPARE(g, 0.0f);
0092     QCOMPARE(b, 0.0f);
0093 
0094     HSVToRGB(-1, 0, 1, &r, &g, &b);
0095     QCOMPARE(r, 1.0f);
0096     QCOMPARE(g, 1.0f);
0097     QCOMPARE(b, 1.0f);
0098 
0099     HSVToRGB(270, 0.666667f, 0.75f, &r, &g, &b);
0100     QCOMPARE(r, 0.5f);
0101     QCOMPARE(g, 0.25f);
0102     QCOMPARE(b, 0.75f);
0103 }
0104 
0105 void TestColorConversion::testRGBHSL()
0106 {
0107     float r, g, b, h, s, l;
0108 
0109     RGBToHSL(1, 0, 0, &h, &s, &l);
0110     QCOMPARE(h, 0.0f);
0111     QCOMPARE(s, 1.0f);
0112     QCOMPARE(l, 0.5f);
0113 
0114     RGBToHSL(1, 1, 0, &h, &s, &l);
0115     QCOMPARE(h, 60.0f);
0116     QCOMPARE(s, 1.0f);
0117     QCOMPARE(l, 0.5f);
0118 
0119     RGBToHSL(0, 1, 0, &h, &s, &l);
0120     QCOMPARE(h, 120.0f);
0121     QCOMPARE(s, 1.0f);
0122     QCOMPARE(l, 0.5f);
0123 
0124     RGBToHSL(0, 1, 1, &h, &s, &l);
0125     QCOMPARE(h, 180.0f);
0126     QCOMPARE(s, 1.0f);
0127     QCOMPARE(l, 0.5f);
0128 
0129     RGBToHSL(0, 0, 1, &h, &s, &l);
0130     QCOMPARE(h, 240.0f);
0131     QCOMPARE(s, 1.0f);
0132     QCOMPARE(l, 0.5f);
0133 
0134     RGBToHSL(1, 0, 1, &h, &s, &l);
0135     QCOMPARE(h, 300.0f);
0136     QCOMPARE(s, 1.0f);
0137     QCOMPARE(l, 0.5f);
0138 
0139     RGBToHSL(0, 0, 0, &h, &s, &l);
0140     QCOMPARE(h, -1.0f);
0141     QCOMPARE(s, 0.0f);
0142     QCOMPARE(l, 0.0f);
0143 
0144     RGBToHSL(1, 1, 1, &h, &s, &l);
0145     QCOMPARE(h, -1.0f);
0146     QCOMPARE(s, 0.0f);
0147     QCOMPARE(l, 1.0f);
0148 
0149     RGBToHSL(0.5, 0.25, 0.75, &h, &s, &l);
0150     QCOMPARE(h, 270.0f);
0151     QCOMPARE(s, 0.5f);
0152     QCOMPARE(l, 0.5f);
0153 
0154     HSLToRGB(0, 1, 0.5, &r, &g, &b);
0155     QCOMPARE(r, 1.0f);
0156     QCOMPARE(g, 0.0f);
0157     QCOMPARE(b, 0.0f);
0158 
0159     HSLToRGB(60, 1, 0.5, &r, &g, &b);
0160     QCOMPARE(r, 1.0f);
0161     QCOMPARE(g, 1.0f);
0162     QCOMPARE(b, 0.0f);
0163 
0164     HSLToRGB(120, 1, 0.5, &r, &g, &b);
0165     QCOMPARE(r, 0.0f);
0166     QCOMPARE(g, 1.0f);
0167     QCOMPARE(b, 0.0f);
0168 
0169     HSLToRGB(180, 1, 0.5, &r, &g, &b);
0170     QCOMPARE(r, 0.0f);
0171     QCOMPARE(g, 1.0f);
0172     QCOMPARE(b, 1.0f);
0173 
0174     HSLToRGB(240, 1, 0.5, &r, &g, &b);
0175     QCOMPARE(r, 0.0f);
0176     QCOMPARE(g, 0.0f);
0177     QCOMPARE(b, 1.0f);
0178 
0179     HSLToRGB(300, 1, 0.5, &r, &g, &b);
0180     QCOMPARE(r, 1.0f);
0181     QCOMPARE(g, 0.0f);
0182     QCOMPARE(b, 1.0f);
0183 
0184     HSLToRGB(-1, 0, 0, &r, &g, &b);
0185     QCOMPARE(r, 0.0f);
0186     QCOMPARE(g, 0.0f);
0187     QCOMPARE(b, 0.0f);
0188 
0189     HSLToRGB(-1, 0, 1, &r, &g, &b);
0190     QCOMPARE(r, 1.0f);
0191     QCOMPARE(g, 1.0f);
0192     QCOMPARE(b, 1.0f);
0193 
0194     HSLToRGB(270, 0.5, 0.5, &r, &g, &b);
0195     QCOMPARE(r, 0.5f);
0196     QCOMPARE(g, 0.25f);
0197     QCOMPARE(b, 0.75f);
0198 }
0199 
0200 QTEST_GUILESS_MAIN(TestColorConversion)