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 0000000000..f57c675b7a Binary files /dev/null and b/tests/TestFiles/Cairo/OpacityMask/Opacity_Mask_Masks_Element.expected.png differ 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 0000000000..ba8312accf Binary files /dev/null and b/tests/TestFiles/Direct2D1/OpacityMask/Opacity_Mask_Masks_Element.expected.png differ 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 0000000000..f57c675b7a Binary files /dev/null and b/tests/TestFiles/Skia/OpacityMask/Opacity_Mask_Masks_Element.expected.png differ