From 5bbdfc55b4398a8d748e6561991a7ed70f614e2a Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Sun, 29 May 2016 12:26:48 -0400 Subject: [PATCH] Added a render test. --- .../Avalonia.RenderTests.projitems | 3 +- .../Avalonia.RenderTests/OpacityMaskTests.cs | 64 ++++++++++++++++++ .../Opacity_Mask_Masks_Element.expected.png | Bin 0 -> 846 bytes .../Opacity_Mask_Masks_Element.expected.png | Bin 0 -> 989 bytes .../Opacity_Mask_Masks_Element.expected.png | Bin 0 -> 846 bytes 5 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 tests/Avalonia.RenderTests/OpacityMaskTests.cs create mode 100644 tests/TestFiles/Cairo/OpacityMask/Opacity_Mask_Masks_Element.expected.png create mode 100644 tests/TestFiles/Direct2D1/OpacityMask/Opacity_Mask_Masks_Element.expected.png create mode 100644 tests/TestFiles/Skia/OpacityMask/Opacity_Mask_Masks_Element.expected.png diff --git a/tests/Avalonia.RenderTests/Avalonia.RenderTests.projitems b/tests/Avalonia.RenderTests/Avalonia.RenderTests.projitems index 79ceddf3bb..0d54c021ca 100644 --- a/tests/Avalonia.RenderTests/Avalonia.RenderTests.projitems +++ b/tests/Avalonia.RenderTests/Avalonia.RenderTests.projitems @@ -9,6 +9,8 @@ Avalonia.RenderTests + + @@ -22,6 +24,5 @@ - \ No newline at end of file diff --git a/tests/Avalonia.RenderTests/OpacityMaskTests.cs b/tests/Avalonia.RenderTests/OpacityMaskTests.cs new file mode 100644 index 0000000000..7d9b6d7fa8 --- /dev/null +++ b/tests/Avalonia.RenderTests/OpacityMaskTests.cs @@ -0,0 +1,64 @@ +using Avalonia.Controls; +using Avalonia.Controls.Shapes; +using Avalonia.Media; +using System; +using System.Collections.Generic; +using System.Text; +using Xunit; + +#if AVALONIA_CAIRO +namespace Avalonia.Cairo.RenderTests +#elif AVALONIA_SKIA +namespace Avalonia.Skia.RenderTests +#else +namespace Avalonia.Direct2D1.RenderTests +#endif +{ + public class OpacityMaskTests : TestBase + { + public OpacityMaskTests() + : base("OpacityMask") + { + } + +#if AVALONIA_SKIA + [Fact(Skip = "Opacity Masks not supported on Skia")] +#else + [Fact] +#endif + public void Opacity_Mask_Masks_Element() + { + var target = new Canvas + { + OpacityMask = new LinearGradientBrush + { + StartPoint = new RelativePoint(0, 0, RelativeUnit.Relative), + EndPoint = new RelativePoint(1, 1, RelativeUnit.Relative), + GradientStops = new List + { + new GradientStop(Color.FromUInt32(0xffffffff), 0), + new GradientStop(Color.FromUInt32(0x00ffffff), 1) + } + }, + Width = 76, + Height = 76, + Children = new Avalonia.Controls.Controls + { + new Path + { + Width = 32, + Height = 40, + [Canvas.LeftProperty] = 23, + [Canvas.TopProperty] = 18, + Stretch = Stretch.Fill, + Fill = Brushes.Red, + Data = StreamGeometry.Parse("F1 M 27,18L 23,26L 33,30L 24,38L 33,46L 23,50L 27,58L 45,58L 55,38L 45,18L 27,18 Z") + } + } + }; + + RenderToFile(target); + CompareImages(); + } + } +} diff --git a/tests/TestFiles/Cairo/OpacityMask/Opacity_Mask_Masks_Element.expected.png b/tests/TestFiles/Cairo/OpacityMask/Opacity_Mask_Masks_Element.expected.png new file mode 100644 index 0000000000000000000000000000000000000000..f57c675b7a013cb3fe4f94241527f96150ca10b6 GIT binary patch literal 846 zcmV-U1F`&xP)i%%vIn$gk44mb`ymP*L z=Du_93`J2CMNt$*Q4~c{6h%=K#WW0AH)?F)Rm}RIX8Xi@U3+cdMpo{-xh?Tt&pNoQ zw$HVv6Z2jmMOfn;9&&J5`*qpb#se9-FO$__S4<~sj4vnUzCgIJ#>0AdO(|=JGmW#+ z`7e{vVOLBqYmA>v$bW%QVe{_V5F=}b(~UEcH7pa|Vb6$@HO5Z_*RVjeu=jBle~OVc z!>Pvo!FAjsWpHgA!$mxfQ>K$O#y1Au$*3i5(jRG@#$(vTQLD=u<97$PqVrD|HZt$J zO{$Pw=(XWi^~^oQTeQZNeIN;01kRUscu^Uy9CqEy5ai z;YB=RI#~@TTK{;5kuI!p4_?+c&r`}8<3}U&PZc)*@4te3#mH(n9=VpK32QuvmvFZ@ zSz~-5s*bGluuXl210MM?T#i4Ds3)Vt3|w#gj^}Zwcv(LUY)90R_LLm>7O&%1v9f0P zEUJ#wIc(r2-oTIIWc?h~U94f!ANUP#;ycsJYWO@d|F!HT=O-0!;|tTu3R}BI)_J`1 z*T4t*5ziE|X1E@mcgj=p-)Q~b8&*F&9OLcz8W~Euu=$qdye{jAX=J5z7fHfepS{lM zqEn;)}W(0?j$)U*ry?)UmKvX0$Eci2<@xkgPbYiD35xQ<&yKP5jB zE34_FNgAQT2ENySDHtVdJF~mUnZvG%ku}3t3HdLOalEsozowRTbKsZg{Flj^^glMO zteO4=a5^c%27b_AhZXc+vUb+dUF7a1uQ^<2?RD*&#Jr25D2k#eilQirq9}@@D2fpN Y20PuSvP48Ip#T5?07*qoM6N<$g0Li&%m4rY literal 0 HcmV?d00001 diff --git a/tests/TestFiles/Direct2D1/OpacityMask/Opacity_Mask_Masks_Element.expected.png b/tests/TestFiles/Direct2D1/OpacityMask/Opacity_Mask_Masks_Element.expected.png new file mode 100644 index 0000000000000000000000000000000000000000..ba8312accfdc140ba2f09abbbc620f7e0f01247e GIT binary patch literal 989 zcmV<310wv1P)Px#1ZP1_K>z@;j|==^1poj8hekyLe-qG%`Oa@>|wY}WI_iZqQrex)yp z-c!xtTrhz9*Y>#WIxJD1OP*?u)r6fv)uwCu7Q;&W6UZF( zz;L#MvJEv2pv|yETexhcnqo0wr%}@YItVL$-f^las)6B5rYpU7H8S04SW7gcY>cut zLwmwxx|*5pCaiS-C^ADku$$-}27geiO@|0eG{RzpY69o$gP~REAnjqaIbc}DWN((Q z{4Lh%m;{yumvYZJgeK8IytN!kqrOR4zmvz@CbW-KRm=lR!SNtvk{56Qx0~Xv<$$t% z3t`FLJb~Szs-k@lYX}GbL{D)0fn`NN*}j#qWKA9BGE7yaXMy3g4}<4vkDyWzNiFxS zhLw5DexyoI0>jxL4lmM<#mgXJiH5igQPnUH3`1)uQ%G+9r67`8?mG-C?e`%yOasHw zdW>G8U5m0N%YBz&iE>-VD7O=79;A`h{-LzQJj* zuxQloT`4^YOc28yewX$+3K5p9Um;a`78nKx&|cbHps*G&vq)8i^K8MH{K~Q$$-m(G z1BE5J|K9|LDVe4*4jZSgi?@Qk4W%!j2lVQ2jvly?KeNc&ZWjmjV=&|mKKodiF8NVK z9qoJANi?AxR>3MPK|8QViD9jN|YK79hT{I3EC4TJVqK}iQXbp z)C1!H`ET?*F0)1(_N|7+{-X7C2^JG3--@47YD`!6t%fB%3-jp`tOEN)kx8pCo$cER z3(0hSrJ7?BSi&<@H-I+7lKKugj^j9v<2a7vIF92uj^jB0Fj4de;>96#otU{!00000 LNkvXXu0mjf#i+se literal 0 HcmV?d00001 diff --git a/tests/TestFiles/Skia/OpacityMask/Opacity_Mask_Masks_Element.expected.png b/tests/TestFiles/Skia/OpacityMask/Opacity_Mask_Masks_Element.expected.png new file mode 100644 index 0000000000000000000000000000000000000000..f57c675b7a013cb3fe4f94241527f96150ca10b6 GIT binary patch literal 846 zcmV-U1F`&xP)i%%vIn$gk44mb`ymP*L z=Du_93`J2CMNt$*Q4~c{6h%=K#WW0AH)?F)Rm}RIX8Xi@U3+cdMpo{-xh?Tt&pNoQ zw$HVv6Z2jmMOfn;9&&J5`*qpb#se9-FO$__S4<~sj4vnUzCgIJ#>0AdO(|=JGmW#+ z`7e{vVOLBqYmA>v$bW%QVe{_V5F=}b(~UEcH7pa|Vb6$@HO5Z_*RVjeu=jBle~OVc z!>Pvo!FAjsWpHgA!$mxfQ>K$O#y1Au$*3i5(jRG@#$(vTQLD=u<97$PqVrD|HZt$J zO{$Pw=(XWi^~^oQTeQZNeIN;01kRUscu^Uy9CqEy5ai z;YB=RI#~@TTK{;5kuI!p4_?+c&r`}8<3}U&PZc)*@4te3#mH(n9=VpK32QuvmvFZ@ zSz~-5s*bGluuXl210MM?T#i4Ds3)Vt3|w#gj^}Zwcv(LUY)90R_LLm>7O&%1v9f0P zEUJ#wIc(r2-oTIIWc?h~U94f!ANUP#;ycsJYWO@d|F!HT=O-0!;|tTu3R}BI)_J`1 z*T4t*5ziE|X1E@mcgj=p-)Q~b8&*F&9OLcz8W~Euu=$qdye{jAX=J5z7fHfepS{lM zqEn;)}W(0?j$)U*ry?)UmKvX0$Eci2<@xkgPbYiD35xQ<&yKP5jB zE34_FNgAQT2ENySDHtVdJF~mUnZvG%ku}3t3HdLOalEsozowRTbKsZg{Flj^^glMO zteO4=a5^c%27b_AhZXc+vUb+dUF7a1uQ^<2?RD*&#Jr25D2k#eilQirq9}@@D2fpN Y20PuSvP48Ip#T5?07*qoM6N<$g0Li&%m4rY literal 0 HcmV?d00001