25 #define IMGUI_VERSION "1.89.2"
26 #define IMGUI_VERSION_NUM 18920
27 #define IMGUI_HAS_TABLE
53 #ifdef IMGUI_USER_CONFIG
54 #include IMGUI_USER_CONFIG
76 #ifndef IMGUI_IMPL_API
77 #define IMGUI_IMPL_API IMGUI_API
83 #define IM_ASSERT(_EXPR) assert(_EXPR)
85 #define IM_ARRAYSIZE(_ARR) ((int)(sizeof(_ARR) / sizeof(*(_ARR))))
86 #define IM_UNUSED(_VAR) ((void)(_VAR))
87 #define IM_OFFSETOF(_TYPE,_MEMBER) offsetof(_TYPE, _MEMBER)
88 #define IMGUI_CHECKVERSION() ImGui::DebugCheckVersionAndDataLayout(IMGUI_VERSION, sizeof(ImGuiIO), sizeof(ImGuiStyle), sizeof(ImVec2), sizeof(ImVec4), sizeof(ImDrawVert), sizeof(ImDrawIdx))
91 #if !defined(IMGUI_USE_STB_SPRINTF) && defined(__MINGW32__) && !defined(__clang__)
92 #define IM_FMTARGS(FMT) __attribute__((format(gnu_printf, FMT, FMT+1)))
93 #define IM_FMTLIST(FMT) __attribute__((format(gnu_printf, FMT, 0)))
94 #elif !defined(IMGUI_USE_STB_SPRINTF) && (defined(__clang__) || defined(__GNUC__))
95 #define IM_FMTARGS(FMT) __attribute__((format(printf, FMT, FMT+1)))
96 #define IM_FMTLIST(FMT) __attribute__((format(printf, FMT, 0)))
98 #define IM_FMTARGS(FMT)
99 #define IM_FMTLIST(FMT)
103 #if defined(_MSC_VER) && !defined(__clang__) && !defined(__INTEL_COMPILER) && !defined(IMGUI_DEBUG_PARANOID)
104 #define IM_MSVC_RUNTIME_CHECKS_OFF __pragma(runtime_checks("",off)) __pragma(check_stack(off)) __pragma(strict_gs_check(push,off))
105 #define IM_MSVC_RUNTIME_CHECKS_RESTORE __pragma(runtime_checks("",restore)) __pragma(check_stack()) __pragma(strict_gs_check(pop))
107 #define IM_MSVC_RUNTIME_CHECKS_OFF
108 #define IM_MSVC_RUNTIME_CHECKS_RESTORE
113 #pragma warning (push)
114 #pragma warning (disable: 26495)
116 #if defined(__clang__)
117 #pragma clang diagnostic push
118 #pragma clang diagnostic ignored "-Wold-style-cast"
119 #if __has_warning("-Wzero-as-null-pointer-constant")
120 #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant"
122 #elif defined(__GNUC__)
123 #pragma GCC diagnostic push
124 #pragma GCC diagnostic ignored "-Wpragmas"
125 #pragma GCC diagnostic ignored "-Wclass-memaccess"
170 typedef int ImGuiCol;
171 typedef int ImGuiCond;
172 typedef int ImGuiDataType;
173 typedef int ImGuiDir;
174 typedef int ImGuiMouseButton;
175 typedef int ImGuiMouseCursor;
176 typedef int ImGuiSortDirection;
177 typedef int ImGuiStyleVar;
178 typedef int ImGuiTableBgTarget;
184 typedef int ImDrawFlags;
185 typedef int ImDrawListFlags;
186 typedef int ImFontAtlasFlags;
187 typedef int ImGuiBackendFlags;
188 typedef int ImGuiButtonFlags;
189 typedef int ImGuiColorEditFlags;
190 typedef int ImGuiConfigFlags;
191 typedef int ImGuiComboFlags;
192 typedef int ImGuiDragDropFlags;
193 typedef int ImGuiFocusedFlags;
194 typedef int ImGuiHoveredFlags;
195 typedef int ImGuiInputTextFlags;
196 typedef int ImGuiKeyChord;
197 typedef int ImGuiPopupFlags;
198 typedef int ImGuiSelectableFlags;
199 typedef int ImGuiSliderFlags;
200 typedef int ImGuiTabBarFlags;
201 typedef int ImGuiTabItemFlags;
202 typedef int ImGuiTableFlags;
203 typedef int ImGuiTableColumnFlags;
204 typedef int ImGuiTableRowFlags;
205 typedef int ImGuiTreeNodeFlags;
206 typedef int ImGuiViewportFlags;
207 typedef int ImGuiWindowFlags;
213 typedef void* ImTextureID;
220 typedef unsigned short ImDrawIdx;
224 typedef unsigned int ImGuiID;
225 typedef signed char ImS8;
226 typedef unsigned char ImU8;
227 typedef signed short ImS16;
228 typedef unsigned short ImU16;
229 typedef signed int ImS32;
230 typedef unsigned int ImU32;
231 typedef signed long long ImS64;
232 typedef unsigned long long ImU64;
236 typedef unsigned short ImWchar16;
237 typedef unsigned int ImWchar32;
238 #ifdef IMGUI_USE_WCHAR32
239 typedef ImWchar32 ImWchar;
241 typedef ImWchar16 ImWchar;
247 typedef void* (*ImGuiMemAllocFunc)(
size_t sz,
void* user_data);
248 typedef void (*ImGuiMemFreeFunc)(
void* ptr,
void* user_data);
252 IM_MSVC_RUNTIME_CHECKS_OFF
256 constexpr
ImVec2() : x(0.0f), y(0.0f) { }
257 constexpr
ImVec2(
float _x,
float _y) : x(_x), y(_y) { }
258 float operator[] (
size_t idx)
const { IM_ASSERT(idx == 0 || idx == 1);
return (&x)[idx]; }
259 float& operator[] (
size_t idx) { IM_ASSERT(idx == 0 || idx == 1);
return (&x)[idx]; }
260 #ifdef IM_VEC2_CLASS_EXTRA
269 constexpr
ImVec4() : x(0.0f), y(0.0f), z(0.0f), w(0.0f) { }
270 constexpr
ImVec4(
float _x,
float _y,
float _z,
float _w) : x(_x), y(_y), z(_z), w(_w) { }
271 #ifdef IM_VEC4_CLASS_EXTRA
275 IM_MSVC_RUNTIME_CHECKS_RESTORE
289 IMGUI_API
void DestroyContext(
ImGuiContext* ctx = NULL);
296 IMGUI_API
void NewFrame();
297 IMGUI_API
void EndFrame();
298 IMGUI_API
void Render();
302 IMGUI_API
void ShowDemoWindow(
bool* p_open = NULL);
303 IMGUI_API
void ShowMetricsWindow(
bool* p_open = NULL);
304 IMGUI_API
void ShowDebugLogWindow(
bool* p_open = NULL);
305 IMGUI_API
void ShowStackToolWindow(
bool* p_open = NULL);
306 IMGUI_API
void ShowAboutWindow(
bool* p_open = NULL);
307 IMGUI_API
void ShowStyleEditor(
ImGuiStyle* ref = NULL);
308 IMGUI_API
bool ShowStyleSelector(
const char* label);
309 IMGUI_API
void ShowFontSelector(
const char* label);
310 IMGUI_API
void ShowUserGuide();
311 IMGUI_API
const char* GetVersion();
314 IMGUI_API
void StyleColorsDark(
ImGuiStyle* dst = NULL);
315 IMGUI_API
void StyleColorsLight(
ImGuiStyle* dst = NULL);
316 IMGUI_API
void StyleColorsClassic(
ImGuiStyle* dst = NULL);
330 IMGUI_API
bool Begin(
const char* name,
bool* p_open = NULL, ImGuiWindowFlags flags = 0);
331 IMGUI_API
void End();
341 IMGUI_API
bool BeginChild(
const char* str_id,
const ImVec2& size =
ImVec2(0, 0),
bool border =
false, ImGuiWindowFlags flags = 0);
342 IMGUI_API
bool BeginChild(ImGuiID
id,
const ImVec2& size =
ImVec2(0, 0),
bool border =
false, ImGuiWindowFlags flags = 0);
343 IMGUI_API
void EndChild();
347 IMGUI_API
bool IsWindowAppearing();
348 IMGUI_API
bool IsWindowCollapsed();
349 IMGUI_API
bool IsWindowFocused(ImGuiFocusedFlags flags=0);
350 IMGUI_API
bool IsWindowHovered(ImGuiHoveredFlags flags=0);
352 IMGUI_API
ImVec2 GetWindowPos();
353 IMGUI_API
ImVec2 GetWindowSize();
354 IMGUI_API
float GetWindowWidth();
355 IMGUI_API
float GetWindowHeight();
359 IMGUI_API
void SetNextWindowPos(
const ImVec2& pos, ImGuiCond cond = 0,
const ImVec2& pivot =
ImVec2(0, 0));
360 IMGUI_API
void SetNextWindowSize(
const ImVec2& size, ImGuiCond cond = 0);
361 IMGUI_API
void SetNextWindowSizeConstraints(
const ImVec2& size_min,
const ImVec2& size_max, ImGuiSizeCallback custom_callback = NULL,
void* custom_callback_data = NULL);
362 IMGUI_API
void SetNextWindowContentSize(
const ImVec2& size);
363 IMGUI_API
void SetNextWindowCollapsed(
bool collapsed, ImGuiCond cond = 0);
364 IMGUI_API
void SetNextWindowFocus();
365 IMGUI_API
void SetNextWindowScroll(
const ImVec2& scroll);
366 IMGUI_API
void SetNextWindowBgAlpha(
float alpha);
367 IMGUI_API
void SetWindowPos(
const ImVec2& pos, ImGuiCond cond = 0);
368 IMGUI_API
void SetWindowSize(
const ImVec2& size, ImGuiCond cond = 0);
369 IMGUI_API
void SetWindowCollapsed(
bool collapsed, ImGuiCond cond = 0);
370 IMGUI_API
void SetWindowFocus();
371 IMGUI_API
void SetWindowFontScale(
float scale);
372 IMGUI_API
void SetWindowPos(
const char* name,
const ImVec2& pos, ImGuiCond cond = 0);
373 IMGUI_API
void SetWindowSize(
const char* name,
const ImVec2& size, ImGuiCond cond = 0);
374 IMGUI_API
void SetWindowCollapsed(
const char* name,
bool collapsed, ImGuiCond cond = 0);
375 IMGUI_API
void SetWindowFocus(
const char* name);
380 IMGUI_API
ImVec2 GetContentRegionAvail();
381 IMGUI_API
ImVec2 GetContentRegionMax();
382 IMGUI_API
ImVec2 GetWindowContentRegionMin();
383 IMGUI_API
ImVec2 GetWindowContentRegionMax();
388 IMGUI_API
float GetScrollX();
389 IMGUI_API
float GetScrollY();
390 IMGUI_API
void SetScrollX(
float scroll_x);
391 IMGUI_API
void SetScrollY(
float scroll_y);
392 IMGUI_API
float GetScrollMaxX();
393 IMGUI_API
float GetScrollMaxY();
394 IMGUI_API
void SetScrollHereX(
float center_x_ratio = 0.5f);
395 IMGUI_API
void SetScrollHereY(
float center_y_ratio = 0.5f);
396 IMGUI_API
void SetScrollFromPosX(
float local_x,
float center_x_ratio = 0.5f);
397 IMGUI_API
void SetScrollFromPosY(
float local_y,
float center_y_ratio = 0.5f);
400 IMGUI_API
void PushFont(
ImFont* font);
401 IMGUI_API
void PopFont();
402 IMGUI_API
void PushStyleColor(ImGuiCol idx, ImU32 col);
403 IMGUI_API
void PushStyleColor(ImGuiCol idx,
const ImVec4& col);
404 IMGUI_API
void PopStyleColor(
int count = 1);
405 IMGUI_API
void PushStyleVar(ImGuiStyleVar idx,
float val);
406 IMGUI_API
void PushStyleVar(ImGuiStyleVar idx,
const ImVec2& val);
407 IMGUI_API
void PopStyleVar(
int count = 1);
408 IMGUI_API
void PushAllowKeyboardFocus(
bool allow_keyboard_focus);
409 IMGUI_API
void PopAllowKeyboardFocus();
410 IMGUI_API
void PushButtonRepeat(
bool repeat);
411 IMGUI_API
void PopButtonRepeat();
414 IMGUI_API
void PushItemWidth(
float item_width);
415 IMGUI_API
void PopItemWidth();
416 IMGUI_API
void SetNextItemWidth(
float item_width);
417 IMGUI_API
float CalcItemWidth();
418 IMGUI_API
void PushTextWrapPos(
float wrap_local_pos_x = 0.0f);
419 IMGUI_API
void PopTextWrapPos();
423 IMGUI_API
ImFont* GetFont();
424 IMGUI_API
float GetFontSize();
425 IMGUI_API
ImVec2 GetFontTexUvWhitePixel();
426 IMGUI_API ImU32 GetColorU32(ImGuiCol idx,
float alpha_mul = 1.0f);
427 IMGUI_API ImU32 GetColorU32(
const ImVec4& col);
428 IMGUI_API ImU32 GetColorU32(ImU32 col);
429 IMGUI_API
const ImVec4& GetStyleColorVec4(ImGuiCol idx);
438 IMGUI_API
void Separator();
439 IMGUI_API
void SameLine(
float offset_from_start_x=0.0f,
float spacing=-1.0f);
440 IMGUI_API
void NewLine();
441 IMGUI_API
void Spacing();
442 IMGUI_API
void Dummy(
const ImVec2& size);
443 IMGUI_API
void Indent(
float indent_w = 0.0f);
444 IMGUI_API
void Unindent(
float indent_w = 0.0f);
445 IMGUI_API
void BeginGroup();
446 IMGUI_API
void EndGroup();
447 IMGUI_API
ImVec2 GetCursorPos();
448 IMGUI_API
float GetCursorPosX();
449 IMGUI_API
float GetCursorPosY();
450 IMGUI_API
void SetCursorPos(
const ImVec2& local_pos);
451 IMGUI_API
void SetCursorPosX(
float local_x);
452 IMGUI_API
void SetCursorPosY(
float local_y);
453 IMGUI_API
ImVec2 GetCursorStartPos();
454 IMGUI_API
ImVec2 GetCursorScreenPos();
455 IMGUI_API
void SetCursorScreenPos(
const ImVec2& pos);
456 IMGUI_API
void AlignTextToFramePadding();
457 IMGUI_API
float GetTextLineHeight();
458 IMGUI_API
float GetTextLineHeightWithSpacing();
459 IMGUI_API
float GetFrameHeight();
460 IMGUI_API
float GetFrameHeightWithSpacing();
473 IMGUI_API
void PushID(
const char* str_id);
474 IMGUI_API
void PushID(
const char* str_id_begin,
const char* str_id_end);
475 IMGUI_API
void PushID(
const void* ptr_id);
476 IMGUI_API
void PushID(
int int_id);
477 IMGUI_API
void PopID();
478 IMGUI_API ImGuiID GetID(
const char* str_id);
479 IMGUI_API ImGuiID GetID(
const char* str_id_begin,
const char* str_id_end);
480 IMGUI_API ImGuiID GetID(
const void* ptr_id);
483 IMGUI_API
void TextUnformatted(
const char* text,
const char* text_end = NULL);
484 IMGUI_API
void Text(
const char* fmt, ...) IM_FMTARGS(1);
485 IMGUI_API
void TextV(const
char* fmt, va_list args) IM_FMTLIST(1);
486 IMGUI_API
void TextColored(const
ImVec4& col, const
char* fmt, ...) IM_FMTARGS(2);
487 IMGUI_API
void TextColoredV(const
ImVec4& col, const
char* fmt, va_list args) IM_FMTLIST(2);
488 IMGUI_API
void TextDisabled(const
char* fmt, ...) IM_FMTARGS(1);
489 IMGUI_API
void TextDisabledV(const
char* fmt, va_list args) IM_FMTLIST(1);
490 IMGUI_API
void TextWrapped(const
char* fmt, ...) IM_FMTARGS(1);
491 IMGUI_API
void TextWrappedV(const
char* fmt, va_list args) IM_FMTLIST(1);
492 IMGUI_API
void LabelText(const
char* label, const
char* fmt, ...) IM_FMTARGS(2);
493 IMGUI_API
void LabelTextV(const
char* label, const
char* fmt, va_list args) IM_FMTLIST(2);
494 IMGUI_API
void BulletText(const
char* fmt, ...) IM_FMTARGS(1);
495 IMGUI_API
void BulletTextV(const
char* fmt, va_list args) IM_FMTLIST(1);
500 IMGUI_API
bool Button(const
char* label, const
ImVec2& size =
ImVec2(0, 0));
501 IMGUI_API
bool SmallButton(const
char* label);
502 IMGUI_API
bool InvisibleButton(const
char* str_id, const
ImVec2& size, ImGuiButtonFlags flags = 0);
503 IMGUI_API
bool ArrowButton(const
char* str_id, ImGuiDir dir);
504 IMGUI_API
bool Checkbox(const
char* label,
bool* v);
505 IMGUI_API
bool CheckboxFlags(const
char* label,
int* flags,
int flags_value);
506 IMGUI_API
bool CheckboxFlags(const
char* label,
unsigned int* flags,
unsigned int flags_value);
507 IMGUI_API
bool RadioButton(const
char* label,
bool active);
508 IMGUI_API
bool RadioButton(const
char* label,
int* v,
int v_button);
509 IMGUI_API
void ProgressBar(
float fraction, const
ImVec2& size_arg =
ImVec2(-FLT_MIN, 0), const
char* overlay = NULL);
510 IMGUI_API
void Bullet();
514 IMGUI_API
void Image(ImTextureID user_texture_id, const
ImVec2& size, const
ImVec2& uv0 =
ImVec2(0, 0), const
ImVec2& uv1 =
ImVec2(1, 1), const
ImVec4& tint_col =
ImVec4(1, 1, 1, 1), const
ImVec4& border_col =
ImVec4(0, 0, 0, 0));
515 IMGUI_API
bool ImageButton(const
char* str_id, ImTextureID user_texture_id, const
ImVec2& size, const
ImVec2& uv0 =
ImVec2(0, 0), const
ImVec2& uv1 =
ImVec2(1, 1), const
ImVec4& bg_col =
ImVec4(0, 0, 0, 0), const
ImVec4& tint_col =
ImVec4(1, 1, 1, 1));
520 IMGUI_API
bool BeginCombo(const
char* label, const
char* preview_value, ImGuiComboFlags flags = 0);
521 IMGUI_API
void EndCombo();
522 IMGUI_API
bool Combo(const
char* label,
int* current_item, const
char* const items[],
int items_count,
int popup_max_height_in_items = -1);
523 IMGUI_API
bool Combo(const
char* label,
int* current_item, const
char* items_separated_by_zeros,
int popup_max_height_in_items = -1);
524 IMGUI_API
bool Combo(const
char* label,
int* current_item,
bool(*items_getter)(
void* data,
int idx, const
char** out_text),
void* data,
int items_count,
int popup_max_height_in_items = -1);
538 IMGUI_API
bool DragFloat(const
char* label,
float* v,
float v_speed = 1.0f,
float v_min = 0.0f,
float v_max = 0.0f, const
char* format = "%.3f", ImGuiSliderFlags flags = 0);
539 IMGUI_API
bool DragFloat2(const
char* label,
float v[2],
float v_speed = 1.0f,
float v_min = 0.0f,
float v_max = 0.0f, const
char* format = "%.3f", ImGuiSliderFlags flags = 0);
540 IMGUI_API
bool DragFloat3(const
char* label,
float v[3],
float v_speed = 1.0f,
float v_min = 0.0f,
float v_max = 0.0f, const
char* format = "%.3f", ImGuiSliderFlags flags = 0);
541 IMGUI_API
bool DragFloat4(const
char* label,
float v[4],
float v_speed = 1.0f,
float v_min = 0.0f,
float v_max = 0.0f, const
char* format = "%.3f", ImGuiSliderFlags flags = 0);
542 IMGUI_API
bool DragFloatRange2(const
char* label,
float* v_current_min,
float* v_current_max,
float v_speed = 1.0f,
float v_min = 0.0f,
float v_max = 0.0f, const
char* format = "%.3f", const
char* format_max = NULL, ImGuiSliderFlags flags = 0);
543 IMGUI_API
bool DragInt(const
char* label,
int* v,
float v_speed = 1.0f,
int v_min = 0,
int v_max = 0, const
char* format = "%d", ImGuiSliderFlags flags = 0);
544 IMGUI_API
bool DragInt2(const
char* label,
int v[2],
float v_speed = 1.0f,
int v_min = 0,
int v_max = 0, const
char* format = "%d", ImGuiSliderFlags flags = 0);
545 IMGUI_API
bool DragInt3(const
char* label,
int v[3],
float v_speed = 1.0f,
int v_min = 0,
int v_max = 0, const
char* format = "%d", ImGuiSliderFlags flags = 0);
546 IMGUI_API
bool DragInt4(const
char* label,
int v[4],
float v_speed = 1.0f,
int v_min = 0,
int v_max = 0, const
char* format = "%d", ImGuiSliderFlags flags = 0);
547 IMGUI_API
bool DragIntRange2(const
char* label,
int* v_current_min,
int* v_current_max,
float v_speed = 1.0f,
int v_min = 0,
int v_max = 0, const
char* format = "%d", const
char* format_max = NULL, ImGuiSliderFlags flags = 0);
548 IMGUI_API
bool DragScalar(const
char* label, ImGuiDataType data_type,
void* p_data,
float v_speed = 1.0f, const
void* p_min = NULL, const
void* p_max = NULL, const
char* format = NULL, ImGuiSliderFlags flags = 0);
549 IMGUI_API
bool DragScalarN(const
char* label, ImGuiDataType data_type,
void* p_data,
int components,
float v_speed = 1.0f, const
void* p_min = NULL, const
void* p_max = NULL, const
char* format = NULL, ImGuiSliderFlags flags = 0);
557 IMGUI_API
bool SliderFloat(const
char* label,
float* v,
float v_min,
float v_max, const
char* format = "%.3f", ImGuiSliderFlags flags = 0);
558 IMGUI_API
bool SliderFloat2(const
char* label,
float v[2],
float v_min,
float v_max, const
char* format = "%.3f", ImGuiSliderFlags flags = 0);
559 IMGUI_API
bool SliderFloat3(const
char* label,
float v[3],
float v_min,
float v_max, const
char* format = "%.3f", ImGuiSliderFlags flags = 0);
560 IMGUI_API
bool SliderFloat4(const
char* label,
float v[4],
float v_min,
float v_max, const
char* format = "%.3f", ImGuiSliderFlags flags = 0);
561 IMGUI_API
bool SliderAngle(const
char* label,
float* v_rad,
float v_degrees_min = -360.0f,
float v_degrees_max = +360.0f, const
char* format = "%.0f deg", ImGuiSliderFlags flags = 0);
562 IMGUI_API
bool SliderInt(const
char* label,
int* v,
int v_min,
int v_max, const
char* format = "%d", ImGuiSliderFlags flags = 0);
563 IMGUI_API
bool SliderInt2(const
char* label,
int v[2],
int v_min,
int v_max, const
char* format = "%d", ImGuiSliderFlags flags = 0);
564 IMGUI_API
bool SliderInt3(const
char* label,
int v[3],
int v_min,
int v_max, const
char* format = "%d", ImGuiSliderFlags flags = 0);
565 IMGUI_API
bool SliderInt4(const
char* label,
int v[4],
int v_min,
int v_max, const
char* format = "%d", ImGuiSliderFlags flags = 0);
566 IMGUI_API
bool SliderScalar(const
char* label, ImGuiDataType data_type,
void* p_data, const
void* p_min, const
void* p_max, const
char* format = NULL, ImGuiSliderFlags flags = 0);
567 IMGUI_API
bool SliderScalarN(const
char* label, ImGuiDataType data_type,
void* p_data,
int components, const
void* p_min, const
void* p_max, const
char* format = NULL, ImGuiSliderFlags flags = 0);
568 IMGUI_API
bool VSliderFloat(const
char* label, const
ImVec2& size,
float* v,
float v_min,
float v_max, const
char* format = "%.3f", ImGuiSliderFlags flags = 0);
569 IMGUI_API
bool VSliderInt(const
char* label, const
ImVec2& size,
int* v,
int v_min,
int v_max, const
char* format = "%d", ImGuiSliderFlags flags = 0);
570 IMGUI_API
bool VSliderScalar(const
char* label, const
ImVec2& size, ImGuiDataType data_type,
void* p_data, const
void* p_min, const
void* p_max, const
char* format = NULL, ImGuiSliderFlags flags = 0);
575 IMGUI_API
bool InputText(const
char* label,
char* buf,
size_t buf_size, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL,
void* user_data = NULL);
576 IMGUI_API
bool InputTextMultiline(const
char* label,
char* buf,
size_t buf_size, const
ImVec2& size =
ImVec2(0, 0), ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL,
void* user_data = NULL);
577 IMGUI_API
bool InputTextWithHint(const
char* label, const
char* hint,
char* buf,
size_t buf_size, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL,
void* user_data = NULL);
578 IMGUI_API
bool InputFloat(const
char* label,
float* v,
float step = 0.0f,
float step_fast = 0.0f, const
char* format = "%.3f", ImGuiInputTextFlags flags = 0);
579 IMGUI_API
bool InputFloat2(const
char* label,
float v[2], const
char* format = "%.3f", ImGuiInputTextFlags flags = 0);
580 IMGUI_API
bool InputFloat3(const
char* label,
float v[3], const
char* format = "%.3f", ImGuiInputTextFlags flags = 0);
581 IMGUI_API
bool InputFloat4(const
char* label,
float v[4], const
char* format = "%.3f", ImGuiInputTextFlags flags = 0);
582 IMGUI_API
bool InputInt(const
char* label,
int* v,
int step = 1,
int step_fast = 100, ImGuiInputTextFlags flags = 0);
583 IMGUI_API
bool InputInt2(const
char* label,
int v[2], ImGuiInputTextFlags flags = 0);
584 IMGUI_API
bool InputInt3(const
char* label,
int v[3], ImGuiInputTextFlags flags = 0);
585 IMGUI_API
bool InputInt4(const
char* label,
int v[4], ImGuiInputTextFlags flags = 0);
586 IMGUI_API
bool InputDouble(const
char* label,
double* v,
double step = 0.0,
double step_fast = 0.0, const
char* format = "%.6f", ImGuiInputTextFlags flags = 0);
587 IMGUI_API
bool InputScalar(const
char* label, ImGuiDataType data_type,
void* p_data, const
void* p_step = NULL, const
void* p_step_fast = NULL, const
char* format = NULL, ImGuiInputTextFlags flags = 0);
588 IMGUI_API
bool InputScalarN(const
char* label, ImGuiDataType data_type,
void* p_data,
int components, const
void* p_step = NULL, const
void* p_step_fast = NULL, const
char* format = NULL, ImGuiInputTextFlags flags = 0);
593 IMGUI_API
bool ColorEdit3(const
char* label,
float col[3], ImGuiColorEditFlags flags = 0);
594 IMGUI_API
bool ColorEdit4(const
char* label,
float col[4], ImGuiColorEditFlags flags = 0);
595 IMGUI_API
bool ColorPicker3(const
char* label,
float col[3], ImGuiColorEditFlags flags = 0);
596 IMGUI_API
bool ColorPicker4(const
char* label,
float col[4], ImGuiColorEditFlags flags = 0, const
float* ref_col = NULL);
597 IMGUI_API
bool ColorButton(const
char* desc_id, const
ImVec4& col, ImGuiColorEditFlags flags = 0, const
ImVec2& size =
ImVec2(0, 0));
598 IMGUI_API
void SetColorEditOptions(ImGuiColorEditFlags flags);
602 IMGUI_API
bool TreeNode(const
char* label);
603 IMGUI_API
bool TreeNode(const
char* str_id, const
char* fmt, ...) IM_FMTARGS(2);
604 IMGUI_API
bool TreeNode(const
void* ptr_id, const
char* fmt, ...) IM_FMTARGS(2);
605 IMGUI_API
bool TreeNodeV(const
char* str_id, const
char* fmt, va_list args) IM_FMTLIST(2);
606 IMGUI_API
bool TreeNodeV(const
void* ptr_id, const
char* fmt, va_list args) IM_FMTLIST(2);
607 IMGUI_API
bool TreeNodeEx(const
char* label, ImGuiTreeNodeFlags flags = 0);
608 IMGUI_API
bool TreeNodeEx(const
char* str_id, ImGuiTreeNodeFlags flags, const
char* fmt, ...) IM_FMTARGS(3);
609 IMGUI_API
bool TreeNodeEx(const
void* ptr_id, ImGuiTreeNodeFlags flags, const
char* fmt, ...) IM_FMTARGS(3);
610 IMGUI_API
bool TreeNodeExV(const
char* str_id, ImGuiTreeNodeFlags flags, const
char* fmt, va_list args) IM_FMTLIST(3);
611 IMGUI_API
bool TreeNodeExV(const
void* ptr_id, ImGuiTreeNodeFlags flags, const
char* fmt, va_list args) IM_FMTLIST(3);
612 IMGUI_API
void TreePush(const
char* str_id);
613 IMGUI_API
void TreePush(const
void* ptr_id);
614 IMGUI_API
void TreePop();
615 IMGUI_API
float GetTreeNodeToLabelSpacing();
616 IMGUI_API
bool CollapsingHeader(const
char* label, ImGuiTreeNodeFlags flags = 0);
617 IMGUI_API
bool CollapsingHeader(const
char* label,
bool* p_visible, ImGuiTreeNodeFlags flags = 0);
618 IMGUI_API
void SetNextItemOpen(
bool is_open, ImGuiCond cond = 0);
623 IMGUI_API
bool Selectable(const
char* label,
bool selected = false, ImGuiSelectableFlags flags = 0, const
ImVec2& size =
ImVec2(0, 0));
624 IMGUI_API
bool Selectable(const
char* label,
bool* p_selected, ImGuiSelectableFlags flags = 0, const
ImVec2& size =
ImVec2(0, 0));
632 IMGUI_API
bool BeginListBox(const
char* label, const
ImVec2& size =
ImVec2(0, 0));
633 IMGUI_API
void EndListBox();
634 IMGUI_API
bool ListBox(const
char* label,
int* current_item, const
char* const items[],
int items_count,
int height_in_items = -1);
635 IMGUI_API
bool ListBox(const
char* label,
int* current_item,
bool (*items_getter)(
void* data,
int idx, const
char** out_text),
void* data,
int items_count,
int height_in_items = -1);
639 IMGUI_API
void PlotLines(const
char* label, const
float* values,
int values_count,
int values_offset = 0, const
char* overlay_text = NULL,
float scale_min = FLT_MAX,
float scale_max = FLT_MAX,
ImVec2 graph_size =
ImVec2(0, 0),
int stride = sizeof(
float));
640 IMGUI_API
void PlotLines(const
char* label,
float(*values_getter)(
void* data,
int idx),
void* data,
int values_count,
int values_offset = 0, const
char* overlay_text = NULL,
float scale_min = FLT_MAX,
float scale_max = FLT_MAX,
ImVec2 graph_size =
ImVec2(0, 0));
641 IMGUI_API
void PlotHistogram(const
char* label, const
float* values,
int values_count,
int values_offset = 0, const
char* overlay_text = NULL,
float scale_min = FLT_MAX,
float scale_max = FLT_MAX,
ImVec2 graph_size =
ImVec2(0, 0),
int stride = sizeof(
float));
642 IMGUI_API
void PlotHistogram(const
char* label,
float(*values_getter)(
void* data,
int idx),
void* data,
int values_count,
int values_offset = 0, const
char* overlay_text = NULL,
float scale_min = FLT_MAX,
float scale_max = FLT_MAX,
ImVec2 graph_size =
ImVec2(0, 0));
646 IMGUI_API
void Value(const
char* prefix,
bool b);
647 IMGUI_API
void Value(const
char* prefix,
int v);
648 IMGUI_API
void Value(const
char* prefix,
unsigned int v);
649 IMGUI_API
void Value(const
char* prefix,
float v, const
char* float_format = NULL);
656 IMGUI_API
bool BeginMenuBar();
657 IMGUI_API
void EndMenuBar();
658 IMGUI_API
bool BeginMainMenuBar();
659 IMGUI_API
void EndMainMenuBar();
660 IMGUI_API
bool BeginMenu(const
char* label,
bool enabled = true);
661 IMGUI_API
void EndMenu();
662 IMGUI_API
bool MenuItem(const
char* label, const
char* shortcut = NULL,
bool selected = false,
bool enabled = true);
663 IMGUI_API
bool MenuItem(const
char* label, const
char* shortcut,
bool* p_selected,
bool enabled = true);
667 IMGUI_API
void BeginTooltip();
668 IMGUI_API
void EndTooltip();
669 IMGUI_API
void SetTooltip(const
char* fmt, ...) IM_FMTARGS(1);
670 IMGUI_API
void SetTooltipV(const
char* fmt, va_list args) IM_FMTLIST(1);
684 IMGUI_API
bool BeginPopup(const
char* str_id, ImGuiWindowFlags flags = 0);
685 IMGUI_API
bool BeginPopupModal(const
char* name,
bool* p_open = NULL, ImGuiWindowFlags flags = 0);
686 IMGUI_API
void EndPopup();
696 IMGUI_API
void OpenPopup(const
char* str_id, ImGuiPopupFlags popup_flags = 0);
697 IMGUI_API
void OpenPopup(ImGuiID
id, ImGuiPopupFlags popup_flags = 0);
698 IMGUI_API
void OpenPopupOnItemClick(const
char* str_id = NULL, ImGuiPopupFlags popup_flags = 1);
699 IMGUI_API
void CloseCurrentPopup();
706 IMGUI_API
bool BeginPopupContextItem(const
char* str_id = NULL, ImGuiPopupFlags popup_flags = 1);
707 IMGUI_API
bool BeginPopupContextWindow(const
char* str_id = NULL, ImGuiPopupFlags popup_flags = 1);
708 IMGUI_API
bool BeginPopupContextVoid(const
char* str_id = NULL, ImGuiPopupFlags popup_flags = 1);
714 IMGUI_API
bool IsPopupOpen(const
char* str_id, ImGuiPopupFlags flags = 0);
739 IMGUI_API
bool BeginTable(const
char* str_id,
int column, ImGuiTableFlags flags = 0, const
ImVec2& outer_size =
ImVec2(0.0f, 0.0f),
float inner_width = 0.0f);
740 IMGUI_API
void EndTable();
741 IMGUI_API
void TableNextRow(ImGuiTableRowFlags row_flags = 0,
float min_row_height = 0.0f);
742 IMGUI_API
bool TableNextColumn();
743 IMGUI_API
bool TableSetColumnIndex(
int column_n);
753 IMGUI_API
void TableSetupColumn(const
char* label, ImGuiTableColumnFlags flags = 0,
float init_width_or_weight = 0.0f, ImGuiID user_id = 0);
754 IMGUI_API
void TableSetupScrollFreeze(
int cols,
int rows);
755 IMGUI_API
void TableHeadersRow();
756 IMGUI_API
void TableHeader(const
char* label);
765 IMGUI_API
int TableGetColumnCount();
766 IMGUI_API
int TableGetColumnIndex();
767 IMGUI_API
int TableGetRowIndex();
768 IMGUI_API const
char* TableGetColumnName(
int column_n = -1);
769 IMGUI_API ImGuiTableColumnFlags TableGetColumnFlags(
int column_n = -1);
770 IMGUI_API
void TableSetColumnEnabled(
int column_n,
bool v);
771 IMGUI_API
void TableSetBgColor(ImGuiTableBgTarget target, ImU32 color,
int column_n = -1);
775 IMGUI_API
void Columns(
int count = 1, const
char*
id = NULL,
bool border = true);
776 IMGUI_API
void NextColumn();
777 IMGUI_API
int GetColumnIndex();
778 IMGUI_API
float GetColumnWidth(
int column_index = -1);
779 IMGUI_API
void SetColumnWidth(
int column_index,
float width);
780 IMGUI_API
float GetColumnOffset(
int column_index = -1);
781 IMGUI_API
void SetColumnOffset(
int column_index,
float offset_x);
782 IMGUI_API
int GetColumnsCount();
786 IMGUI_API
bool BeginTabBar(const
char* str_id, ImGuiTabBarFlags flags = 0);
787 IMGUI_API
void EndTabBar();
788 IMGUI_API
bool BeginTabItem(const
char* label,
bool* p_open = NULL, ImGuiTabItemFlags flags = 0);
789 IMGUI_API
void EndTabItem();
790 IMGUI_API
bool TabItemButton(const
char* label, ImGuiTabItemFlags flags = 0);
791 IMGUI_API
void SetTabItemClosed(const
char* tab_or_docked_window_label);
795 IMGUI_API
void LogToTTY(
int auto_open_depth = -1);
796 IMGUI_API
void LogToFile(
int auto_open_depth = -1, const
char* filename = NULL);
797 IMGUI_API
void LogToClipboard(
int auto_open_depth = -1);
798 IMGUI_API
void LogFinish();
799 IMGUI_API
void LogButtons();
800 IMGUI_API
void LogText(const
char* fmt, ...) IM_FMTARGS(1);
801 IMGUI_API
void LogTextV(const
char* fmt, va_list args) IM_FMTLIST(1);
808 IMGUI_API
bool BeginDragDropSource(ImGuiDragDropFlags flags = 0);
809 IMGUI_API
bool SetDragDropPayload(const
char* type, const
void* data,
size_t sz, ImGuiCond cond = 0);
810 IMGUI_API
void EndDragDropSource();
811 IMGUI_API
bool BeginDragDropTarget();
812 IMGUI_API const
ImGuiPayload* AcceptDragDropPayload(const
char* type, ImGuiDragDropFlags flags = 0);
813 IMGUI_API
void EndDragDropTarget();
820 IMGUI_API
void BeginDisabled(
bool disabled = true);
821 IMGUI_API
void EndDisabled();
825 IMGUI_API
void PushClipRect(const
ImVec2& clip_rect_min, const
ImVec2& clip_rect_max,
bool intersect_with_current_clip_rect);
826 IMGUI_API
void PopClipRect();
830 IMGUI_API
void SetItemDefaultFocus();
831 IMGUI_API
void SetKeyboardFocusHere(
int offset = 0);
836 IMGUI_API
bool IsItemHovered(ImGuiHoveredFlags flags = 0);
837 IMGUI_API
bool IsItemActive();
838 IMGUI_API
bool IsItemFocused();
839 IMGUI_API
bool IsItemClicked(ImGuiMouseButton mouse_button = 0);
840 IMGUI_API
bool IsItemVisible();
841 IMGUI_API
bool IsItemEdited();
842 IMGUI_API
bool IsItemActivated();
843 IMGUI_API
bool IsItemDeactivated();
844 IMGUI_API
bool IsItemDeactivatedAfterEdit();
845 IMGUI_API
bool IsItemToggledOpen();
846 IMGUI_API
bool IsAnyItemHovered();
847 IMGUI_API
bool IsAnyItemActive();
848 IMGUI_API
bool IsAnyItemFocused();
849 IMGUI_API ImGuiID GetItemID();
850 IMGUI_API
ImVec2 GetItemRectMin();
851 IMGUI_API
ImVec2 GetItemRectMax();
852 IMGUI_API
ImVec2 GetItemRectSize();
853 IMGUI_API
void SetItemAllowOverlap();
862 IMGUI_API
ImDrawList* GetBackgroundDrawList();
863 IMGUI_API
ImDrawList* GetForegroundDrawList();
866 IMGUI_API
bool IsRectVisible(const
ImVec2& size);
867 IMGUI_API
bool IsRectVisible(const
ImVec2& rect_min, const
ImVec2& rect_max);
868 IMGUI_API
double GetTime();
869 IMGUI_API
int GetFrameCount();
871 IMGUI_API const
char* GetStyleColorName(ImGuiCol idx);
874 IMGUI_API
bool BeginChildFrame(ImGuiID
id, const
ImVec2& size, ImGuiWindowFlags flags = 0);
875 IMGUI_API
void EndChildFrame();
878 IMGUI_API
ImVec2 CalcTextSize(const
char* text, const
char* text_end = NULL,
bool hide_text_after_double_hash = false,
float wrap_width = -1.0f);
881 IMGUI_API
ImVec4 ColorConvertU32ToFloat4(ImU32 in);
882 IMGUI_API ImU32 ColorConvertFloat4ToU32(const
ImVec4& in);
883 IMGUI_API
void ColorConvertRGBtoHSV(
float r,
float g,
float b,
float& out_h,
float& out_s,
float& out_v);
884 IMGUI_API
void ColorConvertHSVtoRGB(
float h,
float s,
float v,
float& out_r,
float& out_g,
float& out_b);
891 IMGUI_API
bool IsKeyDown(ImGuiKey key);
892 IMGUI_API
bool IsKeyPressed(ImGuiKey key,
bool repeat = true);
893 IMGUI_API
bool IsKeyReleased(ImGuiKey key);
894 IMGUI_API
int GetKeyPressedAmount(ImGuiKey key,
float repeat_delay,
float rate);
895 IMGUI_API const
char* GetKeyName(ImGuiKey key);
896 IMGUI_API
void SetNextFrameWantCaptureKeyboard(
bool want_capture_keyboard);
902 IMGUI_API
bool IsMouseDown(ImGuiMouseButton button);
903 IMGUI_API
bool IsMouseClicked(ImGuiMouseButton button,
bool repeat = false);
904 IMGUI_API
bool IsMouseReleased(ImGuiMouseButton button);
905 IMGUI_API
bool IsMouseDoubleClicked(ImGuiMouseButton button);
906 IMGUI_API
int GetMouseClickedCount(ImGuiMouseButton button);
907 IMGUI_API
bool IsMouseHoveringRect(const
ImVec2& r_min, const
ImVec2& r_max,
bool clip = true);
908 IMGUI_API
bool IsMousePosValid(const
ImVec2* mouse_pos = NULL);
909 IMGUI_API
bool IsAnyMouseDown();
910 IMGUI_API
ImVec2 GetMousePos();
911 IMGUI_API
ImVec2 GetMousePosOnOpeningCurrentPopup();
912 IMGUI_API
bool IsMouseDragging(ImGuiMouseButton button,
float lock_threshold = -1.0f);
913 IMGUI_API
ImVec2 GetMouseDragDelta(ImGuiMouseButton button = 0,
float lock_threshold = -1.0f);
914 IMGUI_API
void ResetMouseDragDelta(ImGuiMouseButton button = 0);
915 IMGUI_API ImGuiMouseCursor GetMouseCursor();
916 IMGUI_API
void SetMouseCursor(ImGuiMouseCursor cursor_type);
917 IMGUI_API
void SetNextFrameWantCaptureMouse(
bool want_capture_mouse);
921 IMGUI_API const
char* GetClipboardText();
922 IMGUI_API
void SetClipboardText(const
char* text);
928 IMGUI_API
void LoadIniSettingsFromDisk(const
char* ini_filename);
929 IMGUI_API
void LoadIniSettingsFromMemory(const
char* ini_data,
size_t ini_size=0);
930 IMGUI_API
void SaveIniSettingsToDisk(const
char* ini_filename);
931 IMGUI_API const
char* SaveIniSettingsToMemory(
size_t* out_ini_size = NULL);
934 IMGUI_API
void DebugTextEncoding(const
char* text);
935 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);
941 IMGUI_API
void SetAllocatorFunctions(ImGuiMemAllocFunc alloc_func, ImGuiMemFreeFunc free_func,
void* user_data = NULL);
942 IMGUI_API
void GetAllocatorFunctions(ImGuiMemAllocFunc* p_alloc_func, ImGuiMemFreeFunc* p_free_func,
void** p_user_data);
943 IMGUI_API
void* MemAlloc(
size_t size);
944 IMGUI_API
void MemFree(
void* ptr);
954 enum ImGuiWindowFlags_
956 ImGuiWindowFlags_None = 0,
957 ImGuiWindowFlags_NoTitleBar = 1 << 0,
958 ImGuiWindowFlags_NoResize = 1 << 1,
959 ImGuiWindowFlags_NoMove = 1 << 2,
960 ImGuiWindowFlags_NoScrollbar = 1 << 3,
961 ImGuiWindowFlags_NoScrollWithMouse = 1 << 4,
962 ImGuiWindowFlags_NoCollapse = 1 << 5,
963 ImGuiWindowFlags_AlwaysAutoResize = 1 << 6,
964 ImGuiWindowFlags_NoBackground = 1 << 7,
965 ImGuiWindowFlags_NoSavedSettings = 1 << 8,
966 ImGuiWindowFlags_NoMouseInputs = 1 << 9,
967 ImGuiWindowFlags_MenuBar = 1 << 10,
968 ImGuiWindowFlags_HorizontalScrollbar = 1 << 11,
969 ImGuiWindowFlags_NoFocusOnAppearing = 1 << 12,
970 ImGuiWindowFlags_NoBringToFrontOnFocus = 1 << 13,
971 ImGuiWindowFlags_AlwaysVerticalScrollbar= 1 << 14,
972 ImGuiWindowFlags_AlwaysHorizontalScrollbar=1<< 15,
973 ImGuiWindowFlags_AlwaysUseWindowPadding = 1 << 16,
974 ImGuiWindowFlags_NoNavInputs = 1 << 18,
975 ImGuiWindowFlags_NoNavFocus = 1 << 19,
976 ImGuiWindowFlags_UnsavedDocument = 1 << 20,
977 ImGuiWindowFlags_NoNav = ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus,
978 ImGuiWindowFlags_NoDecoration = ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoCollapse,
979 ImGuiWindowFlags_NoInputs = ImGuiWindowFlags_NoMouseInputs | ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus,
982 ImGuiWindowFlags_NavFlattened = 1 << 23,
983 ImGuiWindowFlags_ChildWindow = 1 << 24,
984 ImGuiWindowFlags_Tooltip = 1 << 25,
985 ImGuiWindowFlags_Popup = 1 << 26,
986 ImGuiWindowFlags_Modal = 1 << 27,
987 ImGuiWindowFlags_ChildMenu = 1 << 28,
992 enum ImGuiInputTextFlags_
994 ImGuiInputTextFlags_None = 0,
995 ImGuiInputTextFlags_CharsDecimal = 1 << 0,
996 ImGuiInputTextFlags_CharsHexadecimal = 1 << 1,
997 ImGuiInputTextFlags_CharsUppercase = 1 << 2,
998 ImGuiInputTextFlags_CharsNoBlank = 1 << 3,
999 ImGuiInputTextFlags_AutoSelectAll = 1 << 4,
1000 ImGuiInputTextFlags_EnterReturnsTrue = 1 << 5,
1001 ImGuiInputTextFlags_CallbackCompletion = 1 << 6,
1002 ImGuiInputTextFlags_CallbackHistory = 1 << 7,
1003 ImGuiInputTextFlags_CallbackAlways = 1 << 8,
1004 ImGuiInputTextFlags_CallbackCharFilter = 1 << 9,
1005 ImGuiInputTextFlags_AllowTabInput = 1 << 10,
1006 ImGuiInputTextFlags_CtrlEnterForNewLine = 1 << 11,
1007 ImGuiInputTextFlags_NoHorizontalScroll = 1 << 12,
1008 ImGuiInputTextFlags_AlwaysOverwrite = 1 << 13,
1009 ImGuiInputTextFlags_ReadOnly = 1 << 14,
1010 ImGuiInputTextFlags_Password = 1 << 15,
1011 ImGuiInputTextFlags_NoUndoRedo = 1 << 16,
1012 ImGuiInputTextFlags_CharsScientific = 1 << 17,
1013 ImGuiInputTextFlags_CallbackResize = 1 << 18,
1014 ImGuiInputTextFlags_CallbackEdit = 1 << 19,
1015 ImGuiInputTextFlags_EscapeClearsAll = 1 << 20,
1018 #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
1019 ImGuiInputTextFlags_AlwaysInsertMode = ImGuiInputTextFlags_AlwaysOverwrite
1024 enum ImGuiTreeNodeFlags_
1026 ImGuiTreeNodeFlags_None = 0,
1027 ImGuiTreeNodeFlags_Selected = 1 << 0,
1028 ImGuiTreeNodeFlags_Framed = 1 << 1,
1029 ImGuiTreeNodeFlags_AllowItemOverlap = 1 << 2,
1030 ImGuiTreeNodeFlags_NoTreePushOnOpen = 1 << 3,
1031 ImGuiTreeNodeFlags_NoAutoOpenOnLog = 1 << 4,
1032 ImGuiTreeNodeFlags_DefaultOpen = 1 << 5,
1033 ImGuiTreeNodeFlags_OpenOnDoubleClick = 1 << 6,
1034 ImGuiTreeNodeFlags_OpenOnArrow = 1 << 7,
1035 ImGuiTreeNodeFlags_Leaf = 1 << 8,
1036 ImGuiTreeNodeFlags_Bullet = 1 << 9,
1037 ImGuiTreeNodeFlags_FramePadding = 1 << 10,
1038 ImGuiTreeNodeFlags_SpanAvailWidth = 1 << 11,
1039 ImGuiTreeNodeFlags_SpanFullWidth = 1 << 12,
1040 ImGuiTreeNodeFlags_NavLeftJumpsBackHere = 1 << 13,
1042 ImGuiTreeNodeFlags_CollapsingHeader = ImGuiTreeNodeFlags_Framed | ImGuiTreeNodeFlags_NoTreePushOnOpen | ImGuiTreeNodeFlags_NoAutoOpenOnLog,
1053 enum ImGuiPopupFlags_
1055 ImGuiPopupFlags_None = 0,
1056 ImGuiPopupFlags_MouseButtonLeft = 0,
1057 ImGuiPopupFlags_MouseButtonRight = 1,
1058 ImGuiPopupFlags_MouseButtonMiddle = 2,
1059 ImGuiPopupFlags_MouseButtonMask_ = 0x1F,
1060 ImGuiPopupFlags_MouseButtonDefault_ = 1,
1061 ImGuiPopupFlags_NoOpenOverExistingPopup = 1 << 5,
1062 ImGuiPopupFlags_NoOpenOverItems = 1 << 6,
1063 ImGuiPopupFlags_AnyPopupId = 1 << 7,
1064 ImGuiPopupFlags_AnyPopupLevel = 1 << 8,
1065 ImGuiPopupFlags_AnyPopup = ImGuiPopupFlags_AnyPopupId | ImGuiPopupFlags_AnyPopupLevel,
1069 enum ImGuiSelectableFlags_
1071 ImGuiSelectableFlags_None = 0,
1072 ImGuiSelectableFlags_DontClosePopups = 1 << 0,
1073 ImGuiSelectableFlags_SpanAllColumns = 1 << 1,
1074 ImGuiSelectableFlags_AllowDoubleClick = 1 << 2,
1075 ImGuiSelectableFlags_Disabled = 1 << 3,
1076 ImGuiSelectableFlags_AllowItemOverlap = 1 << 4,
1080 enum ImGuiComboFlags_
1082 ImGuiComboFlags_None = 0,
1083 ImGuiComboFlags_PopupAlignLeft = 1 << 0,
1084 ImGuiComboFlags_HeightSmall = 1 << 1,
1085 ImGuiComboFlags_HeightRegular = 1 << 2,
1086 ImGuiComboFlags_HeightLarge = 1 << 3,
1087 ImGuiComboFlags_HeightLargest = 1 << 4,
1088 ImGuiComboFlags_NoArrowButton = 1 << 5,
1089 ImGuiComboFlags_NoPreview = 1 << 6,
1090 ImGuiComboFlags_HeightMask_ = ImGuiComboFlags_HeightSmall | ImGuiComboFlags_HeightRegular | ImGuiComboFlags_HeightLarge | ImGuiComboFlags_HeightLargest,
1094 enum ImGuiTabBarFlags_
1096 ImGuiTabBarFlags_None = 0,
1097 ImGuiTabBarFlags_Reorderable = 1 << 0,
1098 ImGuiTabBarFlags_AutoSelectNewTabs = 1 << 1,
1099 ImGuiTabBarFlags_TabListPopupButton = 1 << 2,
1100 ImGuiTabBarFlags_NoCloseWithMiddleMouseButton = 1 << 3,
1101 ImGuiTabBarFlags_NoTabListScrollingButtons = 1 << 4,
1102 ImGuiTabBarFlags_NoTooltip = 1 << 5,
1103 ImGuiTabBarFlags_FittingPolicyResizeDown = 1 << 6,
1104 ImGuiTabBarFlags_FittingPolicyScroll = 1 << 7,
1105 ImGuiTabBarFlags_FittingPolicyMask_ = ImGuiTabBarFlags_FittingPolicyResizeDown | ImGuiTabBarFlags_FittingPolicyScroll,
1106 ImGuiTabBarFlags_FittingPolicyDefault_ = ImGuiTabBarFlags_FittingPolicyResizeDown,
1110 enum ImGuiTabItemFlags_
1112 ImGuiTabItemFlags_None = 0,
1113 ImGuiTabItemFlags_UnsavedDocument = 1 << 0,
1114 ImGuiTabItemFlags_SetSelected = 1 << 1,
1115 ImGuiTabItemFlags_NoCloseWithMiddleMouseButton = 1 << 2,
1116 ImGuiTabItemFlags_NoPushId = 1 << 3,
1117 ImGuiTabItemFlags_NoTooltip = 1 << 4,
1118 ImGuiTabItemFlags_NoReorder = 1 << 5,
1119 ImGuiTabItemFlags_Leading = 1 << 6,
1120 ImGuiTabItemFlags_Trailing = 1 << 7,
1145 enum ImGuiTableFlags_
1148 ImGuiTableFlags_None = 0,
1149 ImGuiTableFlags_Resizable = 1 << 0,
1150 ImGuiTableFlags_Reorderable = 1 << 1,
1151 ImGuiTableFlags_Hideable = 1 << 2,
1152 ImGuiTableFlags_Sortable = 1 << 3,
1153 ImGuiTableFlags_NoSavedSettings = 1 << 4,
1154 ImGuiTableFlags_ContextMenuInBody = 1 << 5,
1156 ImGuiTableFlags_RowBg = 1 << 6,
1157 ImGuiTableFlags_BordersInnerH = 1 << 7,
1158 ImGuiTableFlags_BordersOuterH = 1 << 8,
1159 ImGuiTableFlags_BordersInnerV = 1 << 9,
1160 ImGuiTableFlags_BordersOuterV = 1 << 10,
1161 ImGuiTableFlags_BordersH = ImGuiTableFlags_BordersInnerH | ImGuiTableFlags_BordersOuterH,
1162 ImGuiTableFlags_BordersV = ImGuiTableFlags_BordersInnerV | ImGuiTableFlags_BordersOuterV,
1163 ImGuiTableFlags_BordersInner = ImGuiTableFlags_BordersInnerV | ImGuiTableFlags_BordersInnerH,
1164 ImGuiTableFlags_BordersOuter = ImGuiTableFlags_BordersOuterV | ImGuiTableFlags_BordersOuterH,
1165 ImGuiTableFlags_Borders = ImGuiTableFlags_BordersInner | ImGuiTableFlags_BordersOuter,
1166 ImGuiTableFlags_NoBordersInBody = 1 << 11,
1167 ImGuiTableFlags_NoBordersInBodyUntilResize = 1 << 12,
1169 ImGuiTableFlags_SizingFixedFit = 1 << 13,
1170 ImGuiTableFlags_SizingFixedSame = 2 << 13,
1171 ImGuiTableFlags_SizingStretchProp = 3 << 13,
1172 ImGuiTableFlags_SizingStretchSame = 4 << 13,
1174 ImGuiTableFlags_NoHostExtendX = 1 << 16,
1175 ImGuiTableFlags_NoHostExtendY = 1 << 17,
1176 ImGuiTableFlags_NoKeepColumnsVisible = 1 << 18,
1177 ImGuiTableFlags_PreciseWidths = 1 << 19,
1179 ImGuiTableFlags_NoClip = 1 << 20,
1181 ImGuiTableFlags_PadOuterX = 1 << 21,
1182 ImGuiTableFlags_NoPadOuterX = 1 << 22,
1183 ImGuiTableFlags_NoPadInnerX = 1 << 23,
1185 ImGuiTableFlags_ScrollX = 1 << 24,
1186 ImGuiTableFlags_ScrollY = 1 << 25,
1188 ImGuiTableFlags_SortMulti = 1 << 26,
1189 ImGuiTableFlags_SortTristate = 1 << 27,
1192 ImGuiTableFlags_SizingMask_ = ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_SizingFixedSame | ImGuiTableFlags_SizingStretchProp | ImGuiTableFlags_SizingStretchSame,
1196 enum ImGuiTableColumnFlags_
1199 ImGuiTableColumnFlags_None = 0,
1200 ImGuiTableColumnFlags_Disabled = 1 << 0,
1201 ImGuiTableColumnFlags_DefaultHide = 1 << 1,
1202 ImGuiTableColumnFlags_DefaultSort = 1 << 2,
1203 ImGuiTableColumnFlags_WidthStretch = 1 << 3,
1204 ImGuiTableColumnFlags_WidthFixed = 1 << 4,
1205 ImGuiTableColumnFlags_NoResize = 1 << 5,
1206 ImGuiTableColumnFlags_NoReorder = 1 << 6,
1207 ImGuiTableColumnFlags_NoHide = 1 << 7,
1208 ImGuiTableColumnFlags_NoClip = 1 << 8,
1209 ImGuiTableColumnFlags_NoSort = 1 << 9,
1210 ImGuiTableColumnFlags_NoSortAscending = 1 << 10,
1211 ImGuiTableColumnFlags_NoSortDescending = 1 << 11,
1212 ImGuiTableColumnFlags_NoHeaderLabel = 1 << 12,
1213 ImGuiTableColumnFlags_NoHeaderWidth = 1 << 13,
1214 ImGuiTableColumnFlags_PreferSortAscending = 1 << 14,
1215 ImGuiTableColumnFlags_PreferSortDescending = 1 << 15,
1216 ImGuiTableColumnFlags_IndentEnable = 1 << 16,
1217 ImGuiTableColumnFlags_IndentDisable = 1 << 17,
1220 ImGuiTableColumnFlags_IsEnabled = 1 << 24,
1221 ImGuiTableColumnFlags_IsVisible = 1 << 25,
1222 ImGuiTableColumnFlags_IsSorted = 1 << 26,
1223 ImGuiTableColumnFlags_IsHovered = 1 << 27,
1226 ImGuiTableColumnFlags_WidthMask_ = ImGuiTableColumnFlags_WidthStretch | ImGuiTableColumnFlags_WidthFixed,
1227 ImGuiTableColumnFlags_IndentMask_ = ImGuiTableColumnFlags_IndentEnable | ImGuiTableColumnFlags_IndentDisable,
1228 ImGuiTableColumnFlags_StatusMask_ = ImGuiTableColumnFlags_IsEnabled | ImGuiTableColumnFlags_IsVisible | ImGuiTableColumnFlags_IsSorted | ImGuiTableColumnFlags_IsHovered,
1229 ImGuiTableColumnFlags_NoDirectResize_ = 1 << 30,
1233 enum ImGuiTableRowFlags_
1235 ImGuiTableRowFlags_None = 0,
1236 ImGuiTableRowFlags_Headers = 1 << 0,
1248 enum ImGuiTableBgTarget_
1250 ImGuiTableBgTarget_None = 0,
1251 ImGuiTableBgTarget_RowBg0 = 1,
1252 ImGuiTableBgTarget_RowBg1 = 2,
1253 ImGuiTableBgTarget_CellBg = 3,
1257 enum ImGuiFocusedFlags_
1259 ImGuiFocusedFlags_None = 0,
1260 ImGuiFocusedFlags_ChildWindows = 1 << 0,
1261 ImGuiFocusedFlags_RootWindow = 1 << 1,
1262 ImGuiFocusedFlags_AnyWindow = 1 << 2,
1263 ImGuiFocusedFlags_NoPopupHierarchy = 1 << 3,
1265 ImGuiFocusedFlags_RootAndChildWindows = ImGuiFocusedFlags_RootWindow | ImGuiFocusedFlags_ChildWindows,
1271 enum ImGuiHoveredFlags_
1273 ImGuiHoveredFlags_None = 0,
1274 ImGuiHoveredFlags_ChildWindows = 1 << 0,
1275 ImGuiHoveredFlags_RootWindow = 1 << 1,
1276 ImGuiHoveredFlags_AnyWindow = 1 << 2,
1277 ImGuiHoveredFlags_NoPopupHierarchy = 1 << 3,
1279 ImGuiHoveredFlags_AllowWhenBlockedByPopup = 1 << 5,
1281 ImGuiHoveredFlags_AllowWhenBlockedByActiveItem = 1 << 7,
1282 ImGuiHoveredFlags_AllowWhenOverlapped = 1 << 8,
1283 ImGuiHoveredFlags_AllowWhenDisabled = 1 << 9,
1284 ImGuiHoveredFlags_NoNavOverride = 1 << 10,
1285 ImGuiHoveredFlags_RectOnly = ImGuiHoveredFlags_AllowWhenBlockedByPopup | ImGuiHoveredFlags_AllowWhenBlockedByActiveItem | ImGuiHoveredFlags_AllowWhenOverlapped,
1286 ImGuiHoveredFlags_RootAndChildWindows = ImGuiHoveredFlags_RootWindow | ImGuiHoveredFlags_ChildWindows,
1289 ImGuiHoveredFlags_DelayNormal = 1 << 11,
1290 ImGuiHoveredFlags_DelayShort = 1 << 12,
1291 ImGuiHoveredFlags_NoSharedDelay = 1 << 13,
1295 enum ImGuiDragDropFlags_
1297 ImGuiDragDropFlags_None = 0,
1299 ImGuiDragDropFlags_SourceNoPreviewTooltip = 1 << 0,
1300 ImGuiDragDropFlags_SourceNoDisableHover = 1 << 1,
1301 ImGuiDragDropFlags_SourceNoHoldToOpenOthers = 1 << 2,
1302 ImGuiDragDropFlags_SourceAllowNullID = 1 << 3,
1303 ImGuiDragDropFlags_SourceExtern = 1 << 4,
1304 ImGuiDragDropFlags_SourceAutoExpirePayload = 1 << 5,
1306 ImGuiDragDropFlags_AcceptBeforeDelivery = 1 << 10,
1307 ImGuiDragDropFlags_AcceptNoDrawDefaultRect = 1 << 11,
1308 ImGuiDragDropFlags_AcceptNoPreviewTooltip = 1 << 12,
1309 ImGuiDragDropFlags_AcceptPeekOnly = ImGuiDragDropFlags_AcceptBeforeDelivery | ImGuiDragDropFlags_AcceptNoDrawDefaultRect,
1313 #define IMGUI_PAYLOAD_TYPE_COLOR_3F "_COL3F"
1314 #define IMGUI_PAYLOAD_TYPE_COLOR_4F "_COL4F"
1327 ImGuiDataType_Float,
1328 ImGuiDataType_Double,
1344 enum ImGuiSortDirection_
1346 ImGuiSortDirection_None = 0,
1347 ImGuiSortDirection_Ascending = 1,
1348 ImGuiSortDirection_Descending = 2
1361 ImGuiKey_RightArrow,
1374 ImGuiKey_LeftCtrl, ImGuiKey_LeftShift, ImGuiKey_LeftAlt, ImGuiKey_LeftSuper,
1375 ImGuiKey_RightCtrl, ImGuiKey_RightShift, ImGuiKey_RightAlt, ImGuiKey_RightSuper,
1377 ImGuiKey_0, ImGuiKey_1, ImGuiKey_2, ImGuiKey_3, ImGuiKey_4, ImGuiKey_5, ImGuiKey_6, ImGuiKey_7, ImGuiKey_8, ImGuiKey_9,
1378 ImGuiKey_A, ImGuiKey_B, ImGuiKey_C, ImGuiKey_D, ImGuiKey_E, ImGuiKey_F, ImGuiKey_G, ImGuiKey_H, ImGuiKey_I, ImGuiKey_J,
1379 ImGuiKey_K, ImGuiKey_L, ImGuiKey_M, ImGuiKey_N, ImGuiKey_O, ImGuiKey_P, ImGuiKey_Q, ImGuiKey_R, ImGuiKey_S, ImGuiKey_T,
1380 ImGuiKey_U, ImGuiKey_V, ImGuiKey_W, ImGuiKey_X, ImGuiKey_Y, ImGuiKey_Z,
1381 ImGuiKey_F1, ImGuiKey_F2, ImGuiKey_F3, ImGuiKey_F4, ImGuiKey_F5, ImGuiKey_F6,
1382 ImGuiKey_F7, ImGuiKey_F8, ImGuiKey_F9, ImGuiKey_F10, ImGuiKey_F11, ImGuiKey_F12,
1383 ImGuiKey_Apostrophe,
1390 ImGuiKey_LeftBracket,
1392 ImGuiKey_RightBracket,
1393 ImGuiKey_GraveAccent,
1395 ImGuiKey_ScrollLock,
1397 ImGuiKey_PrintScreen,
1399 ImGuiKey_Keypad0, ImGuiKey_Keypad1, ImGuiKey_Keypad2, ImGuiKey_Keypad3, ImGuiKey_Keypad4,
1400 ImGuiKey_Keypad5, ImGuiKey_Keypad6, ImGuiKey_Keypad7, ImGuiKey_Keypad8, ImGuiKey_Keypad9,
1401 ImGuiKey_KeypadDecimal,
1402 ImGuiKey_KeypadDivide,
1403 ImGuiKey_KeypadMultiply,
1404 ImGuiKey_KeypadSubtract,
1406 ImGuiKey_KeypadEnter,
1407 ImGuiKey_KeypadEqual,
1411 ImGuiKey_GamepadStart,
1412 ImGuiKey_GamepadBack,
1413 ImGuiKey_GamepadFaceLeft,
1414 ImGuiKey_GamepadFaceRight,
1415 ImGuiKey_GamepadFaceUp,
1416 ImGuiKey_GamepadFaceDown,
1417 ImGuiKey_GamepadDpadLeft,
1418 ImGuiKey_GamepadDpadRight,
1419 ImGuiKey_GamepadDpadUp,
1420 ImGuiKey_GamepadDpadDown,
1427 ImGuiKey_GamepadLStickLeft,
1428 ImGuiKey_GamepadLStickRight,
1429 ImGuiKey_GamepadLStickUp,
1430 ImGuiKey_GamepadLStickDown,
1431 ImGuiKey_GamepadRStickLeft,
1432 ImGuiKey_GamepadRStickRight,
1433 ImGuiKey_GamepadRStickUp,
1434 ImGuiKey_GamepadRStickDown,
1438 ImGuiKey_MouseLeft, ImGuiKey_MouseRight, ImGuiKey_MouseMiddle, ImGuiKey_MouseX1, ImGuiKey_MouseX2, ImGuiKey_MouseWheelX, ImGuiKey_MouseWheelY,
1441 ImGuiKey_ReservedForModCtrl, ImGuiKey_ReservedForModShift, ImGuiKey_ReservedForModAlt, ImGuiKey_ReservedForModSuper,
1453 ImGuiMod_Ctrl = 1 << 12,
1454 ImGuiMod_Shift = 1 << 13,
1455 ImGuiMod_Alt = 1 << 14,
1456 ImGuiMod_Super = 1 << 15,
1457 ImGuiMod_Shortcut = 1 << 11,
1458 ImGuiMod_Mask_ = 0xF800,
1462 ImGuiKey_NamedKey_BEGIN = 512,
1463 ImGuiKey_NamedKey_END = ImGuiKey_COUNT,
1464 ImGuiKey_NamedKey_COUNT = ImGuiKey_NamedKey_END - ImGuiKey_NamedKey_BEGIN,
1465 #ifdef IMGUI_DISABLE_OBSOLETE_KEYIO
1466 ImGuiKey_KeysData_SIZE = ImGuiKey_NamedKey_COUNT,
1467 ImGuiKey_KeysData_OFFSET = ImGuiKey_NamedKey_BEGIN,
1469 ImGuiKey_KeysData_SIZE = ImGuiKey_COUNT,
1470 ImGuiKey_KeysData_OFFSET = 0,
1473 #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
1474 ImGuiKey_ModCtrl = ImGuiMod_Ctrl, ImGuiKey_ModShift = ImGuiMod_Shift, ImGuiKey_ModAlt = ImGuiMod_Alt, ImGuiKey_ModSuper = ImGuiMod_Super,
1475 ImGuiKey_KeyPadEnter = ImGuiKey_KeypadEnter,
1479 #ifndef IMGUI_DISABLE_OBSOLETE_KEYIO
1485 ImGuiNavInput_Activate, ImGuiNavInput_Cancel, ImGuiNavInput_Input, ImGuiNavInput_Menu, ImGuiNavInput_DpadLeft, ImGuiNavInput_DpadRight, ImGuiNavInput_DpadUp, ImGuiNavInput_DpadDown,
1486 ImGuiNavInput_LStickLeft, ImGuiNavInput_LStickRight, ImGuiNavInput_LStickUp, ImGuiNavInput_LStickDown, ImGuiNavInput_FocusPrev, ImGuiNavInput_FocusNext, ImGuiNavInput_TweakSlow, ImGuiNavInput_TweakFast,
1487 ImGuiNavInput_COUNT,
1492 enum ImGuiConfigFlags_
1494 ImGuiConfigFlags_None = 0,
1495 ImGuiConfigFlags_NavEnableKeyboard = 1 << 0,
1496 ImGuiConfigFlags_NavEnableGamepad = 1 << 1,
1497 ImGuiConfigFlags_NavEnableSetMousePos = 1 << 2,
1498 ImGuiConfigFlags_NavNoCaptureKeyboard = 1 << 3,
1499 ImGuiConfigFlags_NoMouse = 1 << 4,
1500 ImGuiConfigFlags_NoMouseCursorChange = 1 << 5,
1503 ImGuiConfigFlags_IsSRGB = 1 << 20,
1504 ImGuiConfigFlags_IsTouchScreen = 1 << 21,
1508 enum ImGuiBackendFlags_
1510 ImGuiBackendFlags_None = 0,
1511 ImGuiBackendFlags_HasGamepad = 1 << 0,
1512 ImGuiBackendFlags_HasMouseCursors = 1 << 1,
1513 ImGuiBackendFlags_HasSetMousePos = 1 << 2,
1514 ImGuiBackendFlags_RendererHasVtxOffset = 1 << 3,
1521 ImGuiCol_TextDisabled,
1526 ImGuiCol_BorderShadow,
1528 ImGuiCol_FrameBgHovered,
1529 ImGuiCol_FrameBgActive,
1531 ImGuiCol_TitleBgActive,
1532 ImGuiCol_TitleBgCollapsed,
1534 ImGuiCol_ScrollbarBg,
1535 ImGuiCol_ScrollbarGrab,
1536 ImGuiCol_ScrollbarGrabHovered,
1537 ImGuiCol_ScrollbarGrabActive,
1539 ImGuiCol_SliderGrab,
1540 ImGuiCol_SliderGrabActive,
1542 ImGuiCol_ButtonHovered,
1543 ImGuiCol_ButtonActive,
1545 ImGuiCol_HeaderHovered,
1546 ImGuiCol_HeaderActive,
1548 ImGuiCol_SeparatorHovered,
1549 ImGuiCol_SeparatorActive,
1550 ImGuiCol_ResizeGrip,
1551 ImGuiCol_ResizeGripHovered,
1552 ImGuiCol_ResizeGripActive,
1554 ImGuiCol_TabHovered,
1556 ImGuiCol_TabUnfocused,
1557 ImGuiCol_TabUnfocusedActive,
1559 ImGuiCol_PlotLinesHovered,
1560 ImGuiCol_PlotHistogram,
1561 ImGuiCol_PlotHistogramHovered,
1562 ImGuiCol_TableHeaderBg,
1563 ImGuiCol_TableBorderStrong,
1564 ImGuiCol_TableBorderLight,
1565 ImGuiCol_TableRowBg,
1566 ImGuiCol_TableRowBgAlt,
1567 ImGuiCol_TextSelectedBg,
1568 ImGuiCol_DragDropTarget,
1569 ImGuiCol_NavHighlight,
1570 ImGuiCol_NavWindowingHighlight,
1571 ImGuiCol_NavWindowingDimBg,
1572 ImGuiCol_ModalWindowDimBg,
1586 ImGuiStyleVar_Alpha,
1587 ImGuiStyleVar_DisabledAlpha,
1588 ImGuiStyleVar_WindowPadding,
1589 ImGuiStyleVar_WindowRounding,
1590 ImGuiStyleVar_WindowBorderSize,
1591 ImGuiStyleVar_WindowMinSize,
1592 ImGuiStyleVar_WindowTitleAlign,
1593 ImGuiStyleVar_ChildRounding,
1594 ImGuiStyleVar_ChildBorderSize,
1595 ImGuiStyleVar_PopupRounding,
1596 ImGuiStyleVar_PopupBorderSize,
1597 ImGuiStyleVar_FramePadding,
1598 ImGuiStyleVar_FrameRounding,
1599 ImGuiStyleVar_FrameBorderSize,
1600 ImGuiStyleVar_ItemSpacing,
1601 ImGuiStyleVar_ItemInnerSpacing,
1602 ImGuiStyleVar_IndentSpacing,
1603 ImGuiStyleVar_CellPadding,
1604 ImGuiStyleVar_ScrollbarSize,
1605 ImGuiStyleVar_ScrollbarRounding,
1606 ImGuiStyleVar_GrabMinSize,
1607 ImGuiStyleVar_GrabRounding,
1608 ImGuiStyleVar_TabRounding,
1609 ImGuiStyleVar_ButtonTextAlign,
1610 ImGuiStyleVar_SelectableTextAlign,
1615 enum ImGuiButtonFlags_
1617 ImGuiButtonFlags_None = 0,
1618 ImGuiButtonFlags_MouseButtonLeft = 1 << 0,
1619 ImGuiButtonFlags_MouseButtonRight = 1 << 1,
1620 ImGuiButtonFlags_MouseButtonMiddle = 1 << 2,
1623 ImGuiButtonFlags_MouseButtonMask_ = ImGuiButtonFlags_MouseButtonLeft | ImGuiButtonFlags_MouseButtonRight | ImGuiButtonFlags_MouseButtonMiddle,
1624 ImGuiButtonFlags_MouseButtonDefault_ = ImGuiButtonFlags_MouseButtonLeft,
1628 enum ImGuiColorEditFlags_
1630 ImGuiColorEditFlags_None = 0,
1631 ImGuiColorEditFlags_NoAlpha = 1 << 1,
1632 ImGuiColorEditFlags_NoPicker = 1 << 2,
1633 ImGuiColorEditFlags_NoOptions = 1 << 3,
1634 ImGuiColorEditFlags_NoSmallPreview = 1 << 4,
1635 ImGuiColorEditFlags_NoInputs = 1 << 5,
1636 ImGuiColorEditFlags_NoTooltip = 1 << 6,
1637 ImGuiColorEditFlags_NoLabel = 1 << 7,
1638 ImGuiColorEditFlags_NoSidePreview = 1 << 8,
1639 ImGuiColorEditFlags_NoDragDrop = 1 << 9,
1640 ImGuiColorEditFlags_NoBorder = 1 << 10,
1643 ImGuiColorEditFlags_AlphaBar = 1 << 16,
1644 ImGuiColorEditFlags_AlphaPreview = 1 << 17,
1645 ImGuiColorEditFlags_AlphaPreviewHalf= 1 << 18,
1646 ImGuiColorEditFlags_HDR = 1 << 19,
1647 ImGuiColorEditFlags_DisplayRGB = 1 << 20,
1648 ImGuiColorEditFlags_DisplayHSV = 1 << 21,
1649 ImGuiColorEditFlags_DisplayHex = 1 << 22,
1650 ImGuiColorEditFlags_Uint8 = 1 << 23,
1651 ImGuiColorEditFlags_Float = 1 << 24,
1652 ImGuiColorEditFlags_PickerHueBar = 1 << 25,
1653 ImGuiColorEditFlags_PickerHueWheel = 1 << 26,
1654 ImGuiColorEditFlags_InputRGB = 1 << 27,
1655 ImGuiColorEditFlags_InputHSV = 1 << 28,
1659 ImGuiColorEditFlags_DefaultOptions_ = ImGuiColorEditFlags_Uint8 | ImGuiColorEditFlags_DisplayRGB | ImGuiColorEditFlags_InputRGB | ImGuiColorEditFlags_PickerHueBar,
1662 ImGuiColorEditFlags_DisplayMask_ = ImGuiColorEditFlags_DisplayRGB | ImGuiColorEditFlags_DisplayHSV | ImGuiColorEditFlags_DisplayHex,
1663 ImGuiColorEditFlags_DataTypeMask_ = ImGuiColorEditFlags_Uint8 | ImGuiColorEditFlags_Float,
1664 ImGuiColorEditFlags_PickerMask_ = ImGuiColorEditFlags_PickerHueWheel | ImGuiColorEditFlags_PickerHueBar,
1665 ImGuiColorEditFlags_InputMask_ = ImGuiColorEditFlags_InputRGB | ImGuiColorEditFlags_InputHSV,
1674 enum ImGuiSliderFlags_
1676 ImGuiSliderFlags_None = 0,
1677 ImGuiSliderFlags_AlwaysClamp = 1 << 4,
1678 ImGuiSliderFlags_Logarithmic = 1 << 5,
1679 ImGuiSliderFlags_NoRoundToFormat = 1 << 6,
1680 ImGuiSliderFlags_NoInput = 1 << 7,
1681 ImGuiSliderFlags_InvalidMask_ = 0x7000000F,
1684 #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
1685 ImGuiSliderFlags_ClampOnInput = ImGuiSliderFlags_AlwaysClamp,
1691 enum ImGuiMouseButton_
1693 ImGuiMouseButton_Left = 0,
1694 ImGuiMouseButton_Right = 1,
1695 ImGuiMouseButton_Middle = 2,
1696 ImGuiMouseButton_COUNT = 5
1701 enum ImGuiMouseCursor_
1703 ImGuiMouseCursor_None = -1,
1704 ImGuiMouseCursor_Arrow = 0,
1705 ImGuiMouseCursor_TextInput,
1706 ImGuiMouseCursor_ResizeAll,
1707 ImGuiMouseCursor_ResizeNS,
1708 ImGuiMouseCursor_ResizeEW,
1709 ImGuiMouseCursor_ResizeNESW,
1710 ImGuiMouseCursor_ResizeNWSE,
1711 ImGuiMouseCursor_Hand,
1712 ImGuiMouseCursor_NotAllowed,
1713 ImGuiMouseCursor_COUNT
1722 ImGuiCond_Always = 1 << 0,
1723 ImGuiCond_Once = 1 << 1,
1724 ImGuiCond_FirstUseEver = 1 << 2,
1725 ImGuiCond_Appearing = 1 << 3,
1739 inline void*
operator new(size_t,
ImNewWrapper,
void* ptr) {
return ptr; }
1740 inline void operator delete(
void*,
ImNewWrapper,
void*) {}
1741 #define IM_ALLOC(_SIZE) ImGui::MemAlloc(_SIZE)
1742 #define IM_FREE(_PTR) ImGui::MemFree(_PTR)
1743 #define IM_PLACEMENT_NEW(_PTR) new(ImNewWrapper(), _PTR)
1744 #define IM_NEW(_TYPE) new(ImNewWrapper(), ImGui::MemAlloc(sizeof(_TYPE))) _TYPE
1745 template<
typename T>
void IM_DELETE(T* p) {
if (p) { p->~T(); ImGui::MemFree(p); } }
1758 IM_MSVC_RUNTIME_CHECKS_OFF
1759 template<
typename T>
1767 typedef T value_type;
1768 typedef value_type* iterator;
1769 typedef const value_type* const_iterator;
1772 inline ImVector() { Size = Capacity = 0; Data = NULL; }
1773 inline ImVector(
const ImVector<T>& src) { Size = Capacity = 0; Data = NULL; operator=(src); }
1774 inline ImVector<T>& operator=(
const ImVector<T>& src) { clear(); resize(src.Size);
if (src.Data) memcpy(Data, src.Data, (
size_t)Size *
sizeof(T));
return *
this; }
1775 inline ~
ImVector() {
if (Data) IM_FREE(Data); }
1777 inline void clear() {
if (Data) { Size = Capacity = 0; IM_FREE(Data); Data = NULL; } }
1778 inline void clear_delete() {
for (
int n = 0; n < Size; n++) IM_DELETE(Data[n]); clear(); }
1779 inline void clear_destruct() {
for (
int n = 0; n < Size; n++) Data[n].~T(); clear(); }
1781 inline bool empty()
const {
return Size == 0; }
1782 inline int size()
const {
return Size; }
1783 inline int size_in_bytes()
const {
return Size * (int)
sizeof(T); }
1784 inline int max_size()
const {
return 0x7FFFFFFF / (int)
sizeof(T); }
1785 inline int capacity()
const {
return Capacity; }
1786 inline T& operator[](
int i) { IM_ASSERT(i >= 0 && i < Size);
return Data[i]; }
1787 inline const T& operator[](
int i)
const { IM_ASSERT(i >= 0 && i < Size);
return Data[i]; }
1789 inline T* begin() {
return Data; }
1790 inline const T* begin()
const {
return Data; }
1791 inline T* end() {
return Data + Size; }
1792 inline const T* end()
const {
return Data + Size; }
1793 inline T& front() { IM_ASSERT(Size > 0);
return Data[0]; }
1794 inline const T& front()
const { IM_ASSERT(Size > 0);
return Data[0]; }
1795 inline T& back() { IM_ASSERT(Size > 0);
return Data[Size - 1]; }
1796 inline const T& back()
const { IM_ASSERT(Size > 0);
return Data[Size - 1]; }
1797 inline void swap(
ImVector<T>& rhs) {
int rhs_size = rhs.Size; rhs.Size = Size; Size = rhs_size;
int rhs_cap = rhs.Capacity; rhs.Capacity = Capacity; Capacity = rhs_cap; T* rhs_data = rhs.Data; rhs.Data = Data; Data = rhs_data; }
1799 inline int _grow_capacity(
int sz)
const {
int new_capacity = Capacity ? (Capacity + Capacity / 2) : 8;
return new_capacity > sz ? new_capacity : sz; }
1800 inline void resize(
int new_size) {
if (new_size > Capacity) reserve(_grow_capacity(new_size)); Size = new_size; }
1801 inline void resize(
int new_size,
const T& v) {
if (new_size > Capacity) reserve(_grow_capacity(new_size));
if (new_size > Size)
for (
int n = Size; n < new_size; n++) memcpy(&Data[n], &v,
sizeof(v)); Size = new_size; }
1802 inline void shrink(
int new_size) { IM_ASSERT(new_size <= Size); Size = new_size; }
1803 inline void reserve(
int new_capacity) {
if (new_capacity <= Capacity)
return; T* new_data = (T*)IM_ALLOC((
size_t)new_capacity *
sizeof(T));
if (Data) { memcpy(new_data, Data, (
size_t)Size *
sizeof(T)); IM_FREE(Data); } Data = new_data; Capacity = new_capacity; }
1804 inline void reserve_discard(
int new_capacity) {
if (new_capacity <= Capacity)
return;
if (Data) IM_FREE(Data); Data = (T*)IM_ALLOC((
size_t)new_capacity *
sizeof(T)); Capacity = new_capacity; }
1807 inline void push_back(
const T& v) {
if (Size == Capacity) reserve(_grow_capacity(Size + 1)); memcpy(&Data[Size], &v,
sizeof(v)); Size++; }
1808 inline void pop_back() { IM_ASSERT(Size > 0); Size--; }
1809 inline void push_front(
const T& v) {
if (Size == 0) push_back(v);
else insert(Data, v); }
1810 inline T* erase(
const T* it) { IM_ASSERT(it >= Data && it < Data + Size);
const ptrdiff_t off = it - Data; memmove(Data + off, Data + off + 1, ((
size_t)Size - (
size_t)off - 1) *
sizeof(T)); Size--;
return Data + off; }
1811 inline T* erase(
const T* it,
const T* it_last){ IM_ASSERT(it >= Data && it < Data + Size && it_last >= it && it_last <= Data + Size);
const ptrdiff_t count = it_last - it;
const ptrdiff_t off = it - Data; memmove(Data + off, Data + off + count, ((
size_t)Size - (
size_t)off - (
size_t)count) *
sizeof(T)); Size -= (int)count;
return Data + off; }
1812 inline T* erase_unsorted(
const T* it) { IM_ASSERT(it >= Data && it < Data + Size);
const ptrdiff_t off = it - Data;
if (it < Data + Size - 1) memcpy(Data + off, Data + Size - 1,
sizeof(T)); Size--;
return Data + off; }
1813 inline T* insert(
const T* it,
const T& v) { IM_ASSERT(it >= Data && it <= Data + Size);
const ptrdiff_t off = it - Data;
if (Size == Capacity) reserve(_grow_capacity(Size + 1));
if (off < (
int)Size) memmove(Data + off + 1, Data + off, ((
size_t)Size - (
size_t)off) *
sizeof(T)); memcpy(&Data[off], &v,
sizeof(v)); Size++;
return Data + off; }
1814 inline bool contains(
const T& v)
const {
const T* data = Data;
const T* data_end = Data + Size;
while (data < data_end)
if (*data++ == v)
return true;
return false; }
1815 inline T* find(
const T& v) { T* data = Data;
const T* data_end = Data + Size;
while (data < data_end)
if (*data == v)
break;
else ++data;
return data; }
1816 inline const T* find(
const T& v)
const {
const T* data = Data;
const T* data_end = Data + Size;
while (data < data_end)
if (*data == v)
break;
else ++data;
return data; }
1817 inline bool find_erase(
const T& v) {
const T* it = find(v);
if (it < Data + Size) { erase(it);
return true; }
return false; }
1818 inline bool find_erase_unsorted(
const T& v) {
const T* it = find(v);
if (it < Data + Size) { erase_unsorted(it);
return true; }
return false; }
1819 inline int index_from_ptr(
const T* it)
const { IM_ASSERT(it >= Data && it < Data + Size);
const ptrdiff_t off = it - Data;
return (
int)off; }
1821 IM_MSVC_RUNTIME_CHECKS_RESTORE
1834 float DisabledAlpha;
1836 float WindowRounding;
1837 float WindowBorderSize;
1840 ImGuiDir WindowMenuButtonPosition;
1841 float ChildRounding;
1842 float ChildBorderSize;
1843 float PopupRounding;
1844 float PopupBorderSize;
1846 float FrameRounding;
1847 float FrameBorderSize;
1851 ImVec2 TouchExtraPadding;
1852 float IndentSpacing;
1853 float ColumnsMinSpacing;
1854 float ScrollbarSize;
1855 float ScrollbarRounding;
1858 float LogSliderDeadzone;
1860 float TabBorderSize;
1861 float TabMinWidthForCloseButton;
1862 ImGuiDir ColorButtonPosition;
1864 ImVec2 SelectableTextAlign;
1865 ImVec2 DisplayWindowPadding;
1866 ImVec2 DisplaySafeAreaPadding;
1867 float MouseCursorScale;
1868 bool AntiAliasedLines;
1869 bool AntiAliasedLinesUseTex;
1870 bool AntiAliasedFill;
1871 float CurveTessellationTol;
1872 float CircleTessellationMaxError;
1873 ImVec4 Colors[ImGuiCol_COUNT];
1876 IMGUI_API
void ScaleAllSizes(
float scale_factor);
1892 float DownDurationPrev;
1902 ImGuiConfigFlags ConfigFlags;
1903 ImGuiBackendFlags BackendFlags;
1906 float IniSavingRate;
1907 const char* IniFilename;
1908 const char* LogFilename;
1909 float MouseDoubleClickTime;
1910 float MouseDoubleClickMaxDist;
1911 float MouseDragThreshold;
1912 float KeyRepeatDelay;
1913 float KeyRepeatRate;
1914 float HoverDelayNormal;
1915 float HoverDelayShort;
1919 float FontGlobalScale;
1920 bool FontAllowUserScaling;
1922 ImVec2 DisplayFramebufferScale;
1925 bool MouseDrawCursor;
1926 bool ConfigMacOSXBehaviors;
1927 bool ConfigInputTrickleEventQueue;
1928 bool ConfigInputTextCursorBlink;
1929 bool ConfigInputTextEnterKeepActive;
1930 bool ConfigDragClickToInputText;
1931 bool ConfigWindowsResizeFromEdges;
1932 bool ConfigWindowsMoveFromTitleBarOnly;
1933 float ConfigMemoryCompactTimer;
1941 const char* BackendPlatformName;
1942 const char* BackendRendererName;
1943 void* BackendPlatformUserData;
1944 void* BackendRendererUserData;
1945 void* BackendLanguageUserData;
1949 const char* (*GetClipboardTextFn)(
void* user_data);
1950 void (*SetClipboardTextFn)(
void* user_data,
const char* text);
1951 void* ClipboardUserData;
1956 #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
1957 void* ImeWindowHandle;
1959 void* _UnusedPadding;
1967 IMGUI_API
void AddKeyEvent(ImGuiKey key,
bool down);
1968 IMGUI_API
void AddKeyAnalogEvent(ImGuiKey key,
bool down,
float v);
1969 IMGUI_API
void AddMousePosEvent(
float x,
float y);
1970 IMGUI_API
void AddMouseButtonEvent(
int button,
bool down);
1971 IMGUI_API
void AddMouseWheelEvent(
float wh_x,
float wh_y);
1972 IMGUI_API
void AddFocusEvent(
bool focused);
1973 IMGUI_API
void AddInputCharacter(
unsigned int c);
1974 IMGUI_API
void AddInputCharacterUTF16(ImWchar16 c);
1975 IMGUI_API
void AddInputCharactersUTF8(
const char* str);
1977 IMGUI_API
void SetKeyEventNativeData(ImGuiKey key,
int native_keycode,
int native_scancode,
int native_legacy_index = -1);
1978 IMGUI_API
void SetAppAcceptingEvents(
bool accepting_events);
1979 IMGUI_API
void ClearInputCharacters();
1980 IMGUI_API
void ClearInputKeys();
1988 bool WantCaptureMouse;
1989 bool WantCaptureKeyboard;
1991 bool WantSetMousePos;
1992 bool WantSaveIniSettings;
1996 int MetricsRenderVertices;
1997 int MetricsRenderIndices;
1998 int MetricsRenderWindows;
1999 int MetricsActiveWindows;
2000 int MetricsActiveAllocations;
2006 #ifndef IMGUI_DISABLE_OBSOLETE_KEYIO
2007 int KeyMap[ImGuiKey_COUNT];
2008 bool KeysDown[ImGuiKey_COUNT];
2009 float NavInputs[ImGuiNavInput_COUNT];
2029 ImGuiKeyChord KeyMods;
2031 bool WantCaptureMouseUnlessPopupClose;
2033 ImVec2 MouseClickedPos[5];
2034 double MouseClickedTime[5];
2035 bool MouseClicked[5];
2036 bool MouseDoubleClicked[5];
2037 ImU16 MouseClickedCount[5];
2038 ImU16 MouseClickedLastCount[5];
2039 bool MouseReleased[5];
2040 bool MouseDownOwned[5];
2041 bool MouseDownOwnedUnlessPopupClose[5];
2042 float MouseDownDuration[5];
2043 float MouseDownDurationPrev[5];
2044 float MouseDragMaxDistanceSqr[5];
2047 bool AppAcceptingEvents;
2048 ImS8 BackendUsingLegacyKeyArrays;
2049 bool BackendUsingLegacyNavInputArray;
2050 ImWchar16 InputQueueSurrogate;
2071 ImGuiInputTextFlags EventFlag;
2072 ImGuiInputTextFlags Flags;
2091 IMGUI_API
void DeleteChars(
int pos,
int bytes_count);
2092 IMGUI_API
void InsertChars(
int pos,
const char* text,
const char* text_end = NULL);
2093 void SelectAll() { SelectionStart = 0; SelectionEnd = BufTextLen; }
2094 void ClearSelection() { SelectionStart = SelectionEnd = BufTextLen; }
2095 bool HasSelection()
const {
return SelectionStart != SelectionEnd; }
2117 ImGuiID SourceParentId;
2119 char DataType[32 + 1];
2124 void Clear() { SourceId = SourceParentId = 0; Data = NULL; DataSize = 0; memset(DataType, 0,
sizeof(DataType)); DataFrameCount = -1; Preview = Delivery =
false; }
2125 bool IsDataType(
const char* type)
const {
return DataFrameCount != -1 && strcmp(type, DataType) == 0; }
2126 bool IsPreview()
const {
return Preview; }
2127 bool IsDelivery()
const {
return Delivery; }
2133 ImGuiID ColumnUserID;
2136 ImGuiSortDirection SortDirection : 8;
2159 #define IM_UNICODE_CODEPOINT_INVALID 0xFFFD
2160 #ifdef IMGUI_USE_WCHAR32
2161 #define IM_UNICODE_CODEPOINT_MAX 0x10FFFF
2163 #define IM_UNICODE_CODEPOINT_MAX 0xFFFF
2171 mutable int RefFrame;
2172 operator bool()
const {
int current_frame = ImGui::GetFrameCount();
if (RefFrame == current_frame)
return false; RefFrame = current_frame;
return true; }
2179 IMGUI_API
bool Draw(
const char* label =
"Filter (inc,-exc)",
float width = 0.0f);
2180 IMGUI_API
bool PassFilter(
const char* text,
const char* text_end = NULL)
const;
2181 IMGUI_API
void Build();
2182 void Clear() { InputBuf[0] = 0; Build(); }
2183 bool IsActive()
const {
return !Filters.empty(); }
2192 ImGuiTextRange(
const char* _b,
const char* _e) { b = _b; e = _e; }
2193 bool empty()
const {
return b == e; }
2206 IMGUI_API
static char EmptyString[1];
2209 inline char operator[](
int i)
const { IM_ASSERT(Buf.Data != NULL);
return Buf.Data[i]; }
2210 const char* begin()
const {
return Buf.Data ? &Buf.front() : EmptyString; }
2211 const char* end()
const {
return Buf.Data ? &Buf.back() : EmptyString; }
2212 int size()
const {
return Buf.Size ? Buf.Size - 1 : 0; }
2213 bool empty()
const {
return Buf.Size <= 1; }
2214 void clear() { Buf.clear(); }
2215 void reserve(
int capacity) { Buf.reserve(capacity); }
2216 const char* c_str()
const {
return Buf.Data ? Buf.Data : EmptyString; }
2217 IMGUI_API
void append(
const char* str,
const char* str_end = NULL);
2218 IMGUI_API
void appendf(
const char* fmt, ...) IM_FMTARGS(2);
2219 IMGUI_API
void appendfv(
const char* fmt, va_list args) IM_FMTLIST(2);
2236 union {
int val_i;
float val_f;
void* val_p; };
2238 ImGuiStoragePair(ImGuiID _key,
float _val_f) { key = _key; val_f = _val_f; }
2239 ImGuiStoragePair(ImGuiID _key,
void* _val_p) { key = _key; val_p = _val_p; }
2247 void Clear() { Data.clear(); }
2248 IMGUI_API
int GetInt(ImGuiID key,
int default_val = 0)
const;
2249 IMGUI_API
void SetInt(ImGuiID key,
int val);
2250 IMGUI_API
bool GetBool(ImGuiID key,
bool default_val =
false)
const;
2251 IMGUI_API
void SetBool(ImGuiID key,
bool val);
2252 IMGUI_API
float GetFloat(ImGuiID key,
float default_val = 0.0f)
const;
2253 IMGUI_API
void SetFloat(ImGuiID key,
float val);
2254 IMGUI_API
void* GetVoidPtr(ImGuiID key)
const;
2255 IMGUI_API
void SetVoidPtr(ImGuiID key,
void* val);
2261 IMGUI_API
int* GetIntRef(ImGuiID key,
int default_val = 0);
2262 IMGUI_API
bool* GetBoolRef(ImGuiID key,
bool default_val =
false);
2263 IMGUI_API
float* GetFloatRef(ImGuiID key,
float default_val = 0.0f);
2264 IMGUI_API
void** GetVoidPtrRef(ImGuiID key,
void* default_val = NULL);
2267 IMGUI_API
void SetAllInt(
int val);
2270 IMGUI_API
void BuildSortByKey();
2306 IMGUI_API
void Begin(
int items_count,
float items_height = -1.0f);
2307 IMGUI_API
void End();
2308 IMGUI_API
bool Step();
2311 IMGUI_API
void ForceDisplayRangeByIndices(
int item_min,
int item_max);
2313 #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
2314 inline ImGuiListClipper(
int items_count,
float items_height = -1.0f) { memset(
this, 0,
sizeof(*
this)); ItemsCount = -1; Begin(items_count, items_height); }
2320 #ifndef IM_COL32_R_SHIFT
2321 #ifdef IMGUI_USE_BGRA_PACKED_COLOR
2322 #define IM_COL32_R_SHIFT 16
2323 #define IM_COL32_G_SHIFT 8
2324 #define IM_COL32_B_SHIFT 0
2325 #define IM_COL32_A_SHIFT 24
2326 #define IM_COL32_A_MASK 0xFF000000
2328 #define IM_COL32_R_SHIFT 0
2329 #define IM_COL32_G_SHIFT 8
2330 #define IM_COL32_B_SHIFT 16
2331 #define IM_COL32_A_SHIFT 24
2332 #define IM_COL32_A_MASK 0xFF000000
2335 #define IM_COL32(R,G,B,A) (((ImU32)(A)<<IM_COL32_A_SHIFT) | ((ImU32)(B)<<IM_COL32_B_SHIFT) | ((ImU32)(G)<<IM_COL32_G_SHIFT) | ((ImU32)(R)<<IM_COL32_R_SHIFT))
2336 #define IM_COL32_WHITE IM_COL32(255,255,255,255)
2337 #define IM_COL32_BLACK IM_COL32(0,0,0,255)
2338 #define IM_COL32_BLACK_TRANS IM_COL32(0,0,0,0)
2349 constexpr
ImColor(
float r,
float g,
float b,
float a = 1.0f) : Value(r, g, b, a) { }
2351 ImColor(
int r,
int g,
int b,
int a = 255) {
float sc = 1.0f / 255.0f; Value.x = (float)r * sc; Value.y = (float)g * sc; Value.z = (float)b * sc; Value.w = (float)a * sc; }
2352 ImColor(ImU32 rgba) {
float sc = 1.0f / 255.0f; Value.x = (float)((rgba >> IM_COL32_R_SHIFT) & 0xFF) * sc; Value.y = (float)((rgba >> IM_COL32_G_SHIFT) & 0xFF) * sc; Value.z = (float)((rgba >> IM_COL32_B_SHIFT) & 0xFF) * sc; Value.w = (float)((rgba >> IM_COL32_A_SHIFT) & 0xFF) * sc; }
2353 inline operator ImU32()
const {
return ImGui::ColorConvertFloat4ToU32(Value); }
2354 inline operator ImVec4()
const {
return Value; }
2357 inline void SetHSV(
float h,
float s,
float v,
float a = 1.0f){ ImGui::ColorConvertHSVtoRGB(h, s, v, Value.x, Value.y, Value.z); Value.w = a; }
2358 static ImColor HSV(
float h,
float s,
float v,
float a = 1.0f) {
float r, g, b; ImGui::ColorConvertHSVtoRGB(h, s, v, r, g, b);
return ImColor(r, g, b, a); }
2367 #ifndef IM_DRAWLIST_TEX_LINES_WIDTH_MAX
2368 #define IM_DRAWLIST_TEX_LINES_WIDTH_MAX (63)
2378 #ifndef ImDrawCallback
2386 #define ImDrawCallback_ResetRenderState (ImDrawCallback)(-1)
2396 ImTextureID TextureId;
2397 unsigned int VtxOffset;
2398 unsigned int IdxOffset;
2399 unsigned int ElemCount;
2400 ImDrawCallback UserCallback;
2401 void* UserCallbackData;
2403 ImDrawCmd() { memset(
this, 0,
sizeof(*
this)); }
2406 inline ImTextureID GetTexID()
const {
return TextureId; }
2410 #ifndef IMGUI_OVERRIDE_DRAWVERT_STRUCT_LAYOUT
2422 IMGUI_OVERRIDE_DRAWVERT_STRUCT_LAYOUT;
2429 ImTextureID TextureId;
2430 unsigned int VtxOffset;
2451 inline void Clear() { _Current = 0; _Count = 1; }
2452 IMGUI_API
void ClearFreeMemory();
2453 IMGUI_API
void Split(
ImDrawList* draw_list,
int count);
2455 IMGUI_API
void SetCurrentChannel(
ImDrawList* draw_list,
int channel_idx);
2462 ImDrawFlags_None = 0,
2463 ImDrawFlags_Closed = 1 << 0,
2464 ImDrawFlags_RoundCornersTopLeft = 1 << 4,
2465 ImDrawFlags_RoundCornersTopRight = 1 << 5,
2466 ImDrawFlags_RoundCornersBottomLeft = 1 << 6,
2467 ImDrawFlags_RoundCornersBottomRight = 1 << 7,
2468 ImDrawFlags_RoundCornersNone = 1 << 8,
2469 ImDrawFlags_RoundCornersTop = ImDrawFlags_RoundCornersTopLeft | ImDrawFlags_RoundCornersTopRight,
2470 ImDrawFlags_RoundCornersBottom = ImDrawFlags_RoundCornersBottomLeft | ImDrawFlags_RoundCornersBottomRight,
2471 ImDrawFlags_RoundCornersLeft = ImDrawFlags_RoundCornersBottomLeft | ImDrawFlags_RoundCornersTopLeft,
2472 ImDrawFlags_RoundCornersRight = ImDrawFlags_RoundCornersBottomRight | ImDrawFlags_RoundCornersTopRight,
2473 ImDrawFlags_RoundCornersAll = ImDrawFlags_RoundCornersTopLeft | ImDrawFlags_RoundCornersTopRight | ImDrawFlags_RoundCornersBottomLeft | ImDrawFlags_RoundCornersBottomRight,
2474 ImDrawFlags_RoundCornersDefault_ = ImDrawFlags_RoundCornersAll,
2475 ImDrawFlags_RoundCornersMask_ = ImDrawFlags_RoundCornersAll | ImDrawFlags_RoundCornersNone,
2480 enum ImDrawListFlags_
2482 ImDrawListFlags_None = 0,
2483 ImDrawListFlags_AntiAliasedLines = 1 << 0,
2484 ImDrawListFlags_AntiAliasedLinesUseTex = 1 << 1,
2485 ImDrawListFlags_AntiAliasedFill = 1 << 2,
2486 ImDrawListFlags_AllowVtxOffset = 1 << 3,
2504 ImDrawListFlags Flags;
2507 unsigned int _VtxCurrentIdx;
2509 const char* _OwnerName;
2511 ImDrawIdx* _IdxWritePtr;
2523 IMGUI_API
void PushClipRect(
const ImVec2& clip_rect_min,
const ImVec2& clip_rect_max,
bool intersect_with_current_clip_rect =
false);
2524 IMGUI_API
void PushClipRectFullScreen();
2525 IMGUI_API
void PopClipRect();
2526 IMGUI_API
void PushTextureID(ImTextureID texture_id);
2527 IMGUI_API
void PopTextureID();
2528 inline ImVec2 GetClipRectMin()
const {
const ImVec4& cr = _ClipRectStack.back();
return ImVec2(cr.x, cr.y); }
2529 inline ImVec2 GetClipRectMax()
const {
const ImVec4& cr = _ClipRectStack.back();
return ImVec2(cr.z, cr.w); }
2538 IMGUI_API
void AddLine(
const ImVec2& p1,
const ImVec2& p2, ImU32 col,
float thickness = 1.0f);
2539 IMGUI_API
void AddRect(
const ImVec2& p_min,
const ImVec2& p_max, ImU32 col,
float rounding = 0.0f, ImDrawFlags flags = 0,
float thickness = 1.0f);
2540 IMGUI_API
void AddRectFilled(
const ImVec2& p_min,
const ImVec2& p_max, ImU32 col,
float rounding = 0.0f, ImDrawFlags flags = 0);
2541 IMGUI_API
void AddRectFilledMultiColor(
const ImVec2& p_min,
const ImVec2& p_max, ImU32 col_upr_left, ImU32 col_upr_right, ImU32 col_bot_right, ImU32 col_bot_left);
2542 IMGUI_API
void AddQuad(
const ImVec2& p1,
const ImVec2& p2,
const ImVec2& p3,
const ImVec2& p4, ImU32 col,
float thickness = 1.0f);
2544 IMGUI_API
void AddTriangle(
const ImVec2& p1,
const ImVec2& p2,
const ImVec2& p3, ImU32 col,
float thickness = 1.0f);
2545 IMGUI_API
void AddTriangleFilled(
const ImVec2& p1,
const ImVec2& p2,
const ImVec2& p3, ImU32 col);
2546 IMGUI_API
void AddCircle(
const ImVec2& center,
float radius, ImU32 col,
int num_segments = 0,
float thickness = 1.0f);
2547 IMGUI_API
void AddCircleFilled(
const ImVec2& center,
float radius, ImU32 col,
int num_segments = 0);
2548 IMGUI_API
void AddNgon(
const ImVec2& center,
float radius, ImU32 col,
int num_segments,
float thickness = 1.0f);
2549 IMGUI_API
void AddNgonFilled(
const ImVec2& center,
float radius, ImU32 col,
int num_segments);
2550 IMGUI_API
void AddText(
const ImVec2& pos, ImU32 col,
const char* text_begin,
const char* text_end = NULL);
2551 IMGUI_API
void AddText(
const ImFont* font,
float font_size,
const ImVec2& pos, ImU32 col,
const char* text_begin,
const char* text_end = NULL,
float wrap_width = 0.0f,
const ImVec4* cpu_fine_clip_rect = NULL);
2552 IMGUI_API
void AddPolyline(
const ImVec2* points,
int num_points, ImU32 col, ImDrawFlags flags,
float thickness);
2553 IMGUI_API
void AddConvexPolyFilled(
const ImVec2* points,
int num_points, ImU32 col);
2554 IMGUI_API
void AddBezierCubic(
const ImVec2& p1,
const ImVec2& p2,
const ImVec2& p3,
const ImVec2& p4, ImU32 col,
float thickness,
int num_segments = 0);
2555 IMGUI_API
void AddBezierQuadratic(
const ImVec2& p1,
const ImVec2& p2,
const ImVec2& p3, ImU32 col,
float thickness,
int num_segments = 0);
2561 IMGUI_API
void AddImage(ImTextureID user_texture_id,
const ImVec2& p_min,
const ImVec2& p_max,
const ImVec2& uv_min =
ImVec2(0, 0),
const ImVec2& uv_max =
ImVec2(1, 1), ImU32 col = IM_COL32_WHITE);
2562 IMGUI_API
void AddImageQuad(ImTextureID user_texture_id,
const ImVec2& p1,
const ImVec2& p2,
const ImVec2& p3,
const ImVec2& p4,
const ImVec2& uv1 =
ImVec2(0, 0),
const ImVec2& uv2 =
ImVec2(1, 0),
const ImVec2& uv3 =
ImVec2(1, 1),
const ImVec2& uv4 =
ImVec2(0, 1), ImU32 col = IM_COL32_WHITE);
2563 IMGUI_API
void AddImageRounded(ImTextureID user_texture_id,
const ImVec2& p_min,
const ImVec2& p_max,
const ImVec2& uv_min,
const ImVec2& uv_max, ImU32 col,
float rounding, ImDrawFlags flags = 0);
2567 inline void PathClear() { _Path.Size = 0; }
2568 inline void PathLineTo(
const ImVec2& pos) { _Path.push_back(pos); }
2569 inline void PathLineToMergeDuplicate(
const ImVec2& pos) {
if (_Path.Size == 0 || memcmp(&_Path.Data[_Path.Size - 1], &pos, 8) != 0) _Path.push_back(pos); }
2570 inline void PathFillConvex(ImU32 col) { AddConvexPolyFilled(_Path.Data, _Path.Size, col); _Path.Size = 0; }
2571 inline void PathStroke(ImU32 col, ImDrawFlags flags = 0,
float thickness = 1.0f) { AddPolyline(_Path.Data, _Path.Size, col, flags, thickness); _Path.Size = 0; }
2572 IMGUI_API
void PathArcTo(
const ImVec2& center,
float radius,
float a_min,
float a_max,
int num_segments = 0);
2573 IMGUI_API
void PathArcToFast(
const ImVec2& center,
float radius,
int a_min_of_12,
int a_max_of_12);
2574 IMGUI_API
void PathBezierCubicCurveTo(
const ImVec2& p2,
const ImVec2& p3,
const ImVec2& p4,
int num_segments = 0);
2575 IMGUI_API
void PathBezierQuadraticCurveTo(
const ImVec2& p2,
const ImVec2& p3,
int num_segments = 0);
2576 IMGUI_API
void PathRect(
const ImVec2& rect_min,
const ImVec2& rect_max,
float rounding = 0.0f, ImDrawFlags flags = 0);
2579 IMGUI_API
void AddCallback(ImDrawCallback callback,
void* callback_data);
2580 IMGUI_API
void AddDrawCmd();
2589 inline void ChannelsSplit(
int count) { _Splitter.Split(
this, count); }
2590 inline void ChannelsMerge() { _Splitter.Merge(
this); }
2591 inline void ChannelsSetCurrent(
int n) { _Splitter.SetCurrentChannel(
this, n); }
2596 IMGUI_API
void PrimReserve(
int idx_count,
int vtx_count);
2597 IMGUI_API
void PrimUnreserve(
int idx_count,
int vtx_count);
2598 IMGUI_API
void PrimRect(
const ImVec2& a,
const ImVec2& b, ImU32 col);
2601 inline void PrimWriteVtx(
const ImVec2& pos,
const ImVec2& uv, ImU32 col) { _VtxWritePtr->pos = pos; _VtxWritePtr->uv = uv; _VtxWritePtr->col = col; _VtxWritePtr++; _VtxCurrentIdx++; }
2602 inline void PrimWriteIdx(ImDrawIdx idx) { *_IdxWritePtr = idx; _IdxWritePtr++; }
2603 inline void PrimVtx(
const ImVec2& pos,
const ImVec2& uv, ImU32 col) { PrimWriteIdx((ImDrawIdx)_VtxCurrentIdx); PrimWriteVtx(pos, uv, col); }
2605 #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
2606 inline void AddBezierCurve(
const ImVec2& p1,
const ImVec2& p2,
const ImVec2& p3,
const ImVec2& p4, ImU32 col,
float thickness,
int num_segments = 0) { AddBezierCubic(p1, p2, p3, p4, col, thickness, num_segments); }
2607 inline void PathBezierCurveTo(
const ImVec2& p2,
const ImVec2& p3,
const ImVec2& p4,
int num_segments = 0) { PathBezierCubicCurveTo(p2, p3, p4, num_segments); }
2611 IMGUI_API
void _ResetForNewFrame();
2612 IMGUI_API
void _ClearFreeMemory();
2613 IMGUI_API
void _PopUnusedDrawCmd();
2614 IMGUI_API
void _TryMergeDrawCmds();
2615 IMGUI_API
void _OnChangedClipRect();
2616 IMGUI_API
void _OnChangedTextureID();
2617 IMGUI_API
void _OnChangedVtxOffset();
2618 IMGUI_API
int _CalcCircleAutoSegmentCount(
float radius)
const;
2619 IMGUI_API
void _PathArcToFastEx(
const ImVec2& center,
float radius,
int a_min_sample,
int a_max_sample,
int a_step);
2620 IMGUI_API
void _PathArcToN(
const ImVec2& center,
float radius,
float a_min,
float a_max,
int num_segments);
2639 void Clear() { memset(
this, 0,
sizeof(*
this)); }
2640 IMGUI_API
void DeIndexAllBuffers();
2641 IMGUI_API
void ScaleClipRects(
const ImVec2& fb_scale);
2652 bool FontDataOwnedByAtlas;
2658 ImVec2 GlyphExtraSpacing;
2660 const ImWchar* GlyphRanges;
2661 float GlyphMinAdvanceX;
2662 float GlyphMaxAdvanceX;
2664 unsigned int FontBuilderFlags;
2665 float RasterizerMultiply;
2666 ImWchar EllipsisChar;
2679 unsigned int Colored : 1;
2680 unsigned int Visible : 1;
2681 unsigned int Codepoint : 30;
2683 float X0, Y0, X1, Y1;
2684 float U0, V0, U1, V1;
2694 inline void Clear() {
int size_in_bytes = (IM_UNICODE_CODEPOINT_MAX + 1) / 8; UsedChars.resize(size_in_bytes / (
int)
sizeof(ImU32)); memset(UsedChars.Data, 0, (
size_t)size_in_bytes); }
2695 inline bool GetBit(
size_t n)
const {
int off = (int)(n >> 5); ImU32 mask = 1u << (n & 31);
return (UsedChars[off] & mask) != 0; }
2696 inline void SetBit(
size_t n) {
int off = (int)(n >> 5); ImU32 mask = 1u << (n & 31); UsedChars[off] |= mask; }
2697 inline void AddChar(ImWchar c) { SetBit(c); }
2698 IMGUI_API
void AddText(
const char* text,
const char* text_end = NULL);
2699 IMGUI_API
void AddRanges(
const ImWchar* ranges);
2706 unsigned short Width, Height;
2707 unsigned short X, Y;
2708 unsigned int GlyphID;
2709 float GlyphAdvanceX;
2712 ImFontAtlasCustomRect() { Width = Height = 0; X = Y = 0xFFFF; GlyphID = 0; GlyphAdvanceX = 0.0f; GlyphOffset =
ImVec2(0, 0); Font = NULL; }
2713 bool IsPacked()
const {
return X != 0xFFFF; }
2717 enum ImFontAtlasFlags_
2719 ImFontAtlasFlags_None = 0,
2720 ImFontAtlasFlags_NoPowerOfTwoHeight = 1 << 0,
2721 ImFontAtlasFlags_NoMouseCursors = 1 << 1,
2722 ImFontAtlasFlags_NoBakedLines = 1 << 2,
2748 IMGUI_API
ImFont* AddFontFromFileTTF(
const char* filename,
float size_pixels,
const ImFontConfig* font_cfg = NULL,
const ImWchar* glyph_ranges = NULL);
2749 IMGUI_API
ImFont* AddFontFromMemoryTTF(
void* font_data,
int font_size,
float size_pixels,
const ImFontConfig* font_cfg = NULL,
const ImWchar* glyph_ranges = NULL);
2750 IMGUI_API
ImFont* AddFontFromMemoryCompressedTTF(
const void* compressed_font_data,
int compressed_font_size,
float size_pixels,
const ImFontConfig* font_cfg = NULL,
const ImWchar* glyph_ranges = NULL);
2751 IMGUI_API
ImFont* AddFontFromMemoryCompressedBase85TTF(
const char* compressed_font_data_base85,
float size_pixels,
const ImFontConfig* font_cfg = NULL,
const ImWchar* glyph_ranges = NULL);
2752 IMGUI_API
void ClearInputData();
2753 IMGUI_API
void ClearTexData();
2754 IMGUI_API
void ClearFonts();
2755 IMGUI_API
void Clear();
2762 IMGUI_API
bool Build();
2763 IMGUI_API
void GetTexDataAsAlpha8(
unsigned char** out_pixels,
int* out_width,
int* out_height,
int* out_bytes_per_pixel = NULL);
2764 IMGUI_API
void GetTexDataAsRGBA32(
unsigned char** out_pixels,
int* out_width,
int* out_height,
int* out_bytes_per_pixel = NULL);
2765 bool IsBuilt()
const {
return Fonts.Size > 0 && TexReady; }
2766 void SetTexID(ImTextureID
id) { TexID = id; }
2775 IMGUI_API
const ImWchar* GetGlyphRangesDefault();
2776 IMGUI_API
const ImWchar* GetGlyphRangesGreek();
2777 IMGUI_API
const ImWchar* GetGlyphRangesKorean();
2778 IMGUI_API
const ImWchar* GetGlyphRangesJapanese();
2779 IMGUI_API
const ImWchar* GetGlyphRangesChineseFull();
2780 IMGUI_API
const ImWchar* GetGlyphRangesChineseSimplifiedCommon();
2781 IMGUI_API
const ImWchar* GetGlyphRangesCyrillic();
2782 IMGUI_API
const ImWchar* GetGlyphRangesThai();
2783 IMGUI_API
const ImWchar* GetGlyphRangesVietnamese();
2796 IMGUI_API
int AddCustomRectRegular(
int width,
int height);
2797 IMGUI_API
int AddCustomRectFontGlyph(
ImFont* font, ImWchar
id,
int width,
int height,
float advance_x,
const ImVec2& offset =
ImVec2(0, 0));
2798 ImFontAtlasCustomRect* GetCustomRectByIndex(
int index) { IM_ASSERT(index >= 0);
return &CustomRects[index]; }
2802 IMGUI_API
bool GetMouseCursorTexData(ImGuiMouseCursor cursor,
ImVec2* out_offset,
ImVec2* out_size,
ImVec2 out_uv_border[2],
ImVec2 out_uv_fill[2]);
2808 ImFontAtlasFlags Flags;
2810 int TexDesiredWidth;
2811 int TexGlyphPadding;
2818 bool TexPixelsUseColors;
2819 unsigned char* TexPixelsAlpha8;
2820 unsigned int* TexPixelsRGBA32;
2828 ImVec4 TexUvLines[IM_DRAWLIST_TEX_LINES_WIDTH_MAX + 1];
2832 unsigned int FontBuilderFlags;
2835 int PackIdMouseCursors;
2849 float FallbackAdvanceX;
2860 short ConfigDataCount;
2861 ImWchar FallbackChar;
2862 ImWchar EllipsisChar;
2864 bool DirtyLookupTables;
2866 float Ascent, Descent;
2867 int MetricsTotalSurface;
2868 ImU8 Used4kPagesMap[(IM_UNICODE_CODEPOINT_MAX+1)/4096/8];
2873 IMGUI_API
const ImFontGlyph*FindGlyph(ImWchar c)
const;
2874 IMGUI_API
const ImFontGlyph*FindGlyphNoFallback(ImWchar c)
const;
2875 float GetCharAdvance(ImWchar c)
const {
return ((
int)c < IndexAdvanceX.Size) ? IndexAdvanceX[(int)c] : FallbackAdvanceX; }
2876 bool IsLoaded()
const {
return ContainerAtlas != NULL; }
2877 const char* GetDebugName()
const {
return ConfigData ? ConfigData->Name :
"<unknown>"; }
2881 IMGUI_API
ImVec2 CalcTextSizeA(
float size,
float max_width,
float wrap_width,
const char* text_begin,
const char* text_end = NULL,
const char** remaining = NULL)
const;
2882 IMGUI_API
const char* CalcWordWrapPositionA(
float scale,
const char* text,
const char* text_end,
float wrap_width)
const;
2883 IMGUI_API
void RenderChar(
ImDrawList* draw_list,
float size,
const ImVec2& pos, ImU32 col, ImWchar c)
const;
2884 IMGUI_API
void RenderText(
ImDrawList* draw_list,
float size,
const ImVec2& pos, ImU32 col,
const ImVec4& clip_rect,
const char* text_begin,
const char* text_end,
float wrap_width = 0.0f,
bool cpu_fine_clip =
false)
const;
2887 IMGUI_API
void BuildLookupTable();
2888 IMGUI_API
void ClearOutputData();
2889 IMGUI_API
void GrowIndex(
int new_size);
2890 IMGUI_API
void AddGlyph(
const ImFontConfig* src_cfg, ImWchar c,
float x0,
float y0,
float x1,
float y1,
float u0,
float v0,
float u1,
float v1,
float advance_x);
2891 IMGUI_API
void AddRemapChar(ImWchar dst, ImWchar src,
bool overwrite_dst =
true);
2892 IMGUI_API
void SetGlyphVisible(ImWchar c,
bool visible);
2893 IMGUI_API
bool IsGlyphRangeUnused(
unsigned int c_begin,
unsigned int c_last);
2901 enum ImGuiViewportFlags_
2903 ImGuiViewportFlags_None = 0,
2904 ImGuiViewportFlags_IsPlatformWindow = 1 << 0,
2905 ImGuiViewportFlags_IsPlatformMonitor = 1 << 1,
2906 ImGuiViewportFlags_OwnedByApp = 1 << 2,
2918 ImGuiViewportFlags Flags;
2925 void* PlatformHandleRaw;
2930 ImVec2 GetCenter()
const {
return ImVec2(Pos.x + Size.x * 0.5f, Pos.y + Size.y * 0.5f); }
2931 ImVec2 GetWorkCenter()
const {
return ImVec2(WorkPos.x + WorkSize.x * 0.5f, WorkPos.y + WorkSize.y * 0.5f); }
2943 float InputLineHeight;
2956 #ifndef IMGUI_DISABLE_OBSOLETE_KEYIO
2957 IMGUI_API ImGuiKey GetKeyIndex(ImGuiKey key);
2959 static inline ImGuiKey GetKeyIndex(ImGuiKey key) { IM_ASSERT(key >= ImGuiKey_NamedKey_BEGIN && key < ImGuiKey_NamedKey_END &&
"ImGuiKey and native_index was merged together and native_index is disabled by IMGUI_DISABLE_OBSOLETE_KEYIO. Please switch to ImGuiKey.");
return key; }
2963 #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
2967 IMGUI_API
bool ImageButton(ImTextureID user_texture_id,
const ImVec2& size,
const ImVec2& uv0 =
ImVec2(0, 0),
const ImVec2& uv1 =
ImVec2(1, 1),
int frame_padding = -1,
const ImVec4& bg_col =
ImVec4(0, 0, 0, 0),
const ImVec4& tint_col =
ImVec4(1, 1, 1, 1));
2969 static inline void CaptureKeyboardFromApp(
bool want_capture_keyboard =
true) { SetNextFrameWantCaptureKeyboard(want_capture_keyboard); }
2970 static inline void CaptureMouseFromApp(
bool want_capture_mouse =
true) { SetNextFrameWantCaptureMouse(want_capture_mouse); }
2972 IMGUI_API
void CalcListClipping(
int items_count,
float items_height,
int* out_items_display_start,
int* out_items_display_end);
2974 static inline float GetWindowContentRegionWidth() {
return GetWindowContentRegionMax().x - GetWindowContentRegionMin().x; }
2976 IMGUI_API
bool ListBoxHeader(
const char* label,
int items_count,
int height_in_items = -1);
2977 static inline bool ListBoxHeader(
const char* label,
const ImVec2& size =
ImVec2(0, 0)) {
return BeginListBox(label, size); }
2978 static inline void ListBoxFooter() { EndListBox(); }
3028 typedef ImDrawFlags ImDrawCornerFlags;
3029 enum ImDrawCornerFlags_
3031 ImDrawCornerFlags_None = ImDrawFlags_RoundCornersNone,
3032 ImDrawCornerFlags_TopLeft = ImDrawFlags_RoundCornersTopLeft,
3033 ImDrawCornerFlags_TopRight = ImDrawFlags_RoundCornersTopRight,
3034 ImDrawCornerFlags_BotLeft = ImDrawFlags_RoundCornersBottomLeft,
3035 ImDrawCornerFlags_BotRight = ImDrawFlags_RoundCornersBottomRight,
3036 ImDrawCornerFlags_All = ImDrawFlags_RoundCornersAll,
3037 ImDrawCornerFlags_Top = ImDrawCornerFlags_TopLeft | ImDrawCornerFlags_TopRight,
3038 ImDrawCornerFlags_Bot = ImDrawCornerFlags_BotLeft | ImDrawCornerFlags_BotRight,
3039 ImDrawCornerFlags_Left = ImDrawCornerFlags_TopLeft | ImDrawCornerFlags_BotLeft,
3040 ImDrawCornerFlags_Right = ImDrawCornerFlags_TopRight | ImDrawCornerFlags_BotRight,
3045 typedef ImGuiKeyChord ImGuiModFlags;
3046 enum ImGuiModFlags_ { ImGuiModFlags_None = 0, ImGuiModFlags_Ctrl = ImGuiMod_Ctrl, ImGuiModFlags_Shift = ImGuiMod_Shift, ImGuiModFlags_Alt = ImGuiMod_Alt, ImGuiModFlags_Super = ImGuiMod_Super };
3053 #if defined(IMGUI_DISABLE_METRICS_WINDOW) && !defined(IMGUI_DISABLE_OBSOLETE_FUNCTIONS) && !defined(IMGUI_DISABLE_DEBUG_TOOLS)
3054 #define IMGUI_DISABLE_DEBUG_TOOLS
3056 #if defined(IMGUI_DISABLE_METRICS_WINDOW) && defined(IMGUI_DISABLE_OBSOLETE_FUNCTIONS)
3057 #error IMGUI_DISABLE_METRICS_WINDOW was renamed to IMGUI_DISABLE_DEBUG_TOOLS, please use new name.
3062 #if defined(__clang__)
3063 #pragma clang diagnostic pop
3064 #elif defined(__GNUC__)
3065 #pragma GCC diagnostic pop
3069 #pragma warning (pop)
3073 #ifdef IMGUI_INCLUDE_IMGUI_USER_H
3074 #include "imgui_user.h"
Definition: imgui_internal.h:755
Definition: imgui_internal.h:3203
Definition: imgui_internal.h:1732