SleakEngine 0.1.0
C++23 multi-backend game engine
Loading...
Searching...
No Matches
UI.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <Core/OSDef.hpp>
4#include <string>
5
6namespace Sleak { class Texture; }
7
8/// Thin Dear ImGui wrapper; the only UI surface Game is allowed to call (ImGui itself is a private Engine dependency).
9/// @ingroup ui
10namespace Sleak::UI {
11
12/// Bit flags controlling BeginPanel's window chrome and interactivity.
13/// @ingroup ui
22
23/// Opens a floating overlay window at (x, y); pair with EndPanel.
24ENGINE_API void BeginPanel(const char* name, float x, float y,
25 float bgAlpha = 0.4f,
26 int flags = PanelFlags_NoTitleBar |
31ENGINE_API void EndPanel();
32
33ENGINE_API void Text(const char* fmt, ...);
34ENGINE_API void TextColored(float r, float g, float b, float a, const char* fmt, ...);
35ENGINE_API void TextDisabled(const char* fmt, ...);
36
37ENGINE_API bool Checkbox(const char* label, bool* value);
38ENGINE_API bool Button(const char* label);
39ENGINE_API bool DragFloat(const char* label, float* value, float speed = 1.0f, float min = 0.0f, float max = 0.0f);
40ENGINE_API bool Combo(const char* label, int* current, const char* const items[], int count);
41
42ENGINE_API void Separator();
43ENGINE_API void SameLine();
44ENGINE_API void BeginGroup();
45ENGINE_API void EndGroup();
46ENGINE_API void BeginChild(const char* name);
47ENGINE_API void BeginChildSized(const char* name, float width, float height = 0.0f);
48ENGINE_API void EndChild();
49
50ENGINE_API float GetViewportWidth();
51ENGINE_API float GetViewportHeight();
52
53ENGINE_API void DrawLine(float x1, float y1, float x2, float y2,
54 float r, float g, float b, float a = 1.0f, float thickness = 1.0f);
55ENGINE_API void DrawRect(float x, float y, float w, float h,
56 float r, float g, float b, float a = 1.0f, float thickness = 1.0f,
57 float rounding = 0.0f);
58ENGINE_API void DrawFilledRect(float x, float y, float w, float h,
59 float r, float g, float b, float a = 1.0f,
60 float rounding = 0.0f);
61ENGINE_API void DrawText(const char* text, float x, float y,
62 float r, float g, float b, float a = 1.0f);
63
64ENGINE_API bool InputText(const char* label, char* buf, size_t bufSize);
65ENGINE_API bool InputTextString(const char* label, std::string* str);
66ENGINE_API bool ButtonSized(const char* label, float width, float height = 0.0f);
67ENGINE_API bool Selectable(const char* label, bool selected);
68ENGINE_API void SetNextItemWidth(float width);
69ENGINE_API void Spacing();
70ENGINE_API void Dummy(float width, float height);
71enum StyleColor : int;
72/// Pushes a color for one of the StyleColor slots.
73ENGINE_API void PushStyleColor(StyleColor idx, float r, float g, float b,
74 float a);
75/// Pushes a color by raw ImGuiCol index.
76ENGINE_API void PushStyleColor(int idx, float r, float g, float b, float a);
77ENGINE_API void PopStyleColor(int count = 1);
78ENGINE_API void PushStyleVar(int idx, float val);
79ENGINE_API void PushStyleVarVec(int idx, float x, float y);
80ENGINE_API void PopStyleVar(int count = 1);
81ENGINE_API bool BeginListBox(const char* label, float width, float height);
82ENGINE_API void EndListBox();
83ENGINE_API void SetCursorPosX(float x);
84ENGINE_API void SetCursorPosY(float y);
85ENGINE_API float GetCursorPosY();
86ENGINE_API float GetContentRegionAvailWidth();
87ENGINE_API void SetNextWindowPos(float x, float y, bool always = false);
88ENGINE_API void SetNextWindowSize(float w, float h, bool always = false);
89ENGINE_API void ProgressBar(float fraction, float width = -1.0f, float height = 0.0f, const char* overlay = nullptr);
90ENGINE_API void TextWrapped(const char* fmt, ...);
91
92// Texture display
93ENGINE_API void Image(uint64_t textureID, float width, float height);
94ENGINE_API void DrawImage(uint64_t textureID, float x, float y, float width, float height);
95/// Loads an image file and caches it as a UI-bindable texture id, reusing the cache on repeat calls for the same path.
96ENGINE_API uint64_t LoadTextureForUI(const std::string& filePath, float* outWidth = nullptr, float* outHeight = nullptr);
97ENGINE_API void ShutdownTextureCache(); // engine calls at teardown
98
99/// Create a texture from raw RGBA pixel data (for runtime atlas building etc.).
100ENGINE_API Sleak::Texture* CreateTextureFromPixels(uint32_t width, uint32_t height, const void* rgbaPixels, uint32_t maxMipLevels = 0);
101
102/// Load image file into RGBA pixels (caller must free with FreeImagePixels).
103ENGINE_API unsigned char* LoadImagePixels(const char* path, int* w, int* h);
104ENGINE_API void FreeImagePixels(unsigned char* pixels);
105
106/// Style color slots, mapped to the matching ImGui color inside the engine.
107/// @ingroup ui
121
122/// Style var indices (must match ImGuiStyleVar_).
123/// @ingroup ui
124enum StyleVar : int {
127 StyleVar_FramePadding = 11, // ImVec2
129 StyleVar_ItemSpacing = 14, // ImVec2
130};
131
132} // namespace Sleak::UI
int width
int height
StyleColor
Definition UI.hpp:108
PanelFlags
Definition UI.hpp:14
@ StyleColor_ScrollbarBg
Definition UI.hpp:119
@ StyleColor_ChildBg
Definition UI.hpp:111
@ StyleColor_HeaderActive
Definition UI.hpp:118
@ StyleColor_FrameBg
Definition UI.hpp:115
@ StyleColor_ButtonActive
Definition UI.hpp:114
@ StyleColor_ButtonHovered
Definition UI.hpp:113
@ StyleColor_Text
Definition UI.hpp:109
@ StyleColor_HeaderHovered
Definition UI.hpp:117
@ StyleColor_Button
Definition UI.hpp:112
@ StyleColor_Header
Definition UI.hpp:116
@ StyleColor_WindowBg
Definition UI.hpp:110
@ StyleVar_FrameRounding
Definition UI.hpp:128
@ StyleVar_ItemSpacing
Definition UI.hpp:129
@ StyleVar_FramePadding
Definition UI.hpp:127
@ StyleVar_WindowRounding
Definition UI.hpp:126
@ StyleVar_WindowPadding
Definition UI.hpp:125
@ PanelFlags_AutoResize
Definition UI.hpp:17
@ PanelFlags_NoMove
Definition UI.hpp:18
@ PanelFlags_NoFocusOnAppear
Definition UI.hpp:20
@ PanelFlags_None
Definition UI.hpp:15
@ PanelFlags_NoInput
Definition UI.hpp:19
@ PanelFlags_NoTitleBar
Definition UI.hpp:16
Immediate-mode UI calls available to game code.
Definition UI.hpp:10
ENGINE_API void ShutdownTextureCache()
Definition UI.cpp:305
ENGINE_API void PushStyleColor(StyleColor idx, float r, float g, float b, float a)
Pushes a color for one of the StyleColor slots.
Definition UI.cpp:192
ENGINE_API void DrawText(const char *text, float x, float y, float r, float g, float b, float a=1.0f)
Definition UI.cpp:130
ENGINE_API void Separator()
Definition UI.cpp:74
ENGINE_API float GetViewportHeight()
Definition UI.cpp:106
ENGINE_API uint64_t LoadTextureForUI(const std::string &filePath, float *outWidth=nullptr, float *outHeight=nullptr)
Loads an image file and caches it as a UI-bindable texture id, reusing the cache on repeat calls for ...
Definition UI.cpp:288
ENGINE_API bool Button(const char *label)
Definition UI.cpp:62
ENGINE_API float GetViewportWidth()
Definition UI.cpp:102
ENGINE_API void ProgressBar(float fraction, float width=-1.0f, float height=0.0f, const char *overlay=nullptr)
Definition UI.cpp:248
ENGINE_API void FreeImagePixels(unsigned char *pixels)
Definition UI.cpp:321
ENGINE_API void BeginGroup()
Definition UI.cpp:82
ENGINE_API void SetCursorPosY(float y)
Definition UI.cpp:228
ENGINE_API void PushStyleVar(int idx, float val)
Definition UI.cpp:204
ENGINE_API void TextColored(float r, float g, float b, float a, const char *fmt,...)
Definition UI.cpp:44
ENGINE_API unsigned char * LoadImagePixels(const char *path, int *w, int *h)
Load image file into RGBA pixels (caller must free with FreeImagePixels).
Definition UI.cpp:316
ENGINE_API void EndGroup()
Definition UI.cpp:86
ENGINE_API void DrawLine(float x1, float y1, float x2, float y2, float r, float g, float b, float a=1.0f, float thickness=1.0f)
Definition UI.cpp:110
ENGINE_API Sleak::Texture * CreateTextureFromPixels(uint32_t width, uint32_t height, const void *rgbaPixels, uint32_t maxMipLevels=0)
Create a texture from raw RGBA pixel data (for runtime atlas building etc.).
Definition UI.cpp:311
ENGINE_API void PopStyleVar(int count=1)
Definition UI.cpp:212
ENGINE_API void BeginChild(const char *name)
Definition UI.cpp:90
ENGINE_API float GetCursorPosY()
Definition UI.cpp:232
ENGINE_API bool InputText(const char *label, char *buf, size_t bufSize)
Definition UI.cpp:136
ENGINE_API void EndChild()
Definition UI.cpp:98
ENGINE_API void Spacing()
Definition UI.cpp:156
ENGINE_API void SetNextItemWidth(float width)
Definition UI.cpp:152
ENGINE_API void Text(const char *fmt,...)
Definition UI.cpp:37
ENGINE_API bool ButtonSized(const char *label, float width, float height=0.0f)
Definition UI.cpp:144
ENGINE_API void DrawFilledRect(float x, float y, float w, float h, float r, float g, float b, float a=1.0f, float rounding=0.0f)
Definition UI.cpp:123
ENGINE_API void TextDisabled(const char *fmt,...)
Definition UI.cpp:51
ENGINE_API void Dummy(float width, float height)
Definition UI.cpp:160
ENGINE_API void SameLine()
Definition UI.cpp:78
ENGINE_API bool Selectable(const char *label, bool selected)
Definition UI.cpp:148
ENGINE_API void SetNextWindowPos(float x, float y, bool always=false)
Definition UI.cpp:240
ENGINE_API void EndListBox()
Definition UI.cpp:220
ENGINE_API void SetNextWindowSize(float w, float h, bool always=false)
Definition UI.cpp:244
ENGINE_API bool BeginListBox(const char *label, float width, float height)
Definition UI.cpp:216
ENGINE_API void PopStyleColor(int count=1)
Definition UI.cpp:200
ENGINE_API void DrawImage(uint64_t textureID, float x, float y, float width, float height)
Definition UI.cpp:272
ENGINE_API void SetCursorPosX(float x)
Definition UI.cpp:224
ENGINE_API void BeginChildSized(const char *name, float width, float height=0.0f)
Definition UI.cpp:94
ENGINE_API void TextWrapped(const char *fmt,...)
Definition UI.cpp:252
ENGINE_API void BeginPanel(const char *name, float x, float y, float bgAlpha=0.4f, int flags=PanelFlags_NoTitleBar|PanelFlags_AutoResize|PanelFlags_NoMove|PanelFlags_NoInput|PanelFlags_NoFocusOnAppear)
Opens a floating overlay window at (x, y); pair with EndPanel.
Definition UI.cpp:14
ENGINE_API bool Checkbox(const char *label, bool *value)
Definition UI.cpp:58
ENGINE_API void Image(uint64_t textureID, float width, float height)
Definition UI.cpp:259
ENGINE_API void DrawRect(float x, float y, float w, float h, float r, float g, float b, float a=1.0f, float thickness=1.0f, float rounding=0.0f)
Definition UI.cpp:116
ENGINE_API void PushStyleVarVec(int idx, float x, float y)
Definition UI.cpp:208
ENGINE_API bool InputTextString(const char *label, std::string *str)
Definition UI.cpp:140
ENGINE_API float GetContentRegionAvailWidth()
Definition UI.cpp:236
ENGINE_API bool Combo(const char *label, int *current, const char *const items[], int count)
Definition UI.cpp:70
ENGINE_API void EndPanel()
Definition UI.cpp:33
ENGINE_API bool DragFloat(const char *label, float *value, float speed=1.0f, float min=0.0f, float max=0.0f)
Definition UI.cpp:66
Root namespace for everything the engine exposes.
Definition Camera.hpp:10