Browse Source

Added failing tests for TextLayout when used with a transform.

Steven Kirk 4 years ago
parent
commit
f6fce366cd

+ 97 - 0
tests/Avalonia.RenderTests/Media/TextFormatting/TextLayoutTests.cs

@@ -0,0 +1,97 @@
+using Avalonia.Controls;
+using Avalonia.Media;
+using Avalonia.Media.TextFormatting;
+using Avalonia.Platform;
+using Avalonia.Utilities;
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Xunit;
+
+#if AVALONIA_SKIA
+namespace Avalonia.Skia.RenderTests
+#else
+
+using Avalonia.Direct2D1.RenderTests;
+
+namespace Avalonia.Direct2D1.RenderTests.Media
+#endif
+{
+    public class TextLayoutTests : TestBase
+    {
+        public TextLayoutTests()
+            : base(@"Media\TextFormatting\TextLayout")
+        {
+        }
+
+        [Fact]
+        public async Task TextLayout_Basic()
+        {
+            var t = new TextLayout(
+                "Avalonia!",
+                new Typeface(TestFontFamily),
+                24,
+                Brushes.Black);
+
+            var target = new Border
+            {
+                Width = 200,
+                Height = 200,
+                Background = Brushes.White,
+                Child = new DrawnControl(c =>
+                {
+                    var textRect = new Rect(t.Size);
+                    var bounds = new Rect(0, 0, 200, 200);
+                    var rect = bounds.CenterRect(textRect);
+                    c.DrawRectangle(Brushes.Yellow, null, rect);
+                    t.Draw(c, rect.Position);
+                }),
+            };
+
+            await RenderToFile(target);
+            CompareImages();
+        }
+
+        [Fact]
+        public async Task TextLayout_Rotated()
+        {
+            var t = new TextLayout(
+                "Avalonia!",
+                new Typeface(TestFontFamily),
+                24,
+                Brushes.Black);
+
+            var target = new Border
+            {
+                Width = 200,
+                Height = 200,
+                Background = Brushes.White,
+                Child = new DrawnControl(c =>
+                {
+                    var textRect = new Rect(t.Size);
+                    var bounds = new Rect(0, 0, 200, 200);
+                    var rect = bounds.CenterRect(textRect);
+                    var rotate = Matrix.CreateTranslation(-100, -100) *
+                        Matrix.CreateRotation(MathUtilities.Deg2Rad(90)) *
+                        Matrix.CreateTranslation(100, 100);
+                    using var transform = c.PushPreTransform(rotate);
+                    c.DrawRectangle(Brushes.Yellow, null, rect);
+                    t.Draw(c, rect.Position);
+                }),
+            };
+
+            await RenderToFile(target);
+            CompareImages();
+        }
+
+        private class DrawnControl : Control
+        {
+            private readonly Action<DrawingContext> _render;
+            public DrawnControl(Action<DrawingContext> render) => _render = render;
+            public override void Render(DrawingContext context) => _render(context);
+        }
+    }
+}

BIN
tests/TestFiles/Direct2D1/Media/TextFormatting/TextLayout/TextLayout_Basic.expected.png


BIN
tests/TestFiles/Direct2D1/Media/TextFormatting/TextLayout/TextLayout_Rotated.expected.png


BIN
tests/TestFiles/Skia/Media/TextFormatting/TextLayout/TextLayout_Basic.expected.png


BIN
tests/TestFiles/Skia/Media/TextFormatting/TextLayout/TextLayout_Rotated.expected.png