示例#1
0
        /// <summary>
        /// Renders the control using specified skin.
        /// </summary>
        /// <param name="skin">Skin to use.</param>
        protected override void Render(Skin.SkinBase skin)
        {
            base.Render(skin);

            if (ShouldDrawBackground)
            {
                skin.DrawTextBox(this, HasFocus);
            }

            if (!HasFocus)
            {
                return;
            }

            // Draw selection.. if selected..
            if (m_CursorPos != m_CursorEnd)
            {
                skin.Renderer.DrawColor = Color.FromArgb(200, 50, 170, 255);
                skin.Renderer.DrawFilledRect(m_SelectionBounds);
            }

            // Draw caret
            var time = Platform.Neutral.GetTimeInSeconds() - m_LastInputTime;

            if ((time % 1.0) <= 0.5)
            {
                skin.Renderer.DrawColor = Color.Black;
                skin.Renderer.DrawFilledRect(m_CaretBounds);
            }
        }
示例#2
0
        /// <summary>
        /// Renders the control using specified skin.
        /// </summary>
        /// <param name="skin">Skin to use.</param>
        protected override void Render(Skin.SkinBase skin)
        {
            base.Render(skin);

            if (ShouldDrawBackground)
            {
                skin.DrawTextBox(this);
            }

            if (!HasFocus)
            {
                return;
            }

            Rectangle oldClipRegion = skin.Renderer.ClipRegion;

            Rectangle clipRect = m_ScrollArea.Bounds;

            clipRect.Width += 1;             // Make space for caret
            skin.Renderer.SetClipRegion(clipRect);

            // Draw selection.. if selected..
            if (m_CursorPos != m_CursorEnd)
            {
                skin.Renderer.DrawColor = Skin.Colors.TextBox.Background_Selected;
                skin.Renderer.DrawFilledRect(m_SelectionBounds);
            }

            // Draw caret
            float time = Platform.Platform.GetTimeInSeconds() - m_LastInputTime;

            if ((time % 1.0f) <= 0.5f)
            {
                skin.Renderer.DrawColor = Skin.Colors.TextBox.Caret;
                skin.Renderer.DrawFilledRect(m_CaretBounds);
            }

            skin.Renderer.ClipRegion = oldClipRegion;
        }
示例#3
0
        /// <summary>
        /// Renders the control using specified skin.
        /// </summary>
        /// <param name="skin">Skin to use.</param>
        protected override void Render(Skin.SkinBase skin)
        {
            base.Render(skin);

            if (ShouldDrawBackground)
            {
                skin.DrawTextBox(this);
            }

            if (!HasFocus)
            {
                return;
            }

            int VerticalOffset = 2 - m_ScrollControl.VerticalScroll;
            int VerticalSize   = Font.Size + 6;

            // Draw selection.. if selected..
            if (m_CursorPos != m_CursorEnd)
            {
                if (StartPoint.Y == EndPoint.Y)
                {
                    Point pA = GetCharacterPosition(StartPoint);
                    Point pB = GetCharacterPosition(EndPoint);

                    Rectangle SelectionBounds = new Rectangle();
                    SelectionBounds.X      = Math.Min(pA.X, pB.X);
                    SelectionBounds.Y      = pA.Y - VerticalOffset;
                    SelectionBounds.Width  = Math.Max(pA.X, pB.X) - SelectionBounds.X;
                    SelectionBounds.Height = VerticalSize;

                    skin.Renderer.DrawColor = Color.FromArgb(200, 50, 170, 255);
                    skin.Renderer.DrawFilledRect(SelectionBounds);
                }
                else
                {
                    /* Start */
                    Point pA = GetCharacterPosition(StartPoint);
                    Point pB = GetCharacterPosition(new Point(m_TextLines[StartPoint.Y].Length, StartPoint.Y));

                    Rectangle SelectionBounds = new Rectangle();
                    SelectionBounds.X      = Math.Min(pA.X, pB.X);
                    SelectionBounds.Y      = pA.Y - VerticalOffset;
                    SelectionBounds.Width  = Math.Max(pA.X, pB.X) - SelectionBounds.X;
                    SelectionBounds.Height = VerticalSize;

                    skin.Renderer.DrawColor = Color.FromArgb(200, 50, 170, 255);
                    skin.Renderer.DrawFilledRect(SelectionBounds);

                    /* Middle */
                    for (int i = 1; i < EndPoint.Y - StartPoint.Y; i++)
                    {
                        pA = GetCharacterPosition(new Point(0, StartPoint.Y + i));
                        pB = GetCharacterPosition(new Point(m_TextLines[StartPoint.Y + i].Length, StartPoint.Y + i));

                        SelectionBounds        = new Rectangle();
                        SelectionBounds.X      = Math.Min(pA.X, pB.X);
                        SelectionBounds.Y      = pA.Y - VerticalOffset;
                        SelectionBounds.Width  = Math.Max(pA.X, pB.X) - SelectionBounds.X;
                        SelectionBounds.Height = VerticalSize;

                        skin.Renderer.DrawColor = Color.FromArgb(200, 50, 170, 255);
                        skin.Renderer.DrawFilledRect(SelectionBounds);
                    }

                    /* End */
                    pA = GetCharacterPosition(new Point(0, EndPoint.Y));
                    pB = GetCharacterPosition(EndPoint);

                    SelectionBounds        = new Rectangle();
                    SelectionBounds.X      = Math.Min(pA.X, pB.X);
                    SelectionBounds.Y      = pA.Y - VerticalOffset;
                    SelectionBounds.Width  = Math.Max(pA.X, pB.X) - SelectionBounds.X;
                    SelectionBounds.Height = VerticalSize;

                    skin.Renderer.DrawColor = Color.FromArgb(200, 50, 170, 255);
                    skin.Renderer.DrawFilledRect(SelectionBounds);
                }
            }

            // Draw caret
            float time = Platform.Neutral.GetTimeInSeconds() - m_LastInputTime;

            if ((time % 1.0f) <= 0.5f)
            {
                skin.Renderer.DrawColor = Color.Black;
                skin.Renderer.DrawFilledRect(m_CaretBounds);
            }
        }
示例#4
0
        /// <summary>
        /// Renders the control using specified skin.
        /// </summary>
        /// <param name="skin">Skin to use.</param>
        protected override void Render(Skin.SkinBase skin)
        {
            base.Render(skin);

            if (ShouldDrawBackground)
            {
                skin.DrawTextBox(this);
            }

            if (!HasFocus)
            {
                return;
            }

            Rectangle oldClipRegion = skin.Renderer.ClipRegion;

            skin.Renderer.SetClipRegion(this.Container.Bounds);

            int verticalSize = this.LineHeight;

            // Draw selection.. if selected..
            if (m_CursorPos != m_CursorEnd)
            {
                if (StartPoint.Y == EndPoint.Y)
                {
                    Point pA = GetCharacterPosition(StartPoint);
                    Point pB = GetCharacterPosition(EndPoint);

                    Rectangle selectionBounds = new Rectangle();
                    selectionBounds.X      = Math.Min(pA.X, pB.X);
                    selectionBounds.Y      = pA.Y;
                    selectionBounds.Width  = Math.Max(pA.X, pB.X) - selectionBounds.X;
                    selectionBounds.Height = verticalSize;

                    skin.Renderer.DrawColor = Skin.Colors.TextBox.Background_Selected;
                    skin.Renderer.DrawFilledRect(selectionBounds);
                }
                else
                {
                    /* Start */
                    Point pA = GetCharacterPosition(StartPoint);
                    Point pB = GetCharacterPosition(new Point(m_Text[StartPoint.Y].Length, StartPoint.Y));

                    Rectangle selectionBounds = new Rectangle();
                    selectionBounds.X      = Math.Min(pA.X, pB.X);
                    selectionBounds.Y      = pA.Y;
                    selectionBounds.Width  = Math.Max(pA.X, pB.X) - selectionBounds.X;
                    selectionBounds.Height = verticalSize;

                    skin.Renderer.DrawColor = Skin.Colors.TextBox.Background_Selected;
                    skin.Renderer.DrawFilledRect(selectionBounds);

                    /* Middle */
                    for (int i = 1; i < EndPoint.Y - StartPoint.Y; i++)
                    {
                        pA = GetCharacterPosition(new Point(0, StartPoint.Y + i));
                        pB = GetCharacterPosition(new Point(m_Text[StartPoint.Y + i].Length, StartPoint.Y + i));

                        selectionBounds        = new Rectangle();
                        selectionBounds.X      = Math.Min(pA.X, pB.X);
                        selectionBounds.Y      = pA.Y;
                        selectionBounds.Width  = Math.Max(pA.X, pB.X) - selectionBounds.X;
                        selectionBounds.Height = verticalSize;

                        skin.Renderer.DrawColor = Skin.Colors.TextBox.Background_Selected;
                        skin.Renderer.DrawFilledRect(selectionBounds);
                    }

                    /* End */
                    pA = GetCharacterPosition(new Point(0, EndPoint.Y));
                    pB = GetCharacterPosition(EndPoint);

                    selectionBounds        = new Rectangle();
                    selectionBounds.X      = Math.Min(pA.X, pB.X);
                    selectionBounds.Y      = pA.Y;
                    selectionBounds.Width  = Math.Max(pA.X, pB.X) - selectionBounds.X;
                    selectionBounds.Height = verticalSize;

                    skin.Renderer.DrawColor = Skin.Colors.TextBox.Background_Selected;
                    skin.Renderer.DrawFilledRect(selectionBounds);
                }
            }

            // Draw caret
            float time = Platform.GwenPlatform.GetTimeInSeconds() - m_LastInputTime;

            if ((time % 1.0f) <= 0.5f)
            {
                skin.Renderer.DrawColor = Skin.Colors.TextBox.Caret;
                skin.Renderer.DrawFilledRect(m_CaretBounds);
            }

            skin.Renderer.ClipRegion = oldClipRegion;
        }