summaryrefslogtreecommitdiff
path: root/src/resources/dye
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-12-21 20:59:23 +0300
committerAndrei Karas <akaras@inbox.ru>2016-12-21 20:59:23 +0300
commite59b20b4cff4bf54c0b2ea91dbf09345da9d5fe4 (patch)
tree6310f67027c697273736bc776ff984d7148b8798 /src/resources/dye
parentf37470c61e9913ff7ace2595de604c85f42b0e10 (diff)
downloadmanaplus-e59b20b4cff4bf54c0b2ea91dbf09345da9d5fe4.tar.gz
manaplus-e59b20b4cff4bf54c0b2ea91dbf09345da9d5fe4.tar.bz2
manaplus-e59b20b4cff4bf54c0b2ea91dbf09345da9d5fe4.tar.xz
manaplus-e59b20b4cff4bf54c0b2ea91dbf09345da9d5fe4.zip
Use different dye function versions in dye unit tests.
Diffstat (limited to 'src/resources/dye')
-rw-r--r--src/resources/dye/dye_unittest.cc919
1 files changed, 919 insertions, 0 deletions
diff --git a/src/resources/dye/dye_unittest.cc b/src/resources/dye/dye_unittest.cc
index 90103ca2f..e72609329 100644
--- a/src/resources/dye/dye_unittest.cc
+++ b/src/resources/dye/dye_unittest.cc
@@ -62,6 +62,8 @@
(a) * 16777216U + (b) * 65536U + (c) * 256U + CAST_U32(d)
#endif // SDL_BYTEORDER == SDL_BIG_ENDIAN
+#ifdef USE_OPENGL
+
TEST_CASE("Dye replaceSOGLColor 1 1")
{
DyePalette palette("#00ff00,000011", 6);
@@ -138,6 +140,105 @@ TEST_CASE("Dye replaceSOGLColor 8 1")
REQUIRE(data[7] == buildHex(0x60, 0x02, 0xff, 0x02));
}
+TEST_CASE("Dye replaceSOGLColor 1 1 default")
+{
+ DyePalette palette("#00ff00,000011", 6);
+ uint32_t data[1];
+ data[0] = buildHex(0x01, 0x02, 0x03, 0x10);
+ palette.replaceSOGLColorDefault(&data[0], 1);
+ REQUIRE(data[0] == buildHex(0x01, 0x02, 0x03, 0x10));
+}
+
+TEST_CASE("Dye replaceSOGLColor 1 2 default")
+{
+ DyePalette palette("#01ff02,030411", 6);
+ uint32_t data[1];
+ data[0] = buildHex(0x20, 0x02, 0xff, 0x01);
+ palette.replaceSOGLColorDefault(&data[0], 1);
+ REQUIRE(data[0] == buildHex(0x20, 0x11, 0x04, 0x03));
+}
+
+TEST_CASE("Dye replaceSOGLColor 1 3 default")
+{
+ DyePalette palette("#404040,200000,0100ee,102030", 6);
+ uint32_t data[1];
+ data[0] = buildHex(0x40, 0xee, 0x00, 0x01);
+ palette.replaceSOGLColorDefault(&data[0], 1);
+ REQUIRE(data[0] == buildHex(0x40, 0x30, 0x20, 0x10));
+}
+
+TEST_CASE("Dye replaceSOGLColor 2 1 default")
+{
+ DyePalette palette("#01ff02,030411", 6);
+ uint32_t data[2];
+ data[0] = buildHex(0x20, 0x02, 0xff, 0x01);
+ data[1] = buildHex(0x30, 0x02, 0xff, 0x01);
+ palette.replaceSOGLColorDefault(&data[0], 2);
+ REQUIRE(data[0] == buildHex(0x20, 0x11, 0x04, 0x03));
+ REQUIRE(data[1] == buildHex(0x30, 0x11, 0x04, 0x03));
+}
+
+TEST_CASE("Dye replaceSOGLColor 4 1 default")
+{
+ DyePalette palette("#01ff02,030411", 6);
+ uint32_t data[4];
+ data[0] = buildHex(0x20, 0x02, 0xff, 0x01);
+ data[1] = buildHex(0x30, 0x02, 0xff, 0x01);
+ data[2] = buildHex(0x40, 0x02, 0xff, 0x01);
+ data[3] = buildHex(0x50, 0x02, 0xff, 0x02);
+ palette.replaceSOGLColorDefault(&data[0], 4);
+ REQUIRE(data[0] == buildHex(0x20, 0x11, 0x04, 0x03));
+ REQUIRE(data[1] == buildHex(0x30, 0x11, 0x04, 0x03));
+ REQUIRE(data[2] == buildHex(0x40, 0x11, 0x04, 0x03));
+ REQUIRE(data[3] == buildHex(0x50, 0x02, 0xff, 0x02));
+}
+
+TEST_CASE("Dye replaceSOGLColor 8 1 default")
+{
+ DyePalette palette("#01ff02,030411,01ee02,010203", 6);
+ uint32_t data[8];
+ data[0] = buildHex(0x20, 0x02, 0xff, 0x01);
+ data[1] = buildHex(0x30, 0x02, 0xff, 0x01);
+ data[2] = buildHex(0x40, 0x02, 0xff, 0x01);
+ data[3] = buildHex(0x50, 0x02, 0xff, 0x02);
+ data[4] = buildHex(0x20, 0x02, 0xff, 0x01);
+ data[5] = buildHex(0x30, 0x02, 0xff, 0x01);
+ data[6] = buildHex(0x40, 0x02, 0xff, 0x01);
+ data[7] = buildHex(0x60, 0x02, 0xff, 0x02);
+ palette.replaceSOGLColorDefault(&data[0], 8);
+ REQUIRE(data[0] == buildHex(0x20, 0x11, 0x04, 0x03));
+ REQUIRE(data[1] == buildHex(0x30, 0x11, 0x04, 0x03));
+ REQUIRE(data[2] == buildHex(0x40, 0x11, 0x04, 0x03));
+ REQUIRE(data[3] == buildHex(0x50, 0x02, 0xff, 0x02));
+ REQUIRE(data[4] == buildHex(0x20, 0x11, 0x04, 0x03));
+ REQUIRE(data[5] == buildHex(0x30, 0x11, 0x04, 0x03));
+ REQUIRE(data[6] == buildHex(0x40, 0x11, 0x04, 0x03));
+ REQUIRE(data[7] == buildHex(0x60, 0x02, 0xff, 0x02));
+}
+
+TEST_CASE("Dye replaceSOGLColor 8 1 simd")
+{
+ DyePalette palette("#01ff02,030411,01ee02,010203", 6);
+ uint32_t data[8];
+ data[0] = buildHex(0x20, 0x02, 0xff, 0x01);
+ data[1] = buildHex(0x30, 0x02, 0xff, 0x01);
+ data[2] = buildHex(0x40, 0x02, 0xff, 0x01);
+ data[3] = buildHex(0x50, 0x02, 0xff, 0x02);
+ data[4] = buildHex(0x20, 0x02, 0xff, 0x01);
+ data[5] = buildHex(0x30, 0x02, 0xff, 0x01);
+ data[6] = buildHex(0x40, 0x02, 0xff, 0x01);
+ data[7] = buildHex(0x60, 0x02, 0xff, 0x02);
+ palette.replaceSOGLColorSimd(&data[0], 8);
+ REQUIRE(data[0] == buildHex(0x20, 0x11, 0x04, 0x03));
+ REQUIRE(data[1] == buildHex(0x30, 0x11, 0x04, 0x03));
+ REQUIRE(data[2] == buildHex(0x40, 0x11, 0x04, 0x03));
+ REQUIRE(data[3] == buildHex(0x50, 0x02, 0xff, 0x02));
+ REQUIRE(data[4] == buildHex(0x20, 0x11, 0x04, 0x03));
+ REQUIRE(data[5] == buildHex(0x30, 0x11, 0x04, 0x03));
+ REQUIRE(data[6] == buildHex(0x40, 0x11, 0x04, 0x03));
+ REQUIRE(data[7] == buildHex(0x60, 0x02, 0xff, 0x02));
+}
+
TEST_CASE("Dye replaceAOGLColor 1 1")
{
@@ -215,6 +316,106 @@ TEST_CASE("Dye replaceAOGLColor 8 1")
REQUIRE(data[7] == buildHex(0xff, 0x30, 0x20, 0x10));
}
+TEST_CASE("Dye replaceAOGLColor 1 1 default")
+{
+ DyePalette palette("#00ff0010,00001120", 8);
+ uint32_t data[1];
+ data[0] = buildHex(0x10, 0x03, 0x02, 0x01);
+ palette.replaceAOGLColorDefault(&data[0], 1);
+ REQUIRE(data[0] == buildHex(0x10, 0x03, 0x02, 0x01));
+}
+
+TEST_CASE("Dye replaceAOGLColor 1 2 default")
+{
+ DyePalette palette("#00ff0120,020311ff", 8);
+ uint32_t data[1];
+ data[0] = buildHex(0x20, 0x01, 0xff, 0x00);
+ palette.replaceAOGLColorDefault(&data[0], 1);
+ REQUIRE(data[0] == buildHex(0xff, 0x11, 0x03, 0x02));
+}
+
+TEST_CASE("Dye replaceAOGLColor 1 3 default")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[1];
+ data[0] = buildHex(0x40, 0xee, 0x00, 0x01);
+ palette.replaceAOGLColorDefault(&data[0], 1);
+ REQUIRE(data[0] == buildHex(0xff, 0x30, 0x20, 0x10));
+}
+
+TEST_CASE("Dye replaceAOGLColor 2 1 default")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[2];
+ data[0] = buildHex(0x40, 0xee, 0x00, 0x01);
+ data[1] = buildHex(0x40, 0xee, 0x00, 0x01);
+ palette.replaceAOGLColorDefault(&data[0], 2);
+ REQUIRE(data[0] == buildHex(0xff, 0x30, 0x20, 0x10));
+ REQUIRE(data[1] == buildHex(0xff, 0x30, 0x20, 0x10));
+}
+
+TEST_CASE("Dye replaceAOGLColor 4 1 default")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[4];
+ data[0] = buildHex(0x40, 0xee, 0x00, 0x01);
+ data[1] = buildHex(0x40, 0xee, 0x00, 0x01);
+ data[2] = buildHex(0x41, 0xee, 0x00, 0x01);
+ data[3] = buildHex(0x40, 0xee, 0x00, 0x01);
+ palette.replaceAOGLColorDefault(&data[0], 4);
+ REQUIRE(data[0] == buildHex(0xff, 0x30, 0x20, 0x10));
+ REQUIRE(data[1] == buildHex(0xff, 0x30, 0x20, 0x10));
+ REQUIRE(data[2] == buildHex(0x41, 0xee, 0x00, 0x01));
+ REQUIRE(data[3] == buildHex(0xff, 0x30, 0x20, 0x10));
+}
+
+TEST_CASE("Dye replaceAOGLColor 8 1 default")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[8];
+ data[0] = buildHex(0x40, 0xee, 0x00, 0x01);
+ data[1] = buildHex(0x40, 0xee, 0x00, 0x01);
+ data[2] = buildHex(0x41, 0xee, 0x00, 0x01);
+ data[3] = buildHex(0x40, 0xee, 0x00, 0x01);
+ data[4] = buildHex(0x40, 0xee, 0x00, 0x01);
+ data[5] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[6] = buildHex(0x41, 0xe0, 0x00, 0x01);
+ data[7] = buildHex(0x40, 0xee, 0x00, 0x01);
+ palette.replaceAOGLColorDefault(&data[0], 8);
+ REQUIRE(data[0] == buildHex(0xff, 0x30, 0x20, 0x10));
+ REQUIRE(data[1] == buildHex(0xff, 0x30, 0x20, 0x10));
+ REQUIRE(data[2] == buildHex(0x41, 0xee, 0x00, 0x01));
+ REQUIRE(data[3] == buildHex(0xff, 0x30, 0x20, 0x10));
+ REQUIRE(data[4] == buildHex(0xff, 0x30, 0x20, 0x10));
+ REQUIRE(data[5] == buildHex(0x00, 0x00, 0x00, 0x20));
+ REQUIRE(data[6] == buildHex(0x41, 0xe0, 0x00, 0x01));
+ REQUIRE(data[7] == buildHex(0xff, 0x30, 0x20, 0x10));
+}
+
+TEST_CASE("Dye replaceAOGLColor 8 1 simd")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[8];
+ data[0] = buildHex(0x40, 0xee, 0x00, 0x01);
+ data[1] = buildHex(0x40, 0xee, 0x00, 0x01);
+ data[2] = buildHex(0x41, 0xee, 0x00, 0x01);
+ data[3] = buildHex(0x40, 0xee, 0x00, 0x01);
+ data[4] = buildHex(0x40, 0xee, 0x00, 0x01);
+ data[5] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[6] = buildHex(0x41, 0xe0, 0x00, 0x01);
+ data[7] = buildHex(0x40, 0xee, 0x00, 0x01);
+ palette.replaceAOGLColorSimd(&data[0], 8);
+ REQUIRE(data[0] == buildHex(0xff, 0x30, 0x20, 0x10));
+ REQUIRE(data[1] == buildHex(0xff, 0x30, 0x20, 0x10));
+ REQUIRE(data[2] == buildHex(0x41, 0xee, 0x00, 0x01));
+ REQUIRE(data[3] == buildHex(0xff, 0x30, 0x20, 0x10));
+ REQUIRE(data[4] == buildHex(0xff, 0x30, 0x20, 0x10));
+ REQUIRE(data[5] == buildHex(0x00, 0x00, 0x00, 0x20));
+ REQUIRE(data[6] == buildHex(0x41, 0xe0, 0x00, 0x01));
+ REQUIRE(data[7] == buildHex(0xff, 0x30, 0x20, 0x10));
+}
+#endif // USE_OPENGL
+
TEST_CASE("Dye replaceSColor 1 1")
{
@@ -395,6 +596,364 @@ TEST_CASE("Dye replaceSColor 10 1")
REQUIRE(data[9] == buildHex(0x70, 0x60, 0x50, 0x80));
}
+TEST_CASE("Dye replaceSColor 1 1 default")
+{
+ DyePalette palette("#00ff00,000011", 6);
+ uint32_t data[1];
+ data[0] = buildHex(0x10, 0x03, 0x02, 0x01);
+ palette.replaceSColorDefault(&data[0], 1);
+ REQUIRE(data[0] == buildHex(0x10, 0x03, 0x02, 0x01));
+}
+
+TEST_CASE("Dye replaceSColor 1 2 default")
+{
+ DyePalette palette("#403020,706050", 6);
+ uint32_t data[1];
+ data[0] = buildHex(0x40, 0x30, 0x20, 0x10);
+ palette.replaceSColorDefault(&data[0], 1);
+ REQUIRE(data[0] == buildHex(0x70, 0x60, 0x50, 0x10));
+}
+
+TEST_CASE("Dye replaceSColor 1 3 default")
+{
+ DyePalette palette("#123456,000000,ff3020,706050", 6);
+ uint32_t data[1];
+ data[0] = buildHex(0xff, 0x30, 0x20, 0x10);
+ palette.replaceSColorDefault(&data[0], 1);
+ REQUIRE(data[0] == buildHex(0x70, 0x60, 0x50, 0x10));
+}
+
+TEST_CASE("Dye replaceSColor 2 1 default")
+{
+ DyePalette palette("#123456,000000,ff3020,706050", 6);
+ uint32_t data[2];
+ data[0] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[1] = buildHex(0xff, 0x30, 0x20, 0x20);
+ palette.replaceSColorDefault(&data[0], 2);
+ REQUIRE(data[0] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[1] == buildHex(0x70, 0x60, 0x50, 0x20));
+}
+
+TEST_CASE("Dye replaceSColor 3 1 default")
+{
+ DyePalette palette("#123456,000000,ff3020,706050", 6);
+ uint32_t data[3];
+ data[0] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[1] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[2] = buildHex(0xff, 0x30, 0x20, 0x30);
+ palette.replaceSColorDefault(&data[0], 3);
+ REQUIRE(data[0] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[1] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[2] == buildHex(0x70, 0x60, 0x50, 0x30));
+}
+
+TEST_CASE("Dye replaceSColor 4 1 default")
+{
+ DyePalette palette("#123456,000000,ff3020,706050", 6);
+ uint32_t data[4];
+ data[0] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[1] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[2] = buildHex(0xff, 0x40, 0x20, 0x10);
+ data[3] = buildHex(0xff, 0x30, 0x20, 0x20);
+ palette.replaceSColorDefault(&data[0], 4);
+ REQUIRE(data[0] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[1] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[2] == buildHex(0xff, 0x40, 0x20, 0x10));
+ REQUIRE(data[3] == buildHex(0x70, 0x60, 0x50, 0x20));
+}
+
+TEST_CASE("Dye replaceSColor 5 1 default")
+{
+ DyePalette palette("#123456,000000,ff3020,706050", 6);
+ uint32_t data[5];
+ data[0] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[1] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[2] = buildHex(0xff, 0x40, 0x20, 0x10);
+ data[3] = buildHex(0xff, 0x30, 0x20, 0x30);
+ data[4] = buildHex(0xff, 0x30, 0x20, 0x20);
+ palette.replaceSColorDefault(&data[0], 5);
+ REQUIRE(data[0] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[1] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[2] == buildHex(0xff, 0x40, 0x20, 0x10));
+ REQUIRE(data[3] == buildHex(0x70, 0x60, 0x50, 0x30));
+ REQUIRE(data[4] == buildHex(0x70, 0x60, 0x50, 0x20));
+}
+
+TEST_CASE("Dye replaceSColor 7 1 default")
+{
+ DyePalette palette("#123456,000000,ff3020,706050", 6);
+ uint32_t data[7];
+ data[0] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[1] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[2] = buildHex(0xff, 0x40, 0x20, 0x10);
+ data[3] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[4] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[5] = buildHex(0xff, 0x30, 0x20, 0x40);
+ data[6] = buildHex(0xff, 0x40, 0x20, 0x50);
+ palette.replaceSColorDefault(&data[0], 7);
+ REQUIRE(data[0] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[1] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[2] == buildHex(0xff, 0x40, 0x20, 0x10));
+ REQUIRE(data[3] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[4] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[5] == buildHex(0x70, 0x60, 0x50, 0x40));
+ REQUIRE(data[6] == buildHex(0xff, 0x40, 0x20, 0x50));
+}
+
+TEST_CASE("Dye replaceSColor 8 1 default")
+{
+ DyePalette palette("#123456,000000,ff3020,706050", 6);
+ uint32_t data[8];
+ data[0] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[1] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[2] = buildHex(0xff, 0x40, 0x20, 0x10);
+ data[3] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[4] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[5] = buildHex(0xff, 0x30, 0x20, 0x40);
+ data[6] = buildHex(0xff, 0x40, 0x20, 0x50);
+ data[7] = buildHex(0xff, 0x30, 0x20, 0x60);
+ palette.replaceSColorDefault(&data[0], 8);
+ REQUIRE(data[0] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[1] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[2] == buildHex(0xff, 0x40, 0x20, 0x10));
+ REQUIRE(data[3] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[4] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[5] == buildHex(0x70, 0x60, 0x50, 0x40));
+ REQUIRE(data[6] == buildHex(0xff, 0x40, 0x20, 0x50));
+ REQUIRE(data[7] == buildHex(0x70, 0x60, 0x50, 0x60));
+}
+
+TEST_CASE("Dye replaceSColor 9 1 default")
+{
+ DyePalette palette("#123456,000000,ff3020,706050", 6);
+ uint32_t data[9];
+ data[0] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[1] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[2] = buildHex(0xff, 0x40, 0x20, 0x10);
+ data[3] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[4] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[5] = buildHex(0xff, 0x30, 0x20, 0x40);
+ data[6] = buildHex(0xff, 0x40, 0x20, 0x50);
+ data[7] = buildHex(0xff, 0x30, 0x20, 0x60);
+ data[8] = buildHex(0xff, 0x30, 0x20, 0x70);
+ palette.replaceSColorDefault(&data[0], 9);
+ REQUIRE(data[0] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[1] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[2] == buildHex(0xff, 0x40, 0x20, 0x10));
+ REQUIRE(data[3] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[4] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[5] == buildHex(0x70, 0x60, 0x50, 0x40));
+ REQUIRE(data[6] == buildHex(0xff, 0x40, 0x20, 0x50));
+ REQUIRE(data[7] == buildHex(0x70, 0x60, 0x50, 0x60));
+ REQUIRE(data[8] == buildHex(0x70, 0x60, 0x50, 0x70));
+}
+
+TEST_CASE("Dye replaceSColor 10 1 default")
+{
+ DyePalette palette("#123456,000000,ff3020,706050", 6);
+ uint32_t data[10];
+ data[0] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[1] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[2] = buildHex(0xff, 0x40, 0x20, 0x10);
+ data[3] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[4] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[5] = buildHex(0xff, 0x30, 0x20, 0x40);
+ data[6] = buildHex(0xff, 0x40, 0x20, 0x50);
+ data[7] = buildHex(0xff, 0x30, 0x20, 0x60);
+ data[8] = buildHex(0x12, 0x34, 0x56, 0x70);
+ data[9] = buildHex(0xff, 0x30, 0x20, 0x80);
+ palette.replaceSColorDefault(&data[0], 10);
+ REQUIRE(data[0] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[1] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[2] == buildHex(0xff, 0x40, 0x20, 0x10));
+ REQUIRE(data[3] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[4] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[5] == buildHex(0x70, 0x60, 0x50, 0x40));
+ REQUIRE(data[6] == buildHex(0xff, 0x40, 0x20, 0x50));
+ REQUIRE(data[7] == buildHex(0x70, 0x60, 0x50, 0x60));
+ REQUIRE(data[8] == buildHex(0x00, 0x00, 0x00, 0x70));
+ REQUIRE(data[9] == buildHex(0x70, 0x60, 0x50, 0x80));
+}
+
+TEST_CASE("Dye replaceSColor 1 1 simd")
+{
+ DyePalette palette("#00ff00,000011", 6);
+ uint32_t data[1];
+ data[0] = buildHex(0x10, 0x03, 0x02, 0x01);
+ palette.replaceSColorSimd(&data[0], 1);
+ REQUIRE(data[0] == buildHex(0x10, 0x03, 0x02, 0x01));
+}
+
+TEST_CASE("Dye replaceSColor 1 2 simd")
+{
+ DyePalette palette("#403020,706050", 6);
+ uint32_t data[1];
+ data[0] = buildHex(0x40, 0x30, 0x20, 0x10);
+ palette.replaceSColorSimd(&data[0], 1);
+ REQUIRE(data[0] == buildHex(0x70, 0x60, 0x50, 0x10));
+}
+
+TEST_CASE("Dye replaceSColor 1 3 simd")
+{
+ DyePalette palette("#123456,000000,ff3020,706050", 6);
+ uint32_t data[1];
+ data[0] = buildHex(0xff, 0x30, 0x20, 0x10);
+ palette.replaceSColorSimd(&data[0], 1);
+ REQUIRE(data[0] == buildHex(0x70, 0x60, 0x50, 0x10));
+}
+
+TEST_CASE("Dye replaceSColor 2 1 simd")
+{
+ DyePalette palette("#123456,000000,ff3020,706050", 6);
+ uint32_t data[2];
+ data[0] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[1] = buildHex(0xff, 0x30, 0x20, 0x20);
+ palette.replaceSColorSimd(&data[0], 2);
+ REQUIRE(data[0] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[1] == buildHex(0x70, 0x60, 0x50, 0x20));
+}
+
+TEST_CASE("Dye replaceSColor 3 1 simd")
+{
+ DyePalette palette("#123456,000000,ff3020,706050", 6);
+ uint32_t data[3];
+ data[0] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[1] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[2] = buildHex(0xff, 0x30, 0x20, 0x30);
+ palette.replaceSColorSimd(&data[0], 3);
+ REQUIRE(data[0] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[1] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[2] == buildHex(0x70, 0x60, 0x50, 0x30));
+}
+
+TEST_CASE("Dye replaceSColor 4 1 simd")
+{
+ DyePalette palette("#123456,000000,ff3020,706050", 6);
+ uint32_t data[4];
+ data[0] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[1] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[2] = buildHex(0xff, 0x40, 0x20, 0x10);
+ data[3] = buildHex(0xff, 0x30, 0x20, 0x20);
+ palette.replaceSColorSimd(&data[0], 4);
+ REQUIRE(data[0] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[1] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[2] == buildHex(0xff, 0x40, 0x20, 0x10));
+ REQUIRE(data[3] == buildHex(0x70, 0x60, 0x50, 0x20));
+}
+
+TEST_CASE("Dye replaceSColor 5 1 simd")
+{
+ DyePalette palette("#123456,000000,ff3020,706050", 6);
+ uint32_t data[5];
+ data[0] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[1] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[2] = buildHex(0xff, 0x40, 0x20, 0x10);
+ data[3] = buildHex(0xff, 0x30, 0x20, 0x30);
+ data[4] = buildHex(0xff, 0x30, 0x20, 0x20);
+ palette.replaceSColorSimd(&data[0], 5);
+ REQUIRE(data[0] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[1] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[2] == buildHex(0xff, 0x40, 0x20, 0x10));
+ REQUIRE(data[3] == buildHex(0x70, 0x60, 0x50, 0x30));
+ REQUIRE(data[4] == buildHex(0x70, 0x60, 0x50, 0x20));
+}
+
+TEST_CASE("Dye replaceSColor 7 1 simd")
+{
+ DyePalette palette("#123456,000000,ff3020,706050", 6);
+ uint32_t data[7];
+ data[0] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[1] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[2] = buildHex(0xff, 0x40, 0x20, 0x10);
+ data[3] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[4] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[5] = buildHex(0xff, 0x30, 0x20, 0x40);
+ data[6] = buildHex(0xff, 0x40, 0x20, 0x50);
+ palette.replaceSColorSimd(&data[0], 7);
+ REQUIRE(data[0] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[1] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[2] == buildHex(0xff, 0x40, 0x20, 0x10));
+ REQUIRE(data[3] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[4] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[5] == buildHex(0x70, 0x60, 0x50, 0x40));
+ REQUIRE(data[6] == buildHex(0xff, 0x40, 0x20, 0x50));
+}
+
+TEST_CASE("Dye replaceSColor 8 1 simd")
+{
+ DyePalette palette("#123456,000000,ff3020,706050", 6);
+ uint32_t data[8];
+ data[0] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[1] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[2] = buildHex(0xff, 0x40, 0x20, 0x10);
+ data[3] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[4] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[5] = buildHex(0xff, 0x30, 0x20, 0x40);
+ data[6] = buildHex(0xff, 0x40, 0x20, 0x50);
+ data[7] = buildHex(0xff, 0x30, 0x20, 0x60);
+ palette.replaceSColorSimd(&data[0], 8);
+ REQUIRE(data[0] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[1] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[2] == buildHex(0xff, 0x40, 0x20, 0x10));
+ REQUIRE(data[3] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[4] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[5] == buildHex(0x70, 0x60, 0x50, 0x40));
+ REQUIRE(data[6] == buildHex(0xff, 0x40, 0x20, 0x50));
+ REQUIRE(data[7] == buildHex(0x70, 0x60, 0x50, 0x60));
+}
+
+TEST_CASE("Dye replaceSColor 9 1 simd")
+{
+ DyePalette palette("#123456,000000,ff3020,706050", 6);
+ uint32_t data[9];
+ data[0] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[1] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[2] = buildHex(0xff, 0x40, 0x20, 0x10);
+ data[3] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[4] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[5] = buildHex(0xff, 0x30, 0x20, 0x40);
+ data[6] = buildHex(0xff, 0x40, 0x20, 0x50);
+ data[7] = buildHex(0xff, 0x30, 0x20, 0x60);
+ data[8] = buildHex(0xff, 0x30, 0x20, 0x70);
+ palette.replaceSColorSimd(&data[0], 9);
+ REQUIRE(data[0] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[1] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[2] == buildHex(0xff, 0x40, 0x20, 0x10));
+ REQUIRE(data[3] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[4] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[5] == buildHex(0x70, 0x60, 0x50, 0x40));
+ REQUIRE(data[6] == buildHex(0xff, 0x40, 0x20, 0x50));
+ REQUIRE(data[7] == buildHex(0x70, 0x60, 0x50, 0x60));
+ REQUIRE(data[8] == buildHex(0x70, 0x60, 0x50, 0x70));
+}
+
+TEST_CASE("Dye replaceSColor 10 1 simd")
+{
+ DyePalette palette("#123456,000000,ff3020,706050", 6);
+ uint32_t data[10];
+ data[0] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[1] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[2] = buildHex(0xff, 0x40, 0x20, 0x10);
+ data[3] = buildHex(0xff, 0x30, 0x20, 0x20);
+ data[4] = buildHex(0xff, 0x30, 0x20, 0x10);
+ data[5] = buildHex(0xff, 0x30, 0x20, 0x40);
+ data[6] = buildHex(0xff, 0x40, 0x20, 0x50);
+ data[7] = buildHex(0xff, 0x30, 0x20, 0x60);
+ data[8] = buildHex(0x12, 0x34, 0x56, 0x70);
+ data[9] = buildHex(0xff, 0x30, 0x20, 0x80);
+ palette.replaceSColorSimd(&data[0], 10);
+ REQUIRE(data[0] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[1] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[2] == buildHex(0xff, 0x40, 0x20, 0x10));
+ REQUIRE(data[3] == buildHex(0x70, 0x60, 0x50, 0x20));
+ REQUIRE(data[4] == buildHex(0x70, 0x60, 0x50, 0x10));
+ REQUIRE(data[5] == buildHex(0x70, 0x60, 0x50, 0x40));
+ REQUIRE(data[6] == buildHex(0xff, 0x40, 0x20, 0x50));
+ REQUIRE(data[7] == buildHex(0x70, 0x60, 0x50, 0x60));
+ REQUIRE(data[8] == buildHex(0x00, 0x00, 0x00, 0x70));
+ REQUIRE(data[9] == buildHex(0x70, 0x60, 0x50, 0x80));
+}
+
TEST_CASE("Dye replaceAColor 1 1")
{
@@ -575,6 +1134,364 @@ TEST_CASE("Dye replaceAColor 10 1")
REQUIRE(data[9] == buildHex(0x10, 0x20, 0x30, 0xff));
}
+TEST_CASE("Dye replaceAColor 1 1 default")
+{
+ DyePalette palette("#00ff0010,00001120", 8);
+ uint32_t data[1];
+ data[0] = buildHex(0x10, 0x03, 0x02, 0x01);
+ palette.replaceAColorDefault(&data[0], 1);
+ REQUIRE(data[0] == buildHex(0x10, 0x03, 0x02, 0x01));
+}
+
+TEST_CASE("Dye replaceAColor 1 2 default")
+{
+ DyePalette palette("#02ff0120,040311ff", 8);
+ uint32_t data[1];
+ data[0] = buildHex(0x02, 0xff, 0x01, 0x20);
+ palette.replaceAColorDefault(&data[0], 1);
+ REQUIRE(data[0] == buildHex(0x04, 0x03, 0x11, 0xff));
+}
+
+TEST_CASE("Dye replaceAColor 1 3 default")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[1];
+ data[0] = buildHex(0x01, 0x00, 0xee, 0x40);
+ palette.replaceAColorDefault(&data[0], 1);
+ REQUIRE(data[0] == buildHex(0x10, 0x20, 0x30, 0xff));
+}
+
+TEST_CASE("Dye replaceAColor 2 1 default")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[2];
+ data[0] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[1] = buildHex(0x40, 0x40, 0x40, 0x40);
+ palette.replaceAColorDefault(&data[0], 2);
+ REQUIRE(data[0] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[1] == buildHex(0x20, 0x00, 0x00, 0x00));
+}
+
+TEST_CASE("Dye replaceAColor 3 1 default")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[3];
+ data[0] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[1] = buildHex(0x50, 0x40, 0x40, 0x30);
+ data[2] = buildHex(0x40, 0x40, 0x40, 0x40);
+ palette.replaceAColorDefault(&data[0], 3);
+ REQUIRE(data[0] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[1] == buildHex(0x50, 0x40, 0x40, 0x30));
+ REQUIRE(data[2] == buildHex(0x20, 0x00, 0x00, 0x00));
+}
+
+TEST_CASE("Dye replaceAColor 4 1 default")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[4];
+ data[0] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[1] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[2] = buildHex(0x01, 0x00, 0xee, 0x50);
+ data[3] = buildHex(0x40, 0x40, 0x40, 0x40);
+ palette.replaceAColorDefault(&data[0], 4);
+ REQUIRE(data[0] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[1] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[2] == buildHex(0x01, 0x00, 0xee, 0x50));
+ REQUIRE(data[3] == buildHex(0x20, 0x00, 0x00, 0x00));
+}
+
+TEST_CASE("Dye replaceAColor 5 1 default")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[5];
+ data[0] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[1] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[2] = buildHex(0x01, 0x00, 0xee, 0x50);
+ data[3] = buildHex(0x50, 0x40, 0x40, 0x60);
+ data[4] = buildHex(0x40, 0x40, 0x40, 0x40);
+ palette.replaceAColorDefault(&data[0], 5);
+ REQUIRE(data[0] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[1] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[2] == buildHex(0x01, 0x00, 0xee, 0x50));
+ REQUIRE(data[3] == buildHex(0x50, 0x40, 0x40, 0x60));
+ REQUIRE(data[4] == buildHex(0x20, 0x00, 0x00, 0x00));
+}
+
+TEST_CASE("Dye replaceAColor 7 1 default")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[7];
+ data[0] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[1] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[2] = buildHex(0x01, 0x00, 0xee, 0x50);
+ data[3] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[4] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[5] = buildHex(0x40, 0x40, 0x41, 0x40);
+ data[6] = buildHex(0x01, 0x00, 0xee, 0x50);
+ palette.replaceAColorDefault(&data[0], 7);
+ REQUIRE(data[0] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[1] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[2] == buildHex(0x01, 0x00, 0xee, 0x50));
+ REQUIRE(data[3] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[4] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[5] == buildHex(0x40, 0x40, 0x41, 0x40));
+ REQUIRE(data[6] == buildHex(0x01, 0x00, 0xee, 0x50));
+}
+
+TEST_CASE("Dye replaceAColor 8 1 default")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[8];
+ data[0] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[1] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[2] = buildHex(0x01, 0x00, 0xee, 0x50);
+ data[3] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[4] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[5] = buildHex(0x40, 0x40, 0x41, 0x40);
+ data[6] = buildHex(0x01, 0x00, 0xee, 0x50);
+ data[7] = buildHex(0x40, 0x40, 0x40, 0x40);
+ palette.replaceAColorDefault(&data[0], 8);
+ REQUIRE(data[0] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[1] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[2] == buildHex(0x01, 0x00, 0xee, 0x50));
+ REQUIRE(data[3] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[4] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[5] == buildHex(0x40, 0x40, 0x41, 0x40));
+ REQUIRE(data[6] == buildHex(0x01, 0x00, 0xee, 0x50));
+ REQUIRE(data[7] == buildHex(0x20, 0x00, 0x00, 0x00));
+}
+
+TEST_CASE("Dye replaceAColor 9 1 default")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[9];
+ data[0] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[1] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[2] = buildHex(0x01, 0x00, 0xee, 0x50);
+ data[3] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[4] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[5] = buildHex(0x40, 0x40, 0x41, 0x40);
+ data[6] = buildHex(0x01, 0x00, 0xee, 0x50);
+ data[7] = buildHex(0x02, 0x40, 0x40, 0x40);
+ data[8] = buildHex(0x40, 0x40, 0x40, 0x40);
+ palette.replaceAColorDefault(&data[0], 9);
+ REQUIRE(data[0] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[1] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[2] == buildHex(0x01, 0x00, 0xee, 0x50));
+ REQUIRE(data[3] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[4] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[5] == buildHex(0x40, 0x40, 0x41, 0x40));
+ REQUIRE(data[6] == buildHex(0x01, 0x00, 0xee, 0x50));
+ REQUIRE(data[7] == buildHex(0x02, 0x40, 0x40, 0x40));
+ REQUIRE(data[8] == buildHex(0x20, 0x00, 0x00, 0x00));
+}
+
+TEST_CASE("Dye replaceAColor 10 1 default")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[10];
+ data[0] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[1] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[2] = buildHex(0x01, 0x00, 0xee, 0x50);
+ data[3] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[4] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[5] = buildHex(0x40, 0x40, 0x41, 0x40);
+ data[6] = buildHex(0x01, 0x00, 0xee, 0x50);
+ data[7] = buildHex(0x02, 0x40, 0x40, 0x40);
+ data[8] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[9] = buildHex(0x01, 0x00, 0xee, 0x40);
+ palette.replaceAColorDefault(&data[0], 10);
+ REQUIRE(data[0] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[1] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[2] == buildHex(0x01, 0x00, 0xee, 0x50));
+ REQUIRE(data[3] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[4] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[5] == buildHex(0x40, 0x40, 0x41, 0x40));
+ REQUIRE(data[6] == buildHex(0x01, 0x00, 0xee, 0x50));
+ REQUIRE(data[7] == buildHex(0x02, 0x40, 0x40, 0x40));
+ REQUIRE(data[8] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[9] == buildHex(0x10, 0x20, 0x30, 0xff));
+}
+
+TEST_CASE("Dye replaceAColor 1 1 simd")
+{
+ DyePalette palette("#00ff0010,00001120", 8);
+ uint32_t data[1];
+ data[0] = buildHex(0x10, 0x03, 0x02, 0x01);
+ palette.replaceAColorSimd(&data[0], 1);
+ REQUIRE(data[0] == buildHex(0x10, 0x03, 0x02, 0x01));
+}
+
+TEST_CASE("Dye replaceAColor 1 2 simd")
+{
+ DyePalette palette("#02ff0120,040311ff", 8);
+ uint32_t data[1];
+ data[0] = buildHex(0x02, 0xff, 0x01, 0x20);
+ palette.replaceAColorSimd(&data[0], 1);
+ REQUIRE(data[0] == buildHex(0x04, 0x03, 0x11, 0xff));
+}
+
+TEST_CASE("Dye replaceAColor 1 3 simd")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[1];
+ data[0] = buildHex(0x01, 0x00, 0xee, 0x40);
+ palette.replaceAColorSimd(&data[0], 1);
+ REQUIRE(data[0] == buildHex(0x10, 0x20, 0x30, 0xff));
+}
+
+TEST_CASE("Dye replaceAColor 2 1 simd")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[2];
+ data[0] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[1] = buildHex(0x40, 0x40, 0x40, 0x40);
+ palette.replaceAColorSimd(&data[0], 2);
+ REQUIRE(data[0] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[1] == buildHex(0x20, 0x00, 0x00, 0x00));
+}
+
+TEST_CASE("Dye replaceAColor 3 1 simd")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[3];
+ data[0] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[1] = buildHex(0x50, 0x40, 0x40, 0x30);
+ data[2] = buildHex(0x40, 0x40, 0x40, 0x40);
+ palette.replaceAColorSimd(&data[0], 3);
+ REQUIRE(data[0] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[1] == buildHex(0x50, 0x40, 0x40, 0x30));
+ REQUIRE(data[2] == buildHex(0x20, 0x00, 0x00, 0x00));
+}
+
+TEST_CASE("Dye replaceAColor 4 1 simd")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[4];
+ data[0] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[1] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[2] = buildHex(0x01, 0x00, 0xee, 0x50);
+ data[3] = buildHex(0x40, 0x40, 0x40, 0x40);
+ palette.replaceAColorSimd(&data[0], 4);
+ REQUIRE(data[0] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[1] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[2] == buildHex(0x01, 0x00, 0xee, 0x50));
+ REQUIRE(data[3] == buildHex(0x20, 0x00, 0x00, 0x00));
+}
+
+TEST_CASE("Dye replaceAColor 5 1 simd")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[5];
+ data[0] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[1] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[2] = buildHex(0x01, 0x00, 0xee, 0x50);
+ data[3] = buildHex(0x50, 0x40, 0x40, 0x60);
+ data[4] = buildHex(0x40, 0x40, 0x40, 0x40);
+ palette.replaceAColorSimd(&data[0], 5);
+ REQUIRE(data[0] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[1] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[2] == buildHex(0x01, 0x00, 0xee, 0x50));
+ REQUIRE(data[3] == buildHex(0x50, 0x40, 0x40, 0x60));
+ REQUIRE(data[4] == buildHex(0x20, 0x00, 0x00, 0x00));
+}
+
+TEST_CASE("Dye replaceAColor 7 1 simd")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[7];
+ data[0] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[1] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[2] = buildHex(0x01, 0x00, 0xee, 0x50);
+ data[3] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[4] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[5] = buildHex(0x40, 0x40, 0x41, 0x40);
+ data[6] = buildHex(0x01, 0x00, 0xee, 0x50);
+ palette.replaceAColorSimd(&data[0], 7);
+ REQUIRE(data[0] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[1] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[2] == buildHex(0x01, 0x00, 0xee, 0x50));
+ REQUIRE(data[3] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[4] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[5] == buildHex(0x40, 0x40, 0x41, 0x40));
+ REQUIRE(data[6] == buildHex(0x01, 0x00, 0xee, 0x50));
+}
+
+TEST_CASE("Dye replaceAColor 8 1 simd")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[8];
+ data[0] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[1] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[2] = buildHex(0x01, 0x00, 0xee, 0x50);
+ data[3] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[4] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[5] = buildHex(0x40, 0x40, 0x41, 0x40);
+ data[6] = buildHex(0x01, 0x00, 0xee, 0x50);
+ data[7] = buildHex(0x40, 0x40, 0x40, 0x40);
+ palette.replaceAColorSimd(&data[0], 8);
+ REQUIRE(data[0] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[1] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[2] == buildHex(0x01, 0x00, 0xee, 0x50));
+ REQUIRE(data[3] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[4] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[5] == buildHex(0x40, 0x40, 0x41, 0x40));
+ REQUIRE(data[6] == buildHex(0x01, 0x00, 0xee, 0x50));
+ REQUIRE(data[7] == buildHex(0x20, 0x00, 0x00, 0x00));
+}
+
+TEST_CASE("Dye replaceAColor 9 1 simd")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[9];
+ data[0] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[1] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[2] = buildHex(0x01, 0x00, 0xee, 0x50);
+ data[3] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[4] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[5] = buildHex(0x40, 0x40, 0x41, 0x40);
+ data[6] = buildHex(0x01, 0x00, 0xee, 0x50);
+ data[7] = buildHex(0x02, 0x40, 0x40, 0x40);
+ data[8] = buildHex(0x40, 0x40, 0x40, 0x40);
+ palette.replaceAColorSimd(&data[0], 9);
+ REQUIRE(data[0] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[1] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[2] == buildHex(0x01, 0x00, 0xee, 0x50));
+ REQUIRE(data[3] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[4] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[5] == buildHex(0x40, 0x40, 0x41, 0x40));
+ REQUIRE(data[6] == buildHex(0x01, 0x00, 0xee, 0x50));
+ REQUIRE(data[7] == buildHex(0x02, 0x40, 0x40, 0x40));
+ REQUIRE(data[8] == buildHex(0x20, 0x00, 0x00, 0x00));
+}
+
+TEST_CASE("Dye replaceAColor 10 1 simd")
+{
+ DyePalette palette("#40404040,20000000,0100ee40,102030ff", 8);
+ uint32_t data[10];
+ data[0] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[1] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[2] = buildHex(0x01, 0x00, 0xee, 0x50);
+ data[3] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[4] = buildHex(0x01, 0x00, 0xee, 0x40);
+ data[5] = buildHex(0x40, 0x40, 0x41, 0x40);
+ data[6] = buildHex(0x01, 0x00, 0xee, 0x50);
+ data[7] = buildHex(0x02, 0x40, 0x40, 0x40);
+ data[8] = buildHex(0x40, 0x40, 0x40, 0x40);
+ data[9] = buildHex(0x01, 0x00, 0xee, 0x40);
+ palette.replaceAColorSimd(&data[0], 10);
+ REQUIRE(data[0] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[1] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[2] == buildHex(0x01, 0x00, 0xee, 0x50));
+ REQUIRE(data[3] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[4] == buildHex(0x10, 0x20, 0x30, 0xff));
+ REQUIRE(data[5] == buildHex(0x40, 0x40, 0x41, 0x40));
+ REQUIRE(data[6] == buildHex(0x01, 0x00, 0xee, 0x50));
+ REQUIRE(data[7] == buildHex(0x02, 0x40, 0x40, 0x40));
+ REQUIRE(data[8] == buildHex(0x20, 0x00, 0x00, 0x00));
+ REQUIRE(data[9] == buildHex(0x10, 0x20, 0x30, 0xff));
+}
+
TEST_CASE("Dye normalDye 1")
{
@@ -595,6 +1512,7 @@ TEST_CASE("Dye normalDye 2")
}
+#ifdef USE_OPENGL
TEST_CASE("Dye normalOGLDye 1")
{
Dye dye("R:#203040,506070");
@@ -603,6 +1521,7 @@ TEST_CASE("Dye normalOGLDye 1")
dye.normalOGLDye(&data[0], 1);
REQUIRE(data[0] == buildHex(0x50, 0x2a, 0x20, 0x15));
}
+#endif // USE_OPENGL
static void dyeCheck(const std::string &dyeString,
const std::string &dstName)