コード例 #1
0
        internal override void SetChildBounds()
        {
            var location = Vector2.Zero;

            foreach (var child in UIComponents)
            {
                var extra = child.PaddingInternal.Size + child.Border.Size + child.Margin.Size;

                var defaultSize = DefaultChildSizes;
                if (defaultSize.X == 0)
                {
                    defaultSize.X = AbsolutePaddingRect.Size.X - extra.X - ExtraChildMargin.Size.X;
                }
                if (defaultSize.Y == 0)
                {
                    defaultSize.Y = AbsolutePaddingRect.Size.Y - extra.Y - ExtraChildMargin.Size.Y;
                }

                var size = child.Size;
                if (size.X == 0)
                {
                    size.X = defaultSize.X;
                }
                if (size.Y == 0)
                {
                    size.Y = defaultSize.Y;
                }

                size += extra;
                child.AbsoluteOuterRect = BoxHelper.FromSize(AbsolutePaddingRect.Min + location + ExtraChildMargin.Min, size);
                location.Y += size.Y + ExtraChildMargin.Size.Y; // TODO: Use X for other alignment
            }
        }
コード例 #2
0
ファイル: UIComponent.cs プロジェクト: AximoGames/AxEngine
        public override void UpdateFrame()
        {
            if (Parent == null || !(Parent is UIComponent))
            {
                var size = Size;
                if (size.X == 0)
                {
                    size.X = SceneContext.Current.ScreenScaledSize.X;
                }
                if (size.Y == 0)
                {
                    size.Y = SceneContext.Current.ScreenScaledSize.Y;
                }

                var newAbsoluteOuterRect = BoxHelper.FromSize(Location, size);
                //if (newAbsoluteOuterRect == AbsoluteOuterRect) // TODO: Fix
                //    return;

                AbsoluteOuterRect = newAbsoluteOuterRect;

                CalculateSizes();
            }

            Material.UseTransparency = true; // TODO: Set only where required
        }
コード例 #3
0
ファイル: UIComponent.cs プロジェクト: AximoGames/AxEngine
        internal virtual void SetComponentSize()
        {
            // TODO: Shrink AbsoluteOuterRect if Dock is set.
            // ...

            var oldDrawRect = AbsoluteDrawRect;

            Vector2 relSize;
            Vector2 relPos;

            // Draw

            relSize = AbsoluteOuterRect.Size - Margin.Size;
            relPos  = Margin.Min;

            RelatativeDrawRect = BoxHelper.FromSize(relPos, relSize);
            AbsoluteDrawRect   = BoxHelper.FromSize(AbsoluteOuterRect.Min + relPos, relSize);

            // Client

            relSize = AbsoluteOuterRect.Size - Margin.Size - Border.Size;
            relPos  = Margin.Min + Border.Min;

            RelatativeClientRect = BoxHelper.FromSize(relPos, relSize);
            AbsoluteClientRect   = BoxHelper.FromSize(AbsoluteOuterRect.Min + relPos, relSize);

            // Padding

            relSize = AbsoluteOuterRect.Size - Margin.Size - Border.Size - PaddingInternal.Size;
            relPos  = Margin.Min + Border.Min + PaddingInternal.Min;

            RelatativePaddingRect = BoxHelper.FromSize(relPos, relSize);
            AbsolutePaddingRect   = BoxHelper.FromSize(AbsoluteOuterRect.Min + relPos, relSize);

            if (!AbsoluteDrawRect.Size.Approximately(oldDrawRect.Size))
            {
                ResizeImage(DrawSize);
            }
            if (AbsoluteDrawRect != oldDrawRect)
            {
                SetRectangleScaled(AbsoluteDrawRect.ToRectangleF());
                if (!AbsoluteDrawRect.Size.Approximately(oldDrawRect.Size))
                {
                    OnResized();
                }
            }
        }
コード例 #4
0
        internal override void SetChildBounds()
        {
            foreach (var child in UIComponents)
            {
                if (child.Size == Vector2.Zero)
                {
                    child.AbsoluteOuterRect = AbsolutePaddingRect;
                }
                else
                {
                    var location = child.Location;
                    var size     = child.Size + child.PaddingInternal.Size + child.Border.Size + child.Margin.Size;

                    //location.X += Border.Left;
                    //location.Y += Border.Top;

                    //size.X -= child.Border.Size.X;
                    //size.Y -= child.Border.Size.Y;

                    child.AbsoluteOuterRect = BoxHelper.FromSize(AbsolutePaddingRect.Min + location, size);
                }
            }
        }