diff --git a/Tests/TestFiles/Cairo/Media/LinearGradientBrush/LinearGradientBrush_RedBlue_Fill.expected.png b/Tests/TestFiles/Cairo/Media/LinearGradientBrush/LinearGradientBrush_RedBlue_Fill.expected.png new file mode 100644 index 0000000000..9d11e8b233 Binary files /dev/null and b/Tests/TestFiles/Cairo/Media/LinearGradientBrush/LinearGradientBrush_RedBlue_Fill.expected.png differ diff --git a/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Align_BottomRight.expected.png b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Align_BottomRight.expected.png new file mode 100644 index 0000000000..0918b7fd51 Binary files /dev/null and b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Align_BottomRight.expected.png differ diff --git a/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Align_Center.expected.png b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Align_Center.expected.png new file mode 100644 index 0000000000..dc6050fec4 Binary files /dev/null and b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Align_Center.expected.png differ diff --git a/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Align_TopLeft.expected.png b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Align_TopLeft.expected.png new file mode 100644 index 0000000000..905ec5386a Binary files /dev/null and b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Align_TopLeft.expected.png differ diff --git a/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_DestinationRect_Absolute.expected.png b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_DestinationRect_Absolute.expected.png new file mode 100644 index 0000000000..9253eee164 Binary files /dev/null and b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_DestinationRect_Absolute.expected.png differ diff --git a/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_FlipX.expected.png b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_FlipX.expected.png new file mode 100644 index 0000000000..da7003b419 Binary files /dev/null and b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_FlipX.expected.png differ diff --git a/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_FlipXY.expected.png b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_FlipXY.expected.png new file mode 100644 index 0000000000..4bfcdb2dd3 Binary files /dev/null and b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_FlipXY.expected.png differ diff --git a/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_FlipY.expected.png b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_FlipY.expected.png new file mode 100644 index 0000000000..74a01bb78c Binary files /dev/null and b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_FlipY.expected.png differ diff --git a/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_SourceRect_Absolute.expected.png b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_SourceRect_Absolute.expected.png new file mode 100644 index 0000000000..e1fcdbc1a6 Binary files /dev/null and b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_SourceRect_Absolute.expected.png differ diff --git a/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_SourceRect_DestinationRect_Absolute.expected.png b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_SourceRect_DestinationRect_Absolute.expected.png new file mode 100644 index 0000000000..b2abed4041 Binary files /dev/null and b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_SourceRect_DestinationRect_Absolute.expected.png differ diff --git a/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_SourceRect_DestinationRect_Percent.expected.png b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_SourceRect_DestinationRect_Percent.expected.png new file mode 100644 index 0000000000..1aedd35831 Binary files /dev/null and b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_SourceRect_DestinationRect_Percent.expected.png differ diff --git a/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Stretch_Fill_Large.expected.png b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Stretch_Fill_Large.expected.png new file mode 100644 index 0000000000..f1914a404f Binary files /dev/null and b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Stretch_Fill_Large.expected.png differ diff --git a/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Stretch_Uniform.expected.png b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Stretch_Uniform.expected.png new file mode 100644 index 0000000000..fb2ae9f8cc Binary files /dev/null and b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Stretch_Uniform.expected.png differ diff --git a/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Stretch_UniformToFill.expected.png b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Stretch_UniformToFill.expected.png new file mode 100644 index 0000000000..d0009b6abb Binary files /dev/null and b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Stretch_UniformToFill.expected.png differ diff --git a/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Tile.expected.png b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Tile.expected.png new file mode 100644 index 0000000000..64695d4bb1 Binary files /dev/null and b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Tile.expected.png differ diff --git a/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Tile_Alignment_BottomRight.expected.png b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Tile_Alignment_BottomRight.expected.png new file mode 100644 index 0000000000..0918b7fd51 Binary files /dev/null and b/Tests/TestFiles/Cairo/Media/VisualBrush/VisualBrush_Tile_Alignment_BottomRight.expected.png differ diff --git a/src/Gtk/Perspex.Cairo/CairoExtensions.cs b/src/Gtk/Perspex.Cairo/CairoExtensions.cs index e7c3951518..5798796a37 100644 --- a/src/Gtk/Perspex.Cairo/CairoExtensions.cs +++ b/src/Gtk/Perspex.Cairo/CairoExtensions.cs @@ -7,6 +7,11 @@ namespace Perspex.Cairo public static class CairoExtensions { + public static Cairo.Color ToCairo(this Perspex.Media.Color color) + { + return new Cairo.Color(color.R / 255.0, color.G / 255.0, color.B / 255.0, color.A / 255.0); + } + public static Cairo.Matrix ToCairo(this Matrix m) { return new Cairo.Matrix(m.M11, m.M12, m.M21, m.M22, m.M31, m.M32); diff --git a/src/Gtk/Perspex.Cairo/Media/DrawingContext.cs b/src/Gtk/Perspex.Cairo/Media/DrawingContext.cs index 75aa9f924b..ce1dc5c796 100644 --- a/src/Gtk/Perspex.Cairo/Media/DrawingContext.cs +++ b/src/Gtk/Perspex.Cairo/Media/DrawingContext.cs @@ -227,10 +227,14 @@ namespace Perspex.Cairo.Media } else if (linearGradientBrush != null) { - Cairo.LinearGradient g = new Cairo.LinearGradient(linearGradientBrush.StartPoint.X * destinationSize.Width, linearGradientBrush.StartPoint.Y * destinationSize.Height, linearGradientBrush.EndPoint.X * destinationSize.Width, linearGradientBrush.EndPoint.Y * destinationSize.Height); + Cairo.LinearGradient g = new Cairo.LinearGradient( + linearGradientBrush.StartPoint.X * destinationSize.Width, + linearGradientBrush.StartPoint.Y * destinationSize.Height, + linearGradientBrush.EndPoint.X * destinationSize.Width, + linearGradientBrush.EndPoint.Y * destinationSize.Height); foreach (var s in linearGradientBrush.GradientStops) - g.AddColorStop(s.Offset, new Cairo.Color(s.Color.R / 255.0, s.Color.G / 255.0, s.Color.B / 255.0, s.Color.A / 255.0)); + g.AddColorStop(s.Offset, s.Color.ToCairo()); g.Extend = Cairo.Extend.Pad; diff --git a/tests/Perspex.RenderTests/Media/LinearGradientBrushTests.cs b/tests/Perspex.RenderTests/Media/LinearGradientBrushTests.cs index e4d0fbde6f..2a309ee7f6 100644 --- a/tests/Perspex.RenderTests/Media/LinearGradientBrushTests.cs +++ b/tests/Perspex.RenderTests/Media/LinearGradientBrushTests.cs @@ -10,7 +10,11 @@ using System.Text; using System.Threading.Tasks; using Xunit; +#if PERSPEX_CAIRO +namespace Perspex.Cairo.RenderTests.Media +#else namespace Perspex.Direct2D1.RenderTests.Media +#endif { public class LinearGradientBrushTests : TestBase { diff --git a/tests/Perspex.RenderTests/Media/VisualBrushTests.cs b/tests/Perspex.RenderTests/Media/VisualBrushTests.cs index 90b327cd66..5bff4198cb 100644 --- a/tests/Perspex.RenderTests/Media/VisualBrushTests.cs +++ b/tests/Perspex.RenderTests/Media/VisualBrushTests.cs @@ -7,7 +7,11 @@ using Perspex.Layout; using Perspex.Media; using Xunit; +#if PERSPEX_CAIRO +namespace Perspex.Cairo.RenderTests.Media +#else namespace Perspex.Direct2D1.RenderTests.Media +#endif { public class VisualBrushTests : TestBase { @@ -16,7 +20,11 @@ namespace Perspex.Direct2D1.RenderTests.Media { } +#if PERSPEX_CAIRO + [Fact(Skip = "VisualBrush not yet implemented on Cairo")] +#else [Fact] +#endif public void VisualBrush_Align_TopLeft() { Decorator target = new Decorator @@ -55,7 +63,11 @@ namespace Perspex.Direct2D1.RenderTests.Media CompareImages(); } +#if PERSPEX_CAIRO + [Fact(Skip = "VisualBrush not yet implemented on Cairo")] +#else [Fact] +#endif public void VisualBrush_Align_Center() { Decorator target = new Decorator @@ -94,7 +106,11 @@ namespace Perspex.Direct2D1.RenderTests.Media CompareImages(); } +#if PERSPEX_CAIRO + [Fact(Skip = "VisualBrush not yet implemented on Cairo")] +#else [Fact] +#endif public void VisualBrush_Align_BottomRight() { Decorator target = new Decorator @@ -133,7 +149,11 @@ namespace Perspex.Direct2D1.RenderTests.Media CompareImages(); } +#if PERSPEX_CAIRO + [Fact(Skip = "VisualBrush not yet implemented on Cairo")] +#else [Fact] +#endif public void VisualBrush_Stretch_Fill_Large() { Decorator target = new Decorator @@ -170,7 +190,11 @@ namespace Perspex.Direct2D1.RenderTests.Media CompareImages(); } +#if PERSPEX_CAIRO + [Fact(Skip = "VisualBrush not yet implemented on Cairo")] +#else [Fact] +#endif public void VisualBrush_Stretch_Uniform() { Decorator target = new Decorator @@ -207,7 +231,11 @@ namespace Perspex.Direct2D1.RenderTests.Media CompareImages(); } +#if PERSPEX_CAIRO + [Fact(Skip = "VisualBrush not yet implemented on Cairo")] +#else [Fact] +#endif public void VisualBrush_Stretch_UniformToFill() { Decorator target = new Decorator @@ -244,7 +272,11 @@ namespace Perspex.Direct2D1.RenderTests.Media CompareImages(); } +#if PERSPEX_CAIRO + [Fact(Skip = "VisualBrush not yet implemented on Cairo")] +#else [Fact] +#endif public void VisualBrush_SourceRect_Absolute() { Decorator target = new Decorator @@ -281,7 +313,11 @@ namespace Perspex.Direct2D1.RenderTests.Media CompareImages(); } +#if PERSPEX_CAIRO + [Fact(Skip = "VisualBrush not yet implemented on Cairo")] +#else [Fact] +#endif public void VisualBrush_DestinationRect_Absolute() { Decorator target = new Decorator @@ -318,7 +354,11 @@ namespace Perspex.Direct2D1.RenderTests.Media CompareImages(); } +#if PERSPEX_CAIRO + [Fact(Skip = "VisualBrush not yet implemented on Cairo")] +#else [Fact] +#endif public void VisualBrush_SourceRect_DestinationRect_Absolute() { Decorator target = new Decorator @@ -356,7 +396,11 @@ namespace Perspex.Direct2D1.RenderTests.Media CompareImages(); } +#if PERSPEX_CAIRO + [Fact(Skip = "VisualBrush not yet implemented on Cairo")] +#else [Fact] +#endif public void VisualBrush_SourceRect_DestinationRect_Percent() { Decorator target = new Decorator @@ -394,7 +438,11 @@ namespace Perspex.Direct2D1.RenderTests.Media CompareImages(); } +#if PERSPEX_CAIRO + [Fact(Skip = "VisualBrush not yet implemented on Cairo")] +#else [Fact] +#endif public void VisualBrush_Tile() { Decorator target = new Decorator @@ -433,7 +481,11 @@ namespace Perspex.Direct2D1.RenderTests.Media CompareImages(); } +#if PERSPEX_CAIRO + [Fact(Skip = "VisualBrush not yet implemented on Cairo")] +#else [Fact] +#endif public void VisualBrush_Tile_Alignment_BottomRight() { Decorator target = new Decorator @@ -473,7 +525,11 @@ namespace Perspex.Direct2D1.RenderTests.Media CompareImages(); } +#if PERSPEX_CAIRO + [Fact(Skip = "VisualBrush not yet implemented on Cairo")] +#else [Fact] +#endif public void VisualBrush_FlipX() { Decorator target = new Decorator @@ -512,7 +568,11 @@ namespace Perspex.Direct2D1.RenderTests.Media CompareImages(); } +#if PERSPEX_CAIRO + [Fact(Skip = "VisualBrush not yet implemented on Cairo")] +#else [Fact] +#endif public void VisualBrush_FlipY() { Decorator target = new Decorator @@ -551,7 +611,11 @@ namespace Perspex.Direct2D1.RenderTests.Media CompareImages(); } +#if PERSPEX_CAIRO + [Fact(Skip = "VisualBrush not yet implemented on Cairo")] +#else [Fact] +#endif public void VisualBrush_FlipXY() { Decorator target = new Decorator diff --git a/tests/Perspex.RenderTests/Perspex.Cairo.RenderTests.csproj b/tests/Perspex.RenderTests/Perspex.Cairo.RenderTests.csproj index e28d91a6b4..024b77b93d 100644 --- a/tests/Perspex.RenderTests/Perspex.Cairo.RenderTests.csproj +++ b/tests/Perspex.RenderTests/Perspex.Cairo.RenderTests.csproj @@ -74,6 +74,8 @@ + +