4#include "../../Bridge/BridgeApi.h"
6#include "Rendering/IGraphicsDevice.h"
7#include "Rendering/VertexFormat.h"
9#include "Foundation/StringView.h"
10#include "Foundation/Platform/Timer.h"
14#include <unordered_map>
26 GUI_MODE_TEX_OFFSET_MASK = 255,
28 GUI_MODE_TEX_TYPE_2D = (0u) << 26,
29 GUI_MODE_TEX_TYPE_ARRAY = (1u) << 26,
30 GUI_MODE_TEX_TYPE_CUBE = (2u) << 26,
31 GUI_MODE_TEX_TYPE_2DMS = (3u) << 26,
32 GUI_MODE_TEX_TYPE_MASK = (3u) << 26,
34 GUI_MODE_TEX_CHANNELS_RGB = (0u) << 28,
35 GUI_MODE_TEX_CHANNELS_ALPHA = (1u) << 28,
36 GUI_MODE_TEX_CHANNELS_RED = (2u) << 28,
37 GUI_MODE_TEX_CHANNELS_111R = (3u) << 28,
38 GUI_MODE_TEX_CHANNELS_MASK = (7u) << 28,
40 GUI_MODE_MASK = GUI_MODE_TEX_TYPE_MASK | GUI_MODE_TEX_CHANNELS_MASK
48 static constexpr int cNoOfFontSizes = 4;
50 ImFontAtlas fontAtlas;
51 ImFont* font[cNoOfFontSizes] = {};
52 float initialSize = 0.0f;
55 COGSCORE_DLL_API
void load(
const Context* context,
const std::string& name,
float size,
const ImWchar* glyphRanges);
56 COGSCORE_DLL_API
void reloadWithNewGlyphs(
const Context* context,
const ImWchar* glyphRanges);
57 COGSCORE_DLL_API ImFont* find(
float size,
float& scale)
const;
62 std::unordered_map<size_t, GuiFont> fonts;
69 bool initialize(
Context* context);
72 ImGuiContext* createGuiContext();
73 void deleteGuiContext(ImGuiContext* guiContext);
79 static bool isUsingMouse();
85 static bool isUsingKeyboard();
87 static void setClipboardCallbacks(GetClipboardTextFn getter, SetClipboardTextFn setter);
89 void frame(ImGuiContext* guiContext,
ViewContext& view,
bool updateio =
true);
94 void addTextToGlyphBuilder(
const char* text);
95 void addRangeToGlyphBuilder(
const ImWchar* ranges);
96 ImVector<ImWchar> getLoadedRanges() {
return loadedRanges; }
101 bool createResources();
102 void createSampler();
103 void updateConstantBuffer(
IContext* deviceContext, uint32_t mode);
105 static GetClipboardTextFn getClipboardTextFn;
106 static SetClipboardTextFn setClipboardTextFn;
129 ImGuiContext* imguiContext =
nullptr;
131 ImFontGlyphRangesBuilder fontGlyphBuilder;
132 ImVector<ImWchar> loadedRanges;
133 bool updateLoadedRanges =
false;
135 uint32_t mode = GUI_MODE_DEFAULT;
137 int vertexBufferSize = 5000;
138 int indexBufferSize = 10000;
141 bool touchPointerHeld =
false;
143 glm::uvec2 touchPointerPosition{ 0,0 };
A Context instance contains all the services, systems and runtime components needed to use Cogs.
Represents a graphics device used to manage graphics resources and issue drawing commands.
ImDrawCallback setGuiMode
Callback for Render updates - not really called.
Contains all Cogs related functionality.
Represents a graphics device context which can receive rendering commands.