public void Should_Generate_RotateTransform_minus_90_degrees()
        {
            using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface);

            LayoutTransformControl lt = CreateWithChildAndMeasureAndTransform(
                100,
                25,
                new RotateTransform()
            {
                Angle = -90
            });

            Assert.NotNull(lt.TransformRoot.RenderTransform);

            var m = lt.TransformRoot.RenderTransform.Value;

            var res = Matrix.CreateRotation(Matrix.ToRadians(-90));

            Assert.Equal(m.M11, res.M11, 3);
            Assert.Equal(m.M12, res.M12, 3);
            Assert.Equal(m.M21, res.M21, 3);
            Assert.Equal(m.M22, res.M22, 3);
            Assert.Equal(m.M31, res.M31, 3);
            Assert.Equal(m.M32, res.M32, 3);
        }
        public void Should_Generate_SkewTransform_minus_45_degrees()
        {
            using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface);

            LayoutTransformControl lt = CreateWithChildAndMeasureAndTransform(
                100,
                100,
                new SkewTransform()
            {
                AngleX = -45, AngleY = -45
            });

            Assert.NotNull(lt.TransformRoot.RenderTransform);

            Matrix m = lt.TransformRoot.RenderTransform.Value;

            Matrix res = Matrix.CreateSkew(Matrix.ToRadians(-45), Matrix.ToRadians(-45));

            Assert.Equal(m.M11, res.M11, 3);
            Assert.Equal(m.M12, res.M12, 3);
            Assert.Equal(m.M21, res.M21, 3);
            Assert.Equal(m.M22, res.M22, 3);
            Assert.Equal(m.M31, res.M31, 3);
            Assert.Equal(m.M32, res.M32, 3);
        }
示例#3
0
 private void InitializeComponent()
 {
     AvaloniaXamlLoader.Load(this);
     LayoutTransformControl = this.FindControl <LayoutTransformControl>("LayoutTransformControl");
     DataContextChanged    += WhenDataContextChanged;
     ImagesOnBoard          = new List <(Border, string)>();
 }
示例#4
0
        private static LayoutTransformControl CreateWithChildAndMeasureAndTransform(
            double width,
            double height,
            Transform transform)
        {
            var lt = new LayoutTransformControl()
            {
                LayoutTransform = transform,
                Template        = new FuncControlTemplate <LayoutTransformControl>(
                    p => new ContentPresenter()
                {
                    Content = p.Content
                })
            };

            lt.Content = new Rectangle()
            {
                Width = width, Height = height
            };

            lt.ApplyTemplate();

            //we need to force create visual child
            //so the measure after is correct
            (lt.Presenter as ContentPresenter).UpdateChild();

            Assert.NotNull(lt.Presenter?.Child);

            lt.Measure(Size.Infinity);
            lt.Arrange(new Rect(lt.DesiredSize));

            return(lt);
        }
        private static void TransformRootBoundsTest(Size size, Transform transform, Rect expectedBounds)
        {
            LayoutTransformControl lt = CreateWithChildAndMeasureAndTransform(size.Width, size.Height, transform);

            Rect outBounds = lt.TransformRoot.Bounds;

            Assert.Equal(outBounds.X, expectedBounds.X);
            Assert.Equal(outBounds.Y, expectedBounds.Y);
            Assert.Equal(outBounds.Width, expectedBounds.Width);
            Assert.Equal(outBounds.Height, expectedBounds.Height);
        }
        private static void TransformMeasureSizeTest(Size size, Transform transform, Size expectedSize)
        {
            LayoutTransformControl lt = CreateWithChildAndMeasureAndTransform(
                size.Width,
                size.Height,
                transform);

            Size outSize = lt.DesiredSize;

            Assert.Equal(outSize.Width, expectedSize.Width);
            Assert.Equal(outSize.Height, expectedSize.Height);
        }
示例#7
0
        public MainWindow()
        {
            InitializeComponent();
#if DEBUG
            this.AttachDevTools();
#endif
            _splitView       = this.FindControl <SplitView>("SplitView");
            _pinButton       = this.FindControl <Button>("PinButton");
            _pinTextBlock    = this.FindControl <TextBlock>("PinTextBlock");
            _layoutTransform = this.FindControl <LayoutTransformControl>("LayoutTransform");

            _splitView.GetObservable(SplitView.IsPaneOpenProperty).Subscribe((isPaneOpen) =>
            {
                if (_layoutTransform.LayoutTransform is RotateTransform rotateTransform)
                {
                    rotateTransform.Angle = isPaneOpen ? 0 : 90;
                }
            });

            _splitView.GetObservable(SplitView.DisplayModeProperty).Subscribe((displayMode) =>
            {
                if (_splitView.DisplayMode == SplitViewDisplayMode.Inline)
                {
                    _pinButton.Content = this.Resources["PinIcon"];
                }
                else if (_splitView.DisplayMode == SplitViewDisplayMode.CompactOverlay)
                {
                    _pinButton.Content = this.Resources["PinOffIcon"];
                }
            });

            _pinButton.Click += (sender, e) =>
            {
                if (_splitView.DisplayMode == SplitViewDisplayMode.Inline)
                {
                    _splitView.DisplayMode = SplitViewDisplayMode.CompactOverlay;
                    _splitView.IsPaneOpen  = false;
                }
                else if (_splitView.DisplayMode == SplitViewDisplayMode.CompactOverlay)
                {
                    _splitView.DisplayMode = SplitViewDisplayMode.Inline;
                    _splitView.IsPaneOpen  = true;
                }
            };

            _pinTextBlock.PointerPressed += (sender, e) =>
            {
                if (_splitView.DisplayMode == SplitViewDisplayMode.CompactOverlay)
                {
                    _splitView.IsPaneOpen = !_splitView.IsPaneOpen;
                }
            };
        }
        private static void TransformRootBoundsTest(Size size, Transform transform, Rect expectedBounds)
        {
            using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface);

            LayoutTransformControl lt = CreateWithChildAndMeasureAndTransform(size.Width, size.Height, transform);

            Rect outBounds = lt.TransformRoot.Bounds;

            Assert.Equal(outBounds.X, expectedBounds.X);
            Assert.Equal(outBounds.Y, expectedBounds.Y);
            Assert.Equal(outBounds.Width, expectedBounds.Width);
            Assert.Equal(outBounds.Height, expectedBounds.Height);
        }
        private static void TransformMeasureSizeTest(Size size, Transform transform, Size expectedSize)
        {
            using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface);

            LayoutTransformControl lt = CreateWithChildAndMeasureAndTransform(
                size.Width,
                size.Height,
                transform);

            Size outSize = lt.DesiredSize;

            Assert.Equal(outSize.Width, expectedSize.Width);
            Assert.Equal(outSize.Height, expectedSize.Height);
        }
示例#10
0
        /// <summary>
        ///     Instantiates a new instance of the DisplayAxis class.
        /// </summary>
        protected DisplayAxis()
        {
            OrientedPanel = new OrientedPanel();
#if SILVERLIGHT
            this.DefaultStyleKey = typeof(DisplayAxis);
            this.OrientedPanel.UseLayoutRounding = true;
#endif

            TitleLayoutTransformControl = new LayoutTransformControl();
            TitleLayoutTransformControl.HorizontalAlignment = HorizontalAlignment.Center;
            TitleLayoutTransformControl.VerticalAlignment   = VerticalAlignment.Center;

            SizeChanged += DisplayAxisSizeChanged;
        }
        private static LayoutTransformControl CreateWithChildAndMeasureAndTransform(
            double width,
            double height,
            Transform transform)
        {
            var lt = new LayoutTransformControl()
            {
                LayoutTransform = transform
            };

            lt.Child = new Rectangle()
            {
                Width = width, Height = height
            };

            lt.Measure(Size.Infinity);
            lt.Arrange(new Rect(lt.DesiredSize));

            return(lt);
        }
        public void Should_Generate_ScaleTransform_x2()
        {
            LayoutTransformControl lt = CreateWithChildAndMeasureAndTransform(
                100,
                50,
                new ScaleTransform()
            {
                ScaleX = 2, ScaleY = 2
            });

            Assert.NotNull(lt.TransformRoot.RenderTransform);

            Matrix m   = lt.TransformRoot.RenderTransform.Value;
            Matrix res = Matrix.CreateScale(2, 2);

            Assert.Equal(m.M11, res.M11, 3);
            Assert.Equal(m.M12, res.M12, 3);
            Assert.Equal(m.M21, res.M21, 3);
            Assert.Equal(m.M22, res.M22, 3);
            Assert.Equal(m.M31, res.M31, 3);
            Assert.Equal(m.M32, res.M32, 3);
        }
        public void Should_Generate_SkewTransform_minus_45_degrees()
        {
            LayoutTransformControl lt = CreateWithChildAndMeasureAndTransform(
                100,
                100,
                new SkewTransform()
            {
                AngleX = -45, AngleY = -45
            });

            Assert.NotNull(lt.TransformRoot.RenderTransform);

            Matrix m = lt.TransformRoot.RenderTransform.Value;

            Matrix res = Matrix.CreateSkew(Matrix.ToRadians(-45), Matrix.ToRadians(-45));

            Assert.Equal(m.M11, res.M11, 3);
            Assert.Equal(m.M12, res.M12, 3);
            Assert.Equal(m.M21, res.M21, 3);
            Assert.Equal(m.M22, res.M22, 3);
            Assert.Equal(m.M31, res.M31, 3);
            Assert.Equal(m.M32, res.M32, 3);
        }
        public void Should_Generate_RotateTransform_minus_90_degrees()
        {
            LayoutTransformControl lt = CreateWithChildAndMeasureAndTransform(
                100,
                25,
                new RotateTransform()
            {
                Angle = -90
            });

            Assert.NotNull(lt.TransformRoot.RenderTransform);

            var m = lt.TransformRoot.RenderTransform.Value;

            var res = Matrix.CreateRotation(Matrix.ToRadians(-90));

            Assert.Equal(m.M11, res.M11, 3);
            Assert.Equal(m.M12, res.M12, 3);
            Assert.Equal(m.M21, res.M21, 3);
            Assert.Equal(m.M22, res.M22, 3);
            Assert.Equal(m.M31, res.M31, 3);
            Assert.Equal(m.M32, res.M32, 3);
        }
        public void Should_Generate_ScaleTransform_x2()
        {
            using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface);

            LayoutTransformControl lt = CreateWithChildAndMeasureAndTransform(
                100,
                50,
                new ScaleTransform()
            {
                ScaleX = 2, ScaleY = 2
            });

            Assert.NotNull(lt.TransformRoot.RenderTransform);

            Matrix m   = lt.TransformRoot.RenderTransform.Value;
            Matrix res = Matrix.CreateScale(2, 2);

            Assert.Equal(m.M11, res.M11, 3);
            Assert.Equal(m.M12, res.M12, 3);
            Assert.Equal(m.M21, res.M21, 3);
            Assert.Equal(m.M22, res.M22, 3);
            Assert.Equal(m.M31, res.M31, 3);
            Assert.Equal(m.M32, res.M32, 3);
        }
        private static LayoutTransformControl CreateWithChildAndMeasureAndTransform(
                                                double width,
                                                double height,
                                                Transform transform)
        {
            var lt = new LayoutTransformControl()
            {
                LayoutTransform = transform,
                Template = new FuncControlTemplate<LayoutTransformControl>(
                                p => new ContentPresenter() { Content = p.Content })
            };

            lt.Content = new Rectangle() { Width = width, Height = height };

            lt.ApplyTemplate();

            //we need to force create visual child
            //so the measure after is correct
            (lt.Presenter as ContentPresenter).UpdateChild();

            Assert.NotNull(lt.Presenter?.Child);

            lt.Measure(Size.Infinity);
            lt.Arrange(new Rect(lt.DesiredSize));

            return lt;
        }
示例#17
0
        /// <summary>
        /// Instantiates a new instance of the DisplayAxis class.
        /// </summary>
        internal DisplayAxis()
        {
            OrientedPanel = new OrientedPanel();
            #if SILVERLIGHT
            DefaultStyleKey = typeof (DisplayAxis);
            OrientedPanel.UseLayoutRounding = true;
            #endif

            DependentAxisGrid = new Grid();

            TitleLayoutTransformControl = new LayoutTransformControl();
            TitleLayoutTransformControl.HorizontalAlignment = ((FrameworkElement) this).HorizontalAlignment.Center;
            TitleLayoutTransformControl.VerticalAlignment = ((FrameworkElement) this).VerticalAlignment.Center;

            SizeChanged += new SizeChangedEventHandler(DisplayAxisSizeChanged);
        }