Пример #1
0
 internal override void ComputePlacement(AdornerCoordinateSpace space, UIElement adorner, ViewItem adornedElement, Vector zoom, Size finalSize)
 {
     if (this.Items.Count == 0)
     {
         this.Populate();
     }
     base.ComputePlacement(space, adorner, adornedElement, zoom, finalSize);
 }
Пример #2
0
        internal virtual void ComputePlacement(AdornerCoordinateSpace space, UIElement adorner, ViewItem adornedElement, Vector zoom, System.Windows.Size finalSize)
        {
            double num1   = 0.0;
            double num2   = 0.0;
            double height = 0.0;
            double num3   = 0.0;
            double num4   = 0.0;
            double width  = 0.0;
            bool   flag1  = false;
            bool   flag2  = false;
            bool   flag3  = false;
            bool   flag4  = false;

            System.Windows.Size viewFinalSize = finalSize;
            foreach (IAdornerPlacement adornerPlacement in (Collection <IAdornerPlacement>) this)
            {
                foreach (AdornerPlacementValue adornerPlacementValue in adornerPlacement.GetSizeTerms(space, adorner, adornedElement, zoom, viewFinalSize))
                {
                    switch (adornerPlacementValue.Term)
                    {
                    case AdornerPlacementDimension.Left:
                        num3 += adornerPlacementValue.Contribution;
                        flag3 = true;
                        continue;

                    case AdornerPlacementDimension.Top:
                        num1 += adornerPlacementValue.Contribution;
                        flag1 = true;
                        continue;

                    case AdornerPlacementDimension.Right:
                        num4 += adornerPlacementValue.Contribution;
                        flag3 = true;
                        continue;

                    case AdornerPlacementDimension.Bottom:
                        num2 += adornerPlacementValue.Contribution;
                        flag2 = true;
                        continue;

                    case AdornerPlacementDimension.Width:
                        width += adornerPlacementValue.Contribution;
                        continue;

                    case AdornerPlacementDimension.Height:
                        height += adornerPlacementValue.Contribution;
                        continue;

                    default:
                        continue;
                    }
                }
            }
            if (width < 0.0)
            {
                width = 0.0;
            }
            if (height < 0.0)
            {
                height = 0.0;
            }
            System.Windows.Size computedAdornerSize = new System.Windows.Size(width, height);
            foreach (IAdornerPlacement adornerPlacement in (Collection <IAdornerPlacement>) this)
            {
                foreach (AdornerPlacementValue adornerPlacementValue in adornerPlacement.GetPositionTerms(space, adorner, adornedElement, zoom, computedAdornerSize))
                {
                    switch (adornerPlacementValue.Term)
                    {
                    case AdornerPlacementDimension.Left:
                        num3 += adornerPlacementValue.Contribution;
                        flag3 = true;
                        continue;

                    case AdornerPlacementDimension.Top:
                        num1 += adornerPlacementValue.Contribution;
                        flag1 = true;
                        continue;

                    case AdornerPlacementDimension.Right:
                        num4 += adornerPlacementValue.Contribution;
                        flag3 = true;
                        continue;

                    case AdornerPlacementDimension.Bottom:
                        num2 += adornerPlacementValue.Contribution;
                        flag2 = true;
                        continue;

                    case AdornerPlacementDimension.Width:
                        width += adornerPlacementValue.Contribution;
                        continue;

                    case AdornerPlacementDimension.Height:
                        height += adornerPlacementValue.Contribution;
                        continue;

                    default:
                        continue;
                    }
                }
            }
            double num5 = 0.0;

            if (flag3 && flag4)
            {
                num5 = num4 - num3;
            }
            double num6 = 0.0;

            if (flag1 && flag2)
            {
                num6 = num2 - num1;
            }
            double num7 = num5 + width;
            double num8 = num6 + height;

            this._topLeft.X = !flag4 || flag3 ? num3 : num4 - num7;
            this._size.X    = num7;
            this._topLeft.Y = !flag2 || flag1 ? num1 : num2 - num8;
            this._size.Y    = num8;
        }