Пример #1
0
        private void AddWidgetRelative(
            int rowNum,
            int colNum,
            Widget widget,
            AlignMode hAlign = AlignMode.Left,
            AlignMode vAlign = AlignMode.Left,
            DockMode dock    = DockMode.None,
            int rowSpan      = 1,
            int colSpan      = 1,
            bool isAddedWidgetToAnotherWidget = true)
        {
            widget.Col = colNum;
            widget.Row = rowNum;
            widgets.Add(widget);

            widget.Parent = this;
            ((OverlayContainer)element).AddChild(widget.OverlayElement);

            var c = cols[colNum - 1];
            var r = rows[rowNum - 1];

            switch (dock)
            {
            case DockMode.Fill:
                widget.Height = r.RealHeight - (Padding.PaddingDown + Padding.PaddingTop);
                widget.Width  = c.RealWidth - (Padding.PaddingLeft + Padding.PaddingRight);
                widget.Left  += Padding.PaddingLeft;
                widget.Top   += Padding.PaddingTop;
                break;

            case DockMode.FillHeight:
                widget.Height = r.RealHeight - (Padding.PaddingDown + Padding.PaddingTop);
                widget.Top   += Padding.PaddingTop;
                break;

            case DockMode.FillWidth:
                widget.Width = c.RealWidth - (Padding.PaddingLeft + Padding.PaddingRight);
                widget.Left += Padding.PaddingLeft;
                break;

            case DockMode.None:
                widget.Width  *= c.RealWidth;
                widget.Height *= r.RealHeight;
                break;
            }

            if (c.Type == ValueType.Auto)
            {
                c.Width = widget.Width;
            }
            if (r.Type == ValueType.Auto)
            {
                r.Height = widget.Height;
            }

            float relativeLeft = 0;
            float relativeTop  = 0;

            for (int i = 0; i < rowNum - 1; i++)
            {
                relativeTop += rows[i].RealHeight;
            }
            for (int i = 0; i < colNum - 1; i++)
            {
                relativeLeft += cols[i].RealWidth;
            }

            widget.Left += relativeLeft;
            widget.Top  += relativeTop;

            if (rowSpan > 1)
            {
                for (int i = 0; i < rowSpan - 1; i++)
                {
                    widget.Height += rows[i].RealHeight;
                }
            }
            if (colSpan > 1)
            {
                for (int i = 0; i < colSpan - 1; i++)
                {
                    widget.Width += cols[i].RealWidth;
                }
            }

            switch (hAlign)
            {
            case AlignMode.Center:
                if (colNum == 1)
                {
                    widget.Left = (c.RealWidth - widget.Width) / 2;
                }
                else
                {
                    widget.Left += (c.RealWidth - widget.Width) / 2;
                }
                break;
            }

            switch (vAlign)
            {
            case AlignMode.Center:
                if (rowNum == 1)
                {
                    widget.Top = (r.RealHeight - widget.Height) / 2;
                }
                else
                {
                    widget.Top += (r.RealHeight - widget.Height) / 2;
                }
                break;
            }
            if (isAddedWidgetToAnotherWidget)
            {
                widget.AddedToAnotherWidgetFinished(hAlign, relativeLeft, c.RealWidth, relativeTop, r.RealHeight);
            }
        }
Пример #2
0
        private void AddWidgetPixels(
            int rowNum,
            int colNum,
            Widget widget,
            AlignMode hAlign,
            AlignMode vAlign,
            DockMode dock,
            int rowSpan,
            int colSpan)
        {
            widget.Col   = colNum;
            widget.Row   = rowNum;
            widget.Left += Padding.PaddingLeft;
            widgets.Add(widget);

            widget.Parent = this;
            ((OverlayContainer)element).AddChild(widget.OverlayElement);

            var c = cols[colNum - 1];
            var r = rows[rowNum - 1];

            switch (dock)
            {
            case DockMode.Fill:
                widget.Height = RelativeToPixels(r.RealHeight, float.Parse(EngineManager.Instance.VideoMode["Height"]));
                widget.Width  = RelativeToPixels(c.RealWidth, float.Parse(EngineManager.Instance.VideoMode["Width"]));
                break;

            case DockMode.FillHeight:
                widget.Height = RelativeToPixels(r.RealHeight, float.Parse(EngineManager.Instance.VideoMode["Height"]));
                break;

            case DockMode.FillWidth:
                widget.Width = RelativeToPixels(c.RealWidth, float.Parse(EngineManager.Instance.VideoMode["Width"]));
                break;

            case DockMode.Center:
                widget.Width = widget.Width * RelativeToPixels(c.RealWidth, float.Parse(EngineManager.Instance.VideoMode["Width"]));
                //widget.Height = widget.Height * r.AbosulteHeight;
                break;

            default:
                widget.Width  = RelativeToPixels(c.RealWidth, float.Parse(EngineManager.Instance.VideoMode["Width"]));
                widget.Height = RelativeToPixels(r.RealHeight, float.Parse(EngineManager.Instance.VideoMode["Height"]));
                break;
            }

            if (c.Type == ValueType.Auto)
            {
                c.Width = PixelsToRelative(widget.Width, RelativeToPixels(c.RealWidth, float.Parse(EngineManager.Instance.VideoMode["Width"])));
            }
            if (r.Type == ValueType.Auto)
            {
                r.Height = PixelsToRelative(widget.Height, RelativeToPixels(r.RealHeight, float.Parse(EngineManager.Instance.VideoMode["Height"])));
            }

            float relativeLeft = 0;
            float relativeTop  = 0;

            for (int i = 0; i < rowNum - 1; i++)
            {
                relativeTop += rows[i].RealHeight;
            }
            for (int i = 0; i < colNum - 1; i++)
            {
                relativeLeft += cols[i].RealWidth;
            }

            widget.Left += relativeLeft;
            widget.Top  += RelativeToPixels(relativeTop, float.Parse(EngineManager.Instance.VideoMode["Height"]));

            if (rowSpan > 1)
            {
                for (int i = 0; i < rowSpan - 1; i++)
                {
                    widget.Height += RelativeToPixels(rows[i].RealHeight, float.Parse(EngineManager.Instance.VideoMode["Height"]));
                }
            }
            if (colSpan > 1)
            {
                for (int i = 0; i < colSpan - 1; i++)
                {
                    widget.Width += RelativeToPixels(cols[i].RealWidth, float.Parse(EngineManager.Instance.VideoMode["Width"]));
                }
            }

            switch (hAlign)
            {
            case AlignMode.Center:
                widget.Left = RelativeToPixels((c.RealWidth - widget.Width) / 2, float.Parse(EngineManager.Instance.VideoMode["Width"]));
                break;

            case AlignMode.Right:
                break;
            }

            switch (vAlign)
            {
            case AlignMode.Center:
                widget.Top += RelativeToPixels((r.RealHeight - widget.Height) / 2, float.Parse(EngineManager.Instance.VideoMode["Height"]));
                break;
            }
            widget.AddedToAnotherWidgetFinished(hAlign, relativeLeft, c.RealWidth, relativeTop, r.RealHeight);
        }