Exemple #1
0
        public void Dock(Margins margins, Rect expectedRect)
        {
            var sut = new LeftDocker(new Size(100, 50));
            var actualRect = sut.GetDockingRect(_layoutable.DesiredSize, margins, new Alignments(Alignment.Middle, Alignment.Stretch));

            Assert.Equal(expectedRect, actualRect);
        }
Exemple #2
0
            public Size ArrangeAndGetUsedSize(Size availableSize, IEnumerable <IControl> children)
            {
                var leftArranger   = new LeftDocker(availableSize);
                var rightArranger  = new RightDocker(availableSize);
                var topArranger    = new LeftDocker(availableSize.Swap());
                var bottomArranger = new RightDocker(availableSize.Swap());

                UsedMargin = new Margin();

                foreach (var control in children)
                {
                    Rect dockedRect;
                    var  dock = control.GetValue(DockProperty);
                    switch (dock)
                    {
                    case Dock.Left:
                        dockedRect = leftArranger.GetDockedRect(control.DesiredSize, UsedMargin, control.GetAlignments());
                        break;

                    case Dock.Top:
                        UsedMargin.Swap();
                        dockedRect = topArranger.GetDockedRect(control.DesiredSize.Swap(), UsedMargin, control.GetAlignments().Swap()).Swap();
                        UsedMargin.Swap();
                        break;

                    case Dock.Right:
                        dockedRect = rightArranger.GetDockedRect(control.DesiredSize, UsedMargin, control.GetAlignments());
                        break;

                    case Dock.Bottom:
                        UsedMargin.Swap();
                        dockedRect = bottomArranger.GetDockedRect(control.DesiredSize.Swap(), UsedMargin, control.GetAlignments().Swap()).Swap();
                        UsedMargin.Swap();
                        break;

                    default:
                        throw new InvalidOperationException($"Invalid dock value {dock}");
                    }

                    control.Arrange(dockedRect);
                }

                return(availableSize);
            }