MxEngine
GraphicConsole.h
1 // Copyright(c) 2019 - 2020, #Momo
2 // All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are met :
6 //
7 // 1. Redistributions of source code must retain the above copyright notice, this
8 // list of conditions and the following disclaimer.
9 //
10 // 2. Redistributions in binary form must reproduce the above copyright notice,
11 // this list of conditions and the following disclaimer in the documentation
12 // and /or other materials provided with the distribution.
13 //
14 // 3. Neither the name of the copyright holder nor the names of its
15 // contributors may be used to endorse or promote products derived from
16 // this software without specific prior written permission.
17 //
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 // DISCLAIMED.IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 // DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 // OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 
29 #pragma once
30 
31 #include "Utilities/ImGui/ImGuiBase.h"
32 
33 #include <functional>
34 
35 namespace MxEngine
36 {
41  {
42  char InputBuf[256];
43  ImVector<char*> Items;
44  ImVector<char*> History;
45  int HistoryPos; // -1: new line, 0..History.size-1 browsing history.
46  ImVec2 size;
47  ImGuiTextFilter Filter;
48  bool AutoScroll;
49  bool ScrollToBottom;
50 
55  void ExecCommand(const char* command);
60  int TextEditCallback(ImGuiInputTextCallbackData* data);
61  using EventCallback = std::function<void(const char*)>;
65  EventCallback eventCallback = nullptr;
66 
70  friend int TextEditCallbackStub(ImGuiInputTextCallbackData*);
71  public:
76  GraphicConsole(const GraphicConsole&) = delete;
77  ~GraphicConsole();
78 
83  void SetEventCallback(EventCallback&& callback);
87  void PrintHistory();
91  void ClearLog();
97  void PrintLog(const char* fmt, ...);
102  void Draw(const char* title);
107  ImVec2 GetSize() const;
112  void SetSize(ImVec2 size);
113  };
114 }
friend int TextEditCallbackStub(ImGuiInputTextCallbackData *)
Definition: GraphicConsole.cpp:14
GraphicConsole()
Definition: GraphicConsole.cpp:20
Definition: GraphicConsole.h:40
void ClearLog()
Definition: GraphicConsole.cpp:37
void PrintLog(const char *fmt,...)
Definition: GraphicConsole.cpp:44
void SetEventCallback(EventCallback &&callback)
Definition: GraphicConsole.cpp:179
ImVec2 GetSize() const
Definition: GraphicConsole.cpp:147
void Draw(const char *title)
Definition: GraphicConsole.cpp:56
void PrintHistory()
Definition: GraphicConsole.cpp:184
Definition: Application.cpp:49
void SetSize(ImVec2 size)
Definition: GraphicConsole.cpp:152