csharpc-sharpdotnetxamlavaloniauicross-platformcross-platform-xamlavaloniaguimulti-platformuser-interfacedotnetcore
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
5.2 KiB
138 lines
5.2 KiB
using Avalonia.Controls;
|
|
using Avalonia.Media;
|
|
using Avalonia.Rendering.Utilities;
|
|
using Xunit;
|
|
|
|
namespace Avalonia.Base.UnitTests.Rendering.Utilities
|
|
{
|
|
public class TileBrushCalculatorTests
|
|
{
|
|
[Fact]
|
|
public void NoTile_Fill_1x()
|
|
{
|
|
var result = new TileBrushCalculator(
|
|
TileMode.None,
|
|
Stretch.Fill,
|
|
AlignmentX.Center,
|
|
AlignmentY.Center,
|
|
RelativeRect.Fill,
|
|
RelativeRect.Fill,
|
|
new Size(100, 100),
|
|
new Size(100, 100));
|
|
|
|
Assert.False(result.NeedsIntermediate);
|
|
Assert.Equal(new Rect(0, 0, 100, 100), result.SourceRect);
|
|
Assert.Equal(new Rect(0, 0, 100, 100), result.DestinationRect);
|
|
}
|
|
|
|
[Fact]
|
|
public void NoTile_Fill_2x()
|
|
{
|
|
var result = new TileBrushCalculator(
|
|
TileMode.None,
|
|
Stretch.Fill,
|
|
AlignmentX.Center,
|
|
AlignmentY.Center,
|
|
RelativeRect.Fill,
|
|
RelativeRect.Fill,
|
|
new Size(100, 100),
|
|
new Size(200, 200));
|
|
|
|
// TODO: This doesn't need an intermediate render target.
|
|
Assert.True(result.NeedsIntermediate);
|
|
Assert.Equal(new Rect(0, 0, 100, 100), result.SourceRect);
|
|
Assert.Equal(new Rect(0, 0, 200, 200), result.DestinationRect);
|
|
}
|
|
|
|
[Fact]
|
|
public void NoTile_Uniform_CenterHoriz()
|
|
{
|
|
var result = new TileBrushCalculator(
|
|
TileMode.None,
|
|
Stretch.Uniform,
|
|
AlignmentX.Center,
|
|
AlignmentY.Center,
|
|
RelativeRect.Fill,
|
|
RelativeRect.Fill,
|
|
new Size(100, 100),
|
|
new Size(200, 100));
|
|
|
|
Assert.True(result.NeedsIntermediate);
|
|
Assert.Equal(new Rect(0, 0, 100, 100), result.SourceRect);
|
|
Assert.Equal(new Rect(0, 0, 200, 100), result.DestinationRect);
|
|
Assert.Equal(new Size(200, 100), result.IntermediateSize);
|
|
Assert.Equal(Matrix.CreateTranslation(50, 0), result.IntermediateTransform);
|
|
}
|
|
|
|
[Fact]
|
|
public void NoTile_Uniform_CenterVert()
|
|
{
|
|
var result = new TileBrushCalculator(
|
|
TileMode.None,
|
|
Stretch.Uniform,
|
|
AlignmentX.Center,
|
|
AlignmentY.Center,
|
|
RelativeRect.Fill,
|
|
RelativeRect.Fill,
|
|
new Size(100, 100),
|
|
new Size(100, 200));
|
|
|
|
Assert.True(result.NeedsIntermediate);
|
|
Assert.Equal(new Rect(0, 0, 100, 100), result.SourceRect);
|
|
Assert.Equal(new Rect(0, 0, 100, 200), result.DestinationRect);
|
|
Assert.Equal(new Size(100, 200), result.IntermediateSize);
|
|
Assert.Equal(Matrix.CreateTranslation(0, 50), result.IntermediateTransform);
|
|
}
|
|
|
|
[Fact]
|
|
public void NoTile_NoStretch_BottomRightQuarterDest()
|
|
{
|
|
var result = new TileBrushCalculator(
|
|
TileMode.None,
|
|
Stretch.None,
|
|
AlignmentX.Center,
|
|
AlignmentY.Center,
|
|
RelativeRect.Fill,
|
|
new RelativeRect(0.5, 0.5, 0.5, 0.5, RelativeUnit.Relative),
|
|
new Size(800, 800),
|
|
new Size(400, 400));
|
|
|
|
Assert.True(result.NeedsIntermediate);
|
|
Assert.Equal(new Rect(0, 0, 800, 800), result.SourceRect);
|
|
Assert.Equal(new Rect(200, 200, 200, 200), result.DestinationRect);
|
|
Assert.Equal(new Size(400, 400), result.IntermediateSize);
|
|
Assert.Equal(new Rect(200, 200, 200, 200), result.IntermediateClip);
|
|
Assert.Equal(Matrix.CreateTranslation(-100, -100), result.IntermediateTransform);
|
|
}
|
|
|
|
[Fact]
|
|
public void Tile_NoStretch_BottomRightQuarterSource_CenterQuarterDest()
|
|
{
|
|
var result = new TileBrushCalculator(
|
|
TileMode.Tile,
|
|
Stretch.None,
|
|
AlignmentX.Center,
|
|
AlignmentY.Center,
|
|
new RelativeRect(0.5, 0.5, 0.5, 0.5, RelativeUnit.Relative),
|
|
new RelativeRect(0.25, 0.25, 0.5, 0.5, RelativeUnit.Relative),
|
|
new Size(800, 800),
|
|
new Size(400, 400));
|
|
|
|
var b = new VisualBrush
|
|
{
|
|
TileMode = TileMode.Tile,
|
|
Stretch = Stretch.None,
|
|
SourceRect = new RelativeRect(0.5, 0.5, 0.5, 0.5, RelativeUnit.Relative),
|
|
DestinationRect = new RelativeRect(0.25, 0.25, 0.5, 0.5, RelativeUnit.Relative),
|
|
Visual = new Border { Width = 400, Height = 400 },
|
|
};
|
|
|
|
Assert.True(result.NeedsIntermediate);
|
|
Assert.Equal(new Rect(400, 400, 400, 400), result.SourceRect);
|
|
Assert.Equal(new Rect(100, 100, 200, 200), result.DestinationRect);
|
|
Assert.Equal(new Size(200, 200), result.IntermediateSize);
|
|
Assert.Equal(new Rect(0, 0, 200, 200), result.IntermediateClip);
|
|
Assert.Equal(Matrix.CreateTranslation(-500, -500), result.IntermediateTransform);
|
|
}
|
|
}
|
|
}
|
|
|