From 64cc4489e3841bd07c219fdecd4d5a8525b3dccd Mon Sep 17 00:00:00 2001 From: JoeAllen <2494136784@qq.com> Date: Tue, 29 Sep 2026 17:56:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20exe=20=E5=9B=BE=E6=A0=87=E9=87=8D?= =?UTF-8?q?=E7=BB=98=E4=B8=BA=20UI=20=E5=93=81=E7=89=8C=E6=8B=93=E6=89=91?= =?UTF-8?q?=20logo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 旧图标沿用 Tauri 时代的素材,与界面上的品牌 logo 不一致。 scripts/gen-icon.py 按 logo.rs 的几何与合成顺序纯 Python 光栅化: - 紫色(Linear primary #5e6ad2)圆角方块底,圆角比例 0.26 - 白色连线(宽 0.04)自中心 broker(实心圆 d=0.34)连向 三个环形末端节点(d=0.30、环厚 0.06),坐标与 UI 完全一致 - 4×4 超采样抗锯齿,独立渲染 256/64/48/32/24/16 六个尺寸 打包为 PNG 帧 ICO;脚本归档 scripts/ 便于日后改动复现 --- gpui-app/resources/icon.ico | Bin 43128 -> 7027 bytes scripts/gen-icon.py | 97 ++++++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 scripts/gen-icon.py diff --git a/gpui-app/resources/icon.ico b/gpui-app/resources/icon.ico index 8da6d24d37e475babf3485047d78458491629963..9f1f90e1805dd38914978becc8ec2f9aa779b818 100644 GIT binary patch literal 7027 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 URDi1IT*dyC&_56MKV;~?0IuY4NB{r; literal 43128 zcmb@t1yq!6`!D*CB1)?uLx_|`NlJ?#BBi3DfTV~>3)0Mhw4{K9lmdc5cMpw7Nl3%c zA;Qo(4Euft-|u_ZK496EOn0)NgyH;zNlGw>5F?a^Z$ z5(xSNo?~JP6M3I7cLIS0{LLXf#M1O?vF zP^O|}rUXw?soYY$M|csufdZ@t*}J-KK+thY6~*iKor#ueNIq~qj&52#bXpGi-j?xF z)g;?$xcKjvd2mwn?VO~m!snNF9ZO!gru$1-{1R}Mm0c{5y)3&}BKvKPeYya-Sn%7- zqtA@2^Teti;aOzIqI*Y!ut&Q9vR%VU*)(i!ioUb3mA`ZGyYkZF*wo^db9(hM%f-t2~Ra7Kv|b(6}1e z#+CR~mHC?K>}cF>tCohrIv@KQpHp>xSoMwFJSSXU)9C=Sy?-w^ae3_YdSbj3qQFR0 zP@N%8MY2T=UNA0=uoe&D2^}%Z8}d=(hFHVIt$p`>f7Cur)qj>GKj+!Gm(}?-d0jGD z*rQRvy|KdD+6Gs%W~+qA=qi1h{_o`$xP%Gocjp_$e+f~uvQ5|h@(^OMV;XL(c-T7VlZ^7lGL)xAukUu-%p^>s@&2hq+SGFyTZv@7-x>m86 zAqpP%|4_D5>g{w%?2Lo19yBffdS4in_|KsNt#rhq>m$wuP*@hQ^`GpK*Or8ILM^S5 zCVo|5=4L|W;zm=+82!ZOEKBbC{bJU&A$6aebMKf_BU%wf?}$pN=*xw2^2O_j{qwiG z#Z|8-e|21##>g$Ned2d`{VxtFM6>h2E1FbO6Vc4?B76vQ65<-M;$P{0iQ<*RW>v$~ z@?;V(l$AnW#JBlb5k!<0`9;00;u?0}72E9HAsyhbMuOfaFn?Y4KN=GoC+$i`0l=84;uo`G31HHvM2M z>R6%+EgyoL61&HYeM9@v@C5@+)$+&6!B+HH%&G;3D4-crH2Gy65!ZBsn!1Dj(o-Id z8$_PtaaR$1;BVZK&Dk->ZJ*Hp6U|5>Prs0+$Z`G_FC9@$tL%p9V62s4{HATgry$L# z@o`zja6UU>4U!m$BI%;AIWPx!5wOg&Ygfuvr>PRgWJ9bJu3yMK`raal3dMXdQ>2)Z?iwb^&;(3cG2;TP~KdS{vL-wqeSRHdeO~dum(ehop7fj^e6wwkkY_PZwHx%Z}Gir9@}`dyxof0 zRmF8N90u$k)H2}14R8ep<4A$c@R(;0%?iIvh{UPDs{m^=OIcG}P`r2*0nA$HnP_Gy zzJY4QeeW6cu>OrMw&Gm|X5E1ec~DR!M^zdRwJeD`CKUyp?Pvq_PT={Sm{FGXC!=7Y}%Z}EcN zzAR};Zw&bp|IA?>h?T&+OI%Ob@y8j*1lAwALzM79gv+^|!@x9VeFnEu3uyElT(N#5$u^g9i~M#yK! ze6n>jLJl>VY>(DM4yi3{v0?3-8Z)LM4F>XcAL;yI<;9M^x%>V-szaEnN>mnwA1Q`;p~dqJ6s z-D}``G}Gl%dXghElePQ>)=k@ov)gvtz7-cQJyo@w648j%NFc9wt(xttu$g(!(7#fT z#^1mVGT?)=x1Ne6kUx%dp?x*=EqN_N^Kp=wD>}ymgXZ&a2{e-7q6MD~eWGjQPS&b_;{aQm#kxlG7X6>?h_wS5dT!8-O4 zHz|NOCZVNSp_bdDo@pLiZ618jLQmJPdEjd zl{IjO5)E3F7~snd#-`%*7mMHwi^X*`6mTSk!C97aXK5#)b2l;Y5X#wnobv$Xk5Q5J zpT4#l_5yt>@e;O134kL=MM*<3Tfy-4{|khIK^iRqLb0zO8UbX+@qZ1Wa){mg%sd`~ zbm*=@>^`cAocQ9AWMzX2JGM8uy*IfIC2u}XKApUNEjbdLd@mC|cmnQ?0q%_x&w=^i z+E7co)qAE4l`M6&YcB6^rki&QW-Yh37_79juUg6B9)pi_c;@Uh<~YwSnGDMnN=qA8 z=?fPHwmp5p&?6!=)8P6@NaU?4b#(*2anxxSAGZIIJsZ+M4RzIW`1|{tSY(Cve8;~` zjs}*;)Fc{8mg7vWf4CEwVN<>Sadh{h-07W(Jzu$9-;8wga>o~(JtDvI)PGo3?zW=I zoD52X3d^3&iOAuO$+b#wM?Pt`ODU>cmZ@Hm(Rko#&b%b3W$}l7Y4uH*vywiRTR-fW z>t2=Soc7_Y)6UdBn-d1lbCM~Ms~X_jS_F-&3LMkY#ooqMPIBs>O&2Yb z_Sa2SXMkSWu%`sSta(}Wv`fHwRagJD!TzEFnc}nh8U*?eqM$&csdj>h?t1*a^Piy` zh_{Wkzdd7+-&>)Te$7J!enSPNU=b37+PS>aB(UEk{o7A@wF0$XVaZqg+{EO|4dY~w zCi4x6kSqPF`oC)h8lxCA%hv-pip(B9lg9Tocjbd?xGVK7idwxW>}!)HbraO!R9@s1 zGmEd>Gto~(qc^eFoEBJadrkal+}~Nuz@5(7&(CSjYZL;XxyB8hHcYrFDo*Lki#d3T zT*^V778ed-7^LUL)v+HC2O&vL_DD>$5YyJ|BbWAZRtrB=Sy)*@7VVy>ge%1}XNl%> z*9!_#bAF7yeQ`9G8NXaoy-;Fs71Ehyq^A`v&vv+UH%enL+G_A&U`qAYn*i$TLk1Lg z2(IW~l((xxN!(vlH@f(>sMJI}k+H{eSIQ0?tQB9VZ2jTJ>;dkhXKaEOup+u~k&I89?i6v%|v-o~kc za2v;<1*!lI6Y4A(tCf`?%-(g3>jLZ81nZBmgMlznh^X>ErNGuZ^v*l%?1s3dC12>- zNDUpaeC{J$mL*DnvKCLp(#suI*D?E87?|0*M91duZoR+cvI zhrbP5BtlIr)Zxq>JSjxV-7HFWomx=)huhGwg;~ z(^qTdwp!#IFGA&cZjp_BxB=HkVeML0SzS6NFBsxlCicQd>z_24KaC~lXVagyeRa!% zq?c8Hy}`pBCn{IFm|UGhFJ+Rr;LNwF4iSG)Uou)qD@yNU*3wWL{H_+-r#$j#yokBSqo^l`6TzKhaKfOVd6CPD*E8b%*x>Y+>Wu5Z4m7xvxaqbL#pZ*tLk-W+E%n)MOpuaq8|eo{Xk|X0t-hm4sIUHw@$-PTw4$5Oh-slX23Wsv z{9(xoD_z)VXTeB!fLM}zxSq^=K7azbr-}6Qo+08b(Ok>5VE@teJ3uW`D}t{jdO8Xs ztr6kYijM{Q1Q=5$+odfejA%S5XnSP}wPOOK?s|;$fz3`H=J4)vxh*3^K+i1702sDh zgzhjs=>%i*<90OU7L~HH656>ef1q)!+AO+Y?_;WE#gW! z*^~qf>5938i6}hV0)enCpYkYwic`Ki=wATuLC@BicyMLFoyxz^FounCEXd2aT>7L%0KBeCR={$5Vic zb?HfCsQFj>H4iKx{n-hD_RNmh^uRVQ-H13Ku_$;?%gkocjAG4I0Pm@43}iQRY5)S& zjo>rax^V`D_mLwRZ)9JiPq^mj_si86ocKHG2japnrWOFsf3`Kk5~B~C&`Nx)DAXdR zD<;YO{dctywP#nq3FG%#Q0+Dczijf@9wt=TMyDtgD_+#GC%*3)z4V0-u^{3X9g=gn zo5L%-kV0|;h|ummfQM>Ulk3&{_AP3A-JFW8&v-r*Wq?l%^&9B0W;$}SvS--6EbmxM zXiHNE@E6HnMy7~M3nSjrCNfOw%7BPE^G5Rov5N(F*5MCn$ zDjMW3n#1-~gSjrvmM>M-ON-B@oW^lJPrb;T_PHVde@F!| z(&xJfw`TH07f*4m(PR^$fj53_?lvtMoZ6(!EI(1lVc z`*7CLO$6BfA08SJN6r_3jQ3j#H!pPxZyLZjS+G_>JZ?W}A7QqanS78LQZ`$_>gXv0 zZ8_8F5f7NgF#egGXxuD8{w!fzRU;rdhydlJQ2~tO1h#Ch5)dJf!D^7f>W^ZKQs1|M z>aLD!H=70wc^xCf%uRTU^Fpk;1Fb-Lvv6~0fXC_&>7PRFj!NMrIiCf8^fC#0H;f2Q z!{3kqLUuH)D@d~^Z|WvLkehoYYqqy$u(PI2>G1^PWHYeIIwjHFbW;*uut~$xB;LU| zzAz7PYCOex>XLctLj!?eryizM+DpcIVJ89G7j3#GWi!J~4)g7G|{4Oon^oo?J zt~vZX`1yi-W5b%^weu;9i(zQ2HoAZK0Or{?03_CVXLdun$85%|ajs!*I_9u0M(*DH zak`I|SwxLu1YsPBC{oPvNJMENi4y-7k+24*79x+~3oWHivEPNPqLb=j_~kJCM_$x_ z!8~cF(){9?_!FiUoOfVhM`&0^iY+u~bn_$*s0^hsfRZOJ5atJAsVBk&B%nfMvIq4o z*Txsw8ohJeM4H8lABSA_ysF;w$V{~9j6t)#0)$;j#oj^wVMS#E_7T~5+3Cr)@|5c> zHLm{%92^$dNdj0FJQev@(QOT|F+qz)?dlmelMQ)@)mp7wM49u23b*Z*sETAYzISbH z_f!ji?L9z_N1`^uj!HM!o4-L}GV70s!go8KV1%ypn_mOAs4^*1tb&mG$7rnn?lUQ} z&>&W<0*tnO;HINku|%FdN&hnbl#Tt8mCtwvwmN#m6`^63I5mPNyB!tGZ_LsvMTBz4 zm|z*?A@@EDkB1~s)o+QDX_;z~acK-0D!l&^Set1v9q|o7)LciPdcqYZ_<*nkERs?!5!Cahd+h_B;#c zsu*{V?7=d>^<#6p2h9g;Vd(W$iS|@$cafakf&S^vk{4U)SG-BVKe{QA_S)(eG&{V$bkLt#{t@cDaYLrc07x< zoRgHt(lu0W>ujT0crzvMncR;x@F$#>fd&G2f^(VEFdiR_!Wq)_fmgk}^v&lau zh8Rv`@cg1)Idi%4bb%zmkKB}i)0|*6SV}B4XuWwM_N8%OyYpPXJ7e`qbG0YEua2a3 z)%HVvR=w$gts;s%w|+U>t!|g{A;4Zy$xB|8KJo6@bB(%ijo`l#5SX&JkxX{k^3E&i zH9uwIJE~+KJ{!g_HHtyS7w{)nN5?2Q*V^@4k@_a#z9OZ=Z>2Mza{mwf^@{VRwqj; zB^K>MxUNP9e8>^rv(~uFA)FV|185Y>b%>NETmy(4@HCO2dH|-sz-4unK}C9NmT~H; zT^#K;gF?W*3b8yrByjLE=Hut^IKy0Z&~<>BKA2yU%xfp1m6jhOG$7I#hGCu=94ir^ z9bR$GwQvh|VozFVzg0#@EJ?SuX{?J4Qh=n_nv`G84xIHfhiYI(Cyn7GoF)V%sPrb| zDA;P^(%@hv2{#O2F7LSCuhL1Qewknwao$8Gk`*l!PHV&!lLZjC7+@9W%y9$kxC>Cz zQ=TAXt%PfgnO6yP*JF80-uPD9d{OZO&56 zrzd|1jS@Htf}G@F%sVBLUobF1CoUav%=O2prqQ--j2v>3J&z^Y;Zy22)>fkycDdEC zL79;m6(`xiW3GSr1e#Vurh=y^$U)2~t~Epq5BQM|OGCB7OT@s*2~xF$H3Wn)lRFK_ z@mLc?b8hkw>1Vo9kWtWf~P{QZ=fesk+`5TXIna{-PQ~|*|sV#Z?VS8 zcLZC@i$`9yV#OS_fI}nDXzS2@An@38iH5g$36YPgrk6(_7aaqgON_bz;g$f(4fybl zRkLy`&>bI!lr26^wvOx&QOC9S;QgFDvYb*CKbn%%w#wp6cfC(lp(S955eMXm0;*@D!F|jgOJ$qY zx-Lx~o#S5mzds7J&$>sNzppVQ$R;C?%KR2vz&KI23b2s{LURBFLYRl&-DuZy!|4Q< zVKB0wrqE&MI6e#)3j{+_VBrhf`Idn{y)8WJrzO7f6BIWut4M3an1C!mQYbdpVDlU& z0&+gGW}r;O$wj+%*eju@JRhNPo20G&s0%>(#X#i<0=8OZJmKon$vyl<7pnVxMT zf_R@Y55w;PP6jkc^0&_f0xCGg)fq(tH~q=$0xbtzc8=I9npJaOHi~$K^Qin_p1Dbk z58<)kvX-bhTRplT-T+AYw*t+T@jW{A8X(@oMlC@lMkBuh0pkVh!#9)s+kx1W-g$p) zUH)(-7;T1q9!Bp=utfwttmt&biSAl{)OsO$!ix=AUthM+rk>e%+2zhYUCrpBcmZA2%mtqAc*j;r_lA1%C&2cw z&%jE!8VO3mQeF0D5GOv4BXf4Liibi*B~9|FZa)#zGME z7yx1f*Vmgwf-ne&0}zCQi9nz?Gx2wk%K#-V$#_oEmUdwuY|KDTQ$8>Zg85x_ix4@t zx@4lCFw+n;_?khNH#Yq^A&h}=BSxc0T6>V-2+NDfnS-JSJmz(U9`xyU%SKw1%rrTLVI$mCgxx|W{q6nfE>6JdMyTB_o-fW<5Pwy zi8m~f3_@T5p-U?zw*uYD>)zA6KAW?4CbLf!IlGPWGh&&4p)6^~3}xgoa9KX&U29XJR{Y6uSMP0c(hF!L0D9g#y#A|C5ia=Cc~s8LTq$T zqCSL74IgfaAC75O!u;bwBHVGfd_lTK7&&)#mrzm7$!^Z!CmQwV8u1*$nCkdfub49& z%8e23$E*`B(Pnov`M+mo=)5^mCOzep z^p-#lqLzD*%UA>4rop6tx{>SCUT4L`Ul1{;2~h->4@5*vdh3=atpY{3{5kM5MR+*G zkrtk!7?n->!7dirxTB8R)Ujcv@e))LJy`cX ztO)UXvMNCU*)AiZc$jc)I^n<5&(MMjg=#A2ca)_Cd4!0w&j|kyEQCCGU7o-~d^NWl z1LSnV{|6T05b+KrXUcQ<>$N9TgB#|+Z*HW@?WL~LnBlME#CER%ZlDE~N@!8($2*S< zHt)jSGI~J)$p&;Cfv+HpU^si)?5^7^@XIbuHf8T^&Md$(X|VDbz4>_4 zUVqM>$1`WoH)qGwCoI0*EbMC$7`L%{@l-V!xZZ!32W!HmQn3&Z>_bv{Ab=5k9mL`b zii(0E42!?^0wvIs2)Sw9YAO)x0Qo|g9H}&f$rmL25av$|@C63=`3rma_QduW#6yyL z*XK-#6X8~aN9&8hR~cwx8iudd4aX~xrU3ErpY4l##EN?^d0hN-`O0<}UhfhX-_E|* zu8D&iZhNp+7&_S}$#ya^@WY(-YdzZdZtd!`3(1LAZ6>cuS-glz$xQ^oE`*yAb|UOT zxDH&t9LbZww*2#|idjUVWX@1LmgweZLb1_}TT{ zKXd7MUFl-SzX~ydRl(}D1o;j8UGu-Pgju71WJypYxavX!xfHMOR|U1Hm08U0Tg>_i z*x>+AWG`zrd5t5fH4Hx=7VYHT>||-Mxo&`CN;z~>Qnb*Dd;qdzFc28w8voKAkmrAI z32ylJ@<5&BHAi4TNJIQ}w~i`L)xfqpZd-bSz`KQ2O@)ajg^ZU~PDxdpkmQzQ7a0ql zYsEi3{r?o{}DkJ;FgrJWEu;>VC{{2trUl)S&u{x;B0Ad02 zL}lZkc_2O~+)ceUU}*D|*K5c~{gQx&sG0uiFynq`0) zgCS_Z?&dfv$StyoX8M!X9T|OIEkS@y1LX0ANBaUZ35Fpo0LKIy{YR#m8D252KZ6RY zJXlK-t5`Mtqwq{LvK}&;l}lLXp(@Rc92r1r6gY5$06$5CtfP^6f0>l&oO3!Dq+_S@ z6gVgo@HiMuLG|XcG1LCDxSBDqqcJZ}9)pw$uj8cJp9X-BHNca9J@Bt?tpJ!6%4OD; z-fL368lOD9pt*N(EPr2R47($+a%qWo=Nm6h5;Q>?%Ro5_h!e9nVucU)_dYxAM>x64 zcslKLIZsK9la74;vzovouTELkQR2@u2dybR<4vN7L2KWF!3!h71W8#%F z&-Antem?Y#k+^1;BI6yHq$I~HEJU7~z_v$->0MED$J}CL4_3PCqQ>N(5;azz^_FFdHHT zzJvfW2jnr`BxtsQf@$`nK&yr9RuNn`lGTEdx_#CwG_;eA>>KozW2)7%IV&sLX*t5w z(Z?u^;@h}R=}DA+4{QuZ%a$h1+;b>UBr@&V8MgObFOQq_O5J>O$1u3(C3AdM5Tk%K z6b{{SfpS=^FMVkMOw7Mr=x@m2pw{-U{By$~y2N9q#KfYy@qqtN@>~XfI%78|1And9 z#aFrVyv_a(n^rI|HDZG*>)bxv+Fte7+_`b)fPBG^)_;-PDY@d^F`0SM-GpX?NmlF9 zAmM^Q-aqZTyX#@orfdh@xS7bqfIEf=z!3`Z{}Oc;yVTjplYjQQ^w0Fx#WCzACTzymhl+iLoE?&vtko;78khy6em5RdtHR@6wE%_}-868+ zFBdnj=F==W&vRm;lcn7dV{&O5%`S1um>LG_eZ+E^vw+8v3NI7DhwXQq&w*paN%+9Q z^Iy3DM*kd%pu(^@xNSos-+D8!?m$QE_NlS0cbL%qBFm@?=lCrKFWhx5>34O)PZXoT zbRkplf@*WJ+)PgC)&T2>^KbGWlcyFZ0x*aBn5Wq1$<yWf*-d-)d0qzjkG>< z@mhsbXa)Zm)ogyY1E{nU3B&~F3CpAtwf1?yM+1)%4WWD?BsyT~?IDa6yNzXP(gqO# z7jv!RD2P__Y22=Lx0sTfT#aOYr&MA%)*0ty&t(K7TPkw!t=<0PnjV}e4F&%j5MTiTz zcS?k5oF1?SdVjbQxd?dtpZEy&%z(*mHn(*XqTF_pSWJmKb1-p4wH{Co7M&<8ed=W=SHpU z$N{ns0wfCD)3t09iyZ>*0o4IuUjWqw{|_p1su*W#PzMoA-8@nZ5DiB+2SpSE0>o#8 z=GgaFyxGS99~lAd1j_9lPjcUmB)Y{57%oV&ay<|?j|F0mfWk>@)HAH%4sgI`=}iiP zl7+rtG9h%^Jatt52PKe+_~*UWPibHEw?)_!e*)Y7x*%}{t8h-03^9ivT4W;Rna z$t%jxz$~(uXve$xkf>8)|74OKU?IUI-MZ>C%fSlv}t4_j`pFn+ttC_%p1crEAtP>y;z{CE%3m{Ve5;{$Q9Vlwf zp1E$uMk;>+3ZQ`Svwi4~-&psR_hJ5&2`ak(;tPZuz#d+3Yn1^k92z-fKtxLi`4D^h zKRL9umUu-1XyhvdmHjQonQjS^$ImIul)=0IC+ovF9H9cn7{KIbSJZ{4Jak@GTz1&y zsu5Rg512!}-E4C>YGb$XJf`3IkA-nO#%%<<#;Cb_;>_sl=#Y%jeGw3b#QPIV*@nSf zY^ve}H`@li^ip<4mkpR-Il?a#@5>_M0DArhAS!Ad75iI^UTBGPtvHoD8)Zg(fAKvGYcI*u;C2e!oGiXII+$MY4O){ z5kRegwAKJX20(t8*&@khekhIGQwH7mGzJb!21yaoInOZ+$c%8G8n{Ux*V1I^-8{DT=wUr22f=gzG6vTJz8sQB@M@S%{hRh+69UD? z0+_+TMd&@_FQBTK!aB1sZVTK?0c;bfw?HU>_5S5P1?K4YGK=!cN_kftuKyvV_2Ty4N0p)`50S-u5 zKd(JmZlTlV!yRaap2p*Ns7<0Fi}I1Z!)tq&wTWpYAwV!!9|HXdg1H|7B~QSVf9#iy znu_Pm4dDt7qyU(u8H0D;11%a*&%?AYV2%tCC*xE=V#N2M%|tT;D1zTAN?t4Tc%wYJ zbL+31ED7cgOw15k*Q0zzJDJGvB=B?)E6`Ws*ZI=L z0PzpPQ!pSjsF+R;!1}g54j-PdKH;1W9SD>B+%q?Saa&!kt!d03%5K7 z!fGP8Ao-2fo7z(Ny^APyNzl9s_Yo3LEDQA4KfD8mW)ud1tRx6m0xXjYKPipvahO5< zN1-64GNpUPIIpNeKl6z|(=Q2$?I~Nw0iF~v;YS`0BU>O5DnLjB!gSc9WHm}EnOI(u z=(`$3AjJi#A(*}eHV4aAsMsYM@*MZ#_ad~$;C?lHVlX5Q(BoRI02%N|OA_Fb`xZc{ z09GCGU*PjFNetp84+R)i2Xo+Z$BrVbuW}W!hd5w>y@4hECCdy!5>;H$>ka{}IJor+ zY^VtWoi6dD%D2Z1)(s&AB6%=%B@Q;ZeF}_0!)zZMrwrjXBUpo}TSZ$Ej|)V>Z=-aE z9R{W*fuEfOlt$0HP^nH#Z4?7tEnrC#pqEN*CFmEWi``8TED9W6_8@;k$Vw*(=1c{YSlR&kgEcQ7F;}bta82$l1cbo% z&dm`!v5#DLBl`TQ`(0=TX5Rt17lwSJRPq7*9t0CiXM?iF+Y06+;26N9V{zr#3FNdm zDmG(e_f+}NT~)Gi1ZoXYx?U}{psEabcKQVPh;YUo4iB0h{0x!Cur9H&zA|&9ej{OJ z84T8huW8bjqPxykz7HOPU^?3Yi#W<24%0{bg`1}0c(gv*Y4 ztGbVfyI;xKn#^hHm=(g$g0U+GYd7Mc-PfSr0Wll&WW9-o&lyoKmpk`I5C${=AJPc( zJ=6Ohqx*P$ajd?FUPybXp&$?gyuOLgBdW`NQ_LJ^4v0CrkHcjfxgh)k0&tFSXan{G z9;p=eN$9b4UtO?hu1tnQ7i^Ly;7vl-pQ5j3Wnd1oZ179{;{_D5{-hL1d{FqI$Zf-6 zSd4@q%mmuI9!rCd|Ky5dh(V(dmMQt)W&rRYz^fBLq6tDUE|7K@G0cLIZ2D&-Lg822 z#6+)3ypaLrG+K~p(@OVD>Ho1K7u;(U6NAor10I0zd2rezh8;91-~jMX9{X#Zgzyne z1wc@iXuA1%UC<~vigrN4H(uxEb88%)uMrKaXwvg?79%2e#^$(Sc^y1FdL@F7`&e1l z9DN=RBH(jGN7=;^wq1ff!*U|%3?L!c$Y5832qrYp@tMxbQWFP;#1fV5eIXLk&RM{V z^?wCZ;z|pY#qnTC0&74|kP9#(5@2xP^Dv)xqyxaQ{|y0zCzyuQ;52-+;mMyV49=G3gymK!$>1hQT4Hxo`Ix>QSMVd);syCHM{o z0!el>8MyAh!}wpu`uKPvdYo1E+^4W_Ph9RteNYcchyc+Vwx=U^0Uiw2hOM>T?A2=a%oOsE9m&6^CG|xDP%?zyHyzog z*UiW| zt9#m(xrBx5`PlizOjIA^2(OGE@u`$w{*@6=6ktUW+oG{H!{bRMc7wQBMWH4_U3y%l z@3~6f)7Jc(7JYH$ZdFB&PMcq{hw6uZJ(w$0i@7!*EOY-Cdiy>8P~iI9JWJvf@79G^ z8iXIoKG-{ic62?4B$eS;{(pJMzryMHVkz>)j>=qVO{l_JL6?ou98S?@E4e0BCyQJh zH8oqerW!3icK9as@`?=BMYHJ61qbW!WKRn;d0$PRYB6~(o8j;qtDVhl_XFOwp+m(h zkVStsUyXW^jNzzm-vgEkdD}THr)X+6>49J31O2`pkLD8xg1pU+=}Kv5G)*QZ6}rFj zV$HxIFX9(v7+h`Vad!kiiG0#oz8vGPc`}BkUGjc4wrcx#m45H&;b2gq75Xxf-L8_=w+^mjwF8!WrbhTV*6m#yqfmEn$_CnFGYTu#$ zpE$O>h1K_LDa?n9FM2TAN;wQ6*vl`Mck$UjvD97Y8yi918>0*xyFz=rbVGDo+9U(4 zhPmJFTtj2E*h?2?WrIf)>qKwhF4f8}tNk+I^9 zR=HcbSDoyug8RqKA7#A^_*_jbM=xGrk$?FaIv^bGkMS$T;4*7OY<8=i?SDMcx zi1%mcMEC`}`ZGyPC$XC!iqQO{E(-fD_nlm74pR>)H|Tn0ciev6K7G?q`NO^JgfyF_ z6giiOGrrB!&a3zv;Rb;PCT(4J}9a38XK)Je}zJj zmX_zB6y6HBnx>sJ-TQq1lKb#|5=(jBJ7y%mvgpPhd7Z!&lYKb*r+qk6>}3G9W}evM z<*}Qs{h!IwCPdB8$YL(kZ#fT9kcgfLo+uJI$ToUweZ`$96#v<-3UN5KsDI(qiR*dy zN%yo9GiukpP4@y6~=C_0E;k zy$4!nzgVWSkLuR^7)?GHPpn9}OQb|P(?Kj4{Skk|p_{V?y@}UFB^7Ve^bGHo9gpNW zC6R_;W0^Sd_=~vb{ThFsLS08X#u_DgrS;dZ1K!`!FP>UdFgW##@#Kknq2v8kNfH4? z3;xS`AMlnb+z~=}J^Lq%ov9J>du;yuN;)TrhwdAWk3geZJ2_GONc;)*%Jte49vl?> zg?HqJzE&(%lpIigT0!;p^t(NfPrfs7(?vS^^!&xl6NQ_?9`mDX9oW1e6-N()l?um$ z*-_10E%5`5jaQQQ{7;Q5tH0~r(Q&v-#FRqpfYU3X;AB2enfWzJ$dkT5bjQYz+)u3A zYD?Q-XPj~QxW%3Of+zXYde4>KaV=RC%e3&>zu#LCr@wO;`%}({Y-UYRM1m!0MS&Kj zNfEx-5mua%K#H4Hc)#$fvEoF>kE-Li3yT+GDZQUdBvV8;en0gfjT~**FWx6dUr{af zTB~S6hduRM#<%ZEjUT;g`8Go2D%QQ7#t=72Htv?u&QiWUadG6Zmn7Mh;fa^##^&~c z2uX4sF8{|us=fZrl~mJy8&=%s$9D^*PD{RV7h6$PaImOO&i`&UPw8Aj$I7Q@5oJP* zlI9LSh2XBJPP_T~YhyqZTU4pDgoNM@#k-Khoor0?V%`aEJ_>%HCx^l`*@=2y7fW8f zioquv=TVT%9lKnVD0?B6;pO9jWJ=uU6Z%hfzuCqVFK33*jzY-0-*d^(@{BfEqdy=L_C@Y7spLQcx>b~2^KM^4e>{bS#& z$G6QJuhoRjI>y)^>+x-B5@{esu1}`Rm>s`UUV~-cd)t1IY4IHK$|B=AZ8P7?q?gWL z*x1-6^`7&iKJ&WnSoMaKK{@;Hta`^xs=`rX+qpz1M~`t5cBYA+sI{7Dsl7c{RD~YD zy_AhlPj**~yayIR)=$PxRQC*qHE>EvlLa{N9HLPSxneY?=|#?#B?zuB_(r zX^x$Thf(;`W}3<0diS=jbI>h@7!BA|p8fQ|A^EF23(oI*jl?Ja=;%ZX*_!u=_!c@~IO1onOS1uaS?f){bxRI>@9`O zQyl0Z&2yBy+&wM6^{@n|!3FR^ra_ zwJQHfgIjw$_efD_Pq@j_A{V-G6w3G>RP@_-9JR7# z!?0s>&28@wMPBi3+K5$_j2qO*LV@#nh|g!9rMxShBA0vL{94P4oprqV(EvM@M~}Ch zt8AwGu^xAMF15aNsk~FFCA#9uWT9IxEa#LNcb;&_iJ_I%X3w^um0Ig+NJV_QYX)oI zR^!JEcC$KhO(i>KEJVTDlC;6fwE`?}alHp6D62^&1{+zo-&aoWOJFpE+h+QH+b5B;5ULC!%x|rA4(0fsExi|L8yeQg0c&CegQVjERp*HM-(O6k+7|+Wy%=#H(n<~ff z&*|u-Ys2ym>H8nZSl5iRFT@Wxwb~$O`{g?2bk{>fefu4#x5GM{SQL^9SUCGPo_NGr!V;QhcYNLbl1a{ zM(d+}+OU#?!eZUSeR9(ZrLV`MDtI?4ku$p5)T0LmSfr1#{};A99_^o?2_H;GU`u}w zW?PirGP5t;b?Ta2@uL;hW5|PcOWx&2C+@QkwWiJ-Itzy?iSz z{f|z@Mbq*A({y(w=$=Qp-q^2u$awy`@tHH9H>+mZ569WjLeUJ~wU0WsFni-!twE2R zLu0i*y&$tVtC{`_IlPg)bW_Z`|C4kiIj-sM1CF9!9l??2H06)oUL%Gc1?763th!Lq z-e0HL-KN}eGBKVg-BPN2k!$4qv=P&J`n)&o4-D`J0ygZIm*oW?D#?XH9qlp|Wf?hh zx7pS{n(>E_?L28<9nOBAE;#qFSjZcrHnQ3~Q*efpZ@h#rI)YArg9N>(XGXs!b)uTT zMKp$1RdU6GEu*b)a_x@Gezn%Vw#}oGkJ4w9YDa>o)fQ$@ot-lK*M98hOt0!cd~i0a zbD9Q8y59Scf4sji=H?02y)(%axb%my=~mIssJs@1U~S%_cNVIxs`7)smUENFZTOqa zvv0Vsb(7%cBkY1?94AMfL3qDCk(SP|lOe$l+fD-U;x1#XxDZ7D=%dOHoSxx3@-BxJ zZaf|ajMaPo1_vD>7B*MDJReuk zh3bALN4fI84R6+C4cAr58+Ppnl)&v zx(0mQn@%hlvW*4zIsT>nEobu^8&_(>{9Z`JGI9#-+$F}}x^4JP--2iNeSkoDprYcG zo}X;Y&GjNHS5`x{nLq9xB0ji1U$VQx4+7s?1eKpUR%HI(`g-7jm6wh;=cvbML7r#H zY$7G8%fkb?gDOq5*TVwk*81Bi71{l92OU`YE{BIce76fU=FXC=C^489hs$aG$VT6I zTgYd2M$_D@();2Kq^+9lZLKTKCKa3#n%D35_Oa*wd_Zw&<~O2x4};!w)_>xqcOHsf z&UUGJU}I8pnmd|{9F6HP7?x;Ly6R!4d0s3qdhj4>Tv=vEDe8%(Z~o;GD%luo1JIa zDeCgcbIz=OZ2IvoaTo7y(2Q=30n##=vd3hCw-&dze;!Am2%qS>EzRwkMp z(EE3lT8HKo&&l^!zSExUQZBpaXZ(?3^po}c@^8QFdogPv(^#5csEn^SwTV@$!}h`r zO2$*Hg=;@28@(+jo>{I=5@5P@GCtxuzXS8B%aqax&3K-(MxCB()YKEb=5Ra z(>mSxkiW<@(WuCdF_EC?`8xRg1@nayyHBXgpL3iET)b@jBm0K`Ptn_a(q`G_^()k$ zPU(8N7-JPuFlZMN*i6>aNJhNdvq`RD$bt#ux904f}|6DXo4iMvId)1fwx(U zdkXZ)_+pd!bD`<}jK`_I0;XRu zb5?dsD;@SPiAfnucSBbw?|XE0hIO{ir<$%*xS!N2rlDdX=G+-%D%N@Uq1xfcr`+d# z=VPzE;!&HAyJI$Y_Fm_?r>o}^*d=KM*imO4t1B5olVmABDX1t>U3!vx(quQ7+~SPS zOKlr%b6eZ_81$CEK?Uz(u_3>byz!pZpXH^h7td`2Hur-bdt%HSG5puKqc+Y^X9m<_ zZFApsMD3r>xiWW!=xXmEdubw4$>DLqOf-5jhcD~8%qJgf1?mZxW`in2(JKjgcYL?s zy->P)m-6d1-xqe{VS>G8w(A<5a&s-Oio@n|cAXs2`G}<9ZI%RtbjCe$4PLHsr#&Se zbWV!r+uFBgSp0XH{?|pZVxcGGAMIw09?Er&k6_|GpFzgX*X9fvUv8!7o&BhDohIR|1WB08 z;e|?vKiu;lbEYJHcsxj3Al*Ov?~FC`9-U=DHfzhRZK7K9Il~{{osiwr%(_6f6aH0S zOasNda$-7DTIb>9uH#au$=i+M`d9D?=RW#|KNAsTYbDpOZ>%l z)Ga_-3_E!eZ)zV?yLje_W(~g`L#jLeAj~fWtkm;d!TsK_;9XGrth>9%icaTYS z+x(R4Wh>gpZwso;eEs->&M%jObK^P@`Zme)tJ+kPiPBD#TWn*hL3Q80B5Nw}6ntza z1gaA7tbX1(Y%F}#&q(nrOZP87XzD)Qim9GlcEg~stC%Ok-#c(;(r00Kx4nXUES*Ko}s;} zL{OjEGXQgY2Vh3e5cC!*FhC2zk)dulFwh6D3=z=j>;6(LrrmdB9~`HY;ms>gVr@_Z7;XLC zfBV+%-mc~3+RHxb1?kT3o<)xr_XOZ~YR>tB-^FQnP(`sIHVsw~- zdh+#KvF|pWZw@+nSH5`S#qjp4->x2mbNPd>z5*MztXG9Us;L2OQEFFz!$rs8Ez^&| z!U^YS_pT`I-bVV0obMN5&$$Wk!(-Fn(O0KZF))A$C8UU=HaGB=Rd1pCz#J6;@ZWsz z=?B%~z#Re;lhG6W4W}U*t1nPXaLYX(`P!8y6zoFD!{OHJVnO}7+ zm2&L-)*aJkUv14_?Z9_x%(pOtD``8rc6}>bPAXq53AIgyLSs)}Qz%4fYt+%rz}7?l z=(*-w?`Ky03>EzPRnhLm*%R>4<{uLHtI$pE(r3yAxUBCy{N94y@b;O9U|RQZz4u>W zX$~q57I_YjGjAx;f-tRj2wr#b30OVpEbKYo2Zsi`X%V1>h8B~Tj_!xq(`Kt;A?N8+ zCta*M1kPH$XH>w_Sx6qlRA0Mv#amZAu;t&k99*-8u(xd+j_V}g@=KNn^+$RaRsU7n z!Uz0K({kDy9V23(DB=W2z>f|EAuFfdo3d+h0y2=5bQ1T?v>g}tu|@DV|GgRf=neiR z@{Xq#fQ_=tyZ7Up6bD$w)4Apwtn&cAoXVIrLce1q*L(U7Vc62 zXHbV=w}Pa;D5&2rRN*6w_rhvg49?IZ(A(7oM^7E4F2N>xzAiOoxRkmMecgR(p1>tX z?-Lbp6i{VGJ>om~TN~DHsEq3Z5c>Mv`meVxr1y0-%`Wo`EttTc1aksWBL2BqdB##; zL_@S;d^}eOYV!y1aM?ux;B@o#=upSe5{)#xbd#L9W~YjNZO++I>yK!a9gmZpoLT_Q z3rpQ}LxFzQ#k18|FCVAQpMqTncPU^F6I3oL4Z{Z)>;b+*tJPX~@0BkHwZG%P|J}=9 zgsEL46aj#G{2d2&(8%y9^?MifUj%ce%~7qwXcW*2`0MAOP}^jKtA6>`U%re(lvWKz zT8jW~s{MVj61=gmzpuN>lNAsI;Ft%8xL!JHb`LFU&pg7L2&&MbL2r=M0TY6m zINew!r;;s4)8gPfUq;rR;q{`9OocKM5n_reKbo104xN9K5D3N=22KHZ;D;ZBi*S1n z?@?{PVj+M58cTck%vWGa&mheM6rH=iEgGm$=U__T5d4?fht=Z}`wh+ypNHLtcB_^m zzoz+@Tvh`=W&{4P6o6Gq11QX)VWl_mH|pJhab^Qn;Eh2c(3YD~!xBSV8xU>nGfeK% z2nH5l92^oST8%`s(PdX45$ zc{Sft9B%Vq&a_F>)aM)x@Z5fpz{xYIbNUA0%@-fz!P?Z|k1hgGF2YUIPr$ssK^Uy^ zB2ZKlfr@BE#m4EAr>iuef)%I7onYs0nsZbGHUYi?#+wej?#6YM`s=*DGE#vCS5nA8 zYX&OnRd<|b9_IOd>trBWlx)D_@28{eVi+C^DZ7Bi#m(IEG7XkETx%S>bT7&-T67aU zxbe}AL9etU_1hbr_~ZP4Qr{#6I=&IloIj&Na^9T>D_rjqpkJHs% zhU=%ErpKoRfC_?~a`1RC1C+Z0llvyCapP9OAAfop3gUmR%c2fYXhrjnbCBDmLYJ5{n~pi%Wj6i{{@`74-IeKjh>Xs7HZ zx&$bc-9n45fa!ICO%4m~etU>^gAfg`-lj*uyDqo=nB>C%JWXKaD1bjN231%-@l2-V zm!P&6!-~mg)#Ec5c+8leS3M`a4(1(HtC%JD6=rGDmY@5|_uT%Ti&d+ln*MF2UI1?X z#?6KL)Yavr`ZJYYl=AsOO?3%Pg*-F>6*VrrS+Mrd?5HbYpe5RJI-w4m%dVs{ui0JW zKS!&}E;=c@$*R7CykmM@m`39O9ef3BcKXG5C~RKbdb|1>>OSX)x=Z?+wZR=4@ZkwR zP)1bQ5b4z8(BsYQ8HRp({HmHGK*bIWU&Dl+K0nfr4gA>@h+ z3(;b2ZL!!!o%~r^;|nu6DBfxmy932?VEsZn8WHhiUbx5e?yn@i=x5zD+RGqiz-D^T zV^1tqpr=q(&%@W5pI6nvnF>p<$E89g27mL{)nd2eCoF;%=K)Hshe9}C6#$#Z&&<2D zWfv3c`3rgC+TkDxxyRJEMG5Q9KuboG(Fe4kG4FaTFn2&C_Gc)S`%b}h^rSeWjl>n` zHxz7Iu=6=giKfJoUZi%7deCv2fyKgn7;iEVm0;#J?Qr1l9VZd$@N(fbvCmMb_wPg8 zajC(gO!ZfLjxeRxe~y%0AMhI&FdO)#^ybJ$64V8!c@i)D-L7IO#0rh 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 0 and nx <= 1 and ny >= 0 and ny <= 1): + return None + qx = max(abs(nx - 0.5) - (0.5 - r), 0) + qy = max(abs(ny - 0.5) - (0.5 - r), 0) + if math.hypot(qx, qy) > r: + return None + def dot_dist(px_, py_, cx, cy): + return math.hypot(nx - cx, ny - cy) # placeholder + # 连线 + 端点(白 α0.9) + line_w = 0.04 + for (tx, ty) in NODES: + # 点到线段距离 + ax, ay = CENTER; bx, by = tx, ty + vx, vy = bx - ax, by - ay + t = ((nx - ax) * vx + (ny - ay) * vy) / (vx * vx + vy * vy) + t = max(0.0, min(1.0, t)) + d = math.hypot(nx - (ax + t * vx), ny - (ay + t * vy)) + if d <= line_w / 2: + col = blend(col, FG, 0.9) + if math.hypot(nx - tx, ny - ty) <= 0.05: + col = blend(col, FG, 0.9) + for (cx, cy) in [CENTER]: + if math.hypot(nx - cx, ny - cy) <= 0.17: + col = blend(col, FG, 1.0) + # 环:外径 0.15,厚 0.06(填充紫、边白) + for (tx, ty) in NODES: + d = math.hypot(nx - tx, ny - ty) + if d <= 0.15 - 0.03: + col = PRIMARY + elif d <= 0.15 + 0.03: + col = blend(col, FG, 1.0) + return col + + for y in range(size): + for x in range(size): + acc = [0, 0, 0, 0] # rgb + coverage + for sy in range(ss): + for sx in range(ss): + nx = (x + (sx + 0.5) / ss) / S + ny = (y + (sy + 0.5) / ss) / S + c = sample(nx, ny) + if c is not None: + acc[0] += c[0]; acc[1] += c[1]; acc[2] += c[2]; acc[3] += 1 + n = acc[3] + if n == 0: + px[y][x] = (0, 0, 0, 0) + else: + px[y][x] = (acc[0] // n, acc[1] // n, acc[2] // n, 255) + return px + +def png_bytes(px): + h = len(px); w = len(px[0]) + raw = b"".join(b"\x00" + b"".join(bytes(p) for p in row) for row in px) + def chunk(tag, data): + c = struct.pack(">I", len(data)) + tag + data + return c + struct.pack(">I", zlib.crc32(tag + data) & 0xFFFFFFFF) + return (b"\x89PNG\r\n\x1a\n" + + chunk(b"IHDR", struct.pack(">IIBBBBB", w, h, 8, 6, 0, 0, 0)) + + chunk(b"IDAT", zlib.compress(raw, 9)) + + chunk(b"IEND", b"")) + +sizes = [256, 64, 48, 32, 24, 16] +frames = {s: png_bytes(render(s)) for s in sizes} + +out = struct.pack("