Esempio n. 1
0
        public override void OnLayout(Rect region)
        {
            Point currentWidgetPosition = region.TopLeft;
            int   columnHeight          = region.Size.Height;

            for (int i = 0; i < Children.Count; i++)
            {
                BaseWidget widget         = Children[i];
                Point      widgetPosition = new Point();

                if (i == 0)
                {
                    currentWidgetPosition.X += Layout.Padding.Left;
                    currentWidgetPosition.Y += Layout.Padding.Up;
                }

                int paddingOffset = -Layout.Padding.Down;
                int midY          = widgetPosition.Y + (int)Math.Ceiling((float)columnHeight / 2);

                // Reposition widget
                int widgetMidY = (int)Math.Ceiling((float)widget.BoundingBox.Size.Height / 2);

                widgetPosition.Y = midY - widgetMidY;

                // Apply offset
                widgetPosition.Y        += paddingOffset;
                widgetPosition           = widgetPosition + currentWidgetPosition;
                currentWidgetPosition.X += widget.BoundingBox.Size.Width + Layout.Spacing;

                // Update position
                widget.SetPosition(widgetPosition);
                widget.BoundingBox.ClipTo(region);
                widget.OnLayout(widget.BoundingBox);
            }
        }