Esempio n. 1
0
        private void DrawCursor(string newText)
        {
            KeyboardTextEditor keyboardTextEditor = this.editor as KeyboardTextEditor;

            if (keyboardTextEditor != null)
            {
                keyboardTextEditor.PreDrawCursor(newText);
                int     cursorIndex   = keyboardTextEditor.cursorIndex;
                int     selectIndex   = keyboardTextEditor.selectIndex;
                Rect    localPosition = keyboardTextEditor.localPosition;
                Vector2 scrollOffset  = keyboardTextEditor.scrollOffset;
                Vector2 contentOffset = this.style.contentOffset;
                this.style.contentOffset      -= scrollOffset;
                this.style.Internal_clipOffset = scrollOffset;
                Input.compositionCursorPos     = keyboardTextEditor.graphicalCursorPos - scrollOffset + new Vector2(localPosition.x, localPosition.y + this.style.lineHeight);
                GUIContent content = new GUIContent(keyboardTextEditor.text);
                if (!string.IsNullOrEmpty(Input.compositionString))
                {
                    this.style.DrawWithTextSelection(base.position, content, this.HasCapture(), this.hasFocus, cursorIndex, cursorIndex + Input.compositionString.Length, true);
                }
                else
                {
                    this.style.DrawWithTextSelection(base.position, content, this.HasCapture(), this.hasFocus, cursorIndex, selectIndex, false);
                }
                if (keyboardTextEditor.altCursorPosition != -1)
                {
                    this.style.DrawCursor(base.position, content, 0, keyboardTextEditor.altCursorPosition);
                }
                this.style.contentOffset       = contentOffset;
                this.style.Internal_clipOffset = Vector2.zero;
                keyboardTextEditor.PostDrawCursor();
            }
        }
Esempio n. 2
0
        private void DrawWithTextSelectionAndCursor(IStylePainter painter, string newText)
        {
            KeyboardTextEditor keyboardTextEditor = this.editor as KeyboardTextEditor;

            if (keyboardTextEditor != null)
            {
                keyboardTextEditor.PreDrawCursor(newText);
                int     cursorIndex   = keyboardTextEditor.cursorIndex;
                int     selectIndex   = keyboardTextEditor.selectIndex;
                Rect    localPosition = keyboardTextEditor.localPosition;
                Vector2 scrollOffset  = keyboardTextEditor.scrollOffset;
                IStyle  style         = base.style;
                TextStylePainterParameters defaultTextParameters = painter.GetDefaultTextParameters(this);
                defaultTextParameters.text          = " ";
                defaultTextParameters.wordWrapWidth = 0f;
                defaultTextParameters.wordWrap      = false;
                float num  = painter.ComputeTextHeight(defaultTextParameters);
                float num2 = (!style.wordWrap) ? 0f : base.contentRect.width;
                Input.compositionCursorPos = keyboardTextEditor.graphicalCursorPos - scrollOffset + new Vector2(localPosition.x, localPosition.y + num);
                Color color = (!(this.cursorColor != Color.clear)) ? GUI.skin.settings.cursorColor : this.cursorColor;
                int   num3  = (!string.IsNullOrEmpty(Input.compositionString)) ? (cursorIndex + Input.compositionString.Length) : selectIndex;
                painter.DrawBackground(this);
                if (cursorIndex != num3)
                {
                    RectStylePainterParameters defaultRectParameters = painter.GetDefaultRectParameters(this);
                    defaultRectParameters.color                   = this.selectionColor;
                    defaultRectParameters.borderLeftWidth         = 0f;
                    defaultRectParameters.borderTopWidth          = 0f;
                    defaultRectParameters.borderRightWidth        = 0f;
                    defaultRectParameters.borderBottomWidth       = 0f;
                    defaultRectParameters.borderTopLeftRadius     = 0f;
                    defaultRectParameters.borderTopRightRadius    = 0f;
                    defaultRectParameters.borderBottomRightRadius = 0f;
                    defaultRectParameters.borderBottomLeftRadius  = 0f;
                    int cursorIndex2 = (cursorIndex >= num3) ? num3 : cursorIndex;
                    int cursorIndex3 = (cursorIndex <= num3) ? num3 : cursorIndex;
                    CursorPositionStylePainterParameters defaultCursorPositionParameters = painter.GetDefaultCursorPositionParameters(this);
                    defaultCursorPositionParameters.text          = keyboardTextEditor.text;
                    defaultCursorPositionParameters.wordWrapWidth = num2;
                    defaultCursorPositionParameters.cursorIndex   = cursorIndex2;
                    Vector2 a = painter.GetCursorPosition(defaultCursorPositionParameters);
                    defaultCursorPositionParameters.cursorIndex = cursorIndex3;
                    Vector2 a2 = painter.GetCursorPosition(defaultCursorPositionParameters);
                    a  -= scrollOffset;
                    a2 -= scrollOffset;
                    if (Mathf.Approximately(a.y, a2.y))
                    {
                        defaultRectParameters.layout = new Rect(a.x, a.y, a2.x - a.x, num);
                        painter.DrawRect(defaultRectParameters);
                    }
                    else
                    {
                        defaultRectParameters.layout = new Rect(a.x, a.y, num2 - a.x, num);
                        painter.DrawRect(defaultRectParameters);
                        float num4 = a2.y - a.y - num;
                        if (num4 > 0f)
                        {
                            defaultRectParameters.layout = new Rect(0f, a.y + num, num2, num4);
                            painter.DrawRect(defaultRectParameters);
                        }
                        defaultRectParameters.layout = new Rect(0f, a2.y, a2.x, num);
                        painter.DrawRect(defaultRectParameters);
                    }
                }
                painter.DrawBorder(this);
                if (!string.IsNullOrEmpty(keyboardTextEditor.text) && base.contentRect.width > 0f && base.contentRect.height > 0f)
                {
                    defaultTextParameters        = painter.GetDefaultTextParameters(this);
                    defaultTextParameters.layout = new Rect(base.contentRect.x - scrollOffset.x, base.contentRect.y - scrollOffset.y, base.contentRect.width, base.contentRect.height);
                    defaultTextParameters.text   = keyboardTextEditor.text;
                    painter.DrawText(defaultTextParameters);
                }
                if (cursorIndex == num3 && style.font != null)
                {
                    CursorPositionStylePainterParameters defaultCursorPositionParameters = painter.GetDefaultCursorPositionParameters(this);
                    defaultCursorPositionParameters.text          = keyboardTextEditor.text;
                    defaultCursorPositionParameters.wordWrapWidth = num2;
                    defaultCursorPositionParameters.cursorIndex   = cursorIndex;
                    Vector2 a3 = painter.GetCursorPosition(defaultCursorPositionParameters);
                    a3 -= scrollOffset;
                    RectStylePainterParameters painterParams = new RectStylePainterParameters
                    {
                        layout = new Rect(a3.x, a3.y, 1f, num),
                        color  = color
                    };
                    painter.DrawRect(painterParams);
                }
                if (keyboardTextEditor.altCursorPosition != -1)
                {
                    CursorPositionStylePainterParameters defaultCursorPositionParameters = painter.GetDefaultCursorPositionParameters(this);
                    defaultCursorPositionParameters.text          = keyboardTextEditor.text.Substring(0, keyboardTextEditor.altCursorPosition);
                    defaultCursorPositionParameters.wordWrapWidth = num2;
                    defaultCursorPositionParameters.cursorIndex   = keyboardTextEditor.altCursorPosition;
                    Vector2 a4 = painter.GetCursorPosition(defaultCursorPositionParameters);
                    a4 -= scrollOffset;
                    RectStylePainterParameters painterParams2 = new RectStylePainterParameters
                    {
                        layout = new Rect(a4.x, a4.y, 1f, num),
                        color  = color
                    };
                    painter.DrawRect(painterParams2);
                }
                keyboardTextEditor.PostDrawCursor();
            }
        }