Example #1
0
        /// <summary>
        /// Draws the text with the offset given by the scrollbar.
        /// </summary>
        /// <param name="offset">Indicates how low is the scrollbar (and how many beginning lines are skipped)</param>
        private void DrawText(float offset)
        {
            Vector2 position    = GetPositionAbsoluteTopLeft();
            Vector2 drawSizeMax = Size;

            if (m_drawScrollbar && m_scrollbar.Visible)
            {
                drawSizeMax.X -= m_scrollbar.Size.X;
            }

            var textSize = TextSize;

            if (textSize.X < drawSizeMax.X)
            {
                switch (TextBoxAlign)
                {
                case MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM:
                case MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER:
                case MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP:
                    break;

                case MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM:
                case MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER:
                case MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP:
                    position.X += (drawSizeMax.X - textSize.X) * 0.5f;
                    break;

                case MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM:
                case MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER:
                case MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP:
                    position.X += (drawSizeMax.X - textSize.X);
                    break;
                }
                drawSizeMax.X = textSize.X;
            }

            if (textSize.Y < drawSizeMax.Y)
            {
                switch (TextBoxAlign)
                {
                case MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP:
                case MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP:
                case MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_TOP:
                    break;

                case MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER:
                case MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER:
                case MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_CENTER:
                    position.Y += (drawSizeMax.Y - textSize.Y) * 0.5f;
                    break;

                case MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_BOTTOM:
                case MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM:
                case MyGuiDrawAlignEnum.HORISONTAL_RIGHT_AND_VERTICAL_BOTTOM:
                    position.Y += (drawSizeMax.Y - textSize.Y);
                    break;
                }
                drawSizeMax.Y = textSize.Y;
            }

            m_label.Draw(position, offset, drawSizeMax);
        }