SleakEngine 1.0.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);
71ENGINE_API void PushStyleColor(int idx, float r, float g, float b, float a);
72ENGINE_API void PopStyleColor(int count = 1);
73ENGINE_API void PushStyleVar(int idx, float val);
74ENGINE_API void PushStyleVarVec(int idx, float x, float y);
75ENGINE_API void PopStyleVar(int count = 1);
76ENGINE_API bool BeginListBox(const char* label, float width, float height);
77ENGINE_API void EndListBox();
78ENGINE_API void SetCursorPosX(float x);
79ENGINE_API void SetCursorPosY(float y);
80ENGINE_API float GetCursorPosY();
81ENGINE_API float GetContentRegionAvailWidth();
82ENGINE_API void SetNextWindowPos(float x, float y, bool always = false);
83ENGINE_API void SetNextWindowSize(float w, float h, bool always = false);
84ENGINE_API void ProgressBar(float fraction, float width = -1.0f, float height = 0.0f, const char* overlay = nullptr);
85ENGINE_API void TextWrapped(const char* fmt, ...);
86
87// Texture display
88ENGINE_API void Image(uint64_t textureID, float width, float height);
89ENGINE_API void DrawImage(uint64_t textureID, float x, float y, float width, float height);
90/// Loads an image file and caches it as a UI-bindable texture id, reusing the cache on repeat calls for the same path.
91ENGINE_API uint64_t LoadTextureForUI(const std::string& filePath, float* outWidth = nullptr, float* outHeight = nullptr);
92ENGINE_API void ShutdownTextureCache(); // engine calls at teardown
93
94/// Create a texture from raw RGBA pixel data (for runtime atlas building etc.).
95ENGINE_API Sleak::Texture* CreateTextureFromPixels(uint32_t width, uint32_t height, const void* rgbaPixels, uint32_t maxMipLevels = 0);
96
97/// Load image file into RGBA pixels (caller must free with FreeImagePixels).
98ENGINE_API unsigned char* LoadImagePixels(const char* path, int* w, int* h);
99ENGINE_API void FreeImagePixels(unsigned char* pixels);
100
101/// Style color indices (mirrors ImGuiCol_).
102/// @ingroup ui
116
117/// Style var indices (must match ImGuiStyleVar_).
118/// @ingroup ui
119enum StyleVar : int {
122 StyleVar_FramePadding = 11, // ImVec2
124 StyleVar_ItemSpacing = 14, // ImVec2
125};
126
127} // namespace Sleak::UI
int width
int height
StyleColor
Definition UI.hpp:103
PanelFlags
Definition UI.hpp:14
@ StyleColor_ScrollbarBg
Definition UI.hpp:114
@ StyleColor_ChildBg
Definition UI.hpp:106
@ StyleColor_HeaderActive
Definition UI.hpp:113
@ StyleColor_FrameBg
Definition UI.hpp:110
@ StyleColor_ButtonActive
Definition UI.hpp:109
@ StyleColor_ButtonHovered
Definition UI.hpp:108
@ StyleColor_Text
Definition UI.hpp:104
@ StyleColor_HeaderHovered
Definition UI.hpp:112
@ StyleColor_Button
Definition UI.hpp:107
@ StyleColor_Header
Definition UI.hpp:111
@ StyleColor_WindowBg
Definition UI.hpp:105
@ StyleVar_FrameRounding
Definition UI.hpp:123
@ StyleVar_ItemSpacing
Definition UI.hpp:124
@ StyleVar_FramePadding
Definition UI.hpp:122
@ StyleVar_WindowRounding
Definition UI.hpp:121
@ StyleVar_WindowPadding
Definition UI.hpp:120
@ 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:273
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:256
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:216
ENGINE_API void PushStyleColor(int idx, float r, float g, float b, float a)
Definition UI.cpp:164
ENGINE_API void FreeImagePixels(unsigned char *pixels)
Definition UI.cpp:289
ENGINE_API void BeginGroup()
Definition UI.cpp:82
ENGINE_API void SetCursorPosY(float y)
Definition UI.cpp:196
ENGINE_API void PushStyleVar(int idx, float val)
Definition UI.cpp:172
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:284
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:279
ENGINE_API void PopStyleVar(int count=1)
Definition UI.cpp:180
ENGINE_API void BeginChild(const char *name)
Definition UI.cpp:90
ENGINE_API float GetCursorPosY()
Definition UI.cpp:200
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:208
ENGINE_API void EndListBox()
Definition UI.cpp:188
ENGINE_API void SetNextWindowSize(float w, float h, bool always=false)
Definition UI.cpp:212
ENGINE_API bool BeginListBox(const char *label, float width, float height)
Definition UI.cpp:184
ENGINE_API void PopStyleColor(int count=1)
Definition UI.cpp:168
ENGINE_API void DrawImage(uint64_t textureID, float x, float y, float width, float height)
Definition UI.cpp:240
ENGINE_API void SetCursorPosX(float x)
Definition UI.cpp:192
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:220
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:227
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:176
ENGINE_API bool InputTextString(const char *label, std::string *str)
Definition UI.cpp:140
ENGINE_API float GetContentRegionAvailWidth()
Definition UI.cpp:204
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