From 39e7d362b2fffc02c88c306301951b844d3849d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wies=C5=82aw=20=C5=A0olt=C3=A9s?= Date: Fri, 6 Aug 2021 09:07:18 +0200 Subject: [PATCH 1/2] Enable antialiasing for PushGeometryClip --- src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 2 +- src/Windows/Avalonia.Direct2D1/Media/DrawingContextImpl.cs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index 2352b8b076..1f186396ab 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -506,7 +506,7 @@ namespace Avalonia.Skia public void PushGeometryClip(IGeometryImpl clip) { Canvas.Save(); - Canvas.ClipPath(((GeometryImpl)clip).EffectivePath); + Canvas.ClipPath(((GeometryImpl)clip).EffectivePath, SKClipOperation.Intersect, true); } /// diff --git a/src/Windows/Avalonia.Direct2D1/Media/DrawingContextImpl.cs b/src/Windows/Avalonia.Direct2D1/Media/DrawingContextImpl.cs index 9336c9a7bb..09e5b7c71a 100644 --- a/src/Windows/Avalonia.Direct2D1/Media/DrawingContextImpl.cs +++ b/src/Windows/Avalonia.Direct2D1/Media/DrawingContextImpl.cs @@ -541,7 +541,8 @@ namespace Avalonia.Direct2D1.Media ContentBounds = PrimitiveExtensions.RectangleInfinite, MaskTransform = PrimitiveExtensions.Matrix3x2Identity, Opacity = 1, - GeometricMask = ((GeometryImpl)clip).Geometry + GeometricMask = ((GeometryImpl)clip).Geometry, + MaskAntialiasMode = AntialiasMode.PerPrimitive }; var layer = _layerPool.Count != 0 ? _layerPool.Pop() : new Layer(_deviceContext); _deviceContext.PushLayer(ref parameters, layer); From 5b9f06865e212be05e8ec5c2d1657029fe0f074a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wies=C5=82aw=20=C5=A0olt=C3=A9s?= Date: Fri, 6 Aug 2021 20:10:03 +0200 Subject: [PATCH 2/2] Update expected test files --- .../CustomRender/GeometryClip.expected.png | Bin 2258 -> 4082 bytes .../Geometry_Clip_Clips_Path.expected.png | Bin 728 -> 660 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/TestFiles/Skia/Controls/CustomRender/GeometryClip.expected.png b/tests/TestFiles/Skia/Controls/CustomRender/GeometryClip.expected.png index 535d411cc7a02d6f26a14b9ef1392a9a7cc928d6..e2604d28362214beb03612498936b8c90a420418 100644 GIT binary patch literal 4082 zcmYk92UJtdv%u+pdIt$cI!Z60H)#<9Qlx{40-+-%fFfYPpr6!$bV8MmbO_xjCQqRo$tK&=A3(X@7)9^_EYXPYTNoH;X_ z$Hj`@7PFag!N8LYtZc@qo8Mi=!rd)83#xrqg{Af^&Z21jxBcR_it$p{tt@j$SzS|* zt*))cg!o!J7mGGITCO*5qSH~z)Tdpo+=f96U`@smljDj>ARwOxe===}RJI<0*L!iO zH5LZ7%`@QDr$R)>5!c48%}Pn3wUF{b6jdcx-ssmW1k1G7)Q!7_*ftc>z4{x z1Jn~~BPM-uD{d{k2URq`jB0~os|EjH#z5pw*Rff)*zR*5>a;A%biAfn zefYDyQHh(_MN{_&%2!9yM^s}6TbIrB)-_z)E-9lNn8Jw;3qGc^zPQX8TS@3>>4NKB zLh~|uyc~tJ!%2b;FoC~6d6OIMpYo3)i8+hhvw{7UL%&ge<)0S@8_Wb`+n^?9>mT74 zInKFsraNk@O;}Z-x1EG11fY07q>@C&m9Y+N**atLI_7LoYEpd<# zO9tk)lLw9^v-eGgU1}smeep;Tw*h}QRK9@!v{OXZNsHzTZA5>E5uj~Q4U0D$@JCEF z91Y27y)RDzHjY&Y`~<5h2F$~z5L>!76EM)^SStht^gPlYhQhpYJbNEryzK*3*z~Z@ z*WoX}|JV(Y%l^r)1@LZW*_&l=+vju$mfMArM5my&zET|+HST1ZxgmBrB1?4@*|ltu zt0_EY9V09Ve4Qvy_r*!W1XMMa~m@ zq^<{PG)$O|7geP2ZJS8T2Z?9aGWaDE=*nV(yLx?(KdHs7hztM5zH0A8g`5bb?1=(W zlF&uZd_zAi?-q+k(=`{UbzneSk%C&mmMXJjE*H_4R_gdB5;GBG@6_pOzyi@)?1-5nC99_PSSlU&r#Bd~E64UYen*!Of`Ri;|xb8fdSA zF#-534HZE5nEh+0%(aoe3L(~=t~w!2%x!M>2p2Yg+Ed!cl0f)9(Y~{1IONswY@V_l zs+eXIc`m8cI}om;42=kon}jr>bfF3XaaXn?xGk&m7#_kE=6TrTGYoQ1@|8CG zisb^YoG|Wd1=y&I1?NhvJzgM&11+Tq!Vy+RI?jkU8%E$WRSfB~B6iqLY=UP^(o+)1 z=`;@*u^HJ{j@jl}qhAE{#*%N(LVk9JNhhR%tlRgo)Q0m27ij_%_8I|Mi|lbKTsr&m zNU!H4#F#@jtkeFUf79K~-tS0#rbw8j3};r?j+ff`U^%I*ffn0$_k-;VL%5r6WO%&v zy~SxeJ@}uP#I)9hfM(DVoa8Q4?pK-wbKpvtNx6L$3NT>MO8)b97h3DpX|a+r<0Cr# zWxLq}$nM`DR=)tl0sNbCC5z&8Fo%!1;`0MqniDCxn<@`Nx&oT2F=YsdU+bqNwGQ>t zKkh*GRQ2IQ{xJz5>72BWUq!6aee{5@^i`G6D}KSVSrFy?FxEX1a|tO^Ouu4-ofeF> zxNb~40IhZP^JFsAX%XjSF`S(|P4?>YYf@D*TS>vs^xPQ;WZ0Atdb*NV$j=$iUpd`U zibCSOEl1(X_5{+FKr@qW4et>#A!GirK~{6_5_#o54IMl3Pn7i{@WBf zhiaMp^zZLF6l7{&Txbq%VttD3v(^)<;$}~k+hi7*q@@LyF_BFMW1Z$u+!H_}L6PE+ zVE;-Mh~?c#A0si}eAql=oV%P6O;5E8jJ0r;y;3NQ4iN^uYDs`Bn7euywL9pE)wuJg zw2Tu~Tr_VkjVQ!458i@`9G5HX6mNEPrKREB6jTpbF1D~b9Jq_Z%h3}{f>MnEQBp-YBxZ}NDS8gQ52maME#D~HN}^cPrRt8M8(ICBts{CGOoE(hMeI%vbX)@^0job|sB#|XMuup1`kuTc_D zA{2D(g{0{>-^;BaLdf;a*h9B3pe)8}4MALkAAibb3d>_t9~gHPUm07WULsQc#x73>i8l9bO=O?fegh4? zW_#irUj^E7>htJ|?Tw#sNMSw72)en8&AZTNmS_0*YVqyxY4o{X(gNdTF*@Qtk&(=l zHMH>^g)RFa2ggN!M<#kb+AlI5bc-7BW|sJ(A3#@0rP@pX)GsIsSYM*{;Aq=?N?dqa zUT4A;|Mt}Tj^o!b1ITSl=R3DbiHf={gK#c(Y9i&2=8I9Q*}6YDe+h&!j`BdgJ(rs_ z)ooRckd754c6W*&#(%nZIVC_Ok^KYZy*Nt}aJ7`>J^UId0 zu3#xBg1ad;yCcoG zGyRjgAMRR^WVUM5V0UAhB=@8{?wYYkcb}$}3J+{J1lhkl8*mGx@J}7t#$}@AUr^j> zcf3(ul&gCn>)#1qv%bIHfD{d0L5PG>Mqe%m>kuOAofXWUT^W%55)W_h)BJe%dN7ye zgJB*;t3~Sqi6Ce#m$|#_QO2Hv?%ukG3qEfNxF&p&nS_o*sv}*`O*8?Yy_gl3y{bs6 z*tV{5>jQw{j#`?&hn=3LuS%vTb8Fi?A(!8(pViw3c6CmF7 zC6AgY{6oe6Vf$bDoUZ?B3wg{%67_5q(RsNAo0(bTUxqmF3xLm_t4ryKC_`I^TbJEMp<>&u=SE$?*acIJ9hv!IRiFN!Is|wi%jML4SnsDKoLd7~% z$7itcFlJ07;H$Y@PuXQdLMC@iVp#gN(@3lKmH7?R@O5Lo+-T&oW{C|lv^QgVw%8bb<(U9U->GsJ0|zw(XUYTAdRJ?P-n_)R&e$r~SV?kfLF|4-V^1kXiA WkKxzPlE_Isg~=@oaJ_-cv;P8IdBoQM literal 2258 zcmb_eYfuwc6wX6LQ$VW*7r{ zEgK_<3bJe%P)Y$&*&SYA>H9^}*|5uv0KgJ&mr8Imw3Y7U8XGWWBA zI0x`PJbC_#R1(Rh30`FFx?fh4NW&5qgwGLfT=n#72gal zto+<0Vcrm%|9-dPripA`)T-EFzXkd8%` z{Brn)qpl!s>DG!xMZTv%6{_6Jnyjg_GJ&jmZTxMXvXBcxJ(5-=7DcxB0N0+A=0M|7 z%LqWKHDYcZw+2C47Iv?@V|rR9$Xo6->q6GuJFx)e9hSSkDD9OSa+P{^+(E8^{yvWL zShK+QqzR=Dc-_PfLr6>FLmBwq3lgZ>Tbn~YlkW{eo!)m7;I9G^ErC{!OK(zohhF(m z=I-9mYux8|v5UpZIlul${bX0|UdoZ>o-=5BBpy1E(>iaJHtTK_ zRN;1WSCFx$vpAq7)kE&(m_Fm9(l$rEA%#`e0YO8ydxLtP`GL}Mi?sms=WbBCw1e%^ z`^*OBxyLgB(6FFX7wa=)f+uqRDjSlT8y$P`*vj`JpY{eSl`lW7Yuy z1df>!hIoc%0AVwBs1=vZR!12BxfekROwjotK$?nX+QYn81OePQhFGS_*pGsN=5XC? zjY0s>GnPtqBM@MbinctP$wj?nG(mB#c-u6@mxMe${=W0P>o!Uj{rTsjsfb?bPk$cx z&b}#Tv_)uQP~$8)FRWK$RTL;w_7qeO-1`IG#9RXhrX0GFq>pwqH(7= zh5CsdNi+^Or%XWOBY3kPv=N=R5Y)4M}ydxpS|5&PKNYl(}~b9%sdj(o5l-@$r@}A6!3$S#~?KAV|pO^ zO>qpY8TUf;v)J^d@wyzOtNp>&!p~MPgO9>&BH|bsO*j>~+aHfYf-_y@g7hoQQb#x7 zThRfNAU$4evW5f6Y-enbJ65QUM`}WfJ2f&eP-SZkdfh)l8abd!5`pf}-PN+UDd2hu zHvF6F#6$h%1G2%v>X0)+k81(XGlB!2{RLP=Bz2nYy#2xN!=00K)%L_t(|obB4XP3=GsfZ^Xc-O#{k z;sQqksXZog2`ruzd16>X|PFsNu_jeK9v^wP0Q1~3S1^FjPyRhTAa{4i+%jjbpG0WCzL3{f z0dz9sE>B)m#8(nUg=K#CWu8J zAG}nsg~`nSr&X|lJkX-=sGc=i^!-e-M2o(gSypJ#_cF}_E&5L8X`@Bo$0bd)=)1V3 zg%*7e*K{<{qVM3|RcH0pHZAnByRCr$Pm(fw=Knz5k!G=NzOD2#Rp%4-w7-_c+X4Pvv;~Ci= z&8vG~jMb=1S9Lci<0yZ+tGpGaupf4HKf4?MG+OG!-ho=>*v7+ zwk}rBhYf96ti263xK*+8cG&P1#kyr+0h6Dfx3D7WESBM+gsuERW} zZkT0D=zV39>55sngq~L>dG45nx9WLilIPFc+b~`(cJVEGU72Lry4-beNLnM*6Q&3Z^Kv_I0U}b6QMcwXaK+oKy2t zmdACew|~@=<91!@J@VvuU6+c;^TU>_A>!JAEm&GawF6tSq=;z?wrD94(H?Bs5@LLt zu!XmZ(e1*P-Xg}f4O=`{jBFpae2y3w16Dw)7!?OrLW&p@3s%HhF(MwUj5Xr(n6N_r z6Q9O~m9iv0iw!I0nfRo`%3