From 8e60d1f0b8f7cca6e82748c4b2a151d804fcc283 Mon Sep 17 00:00:00 2001 From: ISSOtm Date: Fri, 26 Jul 2024 16:42:56 +0200 Subject: [PATCH] Fix textual palettes not accepting to be filled A weird case of off-by-one error --- src/gfx/pal_spec.cpp | 8 ++++---- test/gfx/full_hex.flags | 1 + test/gfx/full_hex.hex | 39 +++++++++++++++++++++++++++++++++++++++ test/gfx/full_hex.png | Bin 0 -> 881 bytes 4 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 test/gfx/full_hex.flags create mode 100644 test/gfx/full_hex.hex create mode 100644 test/gfx/full_hex.png diff --git a/src/gfx/pal_spec.cpp b/src/gfx/pal_spec.cpp index 2f53a8fe..484b57b8 100644 --- a/src/gfx/pal_spec.cpp +++ b/src/gfx/pal_spec.cpp @@ -371,13 +371,13 @@ static void parseGPLFile(std::filebuf &file) { return; } - ++nbColors; if (nbColors < maxNbColors) { - if (nbColors % options.nbColorsPerPal == 1) { + if (nbColors % options.nbColorsPerPal == 0) { options.palSpec.emplace_back(); } options.palSpec.back()[nbColors % options.nbColorsPerPal] = *color; } + ++nbColors; } if (nbColors > maxNbColors) { @@ -419,13 +419,13 @@ static void parseHEXFile(std::filebuf &file) { Rgba color = Rgba(toHex(line[0], line[1]), toHex(line[2], line[3]), toHex(line[4], line[5]), 0xFF); - ++nbColors; if (nbColors < maxNbColors) { - if (nbColors % options.nbColorsPerPal == 1) { + if (nbColors % options.nbColorsPerPal == 0) { options.palSpec.emplace_back(); } options.palSpec.back()[nbColors % options.nbColorsPerPal] = color; } + ++nbColors; } if (nbColors > maxNbColors) { diff --git a/test/gfx/full_hex.flags b/test/gfx/full_hex.flags new file mode 100644 index 00000000..6f6b25ad --- /dev/null +++ b/test/gfx/full_hex.flags @@ -0,0 +1 @@ +-c hex:full_hex.hex diff --git a/test/gfx/full_hex.hex b/test/gfx/full_hex.hex new file mode 100644 index 00000000..76b6c5f8 --- /dev/null +++ b/test/gfx/full_hex.hex @@ -0,0 +1,39 @@ +e77300 +008cce +634218 +000000 + +efd600 +5ad639 +008cce +000000 + +efd600 +ef9c8c +5ab5ef +008cce + +efd600 +5ad639 +39217b +000000 + +efd600 +00ef63 +5ab5ef +316331 + +efd600 +adadc6 +ef9c8c +5ab5ef + +e77300 +634218 +39217b +000000 + +5ad639 +316331 +39217b +000000 diff --git a/test/gfx/full_hex.png b/test/gfx/full_hex.png new file mode 100644 index 0000000000000000000000000000000000000000..316b6e9ac85bff48062c06444d98e88bcf733b91 GIT binary patch literal 881 zcmV-%1CIQOP)Px&D@jB_R9J=Gm@RlBK@5i9-c!+&>xx_nj=Du67st7^NMv!XygHC8vAE)>M1m`h zN@UON$#XrCWVy-hw3>~9$^7knUy@1Y3itphju`+YdjOIifmBBVy^UWiW&Gpe7J%jU z7XVrM5X|qTO8}0i2>|=kQ?TyzRLTBn(%5D<7kx+Ouij1oeB;99+K@brh5$@A(or1+ z*?c5OPT2IY>Tjd*n?npMjMkc}7-ylo>-T zC2L&3kT)9#LAtY$dGGfG{d)zl_L0FXTu|HFw;ce(!2p1Ar~TcQ`M_0{K70VA8?kX8 zg}jgWaeox}n2k@Ik66Dkb3bg3HZ?P?_ksQN2LS0wPMqioi%kl^+d`1vZUnjEqAxQQ zL5u%hYJ?}U4kP(7MsJkCa;Frg%^#Tjmi>!Ps4u!Q;o=#%V*dK^ufk4dwpQhL03>RI zh1%pwZ8Wr=(GX2>r0PFDq zIQxPjZ*kt*Q@uz0OlpHuoh}^{hWy#rv|kzUS#kS(z-*p*IKcFUBIE0Y{zS6V>RzJFa4m>dsoW0< zQ(af|9{F0doj4!x7GTKRzU^V4*yxR@@w~20Q>{%I1QX3x^HB~!vJ}K8!*}3Zsj&#- zc+V=d@)>A&AIe=c%Cp9CNl*4`4+C|rsa3zd0@$m7uT?GXug8+JbQaQWIng6VfxOh6 z>w^cKC+!P`Ta=5 z5RJZ1MWluIK*R^Wdb31t+?b7<#C+r{8-Lk^6`l8yi)Y|3B`3ZJ;qi4t00000NkvXX Hu0mjfmkX=L literal 0 HcmV?d00001