From 9412fbcefbf41287378cac578a4e5f8bb14fc40d Mon Sep 17 00:00:00 2001 From: TheLastRar Date: Thu, 24 Apr 2025 23:14:08 +0100 Subject: [PATCH] FSUI: Use SVG icons for flags and stars --- bin/resources/fullscreenui/flags/NTSC-B.png | Bin 5550 -> 0 bytes bin/resources/fullscreenui/flags/NTSC-C.png | Bin 1429 -> 0 bytes bin/resources/fullscreenui/flags/NTSC-HK.png | Bin 3224 -> 0 bytes bin/resources/fullscreenui/flags/NTSC-J.png | Bin 1910 -> 0 bytes bin/resources/fullscreenui/flags/NTSC-K.png | Bin 4565 -> 0 bytes bin/resources/fullscreenui/flags/NTSC-T.png | Bin 1470 -> 0 bytes bin/resources/fullscreenui/flags/NTSC-U.png | Bin 5031 -> 0 bytes bin/resources/fullscreenui/flags/Other.png | Bin 3943 -> 0 bytes bin/resources/fullscreenui/flags/PAL-A.png | Bin 4164 -> 0 bytes bin/resources/fullscreenui/flags/PAL-AF.png | Bin 2754 -> 0 bytes bin/resources/fullscreenui/flags/PAL-AU.png | Bin 144 -> 0 bytes bin/resources/fullscreenui/flags/PAL-BE.png | Bin 322 -> 0 bytes bin/resources/fullscreenui/flags/PAL-E.png | Bin 2239 -> 0 bytes bin/resources/fullscreenui/flags/PAL-F.png | Bin 261 -> 0 bytes bin/resources/fullscreenui/flags/PAL-FI.png | Bin 334 -> 0 bytes bin/resources/fullscreenui/flags/PAL-G.png | Bin 361 -> 0 bytes bin/resources/fullscreenui/flags/PAL-GR.png | Bin 655 -> 0 bytes bin/resources/fullscreenui/flags/PAL-I.png | Bin 247 -> 0 bytes bin/resources/fullscreenui/flags/PAL-IN.png | Bin 2583 -> 0 bytes bin/resources/fullscreenui/flags/PAL-M.png | Bin 2239 -> 0 bytes bin/resources/fullscreenui/flags/PAL-NL.png | Bin 265 -> 0 bytes bin/resources/fullscreenui/flags/PAL-NO.png | Bin 675 -> 0 bytes bin/resources/fullscreenui/flags/PAL-P.png | Bin 7353 -> 0 bytes bin/resources/fullscreenui/flags/PAL-PL.png | Bin 140 -> 0 bytes bin/resources/fullscreenui/flags/PAL-R.png | Bin 265 -> 0 bytes bin/resources/fullscreenui/flags/PAL-S.png | Bin 5041 -> 0 bytes bin/resources/fullscreenui/flags/PAL-SC.png | Bin 587 -> 0 bytes bin/resources/fullscreenui/flags/PAL-SW.png | Bin 331 -> 0 bytes bin/resources/fullscreenui/flags/PAL-SWI.png | Bin 751 -> 0 bytes bin/resources/fullscreenui/flags/PAL-UK.png | Bin 2110 -> 0 bytes bin/resources/fullscreenui/star-0.png | Bin 296 -> 0 bytes bin/resources/fullscreenui/star-1.png | Bin 442 -> 0 bytes bin/resources/fullscreenui/star-2.png | Bin 534 -> 0 bytes bin/resources/fullscreenui/star-3.png | Bin 505 -> 0 bytes bin/resources/fullscreenui/star-4.png | Bin 442 -> 0 bytes bin/resources/fullscreenui/star-5.png | Bin 297 -> 0 bytes pcsx2/ImGui/FullscreenUI.cpp | 60 +++++- pcsx2/ImGui/FullscreenUI.h | 1 + pcsx2/ImGui/ImGuiFullscreen.cpp | 200 ++++++++++++++++++- pcsx2/ImGui/ImGuiFullscreen.h | 13 +- pcsx2/ImGui/ImGuiManager.cpp | 3 + 41 files changed, 266 insertions(+), 11 deletions(-) delete mode 100644 bin/resources/fullscreenui/flags/NTSC-B.png delete mode 100644 bin/resources/fullscreenui/flags/NTSC-C.png delete mode 100644 bin/resources/fullscreenui/flags/NTSC-HK.png delete mode 100644 bin/resources/fullscreenui/flags/NTSC-J.png delete mode 100644 bin/resources/fullscreenui/flags/NTSC-K.png delete mode 100644 bin/resources/fullscreenui/flags/NTSC-T.png delete mode 100644 bin/resources/fullscreenui/flags/NTSC-U.png delete mode 100644 bin/resources/fullscreenui/flags/Other.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-A.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-AF.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-AU.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-BE.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-E.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-F.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-FI.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-G.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-GR.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-I.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-IN.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-M.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-NL.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-NO.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-P.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-PL.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-R.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-S.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-SC.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-SW.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-SWI.png delete mode 100644 bin/resources/fullscreenui/flags/PAL-UK.png delete mode 100644 bin/resources/fullscreenui/star-0.png delete mode 100644 bin/resources/fullscreenui/star-1.png delete mode 100644 bin/resources/fullscreenui/star-2.png delete mode 100644 bin/resources/fullscreenui/star-3.png delete mode 100644 bin/resources/fullscreenui/star-4.png delete mode 100644 bin/resources/fullscreenui/star-5.png diff --git a/bin/resources/fullscreenui/flags/NTSC-B.png b/bin/resources/fullscreenui/flags/NTSC-B.png deleted file mode 100644 index e6d94c0cd198b8bc46eea554e7f38e829f217fa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5550 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 diff --git a/bin/resources/fullscreenui/flags/NTSC-C.png b/bin/resources/fullscreenui/flags/NTSC-C.png deleted file mode 100644 index 6d12b6a1e2dce5f247637feacb1e805bbe2ef2e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1429 zcmV;G1#0?+o#%u@&+0Df;-<4HcwHICUL(?-NQxru}6h%=KMfr=)nbHkexy6)b z#43D!R4c2+M)0a!Gs9y_BU(jvViB>O168axw9~XA-y{KWC8jjvHh^#rV5y4LhQu5t zV@ax7t*!=2aXw{ZESJf;qv;$E;m1~IBSX_EvCjBa!;@nRHZC-q5$i11P%#|;mQPk} zT=dJOdzy9&ROUpK7Kvc6aq8q+sB{BSS&pP${hA{9pj@R?E~B`_SAD$ zGaX~G&L|B_)kyA)+(yafgKiT0F|4!aWAS`QtY}*ZdVJ*aj^=4;JjYW*N*?%oDoZ6K z-t;L`I6Q}L41Z6=w_cDlSyd?&6Z-rhxl@i9_D9GtRuPtfgtYgC+7*1gSeoxi(uVRYT)Cs%4C_> z&}!|V6KB1mUUP?RF5Q@h%w3EQ;+;u7=MEoCKD4(Dv@q=6tHeFY(T{#Y`fPzli-VL%-l33QHXhsX6Xf&k@Ala*%ZwjAr=FC<+6= z&4|52KTRYJupYfmu3YzZ$`$Evo(++->v&CJoS5{-lxy);4k<+}#a2Z_3JrTo)xxli zK{+%%Xo-}?(xXq4t7^(MAcy4ofXC=gvahH-Q&?=-i*4~v4o%&)Ga@NECrs2g!NEO5C z=zAns4G{qddTmz_Pve(4t7NxCT9(Zfu^LpiTubWNW8E^8g0pOMR&JNg6{|&N68Am? zNcs__!ji03G!5-3HT~W0eI{)cOFH18B-g2Vo#YAipN=_!jDuF!WGzgW^+H!5OvTBN z^^xZ*=@Bl1k$#>VlAOT(J~Ry<9fLUDr0Ph&0VOj|)hBDGHauEb(vFms|IZxVJA2+o z2Z_JZ^u=iEkMdmwy{vSi@~&sA*Vwh8XOxj+!NsVkp}p(ZRC78ehp7E;aVram+C~rcW@_V_DIZCvDy)_(ixGu zw0ET+)$e_DMq;fRtj^4pD%Owo;E(_S002PH|JS}S0RR9100000000000000000000 j0000000000006T9lQ%s=3sErD00000NkvXXu0mjf39+FQ diff --git a/bin/resources/fullscreenui/flags/NTSC-HK.png b/bin/resources/fullscreenui/flags/NTSC-HK.png deleted file mode 100644 index f23d63ad785021a2928ae447b24059b81826ae44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3224 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 diff --git a/bin/resources/fullscreenui/flags/PAL-AF.png b/bin/resources/fullscreenui/flags/PAL-AF.png deleted file mode 100644 index eaacfb72544bbac9a1cadca558815869e9efaeec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2754 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 Wo%PPQ`p5=Zf_R>;elF{r5}E+^x+$#y diff --git a/bin/resources/fullscreenui/flags/PAL-BE.png b/bin/resources/fullscreenui/flags/PAL-BE.png deleted file mode 100644 index 14d41bfc06a2c08e5bb751fb89049383e6d444cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5?y)cfNd@`C`+$^afKP}kkp5s`_wTmC2V=X% zy&^vsY5iQPxifu-1yJIJr;B4q#jUp&9eEoZ1P(aJNgQCBHld-OKO!Q|_uVqCS>I+9 z-%GxieP$8U`EN{O8WXr97C7i7G&1dMVC8y3Jpo#o3vsMHi`|iPlRiv%Q+g2SX9iDK KKbLh*2~7aw`f7~; diff --git a/bin/resources/fullscreenui/flags/PAL-E.png b/bin/resources/fullscreenui/flags/PAL-E.png deleted file mode 100644 index e9ca0a2e4ba56ea7e0aec29f68f652499ef808f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2239 zcmV;w2tfCVP)V!~n*%kM4Lgw%K8`n3c>m7;Zgp1*Ig?6YY#>I47eR}1cvSPn2M0HmKv{G8$pbA; ze&D$i=DiLZM2Is{da0N*+O`({%K%PdYF}(%f`Lo*#s>V#0+ftE_s9fBU2k@JQhR+* zw4W`=t0BInC(ErL)Uq1z!wDlugj#81qm?(gqAJj@9OJtY>c0#nNrEX$fmLQ^W^i1G zgh-x}I_|;>kcmUYs3VJpMX#JNnU6gKfa@~=00+ZKL_t(|+U=c*a@sHuhW)Q>jKLfR zbKf_F`wHj#KUXc|(n3imAu-5_zL^ec8P)!yjaJs~T8cy>kw_#Gi9{liNF)-8L~GivbllU6ftj4LbU@taERme;3N;~S_C z**ASUrP>x;@+Edlyw=-)1NAL^fBTEf1f2Sk-dGFtw7|7ZSH-`1^BYGq>+x{${fZolCM z=p{p(j1oN5Sh^CA$1MPs^I4g;v`fRE*@NT(7BIZMix#~bEzv0tl>F%N_ed^q&8>p=oJII<|89E z0H@MY|Fe>%f4^z;;gWj^s`k?_H#mG^`v{a6!zC7A@!YGOefme>e$r)ZD8VJs2Bx+A z$)|q+iUIXe7no&(JNPu8q8n1OV{AUAB5}~urG&YyARJ)ztN7L=g|u?KNgtXnrsJ&B zj}6n~gc4K|<14?;XB`LZmfH+{vG&X=7IxSHX!AyFD9{=( zdaUCw2Ia3dPgd;XZ+Z=ZJRc=WX`Ja78GZQ`=A$ZpQ$Gsk_b4>3dbc+6<*|&^n2i(Z zRYENB+}Y>gay0z8HKOGJ96Kq}oabST;quB9f1pSmoIyxD@$N=s-2(DazizGupzi!B z3#dNEBk^Gy*3u`-H~V^Z6gd?1op?zdj^Q6tq$GE`Po_^r%MPogl{azWOrJt|cQ1}I zwVqGzsMg`r9VwAXOE~q(hC*&5G0gho@m5jtT>nbA7zZPt_g~og3iN%m`y>*HL?V$$ zL`1ZO_d_wVOnD>}jf(U0rp2qOJQ4~El+Qz@*<&BM6YaJ*`8+JAHy^2a=6!yGXO!{jAELDs+lx$#H;;mvz zc^+D8RUT8jsOM6br)A=1QDgnMT;llrw)bbV}1|WtDavnR?6$I0t7W``5_~P)RtX( zgnEkh4-0Z@xcg7fUm>lWBDbMLVviULYBW{yQdyo~rJOM69A|upC93Dj1*R$j@$`|9 zNF)-8L?Q`10=XpkEiu?0pCMHE{OxMrxU(hfRb^{QcsWHUBNOhQHP`rOj5ixH-aS?)btF$B%u1Gh3cVOz`(BzfuCQ{K z3d-cgNXYvf+xv2>s91e|R?=r7bE4<(Qc=_E!oE%J9gs_-4r@s+AL_@GAZwy+V7?pD zO3j!<8$g#gnk(~NCjzmE+pks!(kz|cI#~c3oYjBSbAZpCO87vjL znc8o?-tHLP!DVj*R=lGk>75+Wpf}b6w|zQk9k{FmEMB1&fa+T+NSnM7_T&LOaO3ZY zxOx3fNZsk^md3a~EQ+ZdBT@mjhTBeDb}R$w@HURY^V6{JhC=bm)+BR1s9&1C5#IGW zolY9SrsL2%UQBMJb}$YRuRsv+ZF287{8QxuEB5!-2Pw_|3dfKQ0)I~6kqxoQ9Z|Nr;r zZ*=}{2B|5Zlk$IXuVMl!SncWJ7*cWT?Kwk11_d6L4N(aP7?cbG{?B{$aDDP3g;J*N j@ejhC0tOxw7+d^3Bx?0me&Ii$vl%>H{an^LB{Ts5({NVu diff --git a/bin/resources/fullscreenui/flags/PAL-FI.png b/bin/resources/fullscreenui/flags/PAL-FI.png deleted file mode 100644 index 4d4267aec67d35b13055ca3953f466f8cbc3fa93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YokFYQUNtqW<9|I}50G|-o|Ns9p=;!$5&;0fK z54&l>?&CLv?aI$xe{7S`f9moB<|eT=pvu>tE{-7;x8B}j~>JtVDY8occr`g`52kRm|0kO7@3&b7#JCy8yXrE9UKk_C@3Uw z2nZOkaBxU4VM^z35v`JE*gjcm^@Z$r-(u8F(>^mWb~A3{7T6$>u$wS*J%3E=Kf};3 p_k(Wr+cvP1W;xhxAH)yvm)O5Lu>QfdML=&ec)I$ztaD0e0sw23YH9!g diff --git a/bin/resources/fullscreenui/flags/PAL-G.png b/bin/resources/fullscreenui/flags/PAL-G.png deleted file mode 100644 index 3be4785052e910106a6d6147f7a514df4009fde5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmeAS@N?(olHy`uVBq!ia0y~yV0-|?3M|Y(k$FOUg@BZ3fKQ0)|MNf=!#xIu-`g1; zNiZB?V31;9(8$nv22{=O>EaktaqG?bMuvs}0f&vj9*V6ZK^}_rE$=_(8Q+LG&2gQR zhVbnEGc~8r?CmL-OEY+P--q32Y)+kkCutFs&xM$wlXKxs( Q$PW_mboFyt=akR{0AM4Fx&QzG diff --git a/bin/resources/fullscreenui/flags/PAL-GR.png b/bin/resources/fullscreenui/flags/PAL-GR.png deleted file mode 100644 index 2f64ef73729ec05e63833317cbd7393b355d52d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 655 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YouW~R0Nx?}s?*J*Y0G|+7-njMu|NrNVS@-bu zSDm7rDKpL_Pd~l#*yDF!eyuqA$hvml%-whS6E-xhxz@GuhGyZ8oflq&^`Brcnr+L# zz$D`7;uunK>&+eOB56kfmxD8p&KGk0_;31DR&R$4>r*$LDSc+hwb{MM{o?wcSH31o za{SO|+$|VzK!_l@!Tmt0xf$1wLaX;j%owMi-zm=I$LP$|#=^rXA!MME;BjC=gCZ`0 z9ViMI{7hxW*98I&uruzSna!c`pt<4h8B>-w;syH07Cy6@Z++#? z{yuBNKGW?$PwftQ^7``z@#K}2wr^M5xV+`CnHxT*p*p@U<-q&XaX(W2+1uLB+^^5b zsw22Tnh<&C%Ik*5v9Vck`yKb~S#H?Lp^?zpaF-aehk0V5ijkO*m@Y8(85j;!M|AWE z3!Y}V+($SmdKI;Vst0Hsd;qyPW_ diff --git a/bin/resources/fullscreenui/flags/PAL-I.png b/bin/resources/fullscreenui/flags/PAL-I.png deleted file mode 100644 index c78d99490e71ef33ae600adeab8a702ecdb1eefd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 247 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!Pp~ip$ps$|rU5C@0G|+7hRH7H)lL5Y|NrpQ z%b(Al%Poky>fm$dN`5U+!CX%l$B>F!Z_gPDGAQt{7>KbXG&(c(y}IvW`sa#j-~`dz l|J&l`PMJo3a4ljrqqByj;(zxu+kp;c@O1TaS?83{1OUCHb7TMj diff --git a/bin/resources/fullscreenui/flags/PAL-IN.png b/bin/resources/fullscreenui/flags/PAL-IN.png deleted file mode 100644 index b812aba7d5e7bf9c00607b719c526995de18f272..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2583 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 ntl!}$AB*0O_#h$w~%~+B4mn diff --git a/bin/resources/fullscreenui/flags/PAL-M.png b/bin/resources/fullscreenui/flags/PAL-M.png deleted file mode 100644 index e9ca0a2e4ba56ea7e0aec29f68f652499ef808f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2239 zcmV;w2tfCVP)V!~n*%kM4Lgw%K8`n3c>m7;Zgp1*Ig?6YY#>I47eR}1cvSPn2M0HmKv{G8$pbA; ze&D$i=DiLZM2Is{da0N*+O`({%K%PdYF}(%f`Lo*#s>V#0+ftE_s9fBU2k@JQhR+* zw4W`=t0BInC(ErL)Uq1z!wDlugj#81qm?(gqAJj@9OJtY>c0#nNrEX$fmLQ^W^i1G zgh-x}I_|;>kcmUYs3VJpMX#JNnU6gKfa@~=00+ZKL_t(|+U=c*a@sHuhW)Q>jKLfR zbKf_F`wHj#KUXc|(n3imAu-5_zL^ec8P)!yjaJs~T8cy>kw_#Gi9{liNF)-8L~GivbllU6ftj4LbU@taERme;3N;~S_C z**ASUrP>x;@+Edlyw=-)1NAL^fBTEf1f2Sk-dGFtw7|7ZSH-`1^BYGq>+x{${fZolCM z=p{p(j1oN5Sh^CA$1MPs^I4g;v`fRE*@NT(7BIZMix#~bEzv0tl>F%N_ed^q&8>p=oJII<|89E z0H@MY|Fe>%f4^z;;gWj^s`k?_H#mG^`v{a6!zC7A@!YGOefme>e$r)ZD8VJs2Bx+A z$)|q+iUIXe7no&(JNPu8q8n1OV{AUAB5}~urG&YyARJ)ztN7L=g|u?KNgtXnrsJ&B zj}6n~gc4K|<14?;XB`LZmfH+{vG&X=7IxSHX!AyFD9{=( zdaUCw2Ia3dPgd;XZ+Z=ZJRc=WX`Ja78GZQ`=A$ZpQ$Gsk_b4>3dbc+6<*|&^n2i(Z zRYENB+}Y>gay0z8HKOGJ96Kq}oabST;quB9f1pSmoIyxD@$N=s-2(DazizGupzi!B z3#dNEBk^Gy*3u`-H~V^Z6gd?1op?zdj^Q6tq$GE`Po_^r%MPogl{azWOrJt|cQ1}I zwVqGzsMg`r9VwAXOE~q(hC*&5G0gho@m5jtT>nbA7zZPt_g~og3iN%m`y>*HL?V$$ zL`1ZO_d_wVOnD>}jf(U0rp2qOJQ4~El+Qz@*<&BM6YaJ*`8+JAHy^2a=6!yGXO!{jAELDs+lx$#H;;mvz zc^+D8RUT8jsOM6br)A=1QDgnMT;llrw)bbV}1|WtDavnR?6$I0t7W``5_~P)RtX( zgnEkh4-0Z@xcg7fUm>lWBDbMLVviULYBW{yQdyo~rJOM69A|upC93Dj1*R$j@$`|9 zNF)-8L?Q`10=XpkEiu?0pCMHE{OxMrxU(hfRb^{QcsWHUBNOhQHP`rOj5ixH-aS?)btF$B%u1Gh3cVOz`(BzfuCQ{K z3d-cgNXYvf+xv2>s91e|R?=r7bE4<(Qc=_E!oE%J9gs_-4r@s+AL_@GAZwy+V7?pD zO3j!<8$g#gnk(~NCjzmE+pks!(kz|cI#~c3oYjBSbAZpCO87vjL znc8o?-tHLP!DVj*R=lGk>75+Wpf}b6w|zQk9k{FmEMB1&fa+T+NSnM7_T&LOaO3ZY zxOx3fNZsk^md3a~EQ+ZdBT@mjhTBeDb}R$w@HURY^V6{JhC=bm)+BR1s9&1C5#IGW zolY9SrsL2%UQBMJb}$YRuRsv+ZF287{8QxuEB5!-2Pw_|3dfKQ04qFeVm8IAw{|37~5 z@#~`}wz0EzSU4|#?W_h=u-?Lf67M;zGCV&e1hPx!OPFR| zyZ!XZf_1tc6+BwWuikz6+Fq^`-94#cuDtG0T^?|9$>0zx;lA z@%N|SK2{1kG( zGoC-ryIm$MvwY>@Y0+g;B>LdN{WNLgGgjF%Y9DBDUrl6aXOv+pkT`(Om~-Cs@U;Fv z=d`FDVn6Qj$qF+t95CSd^u9{$nm)US!vmLuUWZ2EMpGtMKbC78A{K%X$^m2v+R0v$ Wc;2rdkq`+?bqt=aelF{r5}E)izvz1a diff --git a/bin/resources/fullscreenui/flags/PAL-P.png b/bin/resources/fullscreenui/flags/PAL-P.png deleted file mode 100644 index 3510e8b76d29dbd9fc528fe2d4aa96a93cd3dd75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7353 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 lLPJK)|0C$xKRve_T|{RfPurAYt) diff --git a/bin/resources/fullscreenui/flags/PAL-PL.png b/bin/resources/fullscreenui/flags/PAL-PL.png deleted file mode 100644 index 3681ed91176e7c3102b7fa8e36660cf4bb184f99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^zkqlS6El$1){lD$q<8{+LR|m<|9?ls=J&&A4~#;i zUsvP+#jQPE978hhy*;fc%Ag>?x}m#cq5P~8lLnR*@89Ltu>w^v{CRs~m9(X)^5O5b d_YuhYKl`Tno7kN~lJ0^OdAjfKQ0)|NsB5YRfTLF1!Ei zi$c&wY4fSOboB$;pPmOQSnuiL7*cWT?Kww5CPxOAjawU7brKl4BM$6mG4c8Ma<`Yr z6QC*>2>;w={eH*i9$^s~&SxB4eJsT+tnN*gO-;%NWgHJqOz2ziz{9{jpg?7YvWA7w u89_8<|E=cl_}pvVZ$X4wEJjxRe!$OOo_OM>Xyi+fi#%QZT-G@yGywp-ZCaxM diff --git a/bin/resources/fullscreenui/flags/PAL-S.png b/bin/resources/fullscreenui/flags/PAL-S.png deleted file mode 100644 index c8811fc09c962c3f9bdd8f8bb877ff24d01456fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5041 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 Hu0mjf<{1z& diff --git a/bin/resources/fullscreenui/flags/PAL-SC.png b/bin/resources/fullscreenui/flags/PAL-SC.png deleted file mode 100644 index acf3f570721aff1eccf94444e802bb5d27c7d2ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 587 zcmeAS@N?(olHy`uVBq!ia0vp^CxEzwgBeJE@9SLzq*?-eLR`NKiJE3@m5@#Q|NsBH z8;YN9E6kl}ZJ4oT;o^ff>Fa+92wgp-X=D=j>-V4NxJloB{5h#^-L>+{33Z#q?xX*n zJo(ev^;6IA`P*-^w%+os**9;#*^lJ!CAOXR1VFGk5=n;y?AuH{xu))ZHNjbMijGO2e*aX(^T%C1j4l>VRb1>D@aW4QML~ln%+9kE z&ZU$pr94fVu$ww3W?v`yo@BRDkHsRha z|DFD=l%4pbGl64PiPNOYo7Q0(^Y5SGdD1>(rs@`##12O1KMqd2sv>6dpJT|fKJij@ zi{o(t=C&V+t!F~`gu|`GKbdfA%{_eK+WSN~f9-jRNKV$AtNqlL^@R7o;HlfClEp7C vxFp%)nP$?d$kTX8z=X%~Fg9Ysu|3R8-hvA+-)g)JOdSlKu6{1-oD!M^Mv2q7c_KT;BV@SoVw>KSmnH&XJFM1w0@TeiwVH4Yq2MqtC1P-X!*GgPU zjMuFAF7;IJ``gvGlfQ5ZY>-e;NZ=3N?{G#X7H7e4E91|M;q7ae1@1=x67gWoFS~yP@ZBAgSRk6ISLc{+#`aeNp!EmVd)< n{6FggQcB1!>`s{{`-4&8)Tf2B{u{6Y{mgTe~DWM4fSGH%F diff --git a/bin/resources/fullscreenui/flags/PAL-SWI.png b/bin/resources/fullscreenui/flags/PAL-SWI.png deleted file mode 100644 index f0aa23adb5c145b5f0445b405010bdf8733fdcb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 751 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YouW>K~$?0sXi-44CfKQ0)e+C8+0)mGR|I5k! zmzMtj{{4RwlmEAF{byqOzhudOA))_Uw)|&h{eSuL|EEv?|Ni~|-o5{G=KQ~U^?y&# ze;=R!ii)#cMOc9bGL{7S1>X0gJZ1z1dO*rWmdVTc|?5+RtV)x4i7uGZW4a1(km{FTQ>{arR}E z1MSOq$J*NF6icyI?C1X=_aL3IhwAW*>^G*m`I{deFI@V4Z~EcyOKU$w@c?`8L&QQbLOI}pO9F=A2k8^% Z8NcVbh6sO=`3X#L44$rjF6*2UngDo7Dpvpi diff --git a/bin/resources/fullscreenui/flags/PAL-UK.png b/bin/resources/fullscreenui/flags/PAL-UK.png deleted file mode 100644 index 021e41101310876d6b56ccce4dfbf0e3c96664f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2110 zcmaKuYgAHu0>uwcML{92N+DSJECX~^$}B52O!NAv<*1byov@chNnLMYYI3SuT52y# zU0KeG%F3(h^pGjc(}dnI$1E!`8A3|Y1jKx#rZNZbm-%$R?EinSy?=Y1^X06QzcDV7 zWVgT$002_d`tW!FKxvV?*%pK7P*r3ea#U=LNm!?}S!%IZ09u+7=R2wEd+o^usJnZ< z7#V?Cz5Ql(#BVcW<6ZH4Us0A1J!+htp8gLlctqKL{@Sy1<y*1+lck4S&!dq5M`;y2J<(r+p5o!RiNsbB+OAvoFsQ)Y&QF0XZIMtbRAqe1-Q_(&n zc+gf5u3e$AC59E)l(*2JMR{)|9hn~f*Z>!itDJ(g2{PJTj8QwMV^1xNK$(hy&Hhq2yI#^t?^W zR-x$}{XYf0i)3)-CgBDDywNZW8s~f0eNUE9M8itUj(j@DK-y}gymKWdsfTODKXWiuR z6-hPAQ{z~R5+0$4an{;UQ_Jww9x@5ER889$W~e0a)7e!R!{kB|*tky!j2|t=*S_}R z1BPLL5}51v5EwsPj<3CsI}D6x`~zQGG3X>|aJ!2#eEz0tgBcF*fycRH$xGl5=a5^@ zaK}Z6>Ha%P`28d47Miy@8KdgE#f!FiESBMG8~k|1c0!|=1oB)Tv*@a~zykPiO|-AG zs>OBz9LS2k;|JPv_W=6FrCvDgs?>gzhxxEw`93le#PV@kH)%iMVZI0GsSy||w28pM z3}<%2da`^koa4kc4IY37v+~^260xSTiF;pNWKWK36LF?884o1$cWONa!EjOLd+1W$ ze&A`J5yi>pgw+0`!HdZj9$Y6Il{DK|QCuJHHyoRUyya&9>M&IqL@=yCpSFzwD=D0C5FK0yFG4%1(y$JcQaH{-lm}11+*VefQKEO{ zw(dCDm69CjzTMkv&s&xWrluAIH2;;%r0LtPe8eC3CD#Au(T!b;4m-2|-*Mxshb#vI z>|BfO*)KbmS8ljwA-tQpY`UGiVO(a}S)yIqF8wJB?~(yA_@?5^~Ad~DY0mg2$( z8G+9x-;HW>el-iYL&tL6U9gPoiQ(NHJgBiU{Yu`|b3tb>?@)eqOFXizn=e0|MLU`^ zHM{3LSvBDIiRDz^@$_EXg+$Z)_p{2ILpovXclm#H7tvYS1AkXs`aILLS3QCs*E1c7 zu?Bm?>$50gjDdih7-F;mUtae8MwGoe{=LyO)2VhDup;G zQ6`@a;&pT=V6JckXzm$9?^bXw)QfQ(KE|v3PqT)5s+-ogp=25R& z1F=1rJ-0xD|6J$<{+L_fqukEUkp!)Hj*Nx_GOf?xjyc^shGI2d_(|ai_nzL;bk?CD zP7Xv+cOV}`P$=M11#0(s?ut8}IL37ht{tcvy{tKLas~ zQBn$GT>M?E3ChE282%2{1T7^a#@ionP0$`z!xCi*Qnl;wtXLsYu7Y>w7ecOdnI}@v zVM;s#@futBR$d_#gcr?6dWGneDN65& zKw@~(3N03~tPnv>anEw1VbT+{Zn?;EGj7}mDZPZ-6#8bEMpIp$Xh%>?7V;A5*5SyTkQUy?nsr3U#S0HW5#h1aYFkN*#_wal^r diff --git a/bin/resources/fullscreenui/star-0.png b/bin/resources/fullscreenui/star-0.png deleted file mode 100644 index 5d82bf8f8a1376723341aed3fd3353684daddefd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^2|z5t!3-pg%sG|;DYF2d5LY10!OjLGB_+jyBr>>p z^Ja2#@}*0c7B60W;>3wHYu0pkcUMPau0vu=u!j_j6OOyOR;4E`6cs+=@!;p|e= zcq7x#OV>Z@ox$vJ+x(q?S7_dpSN>AE&lHVji2s}%_DsNnZ-QaBeddBGCaE9P*Zw&d eP`GrvdM(4LC>cwhg?#Hle)M$pb6Mw<&;$TGyldY8 diff --git a/bin/resources/fullscreenui/star-1.png b/bin/resources/fullscreenui/star-1.png deleted file mode 100644 index 22072f3214f399292382dd00e5ba097d675a732c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^2|z5t!3-pg%sG|;slWiA5LY10&(8}afqU?mM71-jX1{V201aP5YmD|GYHUFyo6dpT&Cy21agA7sn8f<8LpYUe}_) z(~#)p?dpEO`oVAe7lt!~RnMg<-ToQ=%scrq>#OVE4eJGxY-1yTJ2G4?Ir{sY`JvLI zRg-dhzPTCj1o&QOym#O4z}20i+Mbups^r(|t!O^DlW|v8lFIGpPx^!2=|1${o-#|f z=UoO*bn=Q?Kd*~&wSjj$4;$@Rl-T%u$&_VJx`i^ACYHGxhfJ8nd-Okl)5W>H0gmt2 z@pj%@bhe^T^6wlKZSFN4c`55IimH6ww7@=d^3JvMrkvZPa5{|7NPI`%6UpOql0VKU zEX?CdEXq5`CFElmd_AzwbHX!Ci8SG5Gv`gdl9p6@WXkP&BgVK_FIW%SsB=c{`>}_i fb;7*M>+^pxC--V}$)^Q?!i&Mv)z4*}Q$iB}4EeSl diff --git a/bin/resources/fullscreenui/star-2.png b/bin/resources/fullscreenui/star-2.png deleted file mode 100644 index 480b9f357691c088152bf64f0de068b1e3ec12cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 534 zcmeAS@N?(olHy`uVBq!ia0vp^2|z5t!3-pg%sG|;sgMAl5LX}#1nlf=K$3+8#Aam$ zkw6g%F=kOw5fF!gK~7EvNV+<3-Mo48&nxY7=guu(zP!1)`NMsULt7L|vW4Q~<7f6s zW@cvE+S;C6`S}@8wLnRbUob<%3$8$#u}Jc}fY4fx zC2`k(&3a;T(!43NDcQ^L-t6pEb5`3aDP2p9I4XK_<@@_}jCGvrIy4@)ACxZjTU1p0 zepSuN+DWzxrIx%rWOL-qLSvz_xWOA^r9E_i&nW9`kafLnUWe*b>{a~{fl!l zW)?VWX$$9h{59-RTeQZ<-}FY>4a1de?$WLCs!6VgN^V@6D{#A@Bsrt=1gD_%2HhLU ztHfnuUx|0REb@7oR?8u$U+!OVEH5&q?92p?t`>{m3TvkxJYV2bQo_%>Kt6AY{-cQ* zv6nsexXdssa7<$1e{1+M;{SGQyMpJ UF^<7#6DamPUHx3vIVCg!0O0)BJ^%m! diff --git a/bin/resources/fullscreenui/star-3.png b/bin/resources/fullscreenui/star-3.png deleted file mode 100644 index 000e3499d06206a47fc4155bb1f4a3df6191cd99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 505 zcmeAS@N?(olHy`uVBq!ia0vp^2|z5t!3-pg%sG|;sgMAl5LX}#1Ux)E92_8qgcwKx z1TZr*xjKMM00KEVSs?l6mG;e>HxF%5=%^Jd$PhYr?%eX_%afCnzdY7#Zf<^gLw(US zX*)YxyZy2IfvWjSg8YIRe1Gg}y1Y!x^vRc_N`Df&_XagFFfh7$x;Tb-9DjS|c3!K3 z0BeB6&W;rojxK-y|JSiSoAP2~=7Hy%=a;B%p2(6ie@gr3_9a((TN1u|{G7nx)$uX) zVgHKGjg`uRk88P$?mty#djC*D}1Dt7Qd``ykd>AZNlvZ z7ds@D9=^D4l3vd4f6CX^TkQH4dW3l!Yu|PSbsqb<*4MrkynE8>a{Wg8gUzRPI#}+$ z{TVT9Tkf@FvCtGVc?S-TI^zlvA<1*TO261wnf$mFw|RwDQ^@})Yug927~Q5BIT>tW q?(>fcnHcE7b$gA2(6rj1N&59|dMrM_`y7B_&EVywbjT^X8Ywn#Xo1R^$u6xS_s#o&2I{(i7Sw&Ye5AY}vBp z5f1o;Is?DaX{D6{;}zb~c_;@)x_8Rh^DWA}7%4DmSrcCzQX z!wLc}mwj@Nr+ql_;P?H{k6r8MBnq-lTgm%kWr!>H*SE{hAC0hHa%DEtx!a0I%$eU< zXSXV-R@Al^?-6x+|FM)Ix$GL-%9PxyU#utR8upzQ>sYw`+T;3{8Y1s^UrkvXdw#0K zem9{l$CTM-i#}?Ma?WczJG1)^TfB1T$=lsEhl)*RtlP(_HQ`8sE=RhZWcOOOscnQ(CNZH)YlECF6*2UngDBRvVi~q diff --git a/bin/resources/fullscreenui/star-5.png b/bin/resources/fullscreenui/star-5.png deleted file mode 100644 index 9043b2f9fd94f0d919e58bae4f4490efb2a8401d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^2|z5t!3-pg%sG|;DdPa25LX}#1QKE(aZU~fR#p(# z)d8dt2>!g%{%~KtI9vGG4#nN;kPNkNiF9oQOZ*TolYv9&AmTuDp24- ez4DZO_r9=CYL@+&?5Ph53, static_cast(GameDatabaseSchema::Compatibility::Perfect)> @@ -678,6 +688,34 @@ void FullscreenUI::GamepadLayoutChanged() ApplyLayoutSettings(); } +// When drawing an svg to a non-integer size, we get a padded texture. +// This function crops off this padding by setting the image UV for the draw. +// We currently only use integer sizes for images, but I wrote this before checking that. +void FullscreenUI::DrawSvgTexture(GSTexture* padded_texture, ImVec2 unpadded_size) +{ + if (padded_texture != GetPlaceholderTexture().get()) + { + const ImVec2 padded_size(padded_texture->GetWidth(), padded_texture->GetHeight()); + const ImVec2 uv1 = unpadded_size / padded_size; + ImGui::Image(reinterpret_cast(padded_texture->GetNativeHandle()), unpadded_size, ImVec2(0.0f, 0.0f), uv1); + } + else + { + // Placeholder is a png file and should be scaled by ImGui + ImGui::Image(reinterpret_cast(padded_texture->GetNativeHandle()), unpadded_size); + } +} + +void FullscreenUI::DrawCachedSvgTexture(const std::string& path, ImVec2 size, SvgScaling mode) +{ + DrawSvgTexture(GetCachedSvgTexture(path, size, mode), size); +} + +void FullscreenUI::DrawCachedSvgTextureAsync(const std::string& path, ImVec2 size, SvgScaling mode) +{ + DrawSvgTexture(GetCachedSvgTextureAsync(path, size, mode), size); +} + ////////////////////////////////////////////////////////////////////////// // Main ////////////////////////////////////////////////////////////////////////// @@ -727,6 +765,11 @@ bool FullscreenUI::IsInitialized() return s_initialized; } +void FullscreenUI::ReloadSvgResources() +{ + LoadSvgResources(); +} + bool FullscreenUI::HasActiveWindow() { return s_initialized && (s_current_main_window != MainWindowType::None || AreAnyDialogsOpen()); @@ -1049,10 +1092,15 @@ bool FullscreenUI::LoadResources() s_fallback_disc_texture = LoadTexture("fullscreenui/media-cdrom.png"); s_fallback_exe_texture = LoadTexture("fullscreenui/applications-system.png"); + return LoadSvgResources(); +} + +bool FullscreenUI::LoadSvgResources() +{ for (u32 i = static_cast(GameDatabaseSchema::Compatibility::Nothing); i <= static_cast(GameDatabaseSchema::Compatibility::Perfect); i++) { - s_game_compatibility_textures[i - 1] = LoadTexture(fmt::format("fullscreenui/star-{}.png", i - 1).c_str()); + s_game_compatibility_textures[i - 1] = LoadSvgTexture(fmt::format("icons/star-{}.svg", i - 1).c_str(), LayoutScale(64.0f, 16.0f), SvgScaling::Fit); } return true; @@ -6497,10 +6545,13 @@ void FullscreenUI::DrawGameList(const ImVec2& heading_size) // region { - std::string flag_texture(fmt::format("fullscreenui/flags/{}.png", GameList::RegionToString(selected_entry->region))); + std::string flag_texture(fmt::format("icons/flags/{}.svg", GameList::RegionToString(selected_entry->region))); ImGui::TextUnformatted(FSUI_CSTR("Region: ")); ImGui::SameLine(); - ImGui::Image(reinterpret_cast(GetCachedTextureAsync(flag_texture.c_str())->GetNativeHandle()), LayoutScale(23.0f, 16.0f)); + if (selected_entry->region == GameList::Region::Other) + DrawCachedSvgTextureAsync(flag_texture, LayoutScale(23.0f, 16.0f), SvgScaling::Fit); + else + DrawCachedSvgTextureAsync(flag_texture, LayoutScale(23.0f, 16.0f), SvgScaling::ZoomFill); ImGui::SameLine(); ImGui::Text(" (%s)", GameList::RegionToString(selected_entry->region)); } @@ -6510,8 +6561,7 @@ void FullscreenUI::DrawGameList(const ImVec2& heading_size) ImGui::SameLine(); if (selected_entry->compatibility_rating != GameDatabaseSchema::Compatibility::Unknown) { - ImGui::Image(reinterpret_cast(s_game_compatibility_textures[static_cast(selected_entry->compatibility_rating) - 1]->GetNativeHandle()), - LayoutScale(64.0f, 16.0f)); + DrawSvgTexture(s_game_compatibility_textures[static_cast(selected_entry->compatibility_rating) - 1].get(), LayoutScale(64.0f, 16.0f)); ImGui::SameLine(); } ImGui::Text(" (%s)", GameList::EntryCompatibilityRatingToString(selected_entry->compatibility_rating)); diff --git a/pcsx2/ImGui/FullscreenUI.h b/pcsx2/ImGui/FullscreenUI.h index 5bff49b646..bdf51ff51c 100644 --- a/pcsx2/ImGui/FullscreenUI.h +++ b/pcsx2/ImGui/FullscreenUI.h @@ -17,6 +17,7 @@ namespace FullscreenUI { bool Initialize(); bool IsInitialized(); + void ReloadSvgResources(); bool HasActiveWindow(); void CheckForConfigChanges(const Pcsx2Config& old_config); void OnVMStarted(); diff --git a/pcsx2/ImGui/ImGuiFullscreen.cpp b/pcsx2/ImGui/ImGuiFullscreen.cpp index 616cd24a83..aa78332ed2 100644 --- a/pcsx2/ImGui/ImGuiFullscreen.cpp +++ b/pcsx2/ImGui/ImGuiFullscreen.cpp @@ -26,6 +26,9 @@ #include "imgui_internal.h" #include "imgui_stdlib.h" +#include +#include + #include #include #include @@ -41,6 +44,7 @@ namespace ImGuiFullscreen static std::optional LoadTextureImage(const char* path); static std::shared_ptr UploadTexture(const char* path, const RGBA8Image& image); + static std::optional LoadSvgTextureImage(const char* path, ImVec2 size, SvgScaling mode); static void TextureLoaderThread(); static void DrawFileSelector(); @@ -88,11 +92,13 @@ namespace ImGuiFullscreen static FocusResetType s_focus_reset_queued = FocusResetType::None; static LRUCache> s_texture_cache(128, true); + static LRUCache> s_svg_data_cache(64, true); static std::shared_ptr s_placeholder_texture; static std::atomic_bool s_texture_load_thread_quit{false}; static std::mutex s_texture_load_mutex; static std::condition_variable s_texture_load_cv; static std::deque s_texture_load_queue; + static std::deque> s_svg_texture_load_queue; static std::deque> s_texture_upload_queue; static Threading::Thread s_texture_load_thread; @@ -367,6 +373,166 @@ GSTexture* ImGuiFullscreen::GetCachedTextureAsync(std::string_view name) return tex_ptr->get(); } +// Renders an SVG image to specified size into a texture of ceil(size). +// The region donated by size is positioned top left of the image when size != ceil(size). +// The image is scaled to fit within, and rendered center of, size. +std::optional ImGuiFullscreen::LoadSvgTextureImage(const char* path, ImVec2 size, SvgScaling mode) +{ + std::optional image; + + // Cache SVG files as we may need to re-render at a new size later. + std::vector* data_ptr = s_svg_data_cache.Lookup(path); + if (!data_ptr) + { + std::optional> data; + if (Path::IsAbsolute(path)) + data = FileSystem::ReadBinaryFile(path); + else + data = FileSystem::ReadBinaryFile(Path::Combine(EmuFolders::Resources, path).c_str()); + if (data.has_value()) + data_ptr = s_svg_data_cache.Insert(std::string(path), std::move(data.value())); + } + + if (data_ptr) + { + // Load SVG + plutosvg_document_t* pluto_svg = plutosvg_document_load_from_data(reinterpret_cast(data_ptr->data()), + data_ptr->size(), -1, -1, nullptr, nullptr); + + if (pluto_svg == nullptr) + { + Console.Error("Failed to load svg '%s'", path); + return image; + } + + const float base_width = plutosvg_document_get_width(pluto_svg); + const float base_height = plutosvg_document_get_height(pluto_svg); + + // Create a surface large enough to store the SVG. + const int px_width = std::ceil(size.x); + const int px_height = std::ceil(size.y); + + std::vector pixel_data; + pixel_data.resize(px_width * px_height); + + plutovg_surface_t* pluto_surface = plutovg_surface_create_for_data(reinterpret_cast(pixel_data.data()), + px_width, px_height, px_width * 4); + if (pluto_surface == nullptr) + { + plutosvg_document_destroy(pluto_svg); + Console.Error("Failed to create plutovg surface '%s'", path); + return image; + } + + // Create a drawing canvas. + plutovg_canvas_t* pluto_canvas = plutovg_canvas_create(pluto_surface); + if (pluto_canvas == nullptr) + { + plutovg_surface_destroy(pluto_surface); + plutosvg_document_destroy(pluto_svg); + Console.Error("Failed to create plutovg canvas '%s'", path); + return image; + } + + // Scale & position SVG. + // ImGui positions images from top left, so we can ignore integer size of surface. + switch (mode) + { + case SvgScaling::Stretch: + plutovg_canvas_scale(pluto_canvas, size.x / base_width, size.y / base_height); + break; + case SvgScaling::Fit: + { + const ImRect rect = CenterImage(size, {base_width, base_height}, false); + const float scale = (rect.Max.y - rect.Min.y) / base_height; + plutovg_canvas_scale(pluto_canvas, scale, scale); + plutovg_canvas_translate(pluto_canvas, rect.Min.x / scale, rect.Min.y / scale); + break; + } + case SvgScaling::ZoomFill: + { + const ImRect rect = CenterImage(size, {base_width, base_height}, true); + const float scale = (rect.Max.y - rect.Min.y) / base_height; + plutovg_canvas_scale(pluto_canvas, scale, scale); + plutovg_canvas_translate(pluto_canvas, rect.Min.x / scale, rect.Min.y / scale); + break; + } + } + + // Render + const bool success = plutosvg_document_render(pluto_svg, nullptr, pluto_canvas, nullptr, nullptr, nullptr); + + // Free pluto objects + plutovg_canvas_destroy(pluto_canvas); + plutovg_surface_destroy(pluto_surface); + plutosvg_document_destroy(pluto_svg); + + if (!success) + { + Console.Error("Failed to render svg '%s'", path); + return image; + } + + // Convert to RGBA8Image + plutovg_convert_argb_to_rgba(reinterpret_cast(pixel_data.data()), reinterpret_cast(pixel_data.data()), + px_width, px_height, px_width * 4); + image = RGBA8Image(px_width, px_height, std::move(pixel_data)); + } + else + { + Console.Error("Failed to open texture resource '%s'", path); + } + + return image; +} + +std::shared_ptr ImGuiFullscreen::LoadSvgTexture(std::string_view path, ImVec2 size, SvgScaling mode) +{ + std::string path_str(path); + std::optional image(LoadSvgTextureImage(path_str.c_str(), size, mode)); + if (image.has_value()) + { + std::shared_ptr ret(UploadTexture(path_str.c_str(), image.value())); + if (ret) + return ret; + } + + return s_placeholder_texture; +} + +GSTexture* ImGuiFullscreen::GetCachedSvgTexture(std::string_view name, ImVec2 size, SvgScaling mode) +{ + std::string svg_key = fmt::format("{}_{}x{}_{}", name, size.x, size.y, static_cast(mode)); + + std::shared_ptr* tex_ptr = s_texture_cache.Lookup(svg_key); + if (!tex_ptr) + { + std::shared_ptr tex(LoadSvgTexture(name, size, mode)); + tex_ptr = s_texture_cache.Insert(std::string(svg_key), std::move(tex)); + } + + return tex_ptr->get(); +} + +GSTexture* ImGuiFullscreen::GetCachedSvgTextureAsync(std::string_view name, ImVec2 size, SvgScaling mode) +{ + std::string svg_key = fmt::format("{}_{}x{}_{}", name, size.x, size.y, static_cast(mode)); + + std::shared_ptr* tex_ptr = s_texture_cache.Lookup(svg_key); + if (!tex_ptr) + { + // insert the placeholder + tex_ptr = s_texture_cache.Insert(std::string(svg_key), s_placeholder_texture); + + // queue the actual load + std::unique_lock lock(s_texture_load_mutex); + s_svg_texture_load_queue.emplace_back(std::tuple(name, size, mode)); + s_texture_load_cv.notify_one(); + } + + return tex_ptr->get(); +} + bool ImGuiFullscreen::InvalidateCachedTexture(const std::string& path) { return s_texture_cache.Remove(path); @@ -398,7 +564,12 @@ void ImGuiFullscreen::TextureLoaderThread() for (;;) { s_texture_load_cv.wait( - lock, []() { return (s_texture_load_thread_quit.load(std::memory_order_acquire) || !s_texture_load_queue.empty()); }); + lock, []() { + return ( + s_texture_load_thread_quit.load(std::memory_order_acquire) || + !s_texture_load_queue.empty() || + !s_svg_texture_load_queue.empty()); + }); if (s_texture_load_thread_quit.load(std::memory_order_acquire)) break; @@ -416,9 +587,30 @@ void ImGuiFullscreen::TextureLoaderThread() if (image) s_texture_upload_queue.emplace_back(std::move(path), std::move(image.value())); } + + while (!s_svg_texture_load_queue.empty()) + { + std::string path; + ImVec2 size; + SvgScaling mode; + std::tie(path, size, mode) = std::move(s_svg_texture_load_queue.front()); + s_svg_texture_load_queue.pop_front(); + + lock.unlock(); + std::optional image(LoadSvgTextureImage(path.c_str(), size, mode)); + lock.lock(); + + // don't bother queuing back if it doesn't exist + if (image) + { + std::string svg_key = fmt::format("{}_{}x{}_{}", path, size.x, size.y, static_cast(mode)); + s_texture_upload_queue.emplace_back(std::move(svg_key), std::move(image.value())); + } + } } s_texture_load_queue.clear(); + s_svg_texture_load_queue.clear(); } bool ImGuiFullscreen::UpdateLayoutScale() @@ -451,13 +643,13 @@ bool ImGuiFullscreen::UpdateLayoutScale() return g_layout_scale != old_scale; } -ImRect ImGuiFullscreen::CenterImage(const ImVec2& fit_size, const ImVec2& image_size) +ImRect ImGuiFullscreen::CenterImage(const ImVec2& fit_size, const ImVec2& image_size, bool fill) { const float fit_ar = fit_size.x / fit_size.y; const float image_ar = image_size.x / image_size.y; ImRect ret; - if (fit_ar > image_ar) + if ((fit_ar > image_ar) ^ fill) { // center horizontally const float width = fit_size.y * image_ar; @@ -477,7 +669,7 @@ ImRect ImGuiFullscreen::CenterImage(const ImVec2& fit_size, const ImVec2& image_ return ret; } -ImRect ImGuiFullscreen::CenterImage(const ImRect& fit_rect, const ImVec2& image_size) +ImRect ImGuiFullscreen::CenterImage(const ImRect& fit_rect, const ImVec2& image_size, bool fill) { ImRect ret(CenterImage(fit_rect.Max - fit_rect.Min, image_size)); ret.Translate(fit_rect.Min); diff --git a/pcsx2/ImGui/ImGuiFullscreen.h b/pcsx2/ImGui/ImGuiFullscreen.h index 65d0dd6fc7..239ce0958d 100644 --- a/pcsx2/ImGui/ImGuiFullscreen.h +++ b/pcsx2/ImGui/ImGuiFullscreen.h @@ -86,8 +86,8 @@ namespace ImGuiFullscreen } /// Centers an image within the specified bounds, scaling up or down as needed. - ImRect CenterImage(const ImVec2& fit_size, const ImVec2& image_size); - ImRect CenterImage(const ImRect& fit_rect, const ImVec2& image_size); + ImRect CenterImage(const ImVec2& fit_size, const ImVec2& image_size, bool fill = false); + ImRect CenterImage(const ImRect& fit_rect, const ImVec2& image_size, bool fill = false); /// Initializes, setting up any state. bool Initialize(const char* placeholder_image_path); @@ -104,6 +104,15 @@ namespace ImGuiFullscreen std::shared_ptr LoadTexture(std::string_view path); GSTexture* GetCachedTexture(std::string_view name); GSTexture* GetCachedTextureAsync(std::string_view name); + enum class SvgScaling : u8 + { + Stretch, + Fit, + ZoomFill, + }; + std::shared_ptr LoadSvgTexture(std::string_view path, ImVec2 size, SvgScaling mode = SvgScaling::Stretch); + GSTexture* GetCachedSvgTexture(std::string_view name, ImVec2 size, SvgScaling mode = SvgScaling::Stretch); + GSTexture* GetCachedSvgTextureAsync(std::string_view name, ImVec2 size, SvgScaling mode = SvgScaling::Stretch); bool InvalidateCachedTexture(const std::string& path); void UploadAsyncTextures(); diff --git a/pcsx2/ImGui/ImGuiManager.cpp b/pcsx2/ImGui/ImGuiManager.cpp index 832a4ff497..438ef02e7d 100644 --- a/pcsx2/ImGui/ImGuiManager.cpp +++ b/pcsx2/ImGui/ImGuiManager.cpp @@ -255,6 +255,9 @@ void ImGuiManager::UpdateScale() if (!g_gs_device->UpdateImGuiFontTexture()) pxFailRel("Failed to recreate font texture after scale+resize"); + + if (FullscreenUI::IsInitialized()) + FullscreenUI::ReloadSvgResources(); } void ImGuiManager::NewFrame()