Esempio n. 1
0
File: VBox.cs Progetto: AcK77/Ngco
        public override void Layout(Rect region)
        {
            Point currentWidgetPosition = region.TopLeft;
            int   rowWidth = region.Size.Width;

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

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

                int paddingOffset = -Style.Layout.Padding.Right;
                int midX          = widgetPosition.X + (int)Math.Ceiling((float)rowWidth / 2);

                // Reposition widget
                int widgetMidX = (int)Math.Ceiling((float)widget.BoundingBox.Size.Width / 2);

                widgetPosition.X = midX - widgetMidX;

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

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