| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- using Avalonia.Controls;
- using Avalonia.Media;
- using Avalonia.VisualTree;
- using Xunit;
- namespace Avalonia.Base.UnitTests.VisualTree
- {
- public class VisualExtensions_GetTransformedBounds
- {
- [Fact]
- public void Root()
- {
- var root = new Border
- {
- Width = 100,
- Height = 123,
- };
- Layout(root);
- Assert.Equal(
- new TransformedBounds(
- new Rect(0, 0, 100, 123),
- new Rect(0, 0, 100, 123),
- Matrix.Identity),
- root.GetTransformedBounds());
- }
- [Fact]
- public void Depth_1_No_Transform_Or_Clip()
- {
- Border target;
- var root = new Border
- {
- Width = 1000,
- Height = 1000,
- Child = target = new Border
- {
- Width = 500,
- Height = 500,
- }
- };
- Layout(root);
- Assert.Equal(
- new TransformedBounds(
- new Rect(0, 0, 500, 500),
- new Rect(0, 0, 1000, 1000),
- Matrix.CreateTranslation(250, 250)),
- target.GetTransformedBounds());
- }
- [Fact]
- public void Depth_2_No_Transform_Or_Clip()
- {
- Border target;
- var root = new Border
- {
- Width = 1000,
- Height = 1000,
- Child = new Border
- {
- Width = 800,
- Height = 800,
- Child = target = new Border
- {
- Width = 500,
- Height = 500,
- }
- }
- };
- Layout(root);
- Assert.Equal(
- new TransformedBounds(
- new Rect(0, 0, 500, 500),
- new Rect(0, 0, 1000, 1000),
- Matrix.CreateTranslation(250, 250)),
- target.GetTransformedBounds());
- }
- [Fact]
- public void Depth_2_No_Transform_With_Clip()
- {
- Border target;
- var root = new Border
- {
- Width = 1000,
- Height = 1000,
- Child = new Border
- {
- Width = 800,
- Height = 800,
- ClipToBounds = true,
- Child = target = new Border
- {
- Width = 500,
- Height = 500,
- }
- }
- };
- Layout(root);
- Assert.Equal(
- new TransformedBounds(
- new Rect(0, 0, 500, 500),
- new Rect(100, 100, 800, 800),
- Matrix.CreateTranslation(250, 250)),
- target.GetTransformedBounds());
- }
- [Fact]
- public void Depth_2_Transformed_Clip()
- {
- Border target;
- var root = new Border
- {
- Width = 1000,
- Height = 1000,
- Child = new Border
- {
- Width = 800,
- Height = 800,
- ClipToBounds = true,
- RenderTransform = new MatrixTransform(Matrix.CreateTranslation(10, 20)),
- Child = target = new Border
- {
- Width = 500,
- Height = 500,
- }
- }
- };
- Layout(root);
- Assert.Equal(
- new TransformedBounds(
- new Rect(0, 0, 500, 500),
- new Rect(110, 120, 800, 800),
- Matrix.CreateTranslation(260, 270)),
- target.GetTransformedBounds());
- }
- private void Layout(Control c)
- {
- c.Measure(Size.Infinity);
- c.Arrange(new Rect(c.DesiredSize));
- }
- }
- }
|