Inheritance: IDisposable
Ejemplo n.º 1
0
 public static TextInputBuffer[] CreateBuffers(int size, int bufferLength = 1024)
 {
     TextInputBuffer[] buffers = new TextInputBuffer[size];
     for (int i = 0; i < size; i++)
     {
         buffers[i] = new TextInputBuffer(bufferLength);
     }
     return(buffers);
 }
Ejemplo n.º 2
0
        public AsyncTextInputBufferResult(Func<string> initializationFunc, CancellationToken cancellationToken, TextInputBuffer defaultBuffer = null)
        {
            if (defaultBuffer == null)
            {
                defaultBuffer = new TextInputBuffer("Loading...");
            }
            Buffer = defaultBuffer;
            Task.Run(() =>
            {
                string result = initializationFunc();
                Buffer.Dispose();
                Buffer = new TextInputBuffer(result);

            }, cancellationToken);
        }
        private void DrawRightFrame(Vector2 frameSize)
        {
            var rightFrameNode = ListView.GetSelectedNode(ListViewID);

            if (_currentRightFrameNode != rightFrameNode)
            {
                _currentRightFrameNode = rightFrameNode;
                Task.Run(() =>
                {
                    string newText = rightFrameNode.GetNodeSpecialText();
                    TextInputBuffer newBuffer = new TextInputBuffer(newText);
                    InvokeOnMainThread(() =>
                    {
                        if (_currentRightFrameNode == rightFrameNode)
                        {
                            _rightFrameTextBuffer.Dispose();
                            _rightFrameTextBuffer = newBuffer;
                            _rightFrameRawText = newText;
                        }
                        else
                        {
                            newBuffer.Dispose();
                        }
                    });
                });
            }

            if (_selectableText)
            {
                ImGui.PushStyleColor(ColorTarget.FrameBg, new Vector4(1, 1, 1, 1));
                ImGui.PushStyleColor(ColorTarget.Text, new Vector4(0, 0, 0, 1));

                ImGui.InputTextMultiline(
                    "",
                    _rightFrameTextBuffer.Buffer,
                    _rightFrameTextBuffer.Length,
                    frameSize * new Vector2(2.5f, 1f) - Vector2.UnitY * 35f,
                    InputTextFlags.ReadOnly,
                    null,
                    IntPtr.Zero);

                ImGui.PopStyleColor(2);
            }
            else
            {
                unsafe
                {
                    byte* start = (byte*)_rightFrameTextBuffer.Buffer.ToPointer();
                    byte* end = start + _rightFrameTextBuffer.Length;

                    if (_wrapRightFrame)
                    {
                        ImGuiNative.igPushTextWrapPos(ImGuiNative.igGetColumnWidth(ImGuiNative.igGetColumnIndex()));
                    }

                    ImGuiNative.igTextUnformatted(start, end);

                    if (_wrapRightFrame)
                    {
                        ImGuiNative.igPopTextWrapPos();
                    }
                }
            }

        }