From e0f1ba640a5a7d44e6f34dfb35c14335db80f9a3 Mon Sep 17 00:00:00 2001 From: Mirco Miranda Date: Tue, 27 Jan 2026 11:52:15 +0100 Subject: [PATCH] IFF: add uncompressed RGFX support --- README.md | 1 + autotests/read/iff/sv5_gray8_rgx.iff | Bin 0 -> 20276 bytes autotests/read/iff/sv5_gray8_rgx.png | Bin 0 -> 3980 bytes autotests/read/iff/sv5_idx8_rgx.iff | Bin 0 -> 29920 bytes autotests/read/iff/sv5_idx8_rgx.png | Bin 0 -> 18578 bytes autotests/read/iff/sv5_rgb16_rgx.iff | Bin 0 -> 106388 bytes autotests/read/iff/sv5_rgb16_rgx.png | Bin 0 -> 14789 bytes autotests/read/iff/sv5_rgb32_rgx.iff | Bin 0 -> 209430 bytes autotests/read/iff/sv5_rgb32_rgx.png | Bin 0 -> 7390 bytes autotests/read/iff/sv5_rgb8_rgx.iff | Bin 0 -> 54894 bytes autotests/read/iff/sv5_rgb8_rgx.png | Bin 0 -> 6816 bytes autotests/read/iff/sv5_rgba16_rgx.iff | Bin 0 -> 150528 bytes autotests/read/iff/sv5_rgba16_rgx.png | Bin 0 -> 13056 bytes autotests/read/iff/sv5_rgba32_rgx.iff | Bin 0 -> 287918 bytes autotests/read/iff/sv5_rgba32_rgx.iff.json | 37 ++ autotests/read/iff/sv5_rgba32_rgx.png | Bin 0 -> 9492 bytes autotests/read/iff/sv5_rgba8_rgx.iff | Bin 0 -> 81884 bytes autotests/read/iff/sv5_rgba8_rgx.png | Bin 0 -> 9445 bytes src/imageformats/chunks.cpp | 520 ++++++++++++++++++++- src/imageformats/chunks_p.h | 220 ++++++++- src/imageformats/iff.cpp | 72 +++ src/imageformats/iff_p.h | 2 + 22 files changed, 849 insertions(+), 3 deletions(-) create mode 100644 autotests/read/iff/sv5_gray8_rgx.iff create mode 100644 autotests/read/iff/sv5_gray8_rgx.png create mode 100644 autotests/read/iff/sv5_idx8_rgx.iff create mode 100644 autotests/read/iff/sv5_idx8_rgx.png create mode 100644 autotests/read/iff/sv5_rgb16_rgx.iff create mode 100644 autotests/read/iff/sv5_rgb16_rgx.png create mode 100644 autotests/read/iff/sv5_rgb32_rgx.iff create mode 100644 autotests/read/iff/sv5_rgb32_rgx.png create mode 100644 autotests/read/iff/sv5_rgb8_rgx.iff create mode 100644 autotests/read/iff/sv5_rgb8_rgx.png create mode 100644 autotests/read/iff/sv5_rgba16_rgx.iff create mode 100644 autotests/read/iff/sv5_rgba16_rgx.png create mode 100644 autotests/read/iff/sv5_rgba32_rgx.iff create mode 100644 autotests/read/iff/sv5_rgba32_rgx.iff.json create mode 100644 autotests/read/iff/sv5_rgba32_rgx.png create mode 100644 autotests/read/iff/sv5_rgba8_rgx.iff create mode 100644 autotests/read/iff/sv5_rgba8_rgx.png diff --git a/README.md b/README.md index 88509a9..fd7a25c 100644 --- a/README.md +++ b/README.md @@ -359,6 +359,7 @@ The plugin supports the following image data: with color map only. - FORM IMAG (Compact Disc-Interactive): It supports CLut4, CLut7, CLut8, Rle7 and DYuv formats. +- FORM RGFX: It supports uncompressed images only. - FOR4 CIMG (Maya Image File Format): It supports 24/48-bit RGB and 32/64-bit RGBA images. diff --git a/autotests/read/iff/sv5_gray8_rgx.iff b/autotests/read/iff/sv5_gray8_rgx.iff new file mode 100644 index 0000000000000000000000000000000000000000..bbb2dcaa6b328db211048f66f7bea14483f3a3a5 GIT binary patch literal 20276 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 literal 0 HcmV?d00001 diff --git a/autotests/read/iff/sv5_gray8_rgx.png b/autotests/read/iff/sv5_gray8_rgx.png new file mode 100644 index 0000000000000000000000000000000000000000..230154a324d6f1bed63d68a8f0949bda8c09a6ff GIT binary patch literal 3980 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 I$o0bi0G?VoJpcdz literal 0 HcmV?d00001 diff --git a/autotests/read/iff/sv5_idx8_rgx.png b/autotests/read/iff/sv5_idx8_rgx.png new file mode 100644 index 0000000000000000000000000000000000000000..0ab7282044d7850e5e57fadfab051fff03061cf5 GIT binary patch literal 18578 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 D@GlnZ literal 0 HcmV?d00001 diff --git a/autotests/read/iff/sv5_rgb16_rgx.iff b/autotests/read/iff/sv5_rgb16_rgx.iff new file mode 100644 index 0000000000000000000000000000000000000000..1c934ad4ad4ff38ec0ebbfbcb30da25a766e4547 GIT binary patch literal 106388 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 z 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 LUW054Q*HkPQStlb literal 0 HcmV?d00001 diff --git a/autotests/read/iff/sv5_rgb16_rgx.png b/autotests/read/iff/sv5_rgb16_rgx.png new file mode 100644 index 0000000000000000000000000000000000000000..aff69399c423964fa8f5486561407b6ed0d69442 GIT binary patch literal 14789 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 S7?HIr=h>r-I3nj>OaBKQfj7?p literal 0 HcmV?d00001 diff --git a/autotests/read/iff/sv5_rgb32_rgx.png b/autotests/read/iff/sv5_rgb32_rgx.png new file mode 100644 index 0000000000000000000000000000000000000000..5cc9151b7b4b8858d1ae3182f19149b6483f768c GIT binary patch literal 7390 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 literal 0 HcmV?d00001 diff --git a/autotests/read/iff/sv5_rgb8_rgx.iff b/autotests/read/iff/sv5_rgb8_rgx.iff new file mode 100644 index 0000000000000000000000000000000000000000..7b9491ca07dd065cbc2e29a9e457e017d4518dac GIT binary patch literal 54894 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 literal 0 HcmV?d00001 diff --git a/autotests/read/iff/sv5_rgb8_rgx.png b/autotests/read/iff/sv5_rgb8_rgx.png new file mode 100644 index 0000000000000000000000000000000000000000..11b3080dc8601c51ff2197d6649a1d9f2a825338 GIT binary patch literal 6816 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 DtJfBI literal 0 HcmV?d00001 diff --git a/autotests/read/iff/sv5_rgba32_rgx.iff b/autotests/read/iff/sv5_rgba32_rgx.iff new file mode 100644 index 0000000000000000000000000000000000000000..ae4447194a109c9e47c813ccd26659d2418989d4 GIT binary patch literal 287918 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 literal 0 HcmV?d00001 diff --git a/autotests/read/iff/sv5_rgba32_rgx.iff.json b/autotests/read/iff/sv5_rgba32_rgx.iff.json new file mode 100644 index 0000000..aa21e25 --- /dev/null +++ b/autotests/read/iff/sv5_rgba32_rgx.iff.json @@ -0,0 +1,37 @@ +[ + { + "fileName" : "sv5_rgba32_rgx.png", + "colorSpace" : { + "description" : "TIFF ICC Profile", + "primaries" : "SRgb", + "transferFunction" : "SRgb", + "gamma" : 0 + }, + "metadata" : [ + { + "key" : "Author", + "value" : "KDE Project" + }, + { + "key" : "Copyright", + "value" : "@2025 KDE Project" + }, + { + "key" : "CreationDate", + "value" : "2025-01-14T10:34:51" + }, + { + "key" : "Description", + "value" : "TV broadcast test image." + }, + { + "key" : "Title", + "value" : "Test Card" + } + ], + "resolution" : { + "dotsPerMeterX" : 2835, + "dotsPerMeterY" : 2835 + } + } +] diff --git a/autotests/read/iff/sv5_rgba32_rgx.png b/autotests/read/iff/sv5_rgba32_rgx.png new file mode 100644 index 0000000000000000000000000000000000000000..87e772c7e7fe298b03d5f516ed717b83b89229f9 GIT binary patch literal 9492 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 literal 0 HcmV?d00001 diff --git a/autotests/read/iff/sv5_rgba8_rgx.iff b/autotests/read/iff/sv5_rgba8_rgx.iff new file mode 100644 index 0000000000000000000000000000000000000000..f8a579e3ffdbcb48807aa76fa460804e018062c1 GIT binary patch literal 81884 zcmeHQ2Y3}l*WMHeB>@Fg#3-TIg%k)ShR~bz5X8#&hvWhgQcQw?6={MLv498&2p05H zih>}5G!>*t5d>);iiM`AbO`4^@7_C`xs$ymjU=#}=Vbcq>^bkAIWu>5rcIaFPMS~C zrLk?>JQUluT`Nt~>NAOJID2HO%Ha@A^9^)l@L|`dnWp*2c5m5<{edK1u`RoF)HJ^` zj=Yv*ap0QfKx~_iZJ7ba`w-izeOC_qgDK5BckaT@&2bNg^iEHWPfUo<$PCG}@xP?x z_`bHfoTEovJI)cIDXv?VXxfIU_iMqO zD`xYDgMb)bx#W##^7#>-#K|*|^-r>FLH)t5qIHG=^$oh#9jT<#; zlwfNR#$4+f*OKdcJ=o_F&F_}m+Xgdpd^P`I-%?sxgVVvjH)~}eM92^Uf5;5sQ8wd|FMdRo~s64H~>GLuqMLQrpf z@6>^r{A9S1aXFfvoMzl8C8MtX7s4GT3Zl$cQ_Q(qX3WmWjJ0Kh z!KoSMRdIIHiZYY>xTpsyE_se;HGdL=3ueu3pO%?WpXJpuHQim=Ix#19;hSu@6!u2Sx+*Ms}YcW}P9oe^H%HizPLbw5X~&bP`K*c*MT{a!8N z`-(@55h^{qHV5~h-m@chp6ccBNTN39dt@eM4zPLoG)BLo+`{0Ry)x+rfN@l7{`a6Q zJ%d$d3_9HC&>Yb@i=?Gy3{1DhB_-Qp!b2O?Gs;NuYN0lr2PXHnrN>0n4-4gf+EGNr z=EyxDKBJ$m!qei@Gi=ZpO==32Q8Ol5Z)2OJbX#IfT>3zps7;S>Bo0hTKtB-ECVoJM zkwHY-^TgT`TMw~yN=>vm<&vW9`Scv3$$CJP&m5S}Y;)W`)}{wVWAF%i7iaHz>_ysk z?al&8${fh|tXH4AbTC6yASbFE;k1tNj)L{;-&e0u-9`->g>`n^Oinc`nVQnqe$Vi* z`ywOjMzR!IOGS-jld=wQv~Lv?QMX=Q?zgkcWhbfS+IR2LJ~Ndpq= zB&9@$n&y$}KtB=HDZalgrb8PxXKaH~)B8t1i*&R?%A^#xi#mpT8no6C za?aDKQ&g+egn_V?7*4{Bt^+%|4h-o!u%zqArnFv}b1~;C?Y$$*CcQuF0>`^<^qL~x zQO2$rB_k29r#+G_P_}PF4FgwtaSg+L2pR(SMS zyzW`Ua`t6KCl$|`Z)H4fE?>Tc!e&n1>rThyFmjIk~939X$5%F=Gy2qv(4%|;TWDIT14RGcu4w_UYg*PsqKoekWzFVQ-}^Le zRZ4dG)LEL==rqSq%#N!)Q`0Jr(6rCjX2rf6=r(KGTT?ad4$fckF&DhZD-Unu8wG3KnR6M; zGn*>ZH>RPx!S4x^y$;_Rl)$KNlZ&3BO`b4bN|6~ z*72RuC3a6TF;M6mruRADP^KPCwVAGV9$jtEcOA>{ai;%fW@esX@j(GzWV#Gd%EVaU zZ0;{PKl`(oE-;;C+E%)B=@DEyg6V4GVM%?S$}Ec~nedMP%Y=7Zzmk)aon+7Qa|-7H z3r^)xA77W5pjVDD&0=cGR8o0a65D;x9e3RE#y|i31O0xU$@IEHSWxc`Z2Zl%g{fDq zTD3|de~WvYq5Fqjym;~O)~#DFG0~+

=MoY&#QhY9&y(N919l(Uc$n--|xQr&bY^zF=J@ftXX>e_U+qg-n@CLUNG`H z+Jo`yO!im*@WT&_lN^e=E$#UI+A3t`3JVh_PSoGQl`B_5lr((!aFxGC80n%uGuKmk zZm}TW1MOn@>NXAf6zB*!UHBbs_>;pESO?v}_%CWX6y^Qz>+qP|cdh+DScqekaGr$7ueCXMA>(=QuoSIMJV~#rVn_f^@klPLW6VHR^114Ow z@hdJ9wrtt5D=m|vxL??b6DPj@=%bHv$Pau2k5;W(MVv?Pe`Q|EeiwW+>dbF?VPHYD z|DAW<(QOU1QPvY8o!!5gp5f#&Y1AiPpwVZi%`-bhm zT?yG-se9b~-S*!;PJHfj5+v&d*x=9wOP4Oy-xJwhklq#JoktulS7`;2UYL48v>VR= zy}A}rlYA|6z>K4h&SHbM2lAKW&VMmdOsmt*bp@i z9@?&5x^%Ii{f_GSe{GWYw6>Z}FqVLcg zc%WxTwXMxmP%Kg0J?)wTIZbm(v8z%@ z**06N7KeBjWwqQ*i-yEk9d^?|?xumBvKK7HC~x99`mT38VH$Q>5IJNyR9>-%(! zNLT=a@8FiA!b8{2Q%7bA36A zD~W}hSMJ^MlaRk~(O0b9w~ON6d(9LB0v8q*@{a}Z5`DzZ-D~N&m)Z#&z`e|rGWykr zt`r_V7V?+f_cyK4aUg6*A$!%euuyPVm^dYYzFPaPj0O15FxA_zWpQES;mMD;e(Pi_ z0uRqFdY4{YGFOkcuwWlsxF190-ChvymarW^m^XrEyf;Y2!*0gIO@%nl#5$CJR4nx7 zK4Jd0^#(qG1-$#N2;&P+m+P@4kMmZ6u8lFJD;^^L^5x5h{J-10h{nC~xDjR?!2dS? z_Ffpe0qfHA^++-nx=bCZ+X(HYaV4;Tc|}+B`|rPdf`UWdLhfenwSfg!JVZQfM~BSW zW@t~l_Iyh(zTDY}olZB-ThMsG`b6C(l(8^p<0^V|_5?#Gpue#C2u+`Vx>9|F zz{6P93(Hr(BV&QS_~MHL+^1A6!1c6PuWYPS6Uem+13dn{(j6!a~tv0eIN5eHjfK*Hy=Z z0}H2EehvA3&MzMD9gEZV3&6t6^(*MncbxkM;K0H{(PLrk8;{Y_71Lxa;627#`}|-5 z-?bUvGYQ?W`R9E)7KH3o*RmIi#$FJ11KbsB=Fn?XZLk*%ea`ah&fjO{6%Y8nQLan( z|9bKSJuqdMY5!p9g`(FBzyju`*Kb;=Vqpj4q168U`*Vv2eDAD(=ZZCFf>x|pLBe)a z^??XOFNpkR?jL_(8x8lDHNT({ezP{?pNNykl(J3`{*M-nCVb~B@;lte`P;4BVgcX1 z>)$&Im-`F-_eXEAAj+7zr%s)64+KuNuwci68UI9_Jl7=Tue!(sxrs9D?qu@i{UdUN z2kd{~)IVT;1K%@vg9Wv$9LAiPr^~{E9SbtwRKJ*mR^=~;4;?zBf19k7?aJR_c#8$> zhmvC-46)yUg@sj)^-kHgf!W%oqL^QhaR5JT$Mx&iJH6A4i!DsvVqv9%BmFy9>?weF z3kxL+3$PPr%$OnL;T+5HK7QXl;Q{+(<=7ty-?@ozf-NkREG*#t6*^sd$7gzh1?-n5 zV@UtLY4PI4Mx2F(l7|I+zpH$wc7(Cu%WDzc=?3hZXUH8mLVttrx&)>yER;Mf;M?7` zYu6ewge(~gJwro7U10(HXzKeX3c15o>#(p;@~{9oe*N{=Di${S`1rWO0`^n&xR0hc zSnxDvyzaW|$Q=a+29i5!)v7VIYZvX3nzw67(e2u~q;_$!Gm1 z`33o#ki7V#qob)=vu1gwPMtbAJ(Jo-Z^EAEKv;k1Yp~2+>?i8!a@P)T<`?AOBk&!+ zygw=T5x9L1CRI0JpKW7*Wzhyai|`BA!h(Gc&YhgSNxRZmfc&sWsgR=s3tyUG0sE~R z7xKUM+H3mWx1y|YEi9B=EMR{`?1KzhIs;)%gT9?5Vs%=I7WISim`5hJ0WrU=G05 zKJ4CLLFf=O*P36j&o>l>?Fe~5t~mPwdch%goXvJ8&+P#ZIIm5_>o()}-+yn~KcFrP z3njacfDCc|iG&5n{s{*baBiOy7M3hoVqt-KW~SFfoV)R&H)%zs7tns#j|vv%G8S-- zr_=e3=p(R}O+2&eT6&@6>xH><=j!WQBpvW`KtKS_b2W4V{J?_QT6lp83kxM53(yHz z?W@1(IGwWn1d!ooty$HFVG zyh6N(f-HBO&x~`vNhVL{czS~cPvhF4pdgY-zCZkO8vJT{)22Fsq$5wPf){Zel;xd^%DD?ev=Y;)in!pKj94)J1cIWDpOUB;5| zTUfBOt0ZFq^2K_0Z!RHsGxwA4zoqt*ct3a-^zaPxGeSgNRv%%PK*978*z40Z$!pvM z|AlLU1E=4rMY_mu=I;OE8~QBad6)D>+8CGPQPgK)p#ZUvzL1`EL$0uZ{kmaqC>PFE z&T%2H84eIV$nyq!2vMh3Jb6o&YpEL4`45t9u|rHhAk}QZ>*zYrBKEZdBg(b zi|-$#3*(4yq_E+|SQlqBnvpkp!K|E!JAeMX(^v{TQ!kZ|YWlS@rW8CgbM^ffJYWHP zU6_@He6g2@bRqD**}Nlun-X&>s_P9F)G~6I_kl3xyF^<=8@vtUI~$b29uv5L9fa{M zI4-QwK=_$wp3%en`eZ|3_rRPJuFjo1 z>tXN)*K^N3r-%FZ@2`jPPv)EI*Ut>_fCb!3Er&4Xz78HdXgo7N3x2B}DxOKWn75fY zabltN5#nCrp>rF)R{UuIz=^Uw@s%`{3aHd3JjUIS3b6m^5jUg$2j& zGt*X%T!wm>uJCObgHX%c+*F?DvNk|jay#%Z0Uvk>4n*| zXA?-0{b}}Nja!x!r~gig-?m-J)53xs!GdR=@LU}A!or0M)pbqZIM%q~_eujJ&ODZMyi0rFMWxQ%gO0eyuN7VtZsg@vmZ3(7iZ$iAHe3)@PUF71ScBS((V z%9Sf=`SRsC$eTXGtel9$*j8ZA(>vuV{aUdX1kcP|eXmas;|Q!pQOiQEnD^SaaifsK zC6-6|7hZS)_QD9kbKzp01qgdSspJh7)G~4y=a*it@PBl%!hh&ogJ!ejJz(4%xB z=wUh%^bq|T^dS8&Fpl;H#?r39ZnUj@XWCT06Mb901Fb68j=n74h8CA=P4mjOpbyJ7 zqd8@p(DbtR)8sOZX=0fMG^R{_8Xgcq&jy6jQvr1-t@J(gM5((dq0}Apc&S?SV5u6^ z)xSD*^be-ie$}X{e^rX|yOHYqR-sVeN_3C!b#%LLMGEl^q+s9jRMn>}Rq-i9*ZGvD zAgvUY)%>Znk6(`YGIf3|zhTTb$b3`%Sy@?be~Z8zH1>B?%Rwh#UyYqRcM5T1^HuS! zOa%KeA8lNiug3S;X8nXWSTHLm;xLY|W1$zF3woSR2f4yRcRLmWyJTabJY%6;TgE~w znqRI3&2_>;BOMDb2LKD<^c=8I8d$iOl1gV|p{Ktc3mpU&{OnkW^kXdeWn-a+PY?zB zIAbADU_rYwSP(ojbMrdCFmK*GeSHe-1;_Opy8;VvoqnjmyBz0kq`R%-2EjhZ>I zP+!7AZQlwMB4MGjLoZwnSP=VfNm!VsVBwepBf0}DK!-p-sF*AmETE5Iz2MYGJfidw z&eFttG+VS)v{kC3n+`iMXu zM;}o_^#bIHHLsAV0}JR6S}9nVrD6g5Kfn3rn}vi0)(g75AnOGg3q9Cga9}~`h4K&B z?S*n}Xc78|vdw93xu!Hn#zKIzy)a1cBkmzxFO+uJ3*1L^D<$a#Q+t8+f-m}ra&!}u z9SZ?e()9x78}Xftgaz4F5dB0`#)4rpATQQIVNRm(^n$&QIHlSPdLIES2;0%#N9cN? zoTL}nUih$VQ<_~ihNkO%L?e0ySjb^7Fcw_s1=x=EKH?_Q`v|rj@AiZ3h(3aCN46Jk zl5EG4js@)5D%LML^uqrXognal@9_0Y$RFR>in1cE!1{=wUUc5ccC_n-!+|{=;|OQl zah=0nSjOWByI!zkVUCOij3XRakjD`^7E0f)k0WGz0eu9p(3r;&y6xy&SszEhUZ?>q z$m0mDG>JYUpak|2kR!gS6>@Z7VH68o$X|B1IG{lIRtEIVH{a;r-H9+kDCZ{UxCH1wOnAKSFKvL z^xq>eZz>4)6n?ngU_s8W`Y|s4zvh>zSF?-sc++$ASkqJVXp_I`k?0fj(EUfK=l#D@ zkH-I_?v3_Rw+6eYYveZSTyGw4As4DAl(<7N_SW5M|a-bn{L19F{*iE4+^Q$g>I|do`SD$ zMb)m0p{f-c(+zH42FUb3Rq8{!e#<|%K z8n{@g${ynh=oitBg22N6F&26?&Bnr`zykC_^dIzKl!OJ=3tgZW>TjYB5zq^(4ZYB^ zj;a?XvtD2<)Kc|Aili4FWxXJ<@PMQj7z=^*biJTs0eV5l!Yw)ULa8gL7X;7E+}vOR z>(rFF!*h&<8XmCF4!TFaH*5|uKY{pyz`}pHk1+H?)6)bj*!ze-sHcpDhC8WigKgBQ z{zmGkV}bh!)(fJKXpTPOt~q)i5vBJL=6d0tYDwHjBje{g;V!lp?wUqXx5Hj==mn#Xc#7@~&ejXH zVK0b2qOvmlC^bz+9y>O6i$DgR1j0IskI`o3xM>y<-``LDs^+JS! z1&8f;i)1^pUdXl`TN<__?1jqZ>)Q1K_YtrcgkH$D7s|8Uc;#$IMSe~)@fHiv>B_g# zzjD2$-Ru!B>xaOjM~@y?+kriSUw--J0>J|G0{Vzv7)Lm;p!X4MFF5H1*bCf8z+N!= z2p&hcv>h>yfW07L;a;b4gk&#>aYV%!x{1dTy6p%o7`9_|CoBlPpktwg^bwGm*z;GC z=h$h}rpfa5V@kD;5MxT%3)y4J8dbVF#+0lV7z%74Nmvwt>;V*Qyd~=y8i#C6KiRmJ3T6=-% z9Bo{Cmgx*_Tyu&xtofI|Tm3iFU$lPJpR{h(aay)0J1AX+ ziRTYWUC&gJ0{nxhw0|HI_XmDunaYsAUjX_0mL@;nQcV6#epIDO6}N3Cy4Z!5}pj*@au*hF2AeAH@Dt=TWi+H+{9gf{q^MQ>szcTH_ziL zugZTp>`5=IUwc6Pp7Jj)UxU9V67tQBTb;{6r^q^n&Yk?1*1Y(pOFURuuw&Gfd~*}8 z@?H+R!@}eVt7!g*TU9Jf;_|tXznXUfe&>|iaPX_|=+K%?78X3{rQFEeRbH9zs^1+J zHh*`BhCcO~jD;gy{$`%@RppzT@D2RU;vu;muou35X*zA6{h28qEWJ>)dSUVW9rWfa ztM%V1q;KekP;^)r{lXXY<>Fn&Z&nU0?BI8~ z0^6dlo4ICv#P;tG)9|Mk%UC$i zW!v$)oEv$2${WV>n17>90t*;3tR4Oq?fmEqCp=hsp=k61^uZhBRvI|Kc$4+Q+blCr zvdv4nzL|lH1>oU_xl3sE3zG~y01KY3OP9Xpy&&>Vk3UwMVq>f2o!Zg@*-e!{5b z`H{1?WxFpQIR1i)hc7e7(J$Zf{Dv2M`dL`;tQWn}3p>95m0o&&iHd`jjEle@w*Bg@ zJoB6Hjq2k~;gx8IKhd%!JW0!rMg$2(z@MJIGn@E#=+|Dx&8jgJS^W4a>pz>DwW80psDjv{B z;M*K|jihY%SXjs(7O-{^`>+Yy(P1ZKvD@p#!HWt?wt1=N=3~3|AC>VS>;>osv{}Z1 z)kk=T16O(h?-z znQ*~7;RkOWI$L~Dy17o9*M3MJy!nI?7V(UMX-vLZS;YniI)1V) zUaF10Ld61PKWqGBwD*VA^!oE{bW8|6r}iHRV-LA&1q)`+FXDiO*Pd;q^KHi1hjZY7 z@c`7W4?6}%8G zW8oZQU_6h(0@?2kk4sXXo7m2Lo6kA9fW851@l?V$pxBcXd&8<}av1Y0a#;1}Hy!7( z;2aLMUJ=HAs@O+UgjE;cmtpS(<4~heJx^W+IK#Uty7kvb< z0KMtzHx2MnEhmTbn~rmNR69nlAN%TJKUFzS_G2F$?0q7~!H=_P@m%8k8#SH7Sf7Y> zX@#{OsW`}AZ9`RFPm6CiPBA(03|PR~L9iwM```cS??dHtM<+bxH@zUR zfZq+!UYuucb~cODMtsMD?-vSc-Fk7Bw>NF;&N> ziO)_L@islLSim?L;{l8fah{pb0ph;0%WcH>jnIwx{hrAi{+6^nrS|XN|2X%jJJCnT zd{h09_2|)~X~l{ay8ZpxXP@cs9^#M}ms&;+drJ2f3%DQNdE6iNKX8gTSN4LV4fsYC z-#h2^JJ*sX*Zj2Cm(MNi%JZ;Wm}lo?84ACdEMb@7Oa#1>xUlA9^5n_-Z-MIjX;xm; z4Ohhi^bvkP#Gc5g7vIDG`RAYdS#Doi56%F4ml&kKlOhmxg_^us@Qw`{GlSBtWt4)jp{~5M!G6$#H(f0u#qvR=ORa8A5H9^=xN`)!r;}lR%Z|9_m@m3 zn816d>k4B5d#Yo<_5U$pe`Qzu>RxLyDvIa5h57#^6AlN){^sWx3zyaRSPth?FW`J8 z$R6jhOk+~dUnmM5Soh4ic0%yvPCi%d38uMBKL-Q^oMHK$W5W51mlz9KEJM7{@`W(s han3i+cgDHCIHM2ec;fsF!2E=~6lb>Fx%R?v(t7_xI0tpJ(no zb8^m^J$tXc)Qq3-HrX=85z0AAUC@hysQ8d%{SS2!9ps8PDbx^yW_!Tijuh0HQo z99+Q@wsixqsnaa#HgV+@C%P4}8cxycYq0Vpk##?{hhk&%eskmBMGSt5Fm1o!$<7eU z_oLd6g4X;I9tiXH<7q2-bs`t8SEGM&IXftK-E#U-uEQMqpPI zwRIR}SQ`olqfY47 z_~WMcmCLSBcwfPepOKf*mgZlt;Fhlrg5kzX%oC=1r#=XeHbg%0PD@Wkd6}=IqhxVh zFV|Y5pv2LJsDIjFBz82NRZ!Ocg4>JYEU)JV0BE=`2MmyzO#~Jqxhts1BJIPFqOxO9 z=?|uXMYuLvy6##w?k{@{{62Uy1R(n7|<&CJ!t+1*U%!_L*f_b^xOlZVg@k!{h55MN zHJuzF0{|7EAS0#am3@@sYk+sP+AmQz#Ev%fNJAC8jOU_}42!S8>Q<*7=Y4=T%RDmO zU!-P}b}|3PI-^8SO(R!0WAROYEXBpHhPUE~QYMov6BR0a6bAYRK{%S9eHjOt)QLXxiB91;BY>U8Z3I@+vC7GWqP_r{Lk?*Gtljq+MLNY;A4TwY9@CGfC>}>m`dO zBr9g#Zx5z;owVIZCeq0#nolay;mFhBuo|@zNjzTS9xwlZlarHUN>TLk@#!8L!_3Xi zb#`~}Jz8q2aat4a@^yA|>q(?ns`h{M@o+Bh=y;yvu^N4tpPOq^;M_1Q}@E0;X*@BW1gocI&OBXsE zl*Giu^@D@x^mHP41cV?u1#=6Fg2F=SOCKPZg@tAI;i@XY5W_^x)^`6LFvmu}>u?vt zjYmMB7)L4b6cZOWmc^37GWqU7ugnEH zoSe^xhxUR(LS5kcA|oS-I8A`4DAsG~HkejqlTmOBuVrLqzvqg0I_9ZIi5Eb8Z;o>k zb8;SG0*NRoDZ2zIC@AEWm1WG#in!1(ecG;ueS>Cab&`{l^NWk&HOuj!5g1|03{Y2B zZq;1T$nbE)0`p@ax5IUNkdohN^h27J)6muZR9Hw; zfHPFr+WL?}F5)qKesg1-mY&`$TcVjUXWG_js1cr>O;+}%Otno@TlN95^i4% zaR|5qb4yDaVPO)M6jTw9L#&apNkORR?=*J9C^6sb{MJ?j_1yGy? zzqw&0r=7Vcqu5u7(wZ2r+0gOf8sOaLzwIhS;r$1j2@myft%FiU#m`l;a?aY`zPH`) zK3|K4%VksM_qMA)o*p#mZv%&i`D6SW^=%8cKJsF@V&+2LuZK?Qv6TG0gw12BP0Af-Vzhj)1fOZp0wP(q(y}fp@qF4A4V1qgY7(n9fl@6 zergjd+I}sbYWI461-zQyfR{396vjDvhx06KU}EQS!-gkI{k%vX2y3ZK!ZM9;wbIO1 z_vO!P$1g@}ep_!=N+I-o+LOOTI_6T9QZLm$HdIsyD1WXNg1&NBn$uKEO#IW)c8?#3fRPM=lJ;}fYDeRoo(Wh@ zlycde_B$!prswHYG%%Ho!1tcCAgEgJ@N0YRN|G{0ZfWe8YG6$3CA?EwgDldhr9UJJ z9||ds88hdY>)s8A%vW#oGR7t@BLlke=cd;3r=M^phV6@o1|>D|&U({M>_ZD|ojo<* z-(Fe1I8NhsvOK?QVk-)2dU^zG?9`NhX~y65VpYOQ(lWxgZwW1<27^8V(QLniws7P0 zli_f`%fFnQURW33yX>}+%lBI>6KE~FUBO06cTkCZ1GnY1V@-0bMtCVb*)c- zXB84JN~Tprf-7!;ZRHP^q3Ie-d6kfwI%~z4d`J53J3$t|L-!Cz2P>V9Y3;!OL<+k(ly#6Mf0ny&ZxIkCF?M1918lN;*ydeDr9*&%PObtHP4dL zg>2$DRpy?vLM0f|*uw?5*+3jAtlOcYx@y~J&tL`%kDr)1sz`}+XVWp-()7I-2UEF5 zj&7E$!X*$&veidoFX-^tFR_^K84^W5+T>i5h%qV{S>}e5n;V@{X z%8ZMSM$690k=^!C*7b=kC@2^{3xZ~yUJf@^AFNSIR`6&~fuVhj0`y6pptHFCWZBzo zX~8+q8XHF;{0SvX%ty3+_!foEX?@VTnWlGlqDa=lqZu5E$8y*tmN`o1Zi9oS9|Id5<8GHsTWU$W$ZpB=(4FE8ao&RC$zCQM&R4%AoZtPvf{(#oB_ zNV_SK2P2{HL`w(UZbUTM5A-ltaHiMs^i_TjMq#?ddPGnoiPxx3(@Ae263qcj|H8`3*o&u;w* z;ByY0U6#cQiH_!Z{h5S?1qn!F7}}zajI^AUCCgOi`%a~yQE+C~p? z8;HHN^2|+4hN1z6=#!0&u5Z^HF+9ybe~uz{3f89c*%4eHE%obd;E6#U&R`EOrHhM; z^D9TsZRzal8x)9@C`~V&18;pmqeBcEt&Jed>5kH1ne;C9vzbWO6RSpRb<_viH=n1$1hp^2vp#omwsUQ|M>(LYtc?<#{eV+qO zTv`m0y@eMButncJG=v7?OX zlTArE@eU2l760+(Bf-v=Pz6LtpB<&f)Ghg%h zn9PckCPk6UZk9D$+>ZndWEot#?G8(g@@9Np8NaM;ZEHmqn&l=AuB>frHjr=u2I7<; zo<=(hIed{vvV_ML2Kh$&g+h2WVsNu)GZS*2)C>)C7J5^3DpcZ$Jc7674>3ee95S=A zHja-+QKqbU#c{^7KAa;E@YGFpOjz@tUh!QZFeG%2_nVt}_P99}O;`^rA_6!O&CP`KgAu%x+0j+sd=2lfQDKU|CFexcX=z_t< z#wHsjy}q9JaMfY4f>ua~xT@nx*ey3NFHSa^fNKW>14GdDk9@>&LD6}Rh^H%_>&#be z!4HG=$}U~O2wulR$FT#meZ;z|QV8C=LHL$i5Wr!n+IoV<%iG1{6%{=&%!1jn)b2~# zW;DjEfR2STe*em~`c+RGxu_@sGaqz-SQpvLP~XQnN(?fWK-{&O#3QXID* zhY6%;m10zi`C52NskccVv7FLtV}~(wL$no|%>ogkk-V>_aVgaW@@r?0NY!5ulnCRV8I8KD5Y(Jz^mzw%-CxKK_eqU zDUF?)k+GlEpj?ZFnmVY%AkP&rxh@A?QZ$EqjTCXOM-;;DNcYivc*&0Sko4}|ollo& zYg=2GJ+%T#ps4>BNy_O_vCyI-T3g%U%&21cz>JXha&k&pehYgiAkf#+cFB%~1DFe# zz9Iuw>z#|;x+0IHo}Qj{tD(`+L$YR+iBo%c=?9H&nAGPr&$e&F@39)4)Cl^?07>>V z!p5d19s)HZBO`E^a2n$qyR3z|xHPmZtAg$OC*A5TOgMRYr-!ehEGgYnQ@FHpu8`%+ zS8pptZQN&T2retLfWTJKpCQ!dXnSwUdbR^7cspugepKL4sHx$l$i05u&30?CD@E*2 z=Z=R!F25`JJflfhPgQ_`z*Z7LfVU`Bm@^4ginlIfvSt#ir<%YJ?mwntW=45amf7;acfKBi zNpsZzms;D|{Y++Ixp%z3kJ@I087ULI(UWn6oC(uR6jAepV1f?`ukpP;l#-EwU(28a z))!oo!m5Th`zZtPQa~IOL=jR9MEh9;$3n46z2Jc;K+-kX1`;BH=cmjm1)tNK9=5@e zG)?5li(S1)O!zw1H&+jrYHYUL1NG#+^2igax^SWdsH!n~sG|mdd;D0l! zk~1;M-+uK0CCa}X-pga5l~9@3Kimv9oELV17y&WG1VLjtt>0XV^3=W4S@~@Ag#4qQ zU)a}Y_dpTq(Tujs>udfBr=OVJr;)X5-!|}Ff|(dlrHG7B<%A$RrSAi?NS`ZqWQrtD zFME?yD_n*%;%TmFi#5x~m$48`7(2DY-92JjTSaShtOQIxhP+=RJ1FP*^|R(3mwy8u zlUc^tSgNl)qgmKgzx!2JImP@{pi~wFA0y{W9wD~BzrVC2nLh9UaZWKM)qOrrdG*%E zc}Z$&h+i8`I^_p5#bd*y#GN6|W!eZH@nK?!f0(k)AwQf5O%YIf7tB3HrK2%Dh5~`$ z*&=b<9nBA(q5*wyc(NME7#IYXl=E!r?p!1OE5JP;$pMntN2s5bx6Ee1`JpI^dTV3ES@w5lW&VfmiU<(@ zIsB8yM@2}ANJ}FG!%T)-$h`@9AY0!pnFUC<-J0JVuROPy58yDcii_vgb$@-3NevsC zs-C(?7}`#MUgwWbrobyfLLg_-#EhB@Du#&pXrd)f2GcdC_X5QCovUr7ek}IHR=OSjZC_Zy zBoYsQ^zIHBE7Y_!X3CHggDYJCM^+dsyee;0?e?MsvW4_f$WRy?Ku%;QpQjHkDRoo> zvzW!rZ(CsAFf7;u=KI7E`M?n#F9U-mqe%OBI)jyBOLa9CH8nNtgfJ$IM^8ct9J~ep zsASjpA1l7gn5!RpAwgKbLnNH(X4Q&!SweDB%E@U{^`9lp0S!14T#-&?;`i_03+{Vu z58{Ko#zoNw6xFoY6{am-CK#-~#;_Vg6I+4weV;8m9#jZ@2s5suT4><~cZJJ>V&Cy- zrrd!i2{s8yRJSxwNaFz^hf!-E1{Mo32CRuek0u^Mj_TZZTxH8&l{Ksk%~g?(CYgnt zk$MBx=@=Qe1zA9#%$`8=3eB zgbQ$p(v2ibJcer&z1~><;r6h8p21_~KZJ>wjg%wg_O~A(G8XTf5tubtT|!;a<@tOB z^Nl7`yEuefi@DFSNNU*5s#cK%%G?!9I>)Kor8>Z_72~onIGB3nu~r)m5~*O$%u`X? z+1Ys_CMvr4?+hWO3uH@CfPPgGT3R@>KHU}lmXK-|NC*uPnj0cCQVN^%3Ler0f3Yc4 zHFbzu>U`&OxWTZcoq-dk%~);bQaP^nHFBazj+TcfiPE4#ooN^hBg-RlUJ%51^i`Il ziU{s+i#%VR`~RRxeL^D+Jj0%v6L_Lm8I+vp$CI7hz(YW#lT7ep*tX#n5D0=*7-F7u zhfHxjFXN4QvFVVRrEmPa6ic`?9`{p8D%3o^tX&R&@7XUB($v(H0f!~-^quzu{=ep* zLYr69{h>0(aJo!%)x{9qI?EA$V2pGuCnqO?`^?4s(IL&61dJl!-MSds_A|bt@_%z$XadzJIL{RfG~0{bW*oICn_rH9eUtd#MI;@ z>`4K&GbToL^6;pk(qIuVm^2)P6YDzW?$Trk5n>|dj}3s+)( z1|O0d4GoQ>o}!&LF%2!P)BXK@m083L!Af9J7EY|=HTlUs4tpi)?`_TGl*|!sV?|}< zKM*lA(J!0r))SA{^;rHsS2HxU%48)tB=6~ z%s_vJhKAyE>Q2B0HkP2z`H#xXn~B+RJNEM@GN5-w(sn?nEdP#QokSC`)wXt(z#JrP zA~LAuesnqiGeBBNF=#?U{ej-%lne*bB;{}2Y_s^IFOx^9ZS~J{HIK5&^=r52j052% zo5K8|n!|}v>H@pIPQyn^lC_)udflftL`OJQk{UE$fAMx#J?9( z>D~k_eBugm$?lq%fC)&)4KZA*yG_!_WPF1tModcjN}Q;x2s)YtX0Q{br_TDYfy8G8 z@;GUYl$~(VJD1sQ#pF`R!JRx8TQ#0<8yCJ6r^UIxk;8-84W;c0I-BSa@&3U9bPoGl z>o3MXcHCp}JS!~m)J|Fa9rXpCAC5&A`7Dn@xAy-qE$tH#y)d^9G7;gPm`)BRQU7>hfJRBEb#OG=fAwYjrAJ?&){6_%B*;0{2@s)Z` z0Q$rPS;rrbpBV|Xa@}2BFf&aftDY@Mb*$d$gU>%d>$&XKbHn#y%=NLUdBa=|GeDs> z2=2m$O-m|^1(BaVN!r;}jOS7nE3+Fm@2~Wa{Qc%oqO>aU_!{Foam%?{9Nc;{#?aVU z1jrhNLx|to>3G zBmUUZzr77mjT*F4j+DET(18Oed_Hoaay$kPY91FZ>^G*ttRL`Es_N4vU>U9wcK^ke zxAO`|FoffT2g)EV+L;llr6i(f{Y__65^Hb@`vnu$GM>L%^7xhN8kO>8Xnt)4d_-dm zc)&q#2=@K#-)6FR`)j2DS(0!Gk{v@U1v?vy2TD<>I)p!GGmgd{yAR{J`)(N_05&ZVV@fO6c89 zInm878t5ypMQVDwo2{82DecA=?fJ=7aNy5o&l@B6DSsxOw_H1M;P*+4(0AV(oh&+`Gzsf9{S+afzGL@>-2Gi0OWlgp-`no<2Dw?B(2~bM zVedzbU&nydMom-Mh<+9%7Z)q=MTr~D5sBEFD!a*t#y`oLm{5U?YWVQ5a-9Pf`m%=L z4^`ctcm3=iDA^{8@+__Y%$IJTJc+I?{JO9Jvdf1T7vCK&HDQ8~4pd)iRg{KLWXZ_L zPUp?yz*s_fe{({35$5u7v9$q{_3k9V(?@ck)OSz)Q1yJ1v}MwDj9l=8{TkyEj7(o& z9}O#OOoFeM*ZNq%6A$QRZ++QTr<8Mq@j=x}*203`oSPUCouoIBA1<)3N5px`>#BRY z`b#Lr7@vExBdJw2cE|qy{)ZPjQ%6T9^Q1%$i-_wzJlM7H!HR(NcOB!Q!NGTn z6E?e*<4YE9C7_-cY}Ox3-uyy!t~*4)10VqfraZw}S){0_s32YTJ~a|#zLy6YTK?43 z)chV8z+QQH$$DmHw0SWF1O$5f`?Ch1P$-xCt~w|szD!0;Oe{UH1oL3{U8e&dbWH8{ z@|ezVGcVl!4lnS4`2{=>fZ(JIoA22z^zoK6S&_a}IRiFDamESV3OP7Xu_XB2_i#{b z!k`pq{o_COn?4}mS)#bKlpPqahypJC2RidL%UQHoWjuxW4J9u- zJ3Avg`{DQBku0kh^$pP}$pd)FbRCzQVam0lT(+#YGC;-D07Q>Hxw}3%YHDgA*+>+E zgo!AtA?SBk-|)To0Qi`fm{>cz2%EN=KX$o80M2*6KT~o4_3PIscrH`2Z zBR+9 zQW5}7!Wk684BC9~d&1G{ijf-t4>?dnt*gJTY1(^}b6;J}>7c7S@A<;4g7T?&TXXZR z!?>bpqm7QfKB;Oh@5o(Pc=-FtVufKZSun{XAt4!GUXGcaon?2pW=~NBllk?{O;|7o zhet$w(WT*~*3Y+xEX62)7_g^mdz+Z7-yl9CYrE}?HaO3$mZ`;FLP&T&WrOn>0lrO+ zDirI2;#qgEkX9Kurbw0s}fAY zW@p2%Jr={&+0#I~l4eMfDo{58`Lp-|^B2t+G!K?nuQW6@gGmJ(^UKRo=oDxK1m2z+ zffaN(kz59F>%xJUR-@VfzQ^|`i^IuI#B$%=RW&y1;Naq3;7MWa*xK10Frl&PHxB>N zhOQG55?V0}$r6iw(!JG_Ld$=_?`F!%%GOrTJF8DuSzIO{w|u_&D_X?VIReuJBQOo< zg>~*(VcTXJUtOq>x_`eaT_aj`O?Y<^+R5I73BbY(Bb?#|GL1VxgnUNt6DcG~cN@y~ z^6@WsV$H`1_l`Dpje2Hg_;5Pu0Nna_4#BUB&S1oTGeky5CuNKIrf%!R29+a1u0!j4 y7z5p1Tz(+0zXkerDh<3{ul8qBN0RTTpD{<3q5t}|e4}1IRZ);tm8q0A3I0D5a;47z literal 0 HcmV?d00001 diff --git a/src/imageformats/chunks.cpp b/src/imageformats/chunks.cpp index c9439ce..5d0e717 100644 --- a/src/imageformats/chunks.cpp +++ b/src/imageformats/chunks.cpp @@ -1,6 +1,6 @@ /* This file is part of the KDE project - SPDX-FileCopyrightText: 2025 Mirco Miranda + SPDX-FileCopyrightText: 2025-2026 Mirco Miranda SPDX-License-Identifier: LGPL-2.0-or-later */ @@ -325,8 +325,18 @@ IFFChunk::ChunkList IFFChunk::innerFromDevice(QIODevice *d, bool *ok, IFFChunk * chunk = QSharedPointer(new PLTEChunk()); } else if (cid == RAST_CHUNK) { chunk = QSharedPointer(new RASTChunk()); + } else if (cid == RBOD_CHUNK) { + chunk = QSharedPointer(new RBODChunk()); + } else if (cid == RCOL_CHUNK) { + chunk = QSharedPointer(new RCOLChunk()); + } else if (cid == RFLG_CHUNK) { + chunk = QSharedPointer(new RFLGChunk()); } else if (cid == RGBA_CHUNK) { chunk = QSharedPointer(new RGBAChunk()); + } else if (cid == RGHD_CHUNK) { + chunk = QSharedPointer(new RGHDChunk()); + } else if (cid == RSCM_CHUNK) { + chunk = QSharedPointer(new RSCMChunk()); } else if (cid == SHAM_CHUNK) { chunk = QSharedPointer(new SHAMChunk()); } else if (cid == TBHD_CHUNK) { @@ -1448,6 +1458,8 @@ bool FORMChunk::innerReadStructure(QIODevice *d) setChunks(IFFChunk::innerFromDevice(d, &ok, this)); } else if (_type == IMAG_FORM_TYPE) { setChunks(IFFChunk::innerFromDevice(d, &ok, this)); + } else if (_type == RGFX_FORM_TYPE) { + setChunks(IFFChunk::innerFromDevice(d, &ok, this)); } return ok; } @@ -1535,6 +1547,36 @@ QImage::Format FORMChunk::cdiFormat() const return QImage::Format_Invalid; } +QImage::Format FORMChunk::rgfxFormat() const +{ + auto headers = IFFChunk::searchT(chunks()); + if (headers.isEmpty()) { + return QImage::Format_Invalid; + } + + if (auto &&h = headers.first()) { + auto rgfx_format = RGHDChunk::BitmapTypes(h->bitmapType() & 0x3FFFFFFF); + if (rgfx_format == RGHDChunk::BitmapType::Chunky8 || rgfx_format == RGHDChunk::BitmapType::Planar8) + return QImage::Format_Indexed8; + if (rgfx_format == RGHDChunk::BitmapType::Rgb15 || rgfx_format == RGHDChunk::BitmapType::Rgb16) + return QImage::Format_RGB555; // NOTE: RGB16 ignoring alpha due to missing compatible Qt format + if (rgfx_format == RGHDChunk::BitmapType::Rgb24) + return FORMAT_RGB_8BIT; + if (rgfx_format == RGHDChunk::BitmapType::Rgb32) + return FORMAT_RGBA_8BIT; + if (rgfx_format == RGHDChunk::BitmapType::Rgb48) + return QImage::Format_RGBX64; + if (rgfx_format == RGHDChunk::BitmapType::Rgb64) + return QImage::Format_RGBA64; + if (rgfx_format == RGHDChunk::BitmapType::Rgb96) + return QImage::Format_RGBX32FPx4; + if (rgfx_format == RGHDChunk::BitmapType::Rgb128) + return QImage::Format_RGBA32FPx4; + } + + return QImage::Format_Invalid; +} + QByteArray FORMChunk::formType() const { return _type; @@ -1544,6 +1586,8 @@ QImage::Format FORMChunk::format() const { if (formType() == IMAG_FORM_TYPE) { return cdiFormat(); + } else if (formType() == RGFX_FORM_TYPE) { + return rgfxFormat(); } return iffFormat(); } @@ -1555,6 +1599,11 @@ QSize FORMChunk::size() const if (!ihdrs.isEmpty()) { return ihdrs.first()->size(); } + } else if (formType() == RGFX_FORM_TYPE) { + auto rghds = IFFChunk::searchT(chunks()); + if (!rghds.isEmpty()) { + return rghds.first()->size(); + } } else { auto bmhds = IFFChunk::searchT(chunks()); if (!bmhds.isEmpty()) { @@ -1676,6 +1725,8 @@ bool CATChunk::innerReadStructure(QIODevice *d) setChunks(IFFChunk::innerFromDevice(d, &ok, this)); } else if (_type == IMAG_FORM_TYPE) { setChunks(IFFChunk::innerFromDevice(d, &ok, this)); + } else if (_type == RGFX_FORM_TYPE) { + setChunks(IFFChunk::innerFromDevice(d, &ok, this)); } return ok; } @@ -3047,6 +3098,473 @@ quint32 IDATChunk::strideSize(const IHDRChunk *header) const } +/* ****************** + * *** RGHD Chunk *** + * ****************** */ + +RGHDChunk::~RGHDChunk() +{ + +} + +RGHDChunk::RGHDChunk() +{ + +} + +bool RGHDChunk::isValid() const +{ + return dataBytes() >= 13 * sizeof(quint32) && chunkId() == RGHDChunk::defaultChunkId(); +} + +QSize RGHDChunk::size() const +{ + return QSize(width(), height()); +} + +qint32 RGHDChunk::leftEdge() const +{ + if (!isValid()) { + return 0; + } + return i32(data(), 0); +} + +qint32 RGHDChunk::topEdge() const +{ + if (!isValid()) { + return 0; + } + return i32(data(), 4); +} + +qint32 RGHDChunk::width() const +{ + if (!isValid()) { + return 0; + } + return i32(data(), 8); +} + +qint32 RGHDChunk::height() const +{ + if (!isValid()) { + return 0; + } + return i32(data(), 12); +} + +qint32 RGHDChunk::pageWidth() const +{ + if (!isValid()) { + return 0; + } + return i32(data(), 16); +} + +qint32 RGHDChunk::pageHeight() const +{ + if (!isValid()) { + return 0; + } + return i32(data(), 20); +} + +quint32 RGHDChunk::depth() const +{ + if (!isValid()) { + return 0; + } + return ui32(data(), 24); +} + +quint32 RGHDChunk::pixelBits() const +{ + if (!isValid()) { + return 0; + } + return ui32(data(), 28); +} + +quint32 RGHDChunk::bytesPerLine() const +{ + if (!isValid()) { + return 0; + } + return ui32(data(), 32); +} + +RGHDChunk::Compression RGHDChunk::compression() const +{ + if (!isValid()) { + return Compression::Uncompressed; + } + return Compression(ui32(data(), 36)); +} + +quint32 RGHDChunk::xAspect() const +{ + if (!isValid()) { + return 0; + } + return ui32(data(), 40); +} + +quint32 RGHDChunk::yAspect() const +{ + if (!isValid()) { + return 0; + } + return ui32(data(), 44); +} + +double RGHDChunk::aspectRatio() const +{ + if (auto xr = xAspect()) { + auto yr = yAspect(); + return double(yr) / double(xr); + } + return 1; +} + +RGHDChunk::BitmapTypes RGHDChunk::bitmapType() const +{ + if (!isValid()) { + return BitmapType::Planar8; + } + return BitmapTypes(ui32(data(), 48)); +} + +bool RGHDChunk::innerReadStructure(QIODevice *d) +{ + return cacheData(d); +} + + +/* ****************** + * *** RCOL Chunk *** + * ****************** */ + +RCOLChunk::~RCOLChunk() +{ + +} + +RCOLChunk::RCOLChunk() +{ + +} + +bool RCOLChunk::isValid() const +{ + return dataBytes() >= 776 && chunkId() == RCOLChunk::defaultChunkId(); +} + +qint32 RCOLChunk::count() const +{ + return isValid() ? 256 : 0; +} + +QList RCOLChunk::innerPalette() const +{ + if (!isValid()) { + return {}; + } + + QList l; + auto &&d = data(); + for (qint32 i = 0, n = count(); i < n; ++i) { + auto i3 = i * 3 + 8; + l << qRgb(d.at(i3), d.at(i3 + 1), d.at(i3 + 2)); + } + + if (ui32(data(), 0)) { + auto tr = ui32(data(), 4); + if (tr < l.size()) { + l[tr] &= 0x00FFFFFF; + } + } + + return l; +} + + +/* ****************** + * *** RFLG Chunk *** + * ****************** */ + +RFLGChunk::~RFLGChunk() +{ + +} + +RFLGChunk::RFLGChunk() +{ + +} + +bool RFLGChunk::isValid() const +{ + return dataBytes() >= 4 && chunkId() == RFLGChunk::defaultChunkId(); +} + +RFLGChunk::Flags RFLGChunk::flags() const +{ + if (!isValid()) { + return {}; + } + return Flags(ui32(data(), 0)); +} + +bool RFLGChunk::innerReadStructure(QIODevice *d) +{ + return cacheData(d); +} + + +/* ****************** + * *** RSCM Chunk *** + * ****************** */ + +RSCMChunk::~RSCMChunk() +{ + +} + +RSCMChunk::RSCMChunk() +{ + +} + +bool RSCMChunk::isValid() const +{ + return dataBytes() >= 12 && chunkId() == RSCMChunk::defaultChunkId(); +} + +quint32 RSCMChunk::viewMode() const +{ + if (!isValid()) { + return 0; + } + return ui32(data(), 0); +} + +quint32 RSCMChunk::localVM0() const +{ + if (!isValid()) { + return 0; + } + return ui32(data(), 4); +} + +quint32 RSCMChunk::localVM1() const +{ + if (!isValid()) { + return 0; + } + return ui32(data(), 8); +} + +bool RSCMChunk::innerReadStructure(QIODevice *d) +{ + return cacheData(d); +} + + +/* ****************** + * *** RBOD Chunk *** + * ****************** */ + +RBODChunk::~RBODChunk() +{ + +} + +RBODChunk::RBODChunk() +{ + +} + +bool RBODChunk::isValid() const +{ + return chunkId() == RBODChunk::defaultChunkId(); +} + +QByteArray RBODChunk::strideRead(QIODevice *d, qint32 y, const RGHDChunk *header, const RSCMChunk *rcsm, const RCOLChunk *rcol) const +{ + if (!isValid() || header == nullptr || d == nullptr) { + return {}; + } + + QByteArray planes; + auto readSize = strideSize(header); + for (auto nextPos = nextChunkPos(); !d->atEnd() && d->pos() < nextPos && planes.size() < readSize;) { + if (header->compression() == RGHDChunk::Compression::Uncompressed) { + planes = d->read(readSize); + } else { + qCDebug(LOG_IFFPLUGIN) << "RBODChunk::strideRead(): unknown compression" << header->compression(); + } + if (planes.size() != readSize) { + return {}; + } + } + + return deinterleave(planes, y, header, rcsm, rcol); +} + +bool RBODChunk::resetStrideRead(QIODevice *d) const +{ + return seek(d); +} + +QByteArray RBODChunk::deinterleave(const QByteArray &planes, qint32 y, const RGHDChunk *header, const RSCMChunk *rcsm, const RCOLChunk *rcol) const +{ + Q_UNUSED(y) + Q_UNUSED(rcsm) + Q_UNUSED(rcol) + if (planes.size() != strideSize(header)) { + return {}; + } + + QByteArray ba; + + auto width = header->width(); + auto rgfx_format = RGHDChunk::BitmapTypes(header->bitmapType() & 0x3FFFFFFF); + + if (rgfx_format == RGHDChunk::BitmapType::Chunky8) { + ba = planes; + } else if (rgfx_format == RGHDChunk::BitmapType::Planar8) { + // No test case: ignoring... + } else if (rgfx_format == RGHDChunk::BitmapType::Rgb15 || rgfx_format == RGHDChunk::BitmapType::Rgb16) { + ba = planes; + if (QSysInfo::ByteOrder == QSysInfo::LittleEndian) { + for (qint32 x = 0; x < width; ++x) { + auto x2 = x * 2; + ba[x2] = planes[x2 + 1]; + ba[x2 + 1] = planes[x2]; + } + } + } else if (rgfx_format == RGHDChunk::BitmapType::Rgb24) { + ba = planes; + } else if (rgfx_format == RGHDChunk::BitmapType::Rgb32) { + ba.resize(planes.size()); + auto invAlpha = header->bitmapType() & RGHDChunk::BitmapType::HasInvAlpha; + for (qint32 x = 0; x < width; ++x) { + auto x4 = x * 4; + ba[x4] = planes[x4 + 1]; + ba[x4 + 1] = planes[x4 + 2]; + ba[x4 + 2] = planes[x4 + 3]; + ba[x4 + 3] = invAlpha ? 255 - planes[x4] : planes[x4]; + } + } else if (rgfx_format == RGHDChunk::BitmapType::Rgb48) { + QDataStream in(planes); + in.setByteOrder(QDataStream::BigEndian); + QDataStream ou(&ba, QDataStream::WriteOnly); + ou.setByteOrder(QDataStream::ByteOrder(QSysInfo::ByteOrder)); + + quint16 r, g, b; + for (qint32 x = 0; x < width; ++x) { + in >> r >> g >> b; + ou << r << g << b << quint16(0xFFFF); + } + + if (in.status() != QDataStream::Ok || ou.status() != QDataStream::Ok) { + return {}; + } + } else if (rgfx_format == RGHDChunk::BitmapType::Rgb64) { + QDataStream in(planes); + in.setByteOrder(QDataStream::BigEndian); + QDataStream ou(&ba, QDataStream::WriteOnly); + ou.setByteOrder(QDataStream::ByteOrder(QSysInfo::ByteOrder)); + + auto invAlpha = header->bitmapType() & RGHDChunk::BitmapType::HasInvAlpha; + quint16 r, g, b, a; + for (qint32 x = 0; x < width; ++x) { + in >> a >> r >> g >> b; + if (invAlpha) + a = 0xFFFF - a; + ou << r << g << b << a; + } + + if (in.status() != QDataStream::Ok || ou.status() != QDataStream::Ok) { + return {}; + } + } else if (rgfx_format == RGHDChunk::BitmapType::Rgb96) { + QDataStream in(planes); + in.setByteOrder(QDataStream::BigEndian); + in.setFloatingPointPrecision(QDataStream::SinglePrecision); + QDataStream ou(&ba, QDataStream::WriteOnly); + ou.setByteOrder(QDataStream::ByteOrder(QSysInfo::ByteOrder)); + ou.setFloatingPointPrecision(QDataStream::SinglePrecision); + + float r, g, b; + for (qint32 x = 0; x < width; ++x) { + in >> r >> g >> b; + ou << r << g << b << float(1); + } + + if (in.status() != QDataStream::Ok || ou.status() != QDataStream::Ok) { + return {}; + } + } else if (rgfx_format == RGHDChunk::BitmapType::Rgb128) { + QDataStream in(planes); + in.setByteOrder(QDataStream::BigEndian); + in.setFloatingPointPrecision(QDataStream::SinglePrecision); + QDataStream ou(&ba, QDataStream::WriteOnly); + ou.setByteOrder(QDataStream::ByteOrder(QSysInfo::ByteOrder)); + ou.setFloatingPointPrecision(QDataStream::SinglePrecision); + + auto invAlpha = header->bitmapType() & RGHDChunk::BitmapType::HasInvAlpha; + float r, g, b, a; + for (qint32 x = 0; x < width; ++x) { + in >> a >> r >> g >> b; + if (invAlpha) + a = 1 - a; + ou << r << g << b << a; + } + + if (in.status() != QDataStream::Ok || ou.status() != QDataStream::Ok) { + return {}; + } + } + + return ba; +} + +quint32 RBODChunk::strideSize(const RGHDChunk *header) const +{ + auto rgfx_format = RGHDChunk::BitmapTypes(header->bitmapType() & 0x3FFFFFFF); + if (rgfx_format == RGHDChunk::BitmapType::Planar8) { + return (header->width() + 7) / 8; + } + if (rgfx_format == RGHDChunk::BitmapType::Chunky8) { + return header->width(); + } + if (rgfx_format == RGHDChunk::BitmapType::Rgb15 || rgfx_format == RGHDChunk::BitmapType::Rgb16) { + return header->width() * 2; + } + if (rgfx_format == RGHDChunk::BitmapType::Rgb24) { + return header->width() * 3; + } + if (rgfx_format == RGHDChunk::BitmapType::Rgb32) { + return header->width() * 4; + } + if (rgfx_format == RGHDChunk::BitmapType::Rgb48) { + return header->width() * 6; + } + if (rgfx_format == RGHDChunk::BitmapType::Rgb64) { + return header->width() * 8; + } + if (rgfx_format == RGHDChunk::BitmapType::Rgb96) { + return header->width() * 12; + } + if (rgfx_format == RGHDChunk::BitmapType::Rgb128) { + return header->width() * 16; + } + return 0; +} + + /* ****************** * *** BEAM Chunk *** * ****************** */ diff --git a/src/imageformats/chunks_p.h b/src/imageformats/chunks_p.h index fc8c04d..df7835e 100644 --- a/src/imageformats/chunks_p.h +++ b/src/imageformats/chunks_p.h @@ -1,6 +1,6 @@ /* This file is part of the KDE project - SPDX-FileCopyrightText: 2025 Mirco Miranda + SPDX-FileCopyrightText: 2025-2026 Mirco Miranda SPDX-License-Identifier: LGPL-2.0-or-later */ @@ -10,6 +10,7 @@ * - https://wiki.amigaos.net/wiki/IFF_FORM_and_Chunk_Registry * - https://www.fileformat.info/format/iff/egff.htm * - https://download.autodesk.com/us/maya/2010help/index.html (Developer resources -> File formats -> Maya IFF) + * - https://aminet.net/package/dev/misc/IFF-RGFX */ #ifndef KIMG_CHUNKS_P_H @@ -59,6 +60,11 @@ Q_DECLARE_LOGGING_CATEGORY(LOG_IFFPLUGIN) #define IHDR_CHUNK QByteArray("IHDR") #define IPAR_CHUNK QByteArray("IPAR") #define PLTE_CHUNK QByteArray("PLTE") +#define RBOD_CHUNK QByteArray("RBOD") +#define RCOL_CHUNK QByteArray("RCOL") +#define RFLG_CHUNK QByteArray("RFLG") +#define RGHD_CHUNK QByteArray("RGHD") +#define RSCM_CHUNK QByteArray("RSCM") #define XBMI_CHUNK QByteArray("XBMI") #define YUVS_CHUNK QByteArray("YUVS") @@ -91,10 +97,11 @@ Q_DECLARE_LOGGING_CATEGORY(LOG_IFFPLUGIN) // FORM types #define ACBM_FORM_TYPE QByteArray("ACBM") #define ILBM_FORM_TYPE QByteArray("ILBM") +#define IMAG_FORM_TYPE QByteArray("IMAG") #define PBM__FORM_TYPE QByteArray("PBM ") #define RGB8_FORM_TYPE QByteArray("RGB8") #define RGBN_FORM_TYPE QByteArray("RGBN") -#define IMAG_FORM_TYPE QByteArray("IMAG") +#define RGFX_FORM_TYPE QByteArray("RGFX") #define CIMG_FOR4_TYPE QByteArray("CIMG") #define TBMP_FOR4_TYPE QByteArray("TBMP") @@ -937,6 +944,8 @@ private: QImage::Format iffFormat() const; QImage::Format cdiFormat() const; + + QImage::Format rgfxFormat() const; }; @@ -1730,6 +1739,213 @@ protected: quint32 strideSize(const IHDRChunk *header) const; }; + +/*! + * *** RGFX IFF CHUNKS *** + */ + +/*! + * \brief The RGHDChunk class + */ +class RGHDChunk : public IFFChunk +{ +public: + enum Compression { + Uncompressed = 0, + Xpk = 1, /**< any XPK-packer */ + Zip = 2 /**< libzip (LZ77/ZIP) compression */ + }; + + enum BitmapType { + Planar8 = 0x0000, /**< unaligned planar 8 bit bitmap */ + Chunky8 = 0x0001, /**< unaligned chunky 8 bit bitmap */ + Rgb24 = 0x0002, /**< 3-byte 24 bit RGB triples */ + Rgb32 = 0x0004, /**< 4-byte 32 bit ARGB quadruples */ + Rgb15 = 0x0010, /**< 2-byte 15 bit RGB (x+3x5 bit integer) */ + Rgb16 = 0x0020, /**< 2-byte 16 bit ARGB (1+3x5 bit integer) */ + Rgb48 = 0x0040, /**< 6-byte 48 bit RGB (3x 16 bit integer) */ + Rgb64 = 0x0080, /**< 8-byte 64 bit ARGB (4x 16 bit integer) */ + Rgb96 = 0x0100, /**< 12-byte 96 bit RGB (3x 32 bit float) */ + Rgb128 = 0x0200, /**< 16-byte 128 bit ARGB (4x 32 bit float) */ + + HasAlpha = (1 << 30), /**< set if A is meaningful */ + HasInvAlpha = (1 << 31) /**< set if A is meaningful but inversed (A = 255 - alpha) */ + }; + Q_DECLARE_FLAGS(BitmapTypes, BitmapType) + + virtual ~RGHDChunk() override; + RGHDChunk(); + RGHDChunk(const RGHDChunk&) = default; + RGHDChunk& operator=(const RGHDChunk&) = default; + + CHUNKID_DEFINE(RGHD_CHUNK) + + virtual bool isValid() const override; + + QSize size() const; + + qint32 leftEdge() const; + + qint32 topEdge() const; + + qint32 width() const; + + qint32 height() const; + + qint32 pageWidth() const; + + qint32 pageHeight() const; + + quint32 depth() const; + + quint32 pixelBits() const; + + quint32 bytesPerLine() const; + + Compression compression() const; + + quint32 xAspect() const; + + quint32 yAspect() const; + + BitmapTypes bitmapType() const; + + double aspectRatio() const; + +protected: + virtual bool innerReadStructure(QIODevice *d) override; +}; + + +/*! + * \brief The RCOLChunk class + */ +class RCOLChunk : public CMAPChunk +{ +public: + virtual ~RCOLChunk() override; + RCOLChunk(); + RCOLChunk(const RCOLChunk& other) = default; + RCOLChunk& operator =(const RCOLChunk& other) = default; + + virtual bool isValid() const override; + + virtual qint32 count() const override; + + CHUNKID_DEFINE(RCOL_CHUNK) + +protected: + virtual QList innerPalette() const override; +}; + + +/*! + * \brief The RFLGChunk class + */ +class RFLGChunk : public IFFChunk +{ +public: + enum class Flag : quint32 { + FromGray = 0x08, /**< created from 8/16 bit gray source so R==G==B */ + From8Bit = 0x10, /**< created from 8 bit source, so (R,G,B)&0xFF00 == ... & 0x00FF */ + From4Bit = 0x20, /**< created from 4 bit source, so (R,G,B)&0xF0 == ... & 0x0F */ + From8BitAlpha = 0x40, /**< 16/32 bit alpha created from 8 bit alpha source */ + From16BitAlpha = 0x80 /**< 32 bit alpha created from 16 bit alpha source */ + }; + Q_DECLARE_FLAGS(Flags, Flag) + + virtual ~RFLGChunk() override; + RFLGChunk(); + RFLGChunk(const RFLGChunk&) = default; + RFLGChunk& operator=(const RFLGChunk&) = default; + + CHUNKID_DEFINE(RFLG_CHUNK) + + virtual bool isValid() const override; + + Flags flags() const; + +protected: + virtual bool innerReadStructure(QIODevice *d) override; +}; + + +/*! + * \brief The RSCMChunk class + */ +class RSCMChunk : public IFFChunk +{ +public: + virtual ~RSCMChunk() override; + RSCMChunk(); + RSCMChunk(const RSCMChunk&) = default; + RSCMChunk& operator=(const RSCMChunk&) = default; + + CHUNKID_DEFINE(RSCM_CHUNK) + + virtual bool isValid() const override; + + /*! + * \brief viewMode Default screenmode + * + * Since HAM modes only can be identified by their ID (or DIPF) you have to make sure, + * that rcsm_ViewMode is OR'ed with HAM_KEY for these (same for EHB and EXTRAHALFBRITE_KEY). + * + * Specific RTG ViewModes will lose their meaning, as soon as graphics are transferred between + * different systems, which is why the two LocalVM entries are considered obsolete. + * + * Always set the obsolete entries to 0xFFFFFFFF and avoid interpreting them. + * \return default screenmode + */ + quint32 viewMode() const; + + /*! + * \brief localVM0 + * \obsolete obsolete local RTG + */ + quint32 localVM0() const; + + /*! + * \brief localVM1 + * \obsolete obsolete local RTG + */ + quint32 localVM1() const; + +protected: + virtual bool innerReadStructure(QIODevice *d) override; +}; + + +/*! + * \brief The RBODChunk class + */ +class RBODChunk : public IFFChunk +{ +public: + virtual ~RBODChunk() override; + RBODChunk(); + RBODChunk(const RBODChunk&) = default; + RBODChunk& operator=(const RBODChunk&) = default; + + CHUNKID_DEFINE(RBOD_CHUNK) + + virtual bool isValid() const override; + + QByteArray strideRead(QIODevice *d, + qint32 y, + const RGHDChunk *header, + const RSCMChunk *rcsm = nullptr, + const RCOLChunk *rcol = nullptr) const; + + bool resetStrideRead(QIODevice *d) const; + +private: + QByteArray deinterleave(const QByteArray &planes, qint32 y, const RGHDChunk *header, const RSCMChunk *rcsm = nullptr, const RCOLChunk *rcol = nullptr) const; + + quint32 strideSize(const RGHDChunk *header) const; +}; + + /*! * *** UNDOCUMENTED CHUNKS *** */ diff --git a/src/imageformats/iff.cpp b/src/imageformats/iff.cpp index f02d7a8..093ff93 100644 --- a/src/imageformats/iff.cpp +++ b/src/imageformats/iff.cpp @@ -267,6 +267,11 @@ static void addMetadata(QImage &img, const IFOR_Chunk *form) if (!params.isEmpty()) { img.setDotsPerMeterY(img.dotsPerMeterY() * params.first()->aspectRatio()); } + } else if (form->formType() == RGFX_FORM_TYPE) { + auto headers = IFFChunk::searchT(form); + if (!headers.isEmpty()) { + img.setDotsPerMeterY(img.dotsPerMeterY() * headers.first()->aspectRatio()); + } } else { auto headers = IFFChunk::searchT(form); if (!headers.isEmpty()) { @@ -543,6 +548,69 @@ bool IFFHandler::readCDIImage(QImage *image) return true; } +bool IFFHandler::readRGFXImage(QImage *image) +{ + auto forms = d->searchForms(); + if (forms.isEmpty()) { + return false; + } + auto cin = qBound(0, currentImageNumber(), int(forms.size() - 1)); + auto &&form = forms.at(cin); + + // show the first one (I don't have a sample with many images) + auto headers = IFFChunk::searchT(form); + if (headers.isEmpty()) { + return false; + } + + // create the image + auto &&header = headers.first(); + auto img = imageAlloc(header->size(), form->format()); + if (img.isNull()) { + qCWarning(LOG_IFFPLUGIN) << "IFFHandler::readRGFXImage(): error while allocating the image"; + return false; + } + + // set the palette + if (img.format() == QImage::Format_Indexed8) { + auto pltes = IFFChunk::searchT(form); + if (!pltes.isEmpty()) { + img.setColorTable(pltes.first()->palette()); + } + } + + // decoding the image + auto bodies = IFFChunk::searchT(form); + if (bodies.isEmpty()) { + img.fill(0); + } else { + auto &&body = bodies.first(); + if (!body->resetStrideRead(device())) { + qCWarning(LOG_IFFPLUGIN) << "IFFHandler::readRGFXImage(): error while reading image data"; + return false; + } + auto rcsms = IFFChunk::searchT(form); + auto rcols = IFFChunk::searchT(form); + for (auto y = 0, h = img.height(); y < h; ++y) { + auto line = reinterpret_cast(img.scanLine(y)); + auto ba = body->strideRead(device(), y, header, + rcsms.isEmpty() ? nullptr : rcsms.first(), + rcols.isEmpty() ? nullptr : rcols.first()); + if (ba.isEmpty()) { + qCWarning(LOG_IFFPLUGIN) << "IFFHandler::readRGFXImage(): error while reading image scanline"; + return false; + } + memcpy(line, ba.constData(), std::min(img.bytesPerLine(), ba.size())); + } + } + + // set metadata (including image resolution) + addMetadata(img, form); + + *image = img; + return true; +} + bool IFFHandler::read(QImage *image) { if (!d->readStructure(device())) { @@ -562,6 +630,10 @@ bool IFFHandler::read(QImage *image) return true; } + if (readRGFXImage(image)) { + return true; + } + qCWarning(LOG_IFFPLUGIN) << "IFFHandler::read(): no supported image found"; return false; } diff --git a/src/imageformats/iff_p.h b/src/imageformats/iff_p.h index 76cde44..145f632 100644 --- a/src/imageformats/iff_p.h +++ b/src/imageformats/iff_p.h @@ -37,6 +37,8 @@ private: bool readCDIImage(QImage *image); + bool readRGFXImage(QImage *image); + private: const QScopedPointer d; };