Browse Source

Fix default GlyphRun.BaselineOrigin

Add a unit test
pull/10167/head
Benedikt Stebner 3 years ago
parent
commit
b0a2ae99e4
  1. 2
      src/Avalonia.Base/Media/GlyphRun.cs
  2. 2
      src/Skia/Avalonia.Skia/PlatformRenderInterface.cs
  3. 2
      src/Windows/Avalonia.Direct2D1/Direct2D1Platform.cs
  4. 51
      tests/Avalonia.RenderTests/Controls/TextBlockTests.cs
  5. BIN
      tests/TestFiles/Direct2D1/Controls/TextBlock/Should_Draw_TextDecorations.expected.png
  6. BIN
      tests/TestFiles/Skia/Controls/TextBlock/Should_Draw_TextDecorations.expected.png

2
src/Avalonia.Base/Media/GlyphRun.cs

@ -166,7 +166,7 @@ namespace Avalonia.Media
/// </summary>
public Point BaselineOrigin
{
get => _baselineOrigin ?? default;
get => PlatformImpl.Item.BaselineOrigin;
set => Set(ref _baselineOrigin, value);
}

2
src/Skia/Avalonia.Skia/PlatformRenderInterface.cs

@ -86,7 +86,7 @@ namespace Avalonia.Skia
SKPath path = new SKPath();
var (currentX, currentY) = glyphRun.PlatformImpl.Item.BaselineOrigin;
var (currentX, currentY) = glyphRun.BaselineOrigin;
for (var i = 0; i < glyphRun.GlyphInfos.Count; i++)
{

2
src/Windows/Avalonia.Direct2D1/Direct2D1Platform.cs

@ -257,7 +257,7 @@ namespace Avalonia.Direct2D1
sink.Close();
}
var (baselineOriginX, baselineOriginY) = glyphRun.PlatformImpl.Item.BaselineOrigin;
var (baselineOriginX, baselineOriginY) = glyphRun.BaselineOrigin;
var transformedGeometry = new SharpDX.Direct2D1.TransformedGeometry(
Direct2D1Factory,

51
tests/Avalonia.RenderTests/Controls/TextBlockTests.cs

@ -1,3 +1,4 @@
using System.Net;
using System.Threading.Tasks;
using Avalonia.Controls;
using Avalonia.Layout;
@ -17,6 +18,56 @@ namespace Avalonia.Direct2D1.RenderTests.Controls
{
}
[Win32Fact("Has text")]
public async Task Should_Draw_TextDecorations()
{
Border target = new Border
{
Padding = new Thickness(8),
Width = 200,
Height = 30,
Background = Brushes.White,
Child = new TextBlock
{
FontFamily = TestFontFamily,
FontSize = 12,
Foreground = Brushes.Black,
Text = "Neque porro quisquam est qui dolorem",
VerticalAlignment = VerticalAlignment.Top,
TextWrapping = TextWrapping.NoWrap,
TextDecorations = new TextDecorationCollection
{
new TextDecoration
{
Location = TextDecorationLocation.Overline,
StrokeThickness= 1.5,
StrokeThicknessUnit = TextDecorationUnit.Pixel,
Stroke = new SolidColorBrush(Colors.Red)
},
new TextDecoration
{
Location = TextDecorationLocation.Baseline,
StrokeThickness= 1.5,
StrokeThicknessUnit = TextDecorationUnit.Pixel,
Stroke = new SolidColorBrush(Colors.Green)
},
new TextDecoration
{
Location = TextDecorationLocation.Underline,
StrokeThickness= 1.5,
StrokeThicknessUnit = TextDecorationUnit.Pixel,
Stroke = new SolidColorBrush(Colors.Blue),
StrokeOffset = 2,
StrokeOffsetUnit = TextDecorationUnit.Pixel
}
}
}
};
await RenderToFile(target);
CompareImages();
}
[Win32Fact("Has text")]
public async Task Wrapping_NoWrap()
{

BIN
tests/TestFiles/Direct2D1/Controls/TextBlock/Should_Draw_TextDecorations.expected.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
tests/TestFiles/Skia/Controls/TextBlock/Should_Draw_TextDecorations.expected.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Loading…
Cancel
Save