|
|
|
@ -29,10 +29,10 @@ namespace Avalonia.Skia.UnitTests |
|
|
|
|
|
|
|
var layout = new TextLayout( |
|
|
|
s_multiLineText, |
|
|
|
Typeface.Default, |
|
|
|
Typeface.Default, |
|
|
|
12.0f, |
|
|
|
Brushes.Black.ToImmutable(), |
|
|
|
textStyleOverrides : spans); |
|
|
|
textStyleOverrides: spans); |
|
|
|
|
|
|
|
var textLine = layout.TextLines[0]; |
|
|
|
|
|
|
|
@ -72,16 +72,16 @@ namespace Avalonia.Skia.UnitTests |
|
|
|
12.0f, |
|
|
|
Brushes.Black.ToImmutable(), |
|
|
|
textWrapping: TextWrapping.Wrap, |
|
|
|
maxWidth : 25); |
|
|
|
maxWidth: 25); |
|
|
|
|
|
|
|
var actual = new TextLayout( |
|
|
|
s_multiLineText, |
|
|
|
Typeface.Default, |
|
|
|
12.0f, |
|
|
|
Brushes.Black.ToImmutable(), |
|
|
|
textWrapping : TextWrapping.Wrap, |
|
|
|
maxWidth : 25, |
|
|
|
textStyleOverrides : spans); |
|
|
|
textWrapping: TextWrapping.Wrap, |
|
|
|
maxWidth: 25, |
|
|
|
textStyleOverrides: spans); |
|
|
|
|
|
|
|
Assert.Equal(expected.TextLines.Count, actual.TextLines.Count); |
|
|
|
|
|
|
|
@ -115,7 +115,7 @@ namespace Avalonia.Skia.UnitTests |
|
|
|
Typeface.Default, |
|
|
|
12.0f, |
|
|
|
Brushes.Black.ToImmutable(), |
|
|
|
textStyleOverrides : spans); |
|
|
|
textStyleOverrides: spans); |
|
|
|
|
|
|
|
var textLine = layout.TextLines[0]; |
|
|
|
|
|
|
|
@ -153,7 +153,7 @@ namespace Avalonia.Skia.UnitTests |
|
|
|
Typeface.Default, |
|
|
|
12.0f, |
|
|
|
Brushes.Black.ToImmutable(), |
|
|
|
textStyleOverrides : spans); |
|
|
|
textStyleOverrides: spans); |
|
|
|
|
|
|
|
var textLine = layout.TextLines[0]; |
|
|
|
|
|
|
|
@ -190,7 +190,7 @@ namespace Avalonia.Skia.UnitTests |
|
|
|
Typeface.Default, |
|
|
|
12.0f, |
|
|
|
Brushes.Black.ToImmutable(), |
|
|
|
textStyleOverrides : spans); |
|
|
|
textStyleOverrides: spans); |
|
|
|
|
|
|
|
var textLine = layout.TextLines[0]; |
|
|
|
|
|
|
|
@ -301,8 +301,8 @@ namespace Avalonia.Skia.UnitTests |
|
|
|
Typeface.Default, |
|
|
|
12.0f, |
|
|
|
Brushes.Black.ToImmutable(), |
|
|
|
textWrapping : TextWrapping.Wrap, |
|
|
|
maxWidth : 180, |
|
|
|
textWrapping: TextWrapping.Wrap, |
|
|
|
maxWidth: 180, |
|
|
|
textStyleOverrides: spans); |
|
|
|
|
|
|
|
Assert.Equal( |
|
|
|
@ -332,8 +332,8 @@ namespace Avalonia.Skia.UnitTests |
|
|
|
Typeface.Default, |
|
|
|
12.0f, |
|
|
|
Brushes.Black.ToImmutable(), |
|
|
|
maxWidth : 200, |
|
|
|
maxHeight : 125, |
|
|
|
maxWidth: 200, |
|
|
|
maxHeight: 125, |
|
|
|
textStyleOverrides: spans); |
|
|
|
|
|
|
|
Assert.Equal(foreground, layout.TextLines[0].TextRuns[1].Style.Foreground); |
|
|
|
@ -430,7 +430,7 @@ namespace Avalonia.Skia.UnitTests |
|
|
|
|
|
|
|
Assert.Equal(5, ((ShapedTextRun)layout.TextLines[0].TextRuns[0]).GlyphRun.GlyphClusters[5]); |
|
|
|
|
|
|
|
if(expectedLength == 7) |
|
|
|
if (expectedLength == 7) |
|
|
|
{ |
|
|
|
Assert.Equal(5, ((ShapedTextRun)layout.TextLines[0].TextRuns[0]).GlyphRun.GlyphClusters[6]); |
|
|
|
} |
|
|
|
@ -480,12 +480,38 @@ namespace Avalonia.Skia.UnitTests |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[InlineData("0123456789\r0123456789", 2)] |
|
|
|
[InlineData("0123456789", 1)] |
|
|
|
[Theory] |
|
|
|
public void Should_Include_Last_Line_When_Constraint_Is_Surpassed(string text, int numberOfLines) |
|
|
|
{ |
|
|
|
using (Start()) |
|
|
|
{ |
|
|
|
var glyphTypeface = Typeface.Default.GlyphTypeface; |
|
|
|
|
|
|
|
var emHeight = glyphTypeface.DesignEmHeight; |
|
|
|
|
|
|
|
var lineHeight = (glyphTypeface.Descent - glyphTypeface.Ascent) * (12.0 / emHeight); |
|
|
|
|
|
|
|
var layout = new TextLayout( |
|
|
|
text, |
|
|
|
Typeface.Default, |
|
|
|
12, |
|
|
|
Brushes.Black.ToImmutable(), |
|
|
|
maxHeight: lineHeight * numberOfLines - lineHeight * 0.5); |
|
|
|
|
|
|
|
Assert.Equal(numberOfLines, layout.TextLines.Count); |
|
|
|
|
|
|
|
Assert.Equal(numberOfLines * lineHeight, layout.Bounds.Height); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public static IDisposable Start() |
|
|
|
{ |
|
|
|
var disposable = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface |
|
|
|
.With(renderInterface: new PlatformRenderInterface(null), |
|
|
|
.With(renderInterface: new PlatformRenderInterface(null), |
|
|
|
textShaperImpl: new TextShaperImpl(), |
|
|
|
fontManagerImpl : new CustomFontManagerImpl())); |
|
|
|
fontManagerImpl: new CustomFontManagerImpl())); |
|
|
|
|
|
|
|
return disposable; |
|
|
|
} |
|
|
|
|