/// <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); } }
/// <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; }
/// <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); } }
/// <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; }