From 6e0a911a3ae3d8b6bd3da7769683b84ef87d8f9c Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Sun, 12 Sep 2021 19:26:36 +0200 Subject: [PATCH] Add test for transforms on GeometryGroup children. --- .../Media/GeometryGroupTests.cs | 36 ++++++++++++++++++ .../Child_Transform.expected.png | Bin 0 -> 4497 bytes .../Child_Transform.expected.png | Bin 0 -> 4784 bytes 3 files changed, 36 insertions(+) create mode 100644 tests/TestFiles/Direct2D1/Media/GeometryGroup/Child_Transform.expected.png create mode 100644 tests/TestFiles/Skia/Media/GeometryGroup/Child_Transform.expected.png diff --git a/tests/Avalonia.RenderTests/Media/GeometryGroupTests.cs b/tests/Avalonia.RenderTests/Media/GeometryGroupTests.cs index f90a441d41..9ebbd30e05 100644 --- a/tests/Avalonia.RenderTests/Media/GeometryGroupTests.cs +++ b/tests/Avalonia.RenderTests/Media/GeometryGroupTests.cs @@ -55,5 +55,41 @@ namespace Avalonia.Direct2D1.RenderTests.Media await RenderToFile(target, testName); CompareImages(testName); } + + [Fact] + public async Task Child_Transform() + { + var target = new Border + { + Width = 200, + Height = 200, + Background = Brushes.White, + Child = new Path + { + Data = new GeometryGroup + { + Children = + { + new RectangleGeometry(new Rect(25, 25, 100, 100)) + { + Transform = new RotateTransform(45, 75, 75) + }, + new EllipseGeometry + { + Center = new Point(125, 125), + RadiusX = 50, + RadiusY = 50, + }, + } + }, + Fill = Brushes.Blue, + Stroke = Brushes.Red, + StrokeThickness = 1, + } + }; + + await RenderToFile(target); + CompareImages(); + } } } diff --git a/tests/TestFiles/Direct2D1/Media/GeometryGroup/Child_Transform.expected.png b/tests/TestFiles/Direct2D1/Media/GeometryGroup/Child_Transform.expected.png new file mode 100644 index 0000000000000000000000000000000000000000..d8e4c549245203d6574cc17973199735f5bc6893 GIT binary patch literal 4497 zcmb_g`9Dk#V>~D$C1yy~3F47Gq54Z^&1gasO+IM9Jfgo2=`f%$IrEZy^d#6LsBPm`u=ZZK-~2#$UtAmrbjq^84-7g5f`fV(nWWR!)|x>n3^-mKuh{n* z8)g`RpW98k9(sgrK>TOGL^o!eZiZ!^MDoZ1Js3wAp7B4-IsTNlV2VBqEB2C6&lCtn z1v6!v#b8x+C^SYmG%<}Hj1y*klO{#Svng;F8LL47lq#VCkng3V-yi~*@7Z&*AbI4e z(g}$FXxy4`jf`VjtS1`=c^tb>6-#hE<~=9G16s#CoY4;R+J8LbH*yK$$Gl016I?cx z&SN6pJ&7rUa*|=Hac10ob9bX*9e^W_NuMr-(Vl|9TCFlj$5M564Skf~SG?~oE!em|~#JU{t?LCO|Hf0tnmR z#8_vg*pSn5L97gF?-?i|_#>PSr)@NBVzL?_zr79+_I4y$XK75xY57AsM1z^qgb#%S zcnCnan#IS2J;O{%BdO6H3Obbai*z*_AJS5Nf?mNh5G5_Xk*-z|4eOf8qpKMLsCyxF z$a5j2rRpC#gaHhbW)EhLfyOXUWRt_`)#@;y)@L39WU-GrlrCv!?jFcVp!ZE0y#!W1 z@~owy024Nj2e}S6JWYQQLav7=(mnbNNJYdwIvWW_B|_*nrPRnWi!Sm>-=0!Tm)GIB zj#{VZd#yp0>Yb*S^c-Z7>gEauSbFr*V9nOtJ>Zjo3`O=dPlPBoE=gIafH&D9>DCvy z&xRgfRs=&yf~lnb9uL||!afNzir#YHt+?=*I(BoA=SBU(iz!z)yj}B9C1CXnI!yd| z9=}kDyioqbvDD4A&WjN{2M~uy*SM#`xwpNp33tut*IjTZtEH4S92jnCk4}wv24$3D zH`z^0AYBNARAl5MCqM6!qcYFJOhun7X>A7WUYYl|x?b%#lcGosjT+n#_!%Td6J=kGP^?d_|G!dpWjSTKS5O z-}M(C3$o?Iu(heXWwyQ%e*)jiv-p<*?64ZnDv5g;O@)W&TJHUo4m&!1Hf?{rgwWEG zU{n2da6Li5876cle{%*e9ps(B*%h|XXeGTn&390cq1SsM<-alPePFZ1&&PTaVfJ)zv@dn^NV)GwN2?&cwPv zAI!ShT=nYW=Ut9QyzXq4=>AK|CFO*Eyrr(jZfRt?%lY6ER)A0eDO_w``m%0w?(gb| zUoD#VLihf{(~|U^(RPlQ0ST;1A`_*FXaB+8V9WBghSrfW1v53QYD&?m>9x3i2~o6M z=R#@Z+$0cOzyzS|YjR8zRPI<|mR48!F<}m`%7Uiip&K(-hkxc(V9#onH*&MP4H+>} z(s(24ogI-4c4(F08=R71i_u=MiJIY?8NU(yt?U5Gq64ohsgU`KDrvf)@=@z0 z)ZHa&HoNushpqv=EV%E`a)$@~HJ*1R1dabDZ2uWAH*yoGO^|0qS<{AOh5_jTUj@FEAuCZqUC}uNk7{aNV0WROxM!${icq5*Gvz=OK{vxL0@mzK;E1=~Y&H zG^ur4X4xU&9h$#S@4N)tNJ;Zvg1Vlsbi@0p&c^c9?BxthZ;G5fj6@*A#@EcZDie|0 zkm~77Lh||VtxlO^&TjYExxuKWu>7#O_@;;O*IUg{ZG5vBA3_#Z~{6dM(4`rFL+QLD&Lgxe+d(~77aA?&c8 z5|b^%82>M$4PM^Ax+p`O6a#0*byr&IZP@8&&E9=8D0^OI^)i@#2GJU&H@M$bo(!Y8 zI*a)Cks#2yc{w1OLc5zEDe9VSW;b^i7jE#YohIJaI8V-Ph@PJ+9r*jhN@6E|?(J_B?Oih>=43taP?)w) z^2T`tP50g@ZMLtzH29_MXW^Qkw$9m6j}222zcSWZZ_s+1duw}HY2s!HkW@^e)q8l| zl6;a-4&`K-SSjk2BrS+DE*N7JGOjm%P;S@@vQbGKE+@t+4461)d|FM|?lCz5GJ;Jh z%vG&UwGi5ivP&>%<*O5DjQwXKk!*Or;}xOg!?^QHJ1+(mxm zn+-M`g{hiQ)r@ySol47jEDCec&z2sBI1ikx0+Qe;%PR&}7hd{A={$TB+NyhKXJWh{zRKDFB%MQH zuIQ~bInh8p7SNlQ*ENNNKO0Rz?!(V8QtqC}Mh}%|jx%F7mL@Up>zJ%r#ZIN!cA0}T{XyVK{h|78GEKU2`5JnOH)?3No>_X z5|NT*ktl;0Tqyn&4gF)GXGyj*K9*&6b)>k(W3DI_3mAg1O-3>j!V6_-PU{b8r`|LH zY*A$ugBcn0o5S9fM7F`!1F3)~&pgd3n+6^&g7R(f=#C%9}GQTD953MIWM0@V! zAmqmBH|fOjIncyF5n0dV`kp*%?H=Bti9Cl7epY0=(8kp__y#m|I!@YxlBxK>ox5jB z?*1bDJ|ELs1`kXv1AQ&KV;;>ec`N;L){KdBuhGA#49y3(BW3Ia&_?KdX8P75y(GB_mm2-0aMGl!8&8@Z%h^IP4i$^7J0)&1YpYV{ z=onb4b!)h!X4*GgDqj9I#|A>E!F(%Xdq;*PmVNqsb714A>d0%G&HaU898wRS4F52V zS|eOa)b=;8UgL7(7APCt1Aa7Nvf8cM^s2#KSdV=~{U5G)sl!gKws+2C`1mdFB*h9X zRO8DC?JcWnC$^I@3h`m(ha0>{1NrJZu8iEBryiay>@V@7-cgM8GWC0YMdRpwZ@h5n zRAzWW%Zl2^7?})#fB^Gp{MAMC1NA^z(OEqGr_I+6(YxaO!jSWXV5i>1-jd3~gC{SM zd8;DkvCgp%{%yzKSbP_VD&Jj<4NKMpVndKyZ9j`i5lIVAmfOolqKTsxb+IjD-DOLX z^sj4B4EwaweV%)BFE(G_SYEudxY7gLa8YZo-B02AOKD(d#V}+PZEpnZs}6a5+H*_( z{`;DCLx;~p=PTn?iiqhoL}hv`oUf1R{?mhx;FdoPK|)opGG?6*bT;okw7Hinwl@CR zrmtXCdNQ+$g9&(`L;OnDv z3cU63{qyP6F@Y0{gGVrvqwB$PXfwUt7}{&}*Q3@chvBv7^K-u#CGom*kV%E`?c<*P zEpr@}vp6n3oSM(fHMo2CAhXjt_L-&TPX0u%3yvMbD6C>RuxMN6XLY(Qqsak1Q#B9f zI^&qv(zaBxq&Uj4>@hDNH1^V7Tgbd#>NUUVBks}1T5G;&;y0o1#V5SmcLc^7CKa*v zKfOHpte!0KOfOipUG6~q5qZudXV}tU|2x4)Kw1b*>s$1oz5ekXb2Yu+(PnLbqlGpF zM$~wFxW!?QLPX{Ex&{}Emy|XSf_)343b)#m-*#Pp<+NnWh}y7g)_{6$jr`ekH&;2W zL(V6s`cS$>3VTJhb<+{}1(%nk#~~%DCrXJQ%qt=(Dzs6*_AG*A^}o8sNby)9_dFJg zvW897Z2-v~x?w^+jLf;e&N@_}mzMWX+TyWMwWWY(aw&oGeKVC9E4lb9wC5jRh_XF@ zVU=RZQ%$SOSGWF_>wU2RFAh34F)^`SSgiMY z^|3Qf{f^n?%l^al^vOVXbE-?ScXuboUofV^P*%66!nlj!cyM6K%RpvfWzZ1;SV5uD k0B9DB1N~neMBU9O&ei&?LbghI`d9^ox@M|hrR#$G9~a_J2><{9 literal 0 HcmV?d00001 diff --git a/tests/TestFiles/Skia/Media/GeometryGroup/Child_Transform.expected.png b/tests/TestFiles/Skia/Media/GeometryGroup/Child_Transform.expected.png new file mode 100644 index 0000000000000000000000000000000000000000..7182602fce9bb12359fc6fe974cd4f2071a900e4 GIT binary patch literal 4784 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 Mwmzyt^M2_603BuBL;wH) literal 0 HcmV?d00001