| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- 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);
- }
- }
- }
|