|
|
@@ -112,6 +112,7 @@ Index of this file:
|
|
|
// Forward declarations and basic types
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
|
+// Forward declarations
|
|
|
struct ImDrawChannel; // Temporary storage to output draw commands out of order, used by ImDrawListSplitter and ImDrawList::ChannelsSplit()
|
|
|
struct ImDrawCmd; // A single draw command within a parent ImDrawList (generally maps to 1 GPU draw call, unless it is a callback)
|
|
|
struct ImDrawData; // All draw command lists required to render the frame + pos/size coordinates to use for the projection matrix.
|
|
|
@@ -135,19 +136,12 @@ struct ImGuiSizeCallbackData; // Callback data when using SetNextWindowSiz
|
|
|
struct ImGuiStorage; // Helper for key->value storage
|
|
|
struct ImGuiStyle; // Runtime data for styling/colors
|
|
|
struct ImGuiTextBuffer; // Helper to hold and append into a text buffer (~string builder)
|
|
|
-struct ImGuiTextFilter; // Helper to parse and apply text filters (e.g. "aaaaa[,bbbb][,ccccc]")
|
|
|
+struct ImGuiTextFilter; // Helper to parse and apply text filters (e.g. "aaaaa[,bbbbb][,ccccc]")
|
|
|
|
|
|
-// Typedefs and Enums/Flags (declared as int for compatibility with old C++, to allow using as flags and to not pollute the top of this file)
|
|
|
-// Use your programming IDE "Go to definition" facility on the names in the central column below to find the actual flags/enum lists.
|
|
|
-#ifndef ImTextureID
|
|
|
-typedef void* ImTextureID; // User data to identify a texture (this is whatever to you want it to be! read the FAQ about ImTextureID in imgui.cpp)
|
|
|
-#endif
|
|
|
-typedef unsigned int ImGuiID; // Unique ID used by widgets (typically hashed from a stack of string)
|
|
|
-#ifndef ImWchar
|
|
|
-#define ImWchar ImWchar16
|
|
|
-#endif
|
|
|
-typedef unsigned short ImWchar16; // A single U16 character for keyboard input/display. We encode them as multi bytes UTF-8 when used in strings.
|
|
|
-typedef unsigned int ImWchar32; // A single U32 character for keyboard input/display. Define ImWchar to ImWchar32 to use it. See imconfig.h .
|
|
|
+// Enums/Flags (declared as int for compatibility with old C++, to allow using as flags and to not pollute the top of this file)
|
|
|
+// - Tip: Use your programming IDE navigation facilities on the names in the _central column_ below to find the actual flags/enum lists!
|
|
|
+// In Visual Studio IDE: CTRL+comma ("Edit.NavigateTo") can follow symbols in comments, whereas CTRL+F12 ("Edit.GoToImplementation") cannot.
|
|
|
+// With Visual Assist installed: ALT+G ("VAssistX.GoToImplementation") can also follow symbols in comments.
|
|
|
typedef int ImGuiCol; // -> enum ImGuiCol_ // Enum: A color identifier for styling
|
|
|
typedef int ImGuiCond; // -> enum ImGuiCond_ // Enum: A condition for many Set*() functions
|
|
|
typedef int ImGuiDataType; // -> enum ImGuiDataType_ // Enum: A primary data type
|
|
|
@@ -168,15 +162,27 @@ typedef int ImGuiDragDropFlags; // -> enum ImGuiDragDropFlags_ // Flags: f
|
|
|
typedef int ImGuiFocusedFlags; // -> enum ImGuiFocusedFlags_ // Flags: for IsWindowFocused()
|
|
|
typedef int ImGuiHoveredFlags; // -> enum ImGuiHoveredFlags_ // Flags: for IsItemHovered(), IsWindowHovered() etc.
|
|
|
typedef int ImGuiInputTextFlags; // -> enum ImGuiInputTextFlags_ // Flags: for InputText(), InputTextMultiline()
|
|
|
+typedef int ImGuiKeyModFlags; // -> enum ImGuiKeyModFlags_ // Flags: for io.KeyMods (Ctrl/Shift/Alt/Super)
|
|
|
typedef int ImGuiSelectableFlags; // -> enum ImGuiSelectableFlags_ // Flags: for Selectable()
|
|
|
typedef int ImGuiTabBarFlags; // -> enum ImGuiTabBarFlags_ // Flags: for BeginTabBar()
|
|
|
typedef int ImGuiTabItemFlags; // -> enum ImGuiTabItemFlags_ // Flags: for BeginTabItem()
|
|
|
typedef int ImGuiTreeNodeFlags; // -> enum ImGuiTreeNodeFlags_ // Flags: for TreeNode(), TreeNodeEx(), CollapsingHeader()
|
|
|
typedef int ImGuiWindowFlags; // -> enum ImGuiWindowFlags_ // Flags: for Begin(), BeginChild()
|
|
|
+
|
|
|
+// Other types
|
|
|
+#ifndef ImTextureID // ImTextureID [configurable type: override in imconfig.h]
|
|
|
+typedef void* ImTextureID; // User data for rendering back-end to identify a texture. This is whatever to you want it to be! read the FAQ about ImTextureID for details.
|
|
|
+#endif
|
|
|
+#ifndef ImWchar // ImWchar [configurable type: override in imconfig.h]
|
|
|
+#define ImWchar ImWchar16 // Storage for a single decoded character/code point, default to 16-bit. Set to ImWchar32 to support larger Unicode planes. Note that we generally support UTF-8 encoded string, this is storage for a decoded character.
|
|
|
+#endif
|
|
|
+typedef unsigned int ImGuiID; // A unique ID used by widgets, typically hashed from a stack of string.
|
|
|
+typedef unsigned short ImWchar16; // A single decoded U16 character/code point for keyboard input/display. We encode them as multi bytes UTF-8 when used in strings.
|
|
|
+typedef unsigned int ImWchar32; // A single decoded U32 character/code point for keyboard input/display. To enable, use '#define ImWchar ImWchar32' in imconfig.h.
|
|
|
typedef int (*ImGuiInputTextCallback)(ImGuiInputTextCallbackData *data);
|
|
|
typedef void (*ImGuiSizeCallback)(ImGuiSizeCallbackData* data);
|
|
|
|
|
|
-// Scalar data types
|
|
|
+// Basic scalar data types
|
|
|
typedef signed char ImS8; // 8-bit signed integer
|
|
|
typedef unsigned char ImU8; // 8-bit unsigned integer
|
|
|
typedef signed short ImS16; // 16-bit signed integer
|
|
|
@@ -195,7 +201,7 @@ typedef signed long long ImS64; // 64-bit signed integer (post C++11)
|
|
|
typedef unsigned long long ImU64; // 64-bit unsigned integer (post C++11)
|
|
|
#endif
|
|
|
|
|
|
-// 2D vector (often used to store positions, sizes, etc.)
|
|
|
+// 2D vector (often used to store positions or sizes)
|
|
|
struct ImVec2
|
|
|
{
|
|
|
float x, y;
|
|
|
@@ -233,7 +239,6 @@ namespace ImGui
|
|
|
IMGUI_API void DestroyContext(ImGuiContext* ctx = NULL); // NULL = destroy current context
|
|
|
IMGUI_API ImGuiContext* GetCurrentContext();
|
|
|
IMGUI_API void SetCurrentContext(ImGuiContext* ctx);
|
|
|
- IMGUI_API bool DebugCheckVersionAndDataLayout(const char* version_str, size_t sz_io, size_t sz_style, size_t sz_vec2, size_t sz_vec4, size_t sz_drawvert, size_t sz_drawidx);
|
|
|
|
|
|
// Main
|
|
|
IMGUI_API ImGuiIO& GetIO(); // access the IO structure (mouse/keyboard/gamepad inputs, time, various configuration options/flags)
|
|
|
@@ -632,7 +637,7 @@ namespace ImGui
|
|
|
IMGUI_API void LogText(const char* fmt, ...) IM_FMTARGS(1); // pass text data straight to log (without being displayed)
|
|
|
|
|
|
// Drag and Drop
|
|
|
- // [BETA API] API may evolve!
|
|
|
+ // - [BETA API] API may evolve!
|
|
|
IMGUI_API bool BeginDragDropSource(ImGuiDragDropFlags flags = 0); // call when the current item is active. If this return true, you can call SetDragDropPayload() + EndDragDropSource()
|
|
|
IMGUI_API bool SetDragDropPayload(const char* type, const void* data, size_t sz, ImGuiCond cond = 0); // type is a user defined string of maximum 32 characters. Strings starting with '_' are reserved for dear imgui internal types. Data is copied and held by imgui.
|
|
|
IMGUI_API void EndDragDropSource(); // only call EndDragDropSource() if BeginDragDropSource() returns true!
|
|
|
@@ -725,7 +730,8 @@ namespace ImGui
|
|
|
IMGUI_API void SetMouseCursor(ImGuiMouseCursor cursor_type); // set desired cursor type
|
|
|
IMGUI_API void CaptureMouseFromApp(bool want_capture_mouse_value = true); // attention: misleading name! manually override io.WantCaptureMouse flag next frame (said flag is entirely left for your application to handle). This is equivalent to setting "io.WantCaptureMouse = want_capture_mouse_value;" after the next NewFrame() call.
|
|
|
|
|
|
- // Clipboard Utilities (also see the LogToClipboard() function to capture or output text data to the clipboard)
|
|
|
+ // Clipboard Utilities
|
|
|
+ // - Also see the LogToClipboard() function to capture GUI into clipboard, or easily output text data to the clipboard.
|
|
|
IMGUI_API const char* GetClipboardText();
|
|
|
IMGUI_API void SetClipboardText(const char* text);
|
|
|
|
|
|
@@ -737,6 +743,9 @@ namespace ImGui
|
|
|
IMGUI_API void SaveIniSettingsToDisk(const char* ini_filename); // this is automatically called (if io.IniFilename is not empty) a few seconds after any modification that should be reflected in the .ini file (and also by DestroyContext).
|
|
|
IMGUI_API const char* SaveIniSettingsToMemory(size_t* out_ini_size = NULL); // return a zero-terminated string with the .ini data which you can save by your own mean. call when io.WantSaveIniSettings is set, then save data by your own mean and clear io.WantSaveIniSettings.
|
|
|
|
|
|
+ // Debug Utilities
|
|
|
+ IMGUI_API bool DebugCheckVersionAndDataLayout(const char* version_str, size_t sz_io, size_t sz_style, size_t sz_vec2, size_t sz_vec4, size_t sz_drawvert, size_t sz_drawidx); // This is called by IMGUI_CHECKVERSION() macro.
|
|
|
+
|
|
|
// Memory Allocators
|
|
|
// - All those functions are not reliant on the current context.
|
|
|
// - If you reload the contents of imgui.cpp at runtime, you may need to call SetCurrentContext() + SetAllocatorFunctions() again because we use global storage for those.
|
|
|
@@ -997,6 +1006,16 @@ enum ImGuiKey_
|
|
|
ImGuiKey_COUNT
|
|
|
};
|
|
|
|
|
|
+// To test io.KeyMods (which is a combination of individual fields io.KeyCtrl, io.KeyShift, io.KeyAlt set by user/back-end)
|
|
|
+enum ImGuiKeyModFlags_
|
|
|
+{
|
|
|
+ ImGuiKeyModFlags_None = 0,
|
|
|
+ ImGuiKeyModFlags_Ctrl = 1 << 0,
|
|
|
+ ImGuiKeyModFlags_Shift = 1 << 1,
|
|
|
+ ImGuiKeyModFlags_Alt = 1 << 2,
|
|
|
+ ImGuiKeyModFlags_Super = 1 << 3
|
|
|
+};
|
|
|
+
|
|
|
// Gamepad/Keyboard directional navigation
|
|
|
// Keyboard: Set io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard to enable. NewFrame() will automatically fill io.NavInputs[] based on your io.KeysDown[] + io.KeyMap[] arrays.
|
|
|
// Gamepad: Set io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad to enable. Back-end: set ImGuiBackendFlags_HasGamepad and fill the io.NavInputs[] fields before calling NewFrame(). Note that io.NavInputs[] is cleared by EndFrame().
|
|
|
@@ -1496,6 +1515,7 @@ struct ImGuiIO
|
|
|
// [Internal] Dear ImGui will maintain those fields. Forward compatibility not guaranteed!
|
|
|
//------------------------------------------------------------------
|
|
|
|
|
|
+ ImGuiKeyModFlags KeyMods; // Key mods flags (same as io.KeyCtrl/KeyShift/KeyAlt/KeySuper but merged into flags), updated by NewFrame()
|
|
|
ImVec2 MousePosPrev; // Previous mouse position (note that MouseDelta is not necessary == MousePos-MousePosPrev, in case either position is invalid)
|
|
|
ImVec2 MouseClickedPos[5]; // Position at time of clicking
|
|
|
double MouseClickedTime[5]; // Time of last click (used to figure out double-click)
|
|
|
@@ -1813,7 +1833,7 @@ struct ImColor
|
|
|
// Hold a series of drawing commands. The user provides a renderer for ImDrawData which essentially contains an array of ImDrawList.
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
|
-// Draw callbacks for advanced uses.
|
|
|
+// ImDrawCallback: Draw callbacks for advanced uses [configurable type: override in imconfig.h]
|
|
|
// NB: You most likely do NOT need to use draw callbacks just to create your own widget or customized UI rendering,
|
|
|
// you can poke into the draw list for that! Draw callback may be useful for example to:
|
|
|
// A) Change your GPU render state,
|
|
|
@@ -1846,9 +1866,9 @@ struct ImDrawCmd
|
|
|
ImDrawCmd() { ElemCount = 0; TextureId = (ImTextureID)NULL; VtxOffset = IdxOffset = 0; UserCallback = NULL; UserCallbackData = NULL; }
|
|
|
};
|
|
|
|
|
|
-// Vertex index
|
|
|
-// (to allow large meshes with 16-bit indices: set 'io.BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset' and handle ImDrawCmd::VtxOffset in the renderer back-end)
|
|
|
-// (to use 32-bit indices: override with '#define ImDrawIdx unsigned int' in imconfig.h)
|
|
|
+// Vertex index, default to 16-bit
|
|
|
+// To allow large meshes with 16-bit indices: set 'io.BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset' and handle ImDrawCmd::VtxOffset in the renderer back-end (recommended).
|
|
|
+// To use 32-bit indices: override with '#define ImDrawIdx unsigned int' in imconfig.h.
|
|
|
#ifndef ImDrawIdx
|
|
|
typedef unsigned short ImDrawIdx;
|
|
|
#endif
|