コード例 #1
0
ファイル: LayoutHints.cs プロジェクト: Seti-0/blue
        public void Update(UserLayoutHints userHints, ContentLayoutHints contentHints, float backgroundDepth)
        {
            Order    = userHints.Order;
            StretchX = userHints.StretchHorizontal;
            StretchY = userHints.StretchVertical;

            Depth = contentHints.Depth + backgroundDepth;

            var margin  = userHints.Margin.Value;
            var padding = userHints.Padding.Value;

            if (margin.Left < 0)
            {
                margin.Left = 0;
            }
            if (margin.Right < 0)
            {
                margin.Right = 0;
            }
            if (margin.Top < 0)
            {
                margin.Top = 0;
            }
            if (margin.Bottom < 0)
            {
                margin.Bottom = 0;
            }

            if (padding.Left < 0)
            {
                padding.Left = 0;
            }
            if (padding.Right < 0)
            {
                padding.Right = 0;
            }
            if (padding.Top < 0)
            {
                padding.Top = 0;
            }
            if (padding.Bottom < 0)
            {
                padding.Bottom = 0;
            }

            Margin  = margin;
            Padding = padding;

            var maxSize  = contentHints.MaxSize;
            var minSize  = contentHints.MinSize;
            var prefSize = contentHints.PreferredSize;

            maxSize  += Padding.TotalSize + Margin.TotalSize;
            prefSize += Padding.TotalSize + Margin.TotalSize;

            // It would be nice to have shrinkable margins and padding, but for now it's fixed.
            minSize += Padding.TotalSize + Margin.TotalSize;

            if (userHints.MaxSize.UseX)
            {
                maxSize.X = userHints.MaxSize.Value.X;
            }
            if (userHints.MaxSize.UseY)
            {
                maxSize.Y = userHints.MaxSize.Value.Y;
            }
            if (userHints.MinSize.UseX)
            {
                minSize.X = userHints.MinSize.Value.X;
            }
            if (userHints.MinSize.UseY)
            {
                minSize.Y = userHints.MinSize.Value.Y;
            }
            if (userHints.PreferredSize.UseX)
            {
                prefSize.X = userHints.PreferredSize.Value.X;
            }
            if (userHints.PreferredSize.UseY)
            {
                prefSize.Y = userHints.PreferredSize.Value.Y;
            }

            MaxSize       = maxSize;
            MinSize       = minSize;
            PreferredSize = prefSize;

            ContentHints = contentHints;
            if (userHints.ContentAlignment.Use)
            {
                ContentHints.Alignment = userHints.ContentAlignment.Value;
            }
            if (userHints.StretchContent.Use)
            {
                contentHints.Stretch = userHints.StretchContent.Value;
            }

            BackgroundSize = userHints.BackgroundSize;
        }
コード例 #2
0
 public ReactiveUserLayoutHints(UserLayoutHints parent, Action action)
 {
     _parent = parent;
     _action = action;
 }