// struct ImVec2 // struct ImVec4 // namespace ImGui // IMGUI_API ImGuiContext* CreateContext(ImFontAtlas* shared_font_atlas = NULL); // Unsupported return type ImGuiContext* // Unsupported arg type ImFontAtlas* shared_font_atlas = NULL // IMGUI_API void DestroyContext(ImGuiContext* ctx = NULL); // NULL = destroy current context // Unsupported arg type ImGuiContext* ctx = NULL // IMGUI_API ImGuiContext* GetCurrentContext(); // Unsupported return type ImGuiContext* // IMGUI_API void SetCurrentContext(ImGuiContext* ctx); // Unsupported arg type ImGuiContext* ctx // IMGUI_API ImGuiIO& GetIO(); // access the IO structure (mouse/keyboard/gamepad inputs, time, various // configuration options/flags) // Unsupported return type ImGuiIO& // IMGUI_API ImGuiStyle& GetStyle(); // access the Style structure (colors, sizes). Always use PushStyleCol(), // PushStyleVar() to modify style mid-frame! // Unsupported return type ImGuiStyle& // IMGUI_API void NewFrame(); // start a new Dear ImGui frame, you can submit any command from this point // until Render()/EndFrame(). // Not allowed to use this function // IMGUI_API void EndFrame(); // ends the Dear ImGui frame. automatically called by Render(). If you don't // need to render data (skipping rendering) you may call EndFrame() without Render()... but you'll have wasted CPU already! If you don't need to // render, better to not create any windows and not call NewFrame() at all! IMGUI_FUNCTION(EndFrame) CALL_FUNCTION_NO_RET(EndFrame) POP_END_STACK(0) END_IMGUI_FUNC // IMGUI_API void Render(); // ends the Dear ImGui frame, finalize the draw data. You can then get call // GetDrawData(). // Not allowed to use this function // IMGUI_API ImDrawData* GetDrawData(); // valid after Render() and until the next call to NewFrame(). this is what // you have to render. // Unsupported return type ImDrawData* // IMGUI_API void ShowDemoWindow(bool* p_open = NULL); // create Demo window. demonstrate most ImGui features. call this to learn // about the library! try to make it always available in your application! IMGUI_FUNCTION(ShowDemoWindow) OPTIONAL_BOOL_POINTER_ARG(p_open) CALL_FUNCTION_NO_RET(ShowDemoWindow, p_open) END_BOOL_POINTER(p_open) END_IMGUI_FUNC // IMGUI_API void ShowMetricsWindow(bool* p_open = NULL); // create Metrics/Debugger window. display Dear ImGui internals: windows, // draw commands, various internal state, etc. IMGUI_FUNCTION(ShowMetricsWindow) OPTIONAL_BOOL_POINTER_ARG(p_open) CALL_FUNCTION_NO_RET(ShowMetricsWindow, p_open) END_BOOL_POINTER(p_open) END_IMGUI_FUNC // IMGUI_API void ShowDebugLogWindow(bool* p_open = NULL); // create Debug Log window. display a simplified log of important dear imgui // events. IMGUI_FUNCTION(ShowDebugLogWindow) OPTIONAL_BOOL_POINTER_ARG(p_open) CALL_FUNCTION_NO_RET(ShowDebugLogWindow, p_open) END_BOOL_POINTER(p_open) END_IMGUI_FUNC // IMGUI_API void ShowStackToolWindow(bool* p_open = NULL); // create Stack Tool window. hover items with mouse to query information // about the source of their unique ID. IMGUI_FUNCTION(ShowStackToolWindow) OPTIONAL_BOOL_POINTER_ARG(p_open) CALL_FUNCTION_NO_RET(ShowStackToolWindow, p_open) END_BOOL_POINTER(p_open) END_IMGUI_FUNC // IMGUI_API void ShowAboutWindow(bool* p_open = NULL); // create About window. display Dear ImGui version, credits and build/system // information. IMGUI_FUNCTION(ShowAboutWindow) OPTIONAL_BOOL_POINTER_ARG(p_open) CALL_FUNCTION_NO_RET(ShowAboutWindow, p_open) END_BOOL_POINTER(p_open) END_IMGUI_FUNC // IMGUI_API void ShowStyleEditor(ImGuiStyle* ref = NULL); // add style editor block (not a window). you can pass in a reference // ImGuiStyle structure to compare to, revert to and save to (else it uses the default style) // Unsupported arg type ImGuiStyle* ref = NULL // IMGUI_API bool ShowStyleSelector(const char* label); // add style selector block (not a window), essentially a combo listing the // default styles. IMGUI_FUNCTION(ShowStyleSelector) LABEL_ARG(label) CALL_FUNCTION(ShowStyleSelector, bool, label) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API void ShowFontSelector(const char* label); // add font selector block (not a window), essentially a combo listing the // loaded fonts. IMGUI_FUNCTION(ShowFontSelector) LABEL_ARG(label) CALL_FUNCTION_NO_RET(ShowFontSelector, label) END_IMGUI_FUNC // IMGUI_API void ShowUserGuide(); // add basic help/info block (not a window): how to manipulate ImGui as an // end-user (mouse/keyboard controls). IMGUI_FUNCTION(ShowUserGuide) CALL_FUNCTION_NO_RET(ShowUserGuide) END_IMGUI_FUNC // IMGUI_API const char* GetVersion(); // get the compiled version string e.g. "1.80 WIP" (essentially the value // for IMGUI_VERSION from the compiled version of imgui.cpp) IMGUI_FUNCTION(GetVersion) CALL_FUNCTION(GetVersion, const char*) PUSH_STRING(ret) END_IMGUI_FUNC // IMGUI_API void StyleColorsDark(ImGuiStyle* dst = NULL); // new, recommended style (default) // Unsupported arg type ImGuiStyle* dst = NULL // IMGUI_API void StyleColorsLight(ImGuiStyle* dst = NULL); // best used with borders and a custom, thicker font // Unsupported arg type ImGuiStyle* dst = NULL // IMGUI_API void StyleColorsClassic(ImGuiStyle* dst = NULL); // classic imgui style // Unsupported arg type ImGuiStyle* dst = NULL // IMGUI_API bool Begin(const char* name, bool* p_open = NULL, ImGuiWindowFlags flags = 0); IMGUI_FUNCTION(Begin) LABEL_ARG(name) OPTIONAL_BOOL_POINTER_ARG(p_open) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(Begin, bool, name, p_open, flags) IF_RET_ADD_END_STACK(1) PUSH_BOOL(ret) END_BOOL_POINTER(p_open) END_IMGUI_FUNC // IMGUI_API void End(); IMGUI_FUNCTION(End) CALL_FUNCTION_NO_RET(End) POP_END_STACK(1) END_IMGUI_FUNC // IMGUI_API bool BeginChild(const char* str_id, const ImVec2& size = ImVec2 0 0, bool border = false, ImGuiWindowFlags flags = 0); IMGUI_FUNCTION(BeginChild) LABEL_ARG(str_id) OPTIONAL_IM_VEC_2_ARG(size, 0, 0) OPTIONAL_BOOL_ARG(border, false) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(BeginChild, bool, str_id, size, border, flags) IF_RET_ADD_END_STACK(2) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool BeginChild(ImGuiID id, const ImVec2& size = ImVec2 0 0, bool border = false, ImGuiWindowFlags flags = 0); IMGUI_FUNCTION(BeginChild_4) UINT_ARG(id) OPTIONAL_IM_VEC_2_ARG(size, 0, 0) OPTIONAL_BOOL_ARG(border, false) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(BeginChild, bool, id, size, border, flags) IF_RET_ADD_END_STACK(2) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API void EndChild(); IMGUI_FUNCTION(EndChild) CALL_FUNCTION_NO_RET(EndChild) POP_END_STACK(2) END_IMGUI_FUNC // IMGUI_API bool IsWindowAppearing(); IMGUI_FUNCTION(IsWindowAppearing) CALL_FUNCTION(IsWindowAppearing, bool) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsWindowCollapsed(); IMGUI_FUNCTION(IsWindowCollapsed) CALL_FUNCTION(IsWindowCollapsed, bool) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsWindowFocused(ImGuiFocusedFlags flags=0); // is current window focused? or its root/child, depending on flags. see // flags for options. IMGUI_FUNCTION(IsWindowFocused) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(IsWindowFocused, bool, flags) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsWindowHovered(ImGuiHoveredFlags flags=0); // is current window hovered (and typically: not blocked by a popup/modal)? // see flags for options. NB: If you are trying to check whether your mouse should be dispatched to imgui or to your app, you should use the // 'io.WantCaptureMouse' boolean for that! Please read the FAQ! IMGUI_FUNCTION(IsWindowHovered) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(IsWindowHovered, bool, flags) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API ImDrawList* GetWindowDrawList(); // get draw list associated to the current window, to append your own // drawing primitives // Unsupported return type ImDrawList* // IMGUI_API float GetWindowDpiScale(); // get DPI scale currently associated to the current window's viewport. IMGUI_FUNCTION(GetWindowDpiScale) CALL_FUNCTION(GetWindowDpiScale, float) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API ImVec2 GetWindowPos(); // get current window position in screen space (useful if you want to do // your own drawing via the DrawList API) IMGUI_FUNCTION(GetWindowPos) CALL_FUNCTION(GetWindowPos, ImVec2) PUSH_NUMBER(ret.x) PUSH_NUMBER(ret.y) END_IMGUI_FUNC // IMGUI_API ImVec2 GetWindowSize(); // get current window size IMGUI_FUNCTION(GetWindowSize) CALL_FUNCTION(GetWindowSize, ImVec2) PUSH_NUMBER(ret.x) PUSH_NUMBER(ret.y) END_IMGUI_FUNC // IMGUI_API float GetWindowWidth(); // get current window width (shortcut for GetWindowSize().x) IMGUI_FUNCTION(GetWindowWidth) CALL_FUNCTION(GetWindowWidth, float) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API float GetWindowHeight(); // get current window height (shortcut for GetWindowSize().y) IMGUI_FUNCTION(GetWindowHeight) CALL_FUNCTION(GetWindowHeight, float) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API ImGuiViewport*GetWindowViewport(); // get viewport currently associated to the current window. // Unsupported return type ImGuiViewport*GetWindowViewpor // IMGUI_API void SetNextWindowPos(const ImVec2& pos, ImGuiCond cond = 0, const ImVec2& pivot = ImVec2 0 0); // set next window position. // call before Begin(). use pivot=(0.5f,0.5f) to center on given point, etc. IMGUI_FUNCTION(SetNextWindowPos) IM_VEC_2_ARG(pos) OPTIONAL_INT_ARG(cond, 0) OPTIONAL_IM_VEC_2_ARG(pivot, 0, 0) CALL_FUNCTION_NO_RET(SetNextWindowPos, pos, cond, pivot) END_IMGUI_FUNC // IMGUI_API void SetNextWindowSize(const ImVec2& size, ImGuiCond cond = 0); // set next window size. set axis to 0.0f to // force an auto-fit on this axis. call before Begin() IMGUI_FUNCTION(SetNextWindowSize) IM_VEC_2_ARG(size) OPTIONAL_INT_ARG(cond, 0) CALL_FUNCTION_NO_RET(SetNextWindowSize, size, cond) END_IMGUI_FUNC // IMGUI_API void SetNextWindowSizeConstraints(const ImVec2& size_min, const ImVec2& size_max, ImGuiSizeCallback custom_callback = NULL, // void* custom_callback_data = NULL); // set next window size limits. use -1,-1 on either X/Y axis to preserve the current size. Sizes will be // rounded down. Use callback to apply non-trivial programmatic constraints. // Unsupported arg type ImGuiSizeCallback custom_callback = NULL // Unsupported arg type void* custom_callback_data = NULL // IMGUI_API void SetNextWindowContentSize(const ImVec2& size); // set next window content size (~ // scrollable client area, which enforce the range of scrollbars). Not including window decorations (title bar, menu bar, etc.) nor WindowPadding. // set an axis to 0.0f to leave it automatic. call before Begin() IMGUI_FUNCTION(SetNextWindowContentSize) IM_VEC_2_ARG(size) CALL_FUNCTION_NO_RET(SetNextWindowContentSize, size) END_IMGUI_FUNC // IMGUI_API void SetNextWindowCollapsed(bool collapsed, ImGuiCond cond = 0); // set next window collapsed state. call // before Begin() IMGUI_FUNCTION(SetNextWindowCollapsed) BOOL_ARG(collapsed) OPTIONAL_INT_ARG(cond, 0) CALL_FUNCTION_NO_RET(SetNextWindowCollapsed, collapsed, cond) END_IMGUI_FUNC // IMGUI_API void SetNextWindowFocus(); // set next window to be focused / top-most. // call before Begin() IMGUI_FUNCTION(SetNextWindowFocus) CALL_FUNCTION_NO_RET(SetNextWindowFocus) END_IMGUI_FUNC // IMGUI_API void SetNextWindowScroll(const ImVec2& scroll); // set next window scrolling value (use < // 0.0f to not affect a given axis). IMGUI_FUNCTION(SetNextWindowScroll) IM_VEC_2_ARG(scroll) CALL_FUNCTION_NO_RET(SetNextWindowScroll, scroll) END_IMGUI_FUNC // IMGUI_API void SetNextWindowBgAlpha(float alpha); // set next window background color alpha. // helper to easily override the Alpha component of ImGuiCol_WindowBg/ChildBg/PopupBg. you may also use ImGuiWindowFlags_NoBackground. IMGUI_FUNCTION(SetNextWindowBgAlpha) NUMBER_ARG(alpha) CALL_FUNCTION_NO_RET(SetNextWindowBgAlpha, alpha) END_IMGUI_FUNC // IMGUI_API void SetNextWindowViewport(ImGuiID viewport_id); // set next window viewport IMGUI_FUNCTION(SetNextWindowViewport) UINT_ARG(viewport_id) CALL_FUNCTION_NO_RET(SetNextWindowViewport, viewport_id) END_IMGUI_FUNC // IMGUI_API void SetWindowPos(const ImVec2& pos, ImGuiCond cond = 0); // (not recommended) set current window // position - call within Begin()/End(). prefer using SetNextWindowPos(), as this may incur tearing and side-effects. IMGUI_FUNCTION(SetWindowPos) IM_VEC_2_ARG(pos) OPTIONAL_INT_ARG(cond, 0) CALL_FUNCTION_NO_RET(SetWindowPos, pos, cond) END_IMGUI_FUNC // IMGUI_API void SetWindowSize(const ImVec2& size, ImGuiCond cond = 0); // (not recommended) set current window size // - call within Begin()/End(). set to ImVec2 0 0 to force an auto-fit. prefer using SetNextWindowSize(), as this may incur tearing and minor // side-effects. IMGUI_FUNCTION(SetWindowSize) IM_VEC_2_ARG(size) OPTIONAL_INT_ARG(cond, 0) CALL_FUNCTION_NO_RET(SetWindowSize, size, cond) END_IMGUI_FUNC // IMGUI_API void SetWindowCollapsed(bool collapsed, ImGuiCond cond = 0); // (not recommended) set current window // collapsed state. prefer using SetNextWindowCollapsed(). IMGUI_FUNCTION(SetWindowCollapsed) BOOL_ARG(collapsed) OPTIONAL_INT_ARG(cond, 0) CALL_FUNCTION_NO_RET(SetWindowCollapsed, collapsed, cond) END_IMGUI_FUNC // IMGUI_API void SetWindowFocus(); // (not recommended) set current window to // be focused / top-most. prefer using SetNextWindowFocus(). IMGUI_FUNCTION(SetWindowFocus) CALL_FUNCTION_NO_RET(SetWindowFocus) END_IMGUI_FUNC // IMGUI_API void SetWindowFontScale(float scale); // [OBSOLETE] set font scale. Adjust // IO.FontGlobalScale if you want to scale all windows. This is an old API! For correct scaling, prefer to reload font + rebuild ImFontAtlas + call // style.ScaleAllSizes(). IMGUI_FUNCTION(SetWindowFontScale) NUMBER_ARG(scale) CALL_FUNCTION_NO_RET(SetWindowFontScale, scale) END_IMGUI_FUNC // IMGUI_API void SetWindowPos(const char* name, const ImVec2& pos, ImGuiCond cond = 0); // set named window position. IMGUI_FUNCTION(SetWindowPos_3) LABEL_ARG(name) IM_VEC_2_ARG(pos) OPTIONAL_INT_ARG(cond, 0) CALL_FUNCTION_NO_RET(SetWindowPos, name, pos, cond) END_IMGUI_FUNC // IMGUI_API void SetWindowSize(const char* name, const ImVec2& size, ImGuiCond cond = 0); // set named window size. set axis to 0.0f // to force an auto-fit on this axis. IMGUI_FUNCTION(SetWindowSize_3) LABEL_ARG(name) IM_VEC_2_ARG(size) OPTIONAL_INT_ARG(cond, 0) CALL_FUNCTION_NO_RET(SetWindowSize, name, size, cond) END_IMGUI_FUNC // IMGUI_API void SetWindowCollapsed(const char* name, bool collapsed, ImGuiCond cond = 0); // set named window collapsed state IMGUI_FUNCTION(SetWindowCollapsed_3) LABEL_ARG(name) BOOL_ARG(collapsed) OPTIONAL_INT_ARG(cond, 0) CALL_FUNCTION_NO_RET(SetWindowCollapsed, name, collapsed, cond) END_IMGUI_FUNC // IMGUI_API void SetWindowFocus(const char* name); // set named window to be focused / // top-most. use NULL to remove focus. IMGUI_FUNCTION(SetWindowFocus_1) LABEL_ARG(name) CALL_FUNCTION_NO_RET(SetWindowFocus, name) END_IMGUI_FUNC // IMGUI_API ImVec2 GetContentRegionAvail(); // == GetContentRegionMax() - GetCursorPos() IMGUI_FUNCTION(GetContentRegionAvail) CALL_FUNCTION(GetContentRegionAvail, ImVec2) PUSH_NUMBER(ret.x) PUSH_NUMBER(ret.y) END_IMGUI_FUNC // IMGUI_API ImVec2 GetContentRegionMax(); // current content boundaries (typically window // boundaries including scrolling, or current column boundaries), in windows coordinates IMGUI_FUNCTION(GetContentRegionMax) CALL_FUNCTION(GetContentRegionMax, ImVec2) PUSH_NUMBER(ret.x) PUSH_NUMBER(ret.y) END_IMGUI_FUNC // IMGUI_API ImVec2 GetWindowContentRegionMin(); // content boundaries min for the full window (roughly // (0,0)-Scroll), in window coordinates IMGUI_FUNCTION(GetWindowContentRegionMin) CALL_FUNCTION(GetWindowContentRegionMin, ImVec2) PUSH_NUMBER(ret.x) PUSH_NUMBER(ret.y) END_IMGUI_FUNC // IMGUI_API ImVec2 GetWindowContentRegionMax(); // content boundaries max for the full window (roughly // (0,0)+Size-Scroll) where Size can be overridden with SetNextWindowContentSize(), in window coordinates IMGUI_FUNCTION(GetWindowContentRegionMax) CALL_FUNCTION(GetWindowContentRegionMax, ImVec2) PUSH_NUMBER(ret.x) PUSH_NUMBER(ret.y) END_IMGUI_FUNC // IMGUI_API float GetScrollX(); // get scrolling amount [0 .. GetScrollMaxX()] IMGUI_FUNCTION(GetScrollX) CALL_FUNCTION(GetScrollX, float) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API float GetScrollY(); // get scrolling amount [0 .. GetScrollMaxY()] IMGUI_FUNCTION(GetScrollY) CALL_FUNCTION(GetScrollY, float) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API void SetScrollX(float scroll_x); // set scrolling amount [0 .. GetScrollMaxX()] IMGUI_FUNCTION(SetScrollX) NUMBER_ARG(scroll_x) CALL_FUNCTION_NO_RET(SetScrollX, scroll_x) END_IMGUI_FUNC // IMGUI_API void SetScrollY(float scroll_y); // set scrolling amount [0 .. GetScrollMaxY()] IMGUI_FUNCTION(SetScrollY) NUMBER_ARG(scroll_y) CALL_FUNCTION_NO_RET(SetScrollY, scroll_y) END_IMGUI_FUNC // IMGUI_API float GetScrollMaxX(); // get maximum scrolling amount ~~ ContentSize.x - // WindowSize.x - DecorationsSize.x IMGUI_FUNCTION(GetScrollMaxX) CALL_FUNCTION(GetScrollMaxX, float) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API float GetScrollMaxY(); // get maximum scrolling amount ~~ ContentSize.y - // WindowSize.y - DecorationsSize.y IMGUI_FUNCTION(GetScrollMaxY) CALL_FUNCTION(GetScrollMaxY, float) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API void SetScrollHereX(float center_x_ratio = 0.5f); // adjust scrolling amount to make current cursor // position visible. center_x_ratio=0.0: left, 0.5: center, 1.0: right. When using to make a "default/current item" visible, consider using // SetItemDefaultFocus() instead. IMGUI_FUNCTION(SetScrollHereX) OPTIONAL_NUMBER_ARG(center_x_ratio, 0.5f) CALL_FUNCTION_NO_RET(SetScrollHereX, center_x_ratio) END_IMGUI_FUNC // IMGUI_API void SetScrollHereY(float center_y_ratio = 0.5f); // adjust scrolling amount to make current cursor // position visible. center_y_ratio=0.0: top, 0.5: center, 1.0: bottom. When using to make a "default/current item" visible, consider using // SetItemDefaultFocus() instead. IMGUI_FUNCTION(SetScrollHereY) OPTIONAL_NUMBER_ARG(center_y_ratio, 0.5f) CALL_FUNCTION_NO_RET(SetScrollHereY, center_y_ratio) END_IMGUI_FUNC // IMGUI_API void SetScrollFromPosX(float local_x, float center_x_ratio = 0.5f); // adjust scrolling amount to make given position // visible. Generally GetCursorStartPos() + offset to compute a valid position. IMGUI_FUNCTION(SetScrollFromPosX) NUMBER_ARG(local_x) OPTIONAL_NUMBER_ARG(center_x_ratio, 0.5f) CALL_FUNCTION_NO_RET(SetScrollFromPosX, local_x, center_x_ratio) END_IMGUI_FUNC // IMGUI_API void SetScrollFromPosY(float local_y, float center_y_ratio = 0.5f); // adjust scrolling amount to make given position // visible. Generally GetCursorStartPos() + offset to compute a valid position. IMGUI_FUNCTION(SetScrollFromPosY) NUMBER_ARG(local_y) OPTIONAL_NUMBER_ARG(center_y_ratio, 0.5f) CALL_FUNCTION_NO_RET(SetScrollFromPosY, local_y, center_y_ratio) END_IMGUI_FUNC // IMGUI_API void PushFont(ImFont* font); // use NULL as a shortcut to push default font // Unsupported arg type ImFont* font // IMGUI_API void PopFont(); IMGUI_FUNCTION(PopFont) CALL_FUNCTION_NO_RET(PopFont) END_IMGUI_FUNC // IMGUI_API void PushStyleColor(ImGuiCol idx, ImU32 col); // modify a style color. always use this if you modify // the style after NewFrame(). IMGUI_FUNCTION(PushStyleColor) INT_ARG(idx) UINT_ARG(col) CALL_FUNCTION_NO_RET(PushStyleColor, idx, col) END_IMGUI_FUNC // IMGUI_API void PushStyleColor(ImGuiCol idx, const ImVec4& col); IMGUI_FUNCTION(PushStyleColor_2) INT_ARG(idx) IM_VEC_4_ARG(col) CALL_FUNCTION_NO_RET(PushStyleColor, idx, col) END_IMGUI_FUNC // IMGUI_API void PopStyleColor(int count = 1); IMGUI_FUNCTION(PopStyleColor) OPTIONAL_INT_ARG(count, 1) CALL_FUNCTION_NO_RET(PopStyleColor, count) END_IMGUI_FUNC // IMGUI_API void PushStyleVar(ImGuiStyleVar idx, float val); // modify a style float variable. always use this if you // modify the style after NewFrame(). IMGUI_FUNCTION(PushStyleVar) INT_ARG(idx) NUMBER_ARG(val) CALL_FUNCTION_NO_RET(PushStyleVar, idx, val) ADD_END_STACK(3) END_IMGUI_FUNC // IMGUI_API void PushStyleVar(ImGuiStyleVar idx, const ImVec2& val); // modify a style ImVec2 variable. always use this if // you modify the style after NewFrame(). IMGUI_FUNCTION(PushStyleVar_2) INT_ARG(idx) IM_VEC_2_ARG(val) CALL_FUNCTION_NO_RET(PushStyleVar, idx, val) ADD_END_STACK(3) END_IMGUI_FUNC // IMGUI_API void PopStyleVar(int count = 1); IMGUI_FUNCTION(PopStyleVar) OPTIONAL_INT_ARG(count, 1) CALL_FUNCTION_NO_RET(PopStyleVar, count) POP_END_STACK(3) END_IMGUI_FUNC // IMGUI_API void PushTabStop(bool tab_stop); // == tab stop enable. Allow focusing using // TAB/Shift-TAB, enabled by default but you can disable it for certain widgets IMGUI_FUNCTION(PushTabStop) BOOL_ARG(tab_stop) CALL_FUNCTION_NO_RET(PushTabStop, tab_stop) END_IMGUI_FUNC // IMGUI_API void PopTabStop(); IMGUI_FUNCTION(PopTabStop) CALL_FUNCTION_NO_RET(PopTabStop) END_IMGUI_FUNC // IMGUI_API void PushButtonRepeat(bool repeat); // in 'repeat' mode, Button*() functions return repeated // true in a typematic manner (using io.KeyRepeatDelay/io.KeyRepeatRate setting). Note that you can call IsItemActive() after any Button() to tell // if the button is held in the current frame. IMGUI_FUNCTION(PushButtonRepeat) BOOL_ARG(repeat) CALL_FUNCTION_NO_RET(PushButtonRepeat, repeat) END_IMGUI_FUNC // IMGUI_API void PopButtonRepeat(); IMGUI_FUNCTION(PopButtonRepeat) CALL_FUNCTION_NO_RET(PopButtonRepeat) END_IMGUI_FUNC // IMGUI_API void PushItemWidth(float item_width); // push width of items for common large "item+label" // widgets. >0.0f: width in pixels, <0.0f align xx pixels to the right of window (so -FLT_MIN always align width to the right side). IMGUI_FUNCTION(PushItemWidth) NUMBER_ARG(item_width) CALL_FUNCTION_NO_RET(PushItemWidth, item_width) END_IMGUI_FUNC // IMGUI_API void PopItemWidth(); IMGUI_FUNCTION(PopItemWidth) CALL_FUNCTION_NO_RET(PopItemWidth) END_IMGUI_FUNC // IMGUI_API void SetNextItemWidth(float item_width); // set width of the _next_ common large "item+label" // widget. >0.0f: width in pixels, <0.0f align xx pixels to the right of window (so -FLT_MIN always align width to the right side) IMGUI_FUNCTION(SetNextItemWidth) NUMBER_ARG(item_width) CALL_FUNCTION_NO_RET(SetNextItemWidth, item_width) END_IMGUI_FUNC // IMGUI_API float CalcItemWidth(); // width of item given pushed settings and current // cursor position. NOT necessarily the width of last item unlike most 'Item' functions. IMGUI_FUNCTION(CalcItemWidth) CALL_FUNCTION(CalcItemWidth, float) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API void PushTextWrapPos(float wrap_local_pos_x = 0.0f); // push word-wrapping position for Text*() commands. < // 0.0f: no wrapping; 0.0f: wrap to end of window (or column); > 0.0f: wrap at 'wrap_pos_x' position in window local space IMGUI_FUNCTION(PushTextWrapPos) OPTIONAL_NUMBER_ARG(wrap_local_pos_x, 0.0f) CALL_FUNCTION_NO_RET(PushTextWrapPos, wrap_local_pos_x) END_IMGUI_FUNC // IMGUI_API void PopTextWrapPos(); IMGUI_FUNCTION(PopTextWrapPos) CALL_FUNCTION_NO_RET(PopTextWrapPos) END_IMGUI_FUNC // IMGUI_API ImFont* GetFont(); // get current font // Unsupported return type ImFont* // IMGUI_API float GetFontSize(); // get current font size (= height in pixels) of current // font with current scale applied IMGUI_FUNCTION(GetFontSize) CALL_FUNCTION(GetFontSize, float) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API ImVec2 GetFontTexUvWhitePixel(); // get UV coordinate for a while pixel, useful to draw // custom shapes via the ImDrawList API IMGUI_FUNCTION(GetFontTexUvWhitePixel) CALL_FUNCTION(GetFontTexUvWhitePixel, ImVec2) PUSH_NUMBER(ret.x) PUSH_NUMBER(ret.y) END_IMGUI_FUNC // IMGUI_API ImU32 GetColorU32(ImGuiCol idx, float alpha_mul = 1.0f); // retrieve given style color with style alpha applied // and optional extra alpha multiplier, packed as a 32-bit value suitable for ImDrawList IMGUI_FUNCTION(GetColorU32) INT_ARG(idx) OPTIONAL_NUMBER_ARG(alpha_mul, 1.0f) CALL_FUNCTION(GetColorU32, unsigned int, idx, alpha_mul) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API ImU32 GetColorU32(const ImVec4& col); // retrieve given color with style alpha applied, packed // as a 32-bit value suitable for ImDrawList IMGUI_FUNCTION(GetColorU32_1) IM_VEC_4_ARG(col) CALL_FUNCTION(GetColorU32, unsigned int, col) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API ImU32 GetColorU32(ImU32 col); // retrieve given color with style alpha applied, packed // as a 32-bit value suitable for ImDrawList IMGUI_FUNCTION(GetColorU32_1_1) UINT_ARG(col) CALL_FUNCTION(GetColorU32, unsigned int, col) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API const ImVec4& GetStyleColorVec4(ImGuiCol idx); // retrieve style color as stored in ImGuiStyle // structure. use to feed back into PushStyleColor(), otherwise use GetColorU32() to get style color with style alpha baked in. // Unsupported return type const // IMGUI_API void Separator(); // separator, generally horizontal. inside a menu bar or // in horizontal layout mode, this becomes a vertical separator. IMGUI_FUNCTION(Separator) CALL_FUNCTION_NO_RET(Separator) END_IMGUI_FUNC // IMGUI_API void SameLine(float offset_from_start_x=0.0f, float spacing=-1.0f); // call between widgets or groups to layout them // horizontally. X position given in window coordinates. IMGUI_FUNCTION(SameLine) OPTIONAL_NUMBER_ARG(offset_from_start_x, 0.0f) OPTIONAL_NUMBER_ARG(spacing, -1.0f) CALL_FUNCTION_NO_RET(SameLine, offset_from_start_x, spacing) END_IMGUI_FUNC // IMGUI_API void NewLine(); // undo a SameLine() or force a new line when in a // horizontal-layout context. IMGUI_FUNCTION(NewLine) CALL_FUNCTION_NO_RET(NewLine) END_IMGUI_FUNC // IMGUI_API void Spacing(); // add vertical spacing. IMGUI_FUNCTION(Spacing) CALL_FUNCTION_NO_RET(Spacing) END_IMGUI_FUNC // IMGUI_API void Dummy(const ImVec2& size); // add a dummy item of given size. unlike // InvisibleButton(), Dummy() won't take the mouse click or be navigable into. IMGUI_FUNCTION(Dummy) IM_VEC_2_ARG(size) CALL_FUNCTION_NO_RET(Dummy, size) END_IMGUI_FUNC // IMGUI_API void Indent(float indent_w = 0.0f); // move content position toward the right, by indent_w, // or style.IndentSpacing if indent_w <= 0 IMGUI_FUNCTION(Indent) OPTIONAL_NUMBER_ARG(indent_w, 0.0f) CALL_FUNCTION_NO_RET(Indent, indent_w) END_IMGUI_FUNC // IMGUI_API void Unindent(float indent_w = 0.0f); // move content position back to the left, by indent_w, // or style.IndentSpacing if indent_w <= 0 IMGUI_FUNCTION(Unindent) OPTIONAL_NUMBER_ARG(indent_w, 0.0f) CALL_FUNCTION_NO_RET(Unindent, indent_w) END_IMGUI_FUNC // IMGUI_API void BeginGroup(); // lock horizontal starting position IMGUI_FUNCTION(BeginGroup) CALL_FUNCTION_NO_RET(BeginGroup) ADD_END_STACK(4) END_IMGUI_FUNC // IMGUI_API void EndGroup(); // unlock horizontal starting position + capture the // whole group bounding box into one "item" (so you can use IsItemHovered() or layout primitives such as SameLine() on whole group, etc.) IMGUI_FUNCTION(EndGroup) CALL_FUNCTION_NO_RET(EndGroup) POP_END_STACK(4) END_IMGUI_FUNC // IMGUI_API ImVec2 GetCursorPos(); // cursor position in window coordinates (relative to // window position) IMGUI_FUNCTION(GetCursorPos) CALL_FUNCTION(GetCursorPos, ImVec2) PUSH_NUMBER(ret.x) PUSH_NUMBER(ret.y) END_IMGUI_FUNC // IMGUI_API float GetCursorPosX(); // (some functions are using window-relative // coordinates, such as: GetCursorPos, GetCursorStartPos, GetContentRegionMax, GetWindowContentRegion* etc. IMGUI_FUNCTION(GetCursorPosX) CALL_FUNCTION(GetCursorPosX, float) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API float GetCursorPosY(); // other functions such as GetCursorScreenPos or // everything in ImDrawList:: IMGUI_FUNCTION(GetCursorPosY) CALL_FUNCTION(GetCursorPosY, float) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API void SetCursorPos(const ImVec2& local_pos); // are using the main, absolute coordinate system. IMGUI_FUNCTION(SetCursorPos) IM_VEC_2_ARG(local_pos) CALL_FUNCTION_NO_RET(SetCursorPos, local_pos) END_IMGUI_FUNC // IMGUI_API void SetCursorPosX(float local_x); // GetWindowPos() + GetCursorPos() == // GetCursorScreenPos() etc.) IMGUI_FUNCTION(SetCursorPosX) NUMBER_ARG(local_x) CALL_FUNCTION_NO_RET(SetCursorPosX, local_x) END_IMGUI_FUNC // IMGUI_API void SetCursorPosY(float local_y); // IMGUI_FUNCTION(SetCursorPosY) NUMBER_ARG(local_y) CALL_FUNCTION_NO_RET(SetCursorPosY, local_y) END_IMGUI_FUNC // IMGUI_API ImVec2 GetCursorStartPos(); // initial cursor position in window coordinates IMGUI_FUNCTION(GetCursorStartPos) CALL_FUNCTION(GetCursorStartPos, ImVec2) PUSH_NUMBER(ret.x) PUSH_NUMBER(ret.y) END_IMGUI_FUNC // IMGUI_API ImVec2 GetCursorScreenPos(); // cursor position in absolute coordinates (useful to // work with ImDrawList API). generally top-left == GetMainViewport()->Pos == (0,0) in single viewport mode, and bottom-right == // GetMainViewport()->Pos+Size == io.DisplaySize in single-viewport mode. IMGUI_FUNCTION(GetCursorScreenPos) CALL_FUNCTION(GetCursorScreenPos, ImVec2) PUSH_NUMBER(ret.x) PUSH_NUMBER(ret.y) END_IMGUI_FUNC // IMGUI_API void SetCursorScreenPos(const ImVec2& pos); // cursor position in absolute coordinates IMGUI_FUNCTION(SetCursorScreenPos) IM_VEC_2_ARG(pos) CALL_FUNCTION_NO_RET(SetCursorScreenPos, pos) END_IMGUI_FUNC // IMGUI_API void AlignTextToFramePadding(); // vertically align upcoming text baseline to // FramePadding.y so that it will align properly to regularly framed items (call if you have text on a line before a framed item) IMGUI_FUNCTION(AlignTextToFramePadding) CALL_FUNCTION_NO_RET(AlignTextToFramePadding) END_IMGUI_FUNC // IMGUI_API float GetTextLineHeight(); // ~ FontSize IMGUI_FUNCTION(GetTextLineHeight) CALL_FUNCTION(GetTextLineHeight, float) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API float GetTextLineHeightWithSpacing(); // ~ FontSize + style.ItemSpacing.y (distance in pixels // between 2 consecutive lines of text) IMGUI_FUNCTION(GetTextLineHeightWithSpacing) CALL_FUNCTION(GetTextLineHeightWithSpacing, float) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API float GetFrameHeight(); // ~ FontSize + style.FramePadding.y * 2 IMGUI_FUNCTION(GetFrameHeight) CALL_FUNCTION(GetFrameHeight, float) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API float GetFrameHeightWithSpacing(); // ~ FontSize + style.FramePadding.y * 2 + // style.ItemSpacing.y (distance in pixels between 2 consecutive lines of framed widgets) IMGUI_FUNCTION(GetFrameHeightWithSpacing) CALL_FUNCTION(GetFrameHeightWithSpacing, float) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API void PushID(const char* str_id); // push string into the ID stack (will hash string). IMGUI_FUNCTION(PushID) LABEL_ARG(str_id) CALL_FUNCTION_NO_RET(PushID, str_id) END_IMGUI_FUNC // IMGUI_API void PushID(const char* str_id_begin, const char* str_id_end); // push string into the ID stack (will hash string). IMGUI_FUNCTION(PushID_2) LABEL_ARG(str_id_begin) LABEL_ARG(str_id_end) CALL_FUNCTION_NO_RET(PushID, str_id_begin, str_id_end) END_IMGUI_FUNC // IMGUI_API void PushID(const void* ptr_id); // push pointer into the ID stack (will hash pointer). // Unsupported arg type const void* ptr_id // IMGUI_API void PushID(int int_id); // push integer into the ID stack (will hash integer). IMGUI_FUNCTION(PushID_1) INT_ARG(int_id) CALL_FUNCTION_NO_RET(PushID, int_id) END_IMGUI_FUNC // IMGUI_API void PopID(); // pop from the ID stack. IMGUI_FUNCTION(PopID) CALL_FUNCTION_NO_RET(PopID) END_IMGUI_FUNC // IMGUI_API ImGuiID GetID(const char* str_id); // calculate unique ID (hash of whole ID stack + given // parameter). e.g. if you want to query into ImGuiStorage yourself IMGUI_FUNCTION(GetID) LABEL_ARG(str_id) CALL_FUNCTION(GetID, unsigned int, str_id) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API ImGuiID GetID(const char* str_id_begin, const char* str_id_end); IMGUI_FUNCTION(GetID_2) LABEL_ARG(str_id_begin) LABEL_ARG(str_id_end) CALL_FUNCTION(GetID, unsigned int, str_id_begin, str_id_end) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API ImGuiID GetID(const void* ptr_id); // Unsupported arg type const void* ptr_id // IMGUI_API void TextUnformatted(const char* text, const char* text_end = NULL); // raw text without formatting. Roughly equivalent to // Text("%s", text) but: A) doesn't require null terminated string if 'text_end' is specified, B) it's faster, no memory copy is done, no buffer // size limits, recommended for long chunks of text. IMGUI_FUNCTION(TextUnformatted) LABEL_ARG(text) OPTIONAL_LABEL_ARG(text_end, NULL) CALL_FUNCTION_NO_RET(TextUnformatted, text, text_end) END_IMGUI_FUNC // IMGUI_API void Text(const char* fmt, ...) IM_FMTARGS(1); // formatted text // Unsupported arg type ...) IM_FMTARGS(1 // IMGUI_API void TextV(const char* fmt, va_list args) IM_FMTLIST(1); // Unsupported arg type va_list args) IM_FMTLIST(1 // IMGUI_API void TextColored(const ImVec4& col, const char* fmt, ...) IM_FMTARGS(2); // shortcut for // PushStyleColor(ImGuiCol_Text, col); Text(fmt, ...); PopStyleColor(); // Unsupported arg type ...) IM_FMTARGS(2 // IMGUI_API void TextColoredV(const ImVec4& col, const char* fmt, va_list args) IM_FMTLIST(2); // Unsupported arg type va_list args) IM_FMTLIST(2 // IMGUI_API void TextDisabled(const char* fmt, ...) IM_FMTARGS(1); // shortcut for // PushStyleColor(ImGuiCol_Text, style.Colors[ImGuiCol_TextDisabled]); Text(fmt, ...); PopStyleColor(); // Unsupported arg type ...) IM_FMTARGS(1 // IMGUI_API void TextDisabledV(const char* fmt, va_list args) IM_FMTLIST(1); // Unsupported arg type va_list args) IM_FMTLIST(1 // IMGUI_API void TextWrapped(const char* fmt, ...) IM_FMTARGS(1); // shortcut for PushTextWrapPos(0.0f); // Text(fmt, ...); PopTextWrapPos();. Note that this won't work on an auto-resizing window if there's no other widgets to extend the window width, // yoy may need to set a size using SetNextWindowSize(). // Unsupported arg type ...) IM_FMTARGS(1 // IMGUI_API void TextWrappedV(const char* fmt, va_list args) IM_FMTLIST(1); // Unsupported arg type va_list args) IM_FMTLIST(1 // IMGUI_API void LabelText(const char* label, const char* fmt, ...) IM_FMTARGS(2); // display text+label aligned the same // way as value+label widgets // Unsupported arg type ...) IM_FMTARGS(2 // IMGUI_API void LabelTextV(const char* label, const char* fmt, va_list args) IM_FMTLIST(2); // Unsupported arg type va_list args) IM_FMTLIST(2 // IMGUI_API void BulletText(const char* fmt, ...) IM_FMTARGS(1); // shortcut for Bullet()+Text() // Unsupported arg type ...) IM_FMTARGS(1 // IMGUI_API void BulletTextV(const char* fmt, va_list args) IM_FMTLIST(1); // Unsupported arg type va_list args) IM_FMTLIST(1 // IMGUI_API void SeparatorText(const char* label); // currently: formatted text with an horizontal line IMGUI_FUNCTION(SeparatorText) LABEL_ARG(label) CALL_FUNCTION_NO_RET(SeparatorText, label) END_IMGUI_FUNC // IMGUI_API bool Button(const char* label, const ImVec2& size = ImVec2 0 0); // button IMGUI_FUNCTION(Button) LABEL_ARG(label) OPTIONAL_IM_VEC_2_ARG(size, 0, 0) CALL_FUNCTION(Button, bool, label, size) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool SmallButton(const char* label); // button with FramePadding=(0,0) to easily embed within // text IMGUI_FUNCTION(SmallButton) LABEL_ARG(label) CALL_FUNCTION(SmallButton, bool, label) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool InvisibleButton(const char* str_id, const ImVec2& size, ImGuiButtonFlags flags = 0); // flexible button behavior without // the visuals, frequently useful to build custom behaviors using the public api (along with IsItemActive, IsItemHovered, etc.) IMGUI_FUNCTION(InvisibleButton) LABEL_ARG(str_id) IM_VEC_2_ARG(size) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(InvisibleButton, bool, str_id, size, flags) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool ArrowButton(const char* str_id, ImGuiDir dir); // square button with an arrow shape IMGUI_FUNCTION(ArrowButton) LABEL_ARG(str_id) INT_ARG(dir) CALL_FUNCTION(ArrowButton, bool, str_id, dir) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool Checkbox(const char* label, bool* v); IMGUI_FUNCTION(Checkbox) LABEL_ARG(label) BOOL_POINTER_ARG(v) CALL_FUNCTION(Checkbox, bool, label, v) PUSH_BOOL(ret) END_BOOL_POINTER(v) END_IMGUI_FUNC // IMGUI_API bool CheckboxFlags(const char* label, int* flags, int flags_value); IMGUI_FUNCTION(CheckboxFlags) LABEL_ARG(label) INT_POINTER_ARG(flags) INT_ARG(flags_value) CALL_FUNCTION(CheckboxFlags, bool, label, flags, flags_value) PUSH_BOOL(ret) END_INT_POINTER(flags) END_IMGUI_FUNC // IMGUI_API bool CheckboxFlags(const char* label, unsigned int* flags, unsigned int flags_value); IMGUI_FUNCTION(CheckboxFlags_3) LABEL_ARG(label) UINT_POINTER_ARG(flags) UINT_ARG(flags_value) CALL_FUNCTION(CheckboxFlags, bool, label, flags, flags_value) PUSH_BOOL(ret) END_UINT_POINTER(flags) END_IMGUI_FUNC // IMGUI_API bool RadioButton(const char* label, bool active); // use with e.g. if (RadioButton("one", my_value==1)) { // my_value = 1; } IMGUI_FUNCTION(RadioButton) LABEL_ARG(label) BOOL_ARG(active) CALL_FUNCTION(RadioButton, bool, label, active) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool RadioButton(const char* label, int* v, int v_button); // shortcut to handle the above pattern when value is an // integer IMGUI_FUNCTION(RadioButton_3) LABEL_ARG(label) INT_POINTER_ARG(v) INT_ARG(v_button) CALL_FUNCTION(RadioButton, bool, label, v, v_button) PUSH_BOOL(ret) END_INT_POINTER(v) END_IMGUI_FUNC // IMGUI_API void ProgressBar(float fraction, const ImVec2& size_arg = ImVec2 -FLT_MIN 0, const char* overlay = NULL); IMGUI_FUNCTION(ProgressBar) NUMBER_ARG(fraction) OPTIONAL_IM_VEC_2_ARG(size_arg, -FLT_MIN, 0) OPTIONAL_LABEL_ARG(overlay, NULL) CALL_FUNCTION_NO_RET(ProgressBar, fraction, size_arg, overlay) END_IMGUI_FUNC // IMGUI_API void Bullet(); // draw a small circle + keep the cursor on the same // line. advance cursor x position by GetTreeNodeToLabelSpacing(), same distance that TreeNode() uses IMGUI_FUNCTION(Bullet) CALL_FUNCTION_NO_RET(Bullet) END_IMGUI_FUNC // 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); IMGUI_FUNCTION(Image) IM_TEXTURE_ID_ARG(user_texture_id) IM_VEC_2_ARG(size) OPTIONAL_IM_VEC_2_ARG(uv0, 0, 0) OPTIONAL_IM_VEC_2_ARG(uv1, 1, 1) OPTIONAL_IM_VEC_4_ARG(tint_col, 1, 1, 1, 1) OPTIONAL_IM_VEC_4_ARG(border_col, 0, 0, 0, 0) CALL_FUNCTION_NO_RET(Image, user_texture_id, size, uv0, uv1, tint_col, border_col) END_IMGUI_FUNC // 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); IMGUI_FUNCTION(ImageButton) LABEL_ARG(str_id) IM_TEXTURE_ID_ARG(user_texture_id) IM_VEC_2_ARG(size) OPTIONAL_IM_VEC_2_ARG(uv0, 0, 0) OPTIONAL_IM_VEC_2_ARG(uv1, 1, 1) OPTIONAL_IM_VEC_4_ARG(bg_col, 0, 0, 0, 0) OPTIONAL_IM_VEC_4_ARG(tint_col, 1, 1, 1, 1) CALL_FUNCTION(ImageButton, bool, str_id, user_texture_id, size, uv0, uv1, bg_col, tint_col) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool BeginCombo(const char* label, const char* preview_value, ImGuiComboFlags flags = 0); IMGUI_FUNCTION(BeginCombo) LABEL_ARG(label) LABEL_ARG(preview_value) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(BeginCombo, bool, label, preview_value, flags) IF_RET_ADD_END_STACK(5) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API void EndCombo(); // only call EndCombo() if BeginCombo() returns true! IMGUI_FUNCTION(EndCombo) CALL_FUNCTION_NO_RET(EndCombo) POP_END_STACK(5) END_IMGUI_FUNC // IMGUI_API bool Combo(const char* label, int* current_item, const char* const items[], int items_count, int popup_max_height_in_items = // -1); // Unsupported arg type const char* const items[] // IMGUI_API bool Combo(const char* label, int* current_item, const char* items_separated_by_zeros, int popup_max_height_in_items = -1); // // Separate items with \0 within a string, end item-list with \0\0. e.g. "One\0Two\0Three\0" IMGUI_FUNCTION(Combo) LABEL_ARG(label) INT_POINTER_ARG(current_item) LABEL_ARG(items_separated_by_zeros) OPTIONAL_INT_ARG(popup_max_height_in_items, -1) CALL_FUNCTION(Combo, bool, label, current_item, items_separated_by_zeros, popup_max_height_in_items) PUSH_BOOL(ret) END_INT_POINTER(current_item) END_IMGUI_FUNC // 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); // Unsupported arg type bool(*items_getter)(void* data // Unsupported arg type const char** out_text) // Unsupported arg type void* data // 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); // If v_min >= v_max we have no bound IMGUI_FUNCTION(DragFloat) LABEL_ARG(label) FLOAT_POINTER_ARG(v) OPTIONAL_NUMBER_ARG(v_speed, 1.0f) OPTIONAL_NUMBER_ARG(v_min, 0.0f) OPTIONAL_NUMBER_ARG(v_max, 0.0f) OPTIONAL_LABEL_ARG(format, "%.3f") OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(DragFloat, bool, label, v, v_speed, v_min, v_max, format, flags) PUSH_BOOL(ret) END_FLOAT_POINTER(v) END_IMGUI_FUNC // 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); // Unsupported arg type float v[2] // 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); // Unsupported arg type float v[3] // 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); // Unsupported arg type float v[4] // 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); IMGUI_FUNCTION(DragFloatRange2) LABEL_ARG(label) FLOAT_POINTER_ARG(v_current_min) FLOAT_POINTER_ARG(v_current_max) OPTIONAL_NUMBER_ARG(v_speed, 1.0f) OPTIONAL_NUMBER_ARG(v_min, 0.0f) OPTIONAL_NUMBER_ARG(v_max, 0.0f) OPTIONAL_LABEL_ARG(format, "%.3f") OPTIONAL_LABEL_ARG(format_max, NULL) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(DragFloatRange2, bool, label, v_current_min, v_current_max, v_speed, v_min, v_max, format, format_max, flags) PUSH_BOOL(ret) END_FLOAT_POINTER(v_current_min) END_FLOAT_POINTER(v_current_max) END_IMGUI_FUNC // 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); // If v_min >= v_max we have no bound IMGUI_FUNCTION(DragInt) LABEL_ARG(label) INT_POINTER_ARG(v) OPTIONAL_NUMBER_ARG(v_speed, 1.0f) OPTIONAL_INT_ARG(v_min, 0) OPTIONAL_INT_ARG(v_max, 0) OPTIONAL_LABEL_ARG(format, "%d") OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(DragInt, bool, label, v, v_speed, v_min, v_max, format, flags) PUSH_BOOL(ret) END_INT_POINTER(v) END_IMGUI_FUNC // 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); // Unsupported arg type int v[2] // 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); // Unsupported arg type int v[3] // 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); // Unsupported arg type int v[4] // 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); IMGUI_FUNCTION(DragIntRange2) LABEL_ARG(label) INT_POINTER_ARG(v_current_min) INT_POINTER_ARG(v_current_max) OPTIONAL_NUMBER_ARG(v_speed, 1.0f) OPTIONAL_INT_ARG(v_min, 0) OPTIONAL_INT_ARG(v_max, 0) OPTIONAL_LABEL_ARG(format, "%d") OPTIONAL_LABEL_ARG(format_max, NULL) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(DragIntRange2, bool, label, v_current_min, v_current_max, v_speed, v_min, v_max, format, format_max, flags) PUSH_BOOL(ret) END_INT_POINTER(v_current_min) END_INT_POINTER(v_current_max) END_IMGUI_FUNC // 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); // Unsupported arg type void* p_data // Unsupported arg type const void* p_min = NULL // Unsupported arg type const void* p_max = NULL // 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); // Unsupported arg type void* p_data // Unsupported arg type const void* p_min = NULL // Unsupported arg type const void* p_max = NULL // IMGUI_API bool SliderFloat(const char* label, float* v, float v_min, float v_max, const char* format = "%.3f", ImGuiSliderFlags flags = // 0); // adjust format to decorate the value with a prefix or a suffix for in-slider labels or unit display. IMGUI_FUNCTION(SliderFloat) LABEL_ARG(label) FLOAT_POINTER_ARG(v) NUMBER_ARG(v_min) NUMBER_ARG(v_max) OPTIONAL_LABEL_ARG(format, "%.3f") OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(SliderFloat, bool, label, v, v_min, v_max, format, flags) PUSH_BOOL(ret) END_FLOAT_POINTER(v) END_IMGUI_FUNC // IMGUI_API bool SliderFloat2(const char* label, float v[2], float v_min, float v_max, const char* format = "%.3f", ImGuiSliderFlags // flags = 0); // Unsupported arg type float v[2] // IMGUI_API bool SliderFloat3(const char* label, float v[3], float v_min, float v_max, const char* format = "%.3f", ImGuiSliderFlags // flags = 0); // Unsupported arg type float v[3] // IMGUI_API bool SliderFloat4(const char* label, float v[4], float v_min, float v_max, const char* format = "%.3f", ImGuiSliderFlags // flags = 0); // Unsupported arg type float v[4] // 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); IMGUI_FUNCTION(SliderAngle) LABEL_ARG(label) FLOAT_POINTER_ARG(v_rad) OPTIONAL_NUMBER_ARG(v_degrees_min, -360.0f) OPTIONAL_NUMBER_ARG(v_degrees_max, +360.0f) LABEL_ARG(format) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(SliderAngle, bool, label, v_rad, v_degrees_min, v_degrees_max, format, flags) PUSH_BOOL(ret) END_FLOAT_POINTER(v_rad) END_IMGUI_FUNC // IMGUI_API bool SliderInt(const char* label, int* v, int v_min, int v_max, const char* format = "%d", ImGuiSliderFlags flags = 0); IMGUI_FUNCTION(SliderInt) LABEL_ARG(label) INT_POINTER_ARG(v) INT_ARG(v_min) INT_ARG(v_max) OPTIONAL_LABEL_ARG(format, "%d") OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(SliderInt, bool, label, v, v_min, v_max, format, flags) PUSH_BOOL(ret) END_INT_POINTER(v) END_IMGUI_FUNC // IMGUI_API bool SliderInt2(const char* label, int v[2], int v_min, int v_max, const char* format = "%d", ImGuiSliderFlags flags = 0); // Unsupported arg type int v[2] // IMGUI_API bool SliderInt3(const char* label, int v[3], int v_min, int v_max, const char* format = "%d", ImGuiSliderFlags flags = 0); // Unsupported arg type int v[3] // IMGUI_API bool SliderInt4(const char* label, int v[4], int v_min, int v_max, const char* format = "%d", ImGuiSliderFlags flags = 0); // Unsupported arg type int v[4] // 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); // Unsupported arg type void* p_data // Unsupported arg type const void* p_min // Unsupported arg type const void* p_max // 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); // Unsupported arg type void* p_data // Unsupported arg type const void* p_min // Unsupported arg type const void* p_max // 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); IMGUI_FUNCTION(VSliderFloat) LABEL_ARG(label) IM_VEC_2_ARG(size) FLOAT_POINTER_ARG(v) NUMBER_ARG(v_min) NUMBER_ARG(v_max) OPTIONAL_LABEL_ARG(format, "%.3f") OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(VSliderFloat, bool, label, size, v, v_min, v_max, format, flags) PUSH_BOOL(ret) END_FLOAT_POINTER(v) END_IMGUI_FUNC // 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); IMGUI_FUNCTION(VSliderInt) LABEL_ARG(label) IM_VEC_2_ARG(size) INT_POINTER_ARG(v) INT_ARG(v_min) INT_ARG(v_max) OPTIONAL_LABEL_ARG(format, "%d") OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(VSliderInt, bool, label, size, v, v_min, v_max, format, flags) PUSH_BOOL(ret) END_INT_POINTER(v) END_IMGUI_FUNC // 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); // Unsupported arg type void* p_data // Unsupported arg type const void* p_min // Unsupported arg type const void* p_max // IMGUI_API bool InputText(const char* label, char* buf, size_t buf_size, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback // = NULL, void* user_data = NULL); // Unsupported arg type char* buf // Unsupported arg type size_t buf_size // Unsupported arg type ImGuiInputTextCallback callback = NULL // Unsupported arg type void* user_data = NULL // 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); // Unsupported arg type char* buf // Unsupported arg type size_t buf_size // Unsupported arg type ImGuiInputTextCallback callback = NULL // Unsupported arg type void* user_data = NULL // 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); // Unsupported arg type char* buf // Unsupported arg type size_t buf_size // Unsupported arg type ImGuiInputTextCallback callback = NULL // Unsupported arg type void* user_data = NULL // 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); IMGUI_FUNCTION(InputFloat) LABEL_ARG(label) FLOAT_POINTER_ARG(v) OPTIONAL_NUMBER_ARG(step, 0.0f) OPTIONAL_NUMBER_ARG(step_fast, 0.0f) OPTIONAL_LABEL_ARG(format, "%.3f") OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(InputFloat, bool, label, v, step, step_fast, format, flags) PUSH_BOOL(ret) END_FLOAT_POINTER(v) END_IMGUI_FUNC // IMGUI_API bool InputFloat2(const char* label, float v[2], const char* format = "%.3f", ImGuiInputTextFlags flags = 0); // Unsupported arg type float v[2] // IMGUI_API bool InputFloat3(const char* label, float v[3], const char* format = "%.3f", ImGuiInputTextFlags flags = 0); // Unsupported arg type float v[3] // IMGUI_API bool InputFloat4(const char* label, float v[4], const char* format = "%.3f", ImGuiInputTextFlags flags = 0); // Unsupported arg type float v[4] // IMGUI_API bool InputInt(const char* label, int* v, int step = 1, int step_fast = 100, ImGuiInputTextFlags flags = 0); IMGUI_FUNCTION(InputInt) LABEL_ARG(label) INT_POINTER_ARG(v) OPTIONAL_INT_ARG(step, 1) OPTIONAL_INT_ARG(step_fast, 100) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(InputInt, bool, label, v, step, step_fast, flags) PUSH_BOOL(ret) END_INT_POINTER(v) END_IMGUI_FUNC // IMGUI_API bool InputInt2(const char* label, int v[2], ImGuiInputTextFlags flags = 0); // Unsupported arg type int v[2] // IMGUI_API bool InputInt3(const char* label, int v[3], ImGuiInputTextFlags flags = 0); // Unsupported arg type int v[3] // IMGUI_API bool InputInt4(const char* label, int v[4], ImGuiInputTextFlags flags = 0); // Unsupported arg type int v[4] // 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); // Unsupported arg type double* v // Unsupported arg type double step = 0.0 // Unsupported arg type double step_fast = 0.0 // 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); // Unsupported arg type void* p_data // Unsupported arg type const void* p_step = NULL // Unsupported arg type const void* p_step_fast = NULL // 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); // Unsupported arg type void* p_data // Unsupported arg type const void* p_step = NULL // Unsupported arg type const void* p_step_fast = NULL // IMGUI_API bool ColorEdit3(const char* label, float col[3], ImGuiColorEditFlags flags = 0); // Unsupported arg type float col[3] // IMGUI_API bool ColorEdit4(const char* label, float col[4], ImGuiColorEditFlags flags = 0); // Unsupported arg type float col[4] // IMGUI_API bool ColorPicker3(const char* label, float col[3], ImGuiColorEditFlags flags = 0); // Unsupported arg type float col[3] // IMGUI_API bool ColorPicker4(const char* label, float col[4], ImGuiColorEditFlags flags = 0, const float* ref_col = NULL); // Unsupported arg type float col[4] // Unsupported arg type const float* ref_col = NULL // IMGUI_API bool ColorButton(const char* desc_id, const ImVec4& col, ImGuiColorEditFlags flags = 0, const ImVec2& size = ImVec2 0 0); // // display a color square/button, hover for details, return true when pressed. IMGUI_FUNCTION(ColorButton) LABEL_ARG(desc_id) IM_VEC_4_ARG(col) OPTIONAL_INT_ARG(flags, 0) OPTIONAL_IM_VEC_2_ARG(size, 0, 0) CALL_FUNCTION(ColorButton, bool, desc_id, col, flags, size) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API void SetColorEditOptions(ImGuiColorEditFlags flags); // initialize current options (generally on // application startup) if you want to select a default format, picker type, etc. User will be able to change many settings, unless you pass the // _NoOptions flag to your calls. IMGUI_FUNCTION(SetColorEditOptions) INT_ARG(flags) CALL_FUNCTION_NO_RET(SetColorEditOptions, flags) END_IMGUI_FUNC // IMGUI_API bool TreeNode(const char* label); IMGUI_FUNCTION(TreeNode) LABEL_ARG(label) CALL_FUNCTION(TreeNode, bool, label) IF_RET_ADD_END_STACK(6) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool TreeNode(const char* str_id, const char* fmt, ...) IM_FMTARGS(2); // helper variation to easily decorelate the id from // the displayed string. Read the FAQ about why and how to use ID. to align arbitrary text at the same level as a TreeNode() you can use Bullet(). // Unsupported arg type ...) IM_FMTARGS(2 // IMGUI_API bool TreeNode(const void* ptr_id, const char* fmt, ...) IM_FMTARGS(2); // " // Unsupported arg type const void* ptr_id // Unsupported arg type ...) IM_FMTARGS(2 // IMGUI_API bool TreeNodeV(const char* str_id, const char* fmt, va_list args) IM_FMTLIST(2); // Unsupported arg type va_list args) IM_FMTLIST(2 // IMGUI_API bool TreeNodeV(const void* ptr_id, const char* fmt, va_list args) IM_FMTLIST(2); // Unsupported arg type const void* ptr_id // Unsupported arg type va_list args) IM_FMTLIST(2 // IMGUI_API bool TreeNodeEx(const char* label, ImGuiTreeNodeFlags flags = 0); IMGUI_FUNCTION(TreeNodeEx) LABEL_ARG(label) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(TreeNodeEx, bool, label, flags) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool TreeNodeEx(const char* str_id, ImGuiTreeNodeFlags flags, const char* fmt, ...) IM_FMTARGS(3); // Unsupported arg type ...) IM_FMTARGS(3 // IMGUI_API bool TreeNodeEx(const void* ptr_id, ImGuiTreeNodeFlags flags, const char* fmt, ...) IM_FMTARGS(3); // Unsupported arg type const void* ptr_id // Unsupported arg type ...) IM_FMTARGS(3 // IMGUI_API bool TreeNodeExV(const char* str_id, ImGuiTreeNodeFlags flags, const char* fmt, va_list args) IM_FMTLIST(3); // Unsupported arg type va_list args) IM_FMTLIST(3 // IMGUI_API bool TreeNodeExV(const void* ptr_id, ImGuiTreeNodeFlags flags, const char* fmt, va_list args) IM_FMTLIST(3); // Unsupported arg type const void* ptr_id // Unsupported arg type va_list args) IM_FMTLIST(3 // IMGUI_API void TreePush(const char* str_id); // ~ Indent()+PushId(). Already called by TreeNode() // when returning true, but you can call TreePush/TreePop yourself if desired. IMGUI_FUNCTION(TreePush) LABEL_ARG(str_id) CALL_FUNCTION_NO_RET(TreePush, str_id) ADD_END_STACK(6) END_IMGUI_FUNC // IMGUI_API void TreePush(const void* ptr_id); // " // Unsupported arg type const void* ptr_id // IMGUI_API void TreePop(); // ~ Unindent()+PopId() IMGUI_FUNCTION(TreePop) CALL_FUNCTION_NO_RET(TreePop) POP_END_STACK(6) END_IMGUI_FUNC // IMGUI_API float GetTreeNodeToLabelSpacing(); // horizontal distance preceding label when using // TreeNode*() or Bullet() == (g.FontSize + style.FramePadding.x*2) for a regular unframed TreeNode IMGUI_FUNCTION(GetTreeNodeToLabelSpacing) CALL_FUNCTION(GetTreeNodeToLabelSpacing, float) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API bool CollapsingHeader(const char* label, ImGuiTreeNodeFlags flags = 0); // if returning 'true' the header is open. doesn't // indent nor push on ID stack. user doesn't have to call TreePop(). IMGUI_FUNCTION(CollapsingHeader) LABEL_ARG(label) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(CollapsingHeader, bool, label, flags) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool CollapsingHeader(const char* label, bool* p_visible, ImGuiTreeNodeFlags flags = 0); // when 'p_visible != NULL': if // '*p_visible==true' display an additional small close button on upper right of the header which will set the bool to false when clicked, if // '*p_visible==false' don't display the header. IMGUI_FUNCTION(CollapsingHeader_3) LABEL_ARG(label) BOOL_POINTER_ARG(p_visible) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(CollapsingHeader, bool, label, p_visible, flags) PUSH_BOOL(ret) END_BOOL_POINTER(p_visible) END_IMGUI_FUNC // IMGUI_API void SetNextItemOpen(bool is_open, ImGuiCond cond = 0); // set next TreeNode/CollapsingHeader open state. IMGUI_FUNCTION(SetNextItemOpen) BOOL_ARG(is_open) OPTIONAL_INT_ARG(cond, 0) CALL_FUNCTION_NO_RET(SetNextItemOpen, is_open, cond) END_IMGUI_FUNC // IMGUI_API bool Selectable(const char* label, bool selected = false, ImGuiSelectableFlags flags = 0, const ImVec2& size = ImVec2 0 0); // // "bool selected" carry the selection state (read-only). Selectable() is clicked is returns true so you can modify your selection state. // size.x==0.0: use remaining width, size.x>0.0: specify width. size.y==0.0: use label height, size.y>0.0: specify height IMGUI_FUNCTION(Selectable) LABEL_ARG(label) OPTIONAL_BOOL_ARG(selected, false) OPTIONAL_INT_ARG(flags, 0) OPTIONAL_IM_VEC_2_ARG(size, 0, 0) CALL_FUNCTION(Selectable, bool, label, selected, flags, size) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool Selectable(const char* label, bool* p_selected, ImGuiSelectableFlags flags = 0, const ImVec2& size = ImVec2 0 0); // // "bool* p_selected" point to the selection state (read-write), as a convenient helper. IMGUI_FUNCTION(Selectable_4) LABEL_ARG(label) BOOL_POINTER_ARG(p_selected) OPTIONAL_INT_ARG(flags, 0) OPTIONAL_IM_VEC_2_ARG(size, 0, 0) CALL_FUNCTION(Selectable, bool, label, p_selected, flags, size) PUSH_BOOL(ret) END_BOOL_POINTER(p_selected) END_IMGUI_FUNC // IMGUI_API bool BeginListBox(const char* label, const ImVec2& size = ImVec2 0 0); // open a framed scrolling region IMGUI_FUNCTION(BeginListBox) LABEL_ARG(label) OPTIONAL_IM_VEC_2_ARG(size, 0, 0) CALL_FUNCTION(BeginListBox, bool, label, size) IF_RET_ADD_END_STACK(7) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API void EndListBox(); // only call EndListBox() if BeginListBox() returned // true! IMGUI_FUNCTION(EndListBox) CALL_FUNCTION_NO_RET(EndListBox) POP_END_STACK(7) END_IMGUI_FUNC // IMGUI_API bool ListBox(const char* label, int* current_item, const char* const items[], int items_count, int height_in_items = -1); // Unsupported arg type const char* const items[] // 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); // Unsupported arg type bool (*items_getter)(void* data // Unsupported arg type const char** out_text) // Unsupported arg type void* data // 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)); IMGUI_FUNCTION(PlotLines) LABEL_ARG(label) FLOAT_ARRAY_ARG(values) OPTIONAL_INT_ARG(values_offset, 0) OPTIONAL_LABEL_ARG(overlay_text, NULL) OPTIONAL_NUMBER_ARG(scale_min, FLT_MAX) OPTIONAL_NUMBER_ARG(scale_max, FLT_MAX) OPTIONAL_IM_VEC_2_ARG(graph_size, 0, 0) OPTIONAL_INT_ARG(stride, sizeof(float)) CALL_FUNCTION_NO_RET(PlotLines, label, values, values_count, values_offset, overlay_text, scale_min, scale_max, graph_size, stride) END_FLOAT_ARRAY(values) END_IMGUI_FUNC // 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); // Unsupported arg type float(*values_getter)(void* data // Unsupported arg type void* data // 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)); IMGUI_FUNCTION(PlotHistogram) LABEL_ARG(label) FLOAT_ARRAY_ARG(values) OPTIONAL_INT_ARG(values_offset, 0) OPTIONAL_LABEL_ARG(overlay_text, NULL) OPTIONAL_NUMBER_ARG(scale_min, FLT_MAX) OPTIONAL_NUMBER_ARG(scale_max, FLT_MAX) OPTIONAL_IM_VEC_2_ARG(graph_size, 0, 0) OPTIONAL_INT_ARG(stride, sizeof(float)) CALL_FUNCTION_NO_RET(PlotHistogram, label, values, values_count, values_offset, overlay_text, scale_min, scale_max, graph_size, stride) END_FLOAT_ARRAY(values) END_IMGUI_FUNC // 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); // Unsupported arg type float(*values_getter)(void* data // Unsupported arg type void* data // IMGUI_API void Value(const char* prefix, bool b); IMGUI_FUNCTION(Value) LABEL_ARG(prefix) BOOL_ARG(b) CALL_FUNCTION_NO_RET(Value, prefix, b) END_IMGUI_FUNC // IMGUI_API void Value(const char* prefix, int v); IMGUI_FUNCTION(Value_2) LABEL_ARG(prefix) INT_ARG(v) CALL_FUNCTION_NO_RET(Value, prefix, v) END_IMGUI_FUNC // IMGUI_API void Value(const char* prefix, unsigned int v); IMGUI_FUNCTION(Value_2_2) LABEL_ARG(prefix) UINT_ARG(v) CALL_FUNCTION_NO_RET(Value, prefix, v) END_IMGUI_FUNC // IMGUI_API void Value(const char* prefix, float v, const char* float_format = NULL); IMGUI_FUNCTION(Value_3) LABEL_ARG(prefix) NUMBER_ARG(v) OPTIONAL_LABEL_ARG(float_format, NULL) CALL_FUNCTION_NO_RET(Value, prefix, v, float_format) END_IMGUI_FUNC // IMGUI_API bool BeginMenuBar(); // append to menu-bar of current window (requires // ImGuiWindowFlags_MenuBar flag set on parent window). IMGUI_FUNCTION(BeginMenuBar) CALL_FUNCTION(BeginMenuBar, bool) IF_RET_ADD_END_STACK(8) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API void EndMenuBar(); // only call EndMenuBar() if BeginMenuBar() returns // true! IMGUI_FUNCTION(EndMenuBar) CALL_FUNCTION_NO_RET(EndMenuBar) POP_END_STACK(8) END_IMGUI_FUNC // IMGUI_API bool BeginMainMenuBar(); // create and append to a full screen menu-bar. IMGUI_FUNCTION(BeginMainMenuBar) CALL_FUNCTION(BeginMainMenuBar, bool) IF_RET_ADD_END_STACK(9) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API void EndMainMenuBar(); // only call EndMainMenuBar() if BeginMainMenuBar() // returns true! IMGUI_FUNCTION(EndMainMenuBar) CALL_FUNCTION_NO_RET(EndMainMenuBar) POP_END_STACK(9) END_IMGUI_FUNC // IMGUI_API bool BeginMenu(const char* label, bool enabled = true); // create a sub-menu entry. only call EndMenu() if // this returns true! IMGUI_FUNCTION(BeginMenu) LABEL_ARG(label) OPTIONAL_BOOL_ARG(enabled, true) CALL_FUNCTION(BeginMenu, bool, label, enabled) IF_RET_ADD_END_STACK(10) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API void EndMenu(); // only call EndMenu() if BeginMenu() returns true! IMGUI_FUNCTION(EndMenu) CALL_FUNCTION_NO_RET(EndMenu) POP_END_STACK(10) END_IMGUI_FUNC // IMGUI_API bool MenuItem(const char* label, const char* shortcut = NULL, bool selected = false, bool enabled = true); // return true // when activated. IMGUI_FUNCTION(MenuItem) LABEL_ARG(label) OPTIONAL_LABEL_ARG(shortcut, NULL) OPTIONAL_BOOL_ARG(selected, false) OPTIONAL_BOOL_ARG(enabled, true) CALL_FUNCTION(MenuItem, bool, label, shortcut, selected, enabled) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool MenuItem(const char* label, const char* shortcut, bool* p_selected, bool enabled = true); // return true // when activated + toggle (*p_selected) if p_selected != NULL IMGUI_FUNCTION(MenuItem_4) LABEL_ARG(label) LABEL_ARG(shortcut) BOOL_POINTER_ARG(p_selected) OPTIONAL_BOOL_ARG(enabled, true) CALL_FUNCTION(MenuItem, bool, label, shortcut, p_selected, enabled) PUSH_BOOL(ret) END_BOOL_POINTER(p_selected) END_IMGUI_FUNC // IMGUI_API bool BeginTooltip(); // begin/append a tooltip window. to create // full-featured tooltip (with any kind of items). IMGUI_FUNCTION(BeginTooltip) CALL_FUNCTION(BeginTooltip, bool) IF_RET_ADD_END_STACK(11) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API void EndTooltip(); // only call EndTooltip() if BeginTooltip() returns // true! IMGUI_FUNCTION(EndTooltip) CALL_FUNCTION_NO_RET(EndTooltip) POP_END_STACK(11) END_IMGUI_FUNC // IMGUI_API void SetTooltip(const char* fmt, ...) IM_FMTARGS(1); // set a text-only tooltip, typically use with // ImGui::IsItemHovered(). override any previous call to SetTooltip(). // Unsupported arg type ...) IM_FMTARGS(1 // IMGUI_API void SetTooltipV(const char* fmt, va_list args) IM_FMTLIST(1); // Unsupported arg type va_list args) IM_FMTLIST(1 // IMGUI_API bool BeginPopup(const char* str_id, ImGuiWindowFlags flags = 0); // return true if the popup is open, // and you can start outputting to it. IMGUI_FUNCTION(BeginPopup) LABEL_ARG(str_id) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(BeginPopup, bool, str_id, flags) IF_RET_ADD_END_STACK(12) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool BeginPopupModal(const char* name, bool* p_open = NULL, ImGuiWindowFlags flags = 0); // return true if the modal is open, // and you can start outputting to it. IMGUI_FUNCTION(BeginPopupModal) LABEL_ARG(name) OPTIONAL_BOOL_POINTER_ARG(p_open) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(BeginPopupModal, bool, name, p_open, flags) IF_RET_ADD_END_STACK(12) PUSH_BOOL(ret) END_BOOL_POINTER(p_open) END_IMGUI_FUNC // IMGUI_API void EndPopup(); // only call EndPopup() if // BeginPopupXXX() returns true! IMGUI_FUNCTION(EndPopup) CALL_FUNCTION_NO_RET(EndPopup) POP_END_STACK(12) END_IMGUI_FUNC // IMGUI_API void OpenPopup(const char* str_id, ImGuiPopupFlags popup_flags = 0); // call to mark popup as open (don't // call every frame!). IMGUI_FUNCTION(OpenPopup) LABEL_ARG(str_id) OPTIONAL_INT_ARG(popup_flags, 0) CALL_FUNCTION_NO_RET(OpenPopup, str_id, popup_flags) END_IMGUI_FUNC // IMGUI_API void OpenPopup(ImGuiID id, ImGuiPopupFlags popup_flags = 0); // id overload to facilitate calling // from nested stacks IMGUI_FUNCTION(OpenPopup_2) UINT_ARG(id) OPTIONAL_INT_ARG(popup_flags, 0) CALL_FUNCTION_NO_RET(OpenPopup, id, popup_flags) END_IMGUI_FUNC // IMGUI_API void OpenPopupOnItemClick(const char* str_id = NULL, ImGuiPopupFlags popup_flags = 1); // helper to open popup when clicked // on last item. Default to ImGuiPopupFlags_MouseButtonRight == 1. (note: actually triggers on the mouse _released_ event to be consistent with // popup behaviors) IMGUI_FUNCTION(OpenPopupOnItemClick) OPTIONAL_LABEL_ARG(str_id, NULL) OPTIONAL_INT_ARG(popup_flags, 1) CALL_FUNCTION_NO_RET(OpenPopupOnItemClick, str_id, popup_flags) END_IMGUI_FUNC // IMGUI_API void CloseCurrentPopup(); // manually close the popup we have // begin-ed into. IMGUI_FUNCTION(CloseCurrentPopup) CALL_FUNCTION_NO_RET(CloseCurrentPopup) END_IMGUI_FUNC // IMGUI_API bool BeginPopupContextItem(const char* str_id = NULL, ImGuiPopupFlags popup_flags = 1); // open+begin popup when clicked on // last item. Use str_id==NULL to associate the popup to previous item. If you want to use that on a non-interactive item such as Text() you need // to pass in an explicit ID here. read comments in .cpp! IMGUI_FUNCTION(BeginPopupContextItem) OPTIONAL_LABEL_ARG(str_id, NULL) OPTIONAL_INT_ARG(popup_flags, 1) CALL_FUNCTION(BeginPopupContextItem, bool, str_id, popup_flags) IF_RET_ADD_END_STACK(12) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool BeginPopupContextWindow(const char* str_id = NULL, ImGuiPopupFlags popup_flags = 1);// open+begin popup when clicked on // current window. IMGUI_FUNCTION(BeginPopupContextWindow) OPTIONAL_LABEL_ARG(str_id, NULL) OPTIONAL_INT_ARG(popup_flags, 1) CALL_FUNCTION(BeginPopupContextWindow, bool, str_id, popup_flags) IF_RET_ADD_END_STACK(12) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool BeginPopupContextVoid(const char* str_id = NULL, ImGuiPopupFlags popup_flags = 1); // open+begin popup when clicked in // void (where there are no windows). IMGUI_FUNCTION(BeginPopupContextVoid) OPTIONAL_LABEL_ARG(str_id, NULL) OPTIONAL_INT_ARG(popup_flags, 1) CALL_FUNCTION(BeginPopupContextVoid, bool, str_id, popup_flags) IF_RET_ADD_END_STACK(12) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsPopupOpen(const char* str_id, ImGuiPopupFlags flags = 0); // return true if the popup is open. IMGUI_FUNCTION(IsPopupOpen) LABEL_ARG(str_id) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(IsPopupOpen, bool, str_id, flags) PUSH_BOOL(ret) END_IMGUI_FUNC // 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); IMGUI_FUNCTION(BeginTable) LABEL_ARG(str_id) INT_ARG(column) OPTIONAL_INT_ARG(flags, 0) OPTIONAL_IM_VEC_2_ARG(outer_size, 0.0f, 0.0f) OPTIONAL_NUMBER_ARG(inner_width, 0.0f) CALL_FUNCTION(BeginTable, bool, str_id, column, flags, outer_size, inner_width) IF_RET_ADD_END_STACK(13) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API void EndTable(); // only call EndTable() if BeginTable() returns true! IMGUI_FUNCTION(EndTable) CALL_FUNCTION_NO_RET(EndTable) POP_END_STACK(13) END_IMGUI_FUNC // IMGUI_API void TableNextRow(ImGuiTableRowFlags row_flags = 0, float min_row_height = 0.0f); // append into the first cell of a new row. IMGUI_FUNCTION(TableNextRow) OPTIONAL_INT_ARG(row_flags, 0) OPTIONAL_NUMBER_ARG(min_row_height, 0.0f) CALL_FUNCTION_NO_RET(TableNextRow, row_flags, min_row_height) END_IMGUI_FUNC // IMGUI_API bool TableNextColumn(); // append into the next column (or first column of next row if // currently in last column). Return true when column is visible. IMGUI_FUNCTION(TableNextColumn) CALL_FUNCTION(TableNextColumn, bool) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool TableSetColumnIndex(int column_n); // append into the specified column. Return true when column is // visible. IMGUI_FUNCTION(TableSetColumnIndex) INT_ARG(column_n) CALL_FUNCTION(TableSetColumnIndex, bool, column_n) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API void TableSetupColumn(const char* label, ImGuiTableColumnFlags flags = 0, float init_width_or_weight = 0.0f, ImGuiID user_id // = 0); IMGUI_FUNCTION(TableSetupColumn) LABEL_ARG(label) OPTIONAL_INT_ARG(flags, 0) OPTIONAL_NUMBER_ARG(init_width_or_weight, 0.0f) OPTIONAL_UINT_ARG(user_id, 0) CALL_FUNCTION_NO_RET(TableSetupColumn, label, flags, init_width_or_weight, user_id) END_IMGUI_FUNC // IMGUI_API void TableSetupScrollFreeze(int cols, int rows); // lock columns/rows so they stay visible when scrolled. IMGUI_FUNCTION(TableSetupScrollFreeze) INT_ARG(cols) INT_ARG(rows) CALL_FUNCTION_NO_RET(TableSetupScrollFreeze, cols, rows) END_IMGUI_FUNC // IMGUI_API void TableHeadersRow(); // submit all headers cells based on data provided to // TableSetupColumn() + submit context menu IMGUI_FUNCTION(TableHeadersRow) CALL_FUNCTION_NO_RET(TableHeadersRow) END_IMGUI_FUNC // IMGUI_API void TableHeader(const char* label); // submit one header cell manually (rarely used) IMGUI_FUNCTION(TableHeader) LABEL_ARG(label) CALL_FUNCTION_NO_RET(TableHeader, label) END_IMGUI_FUNC // IMGUI_API ImGuiTableSortSpecs* TableGetSortSpecs(); // get latest sort specs for the table (NULL if not sorting). // Lifetime: don't hold on this pointer over multiple frames or past any subsequent call to BeginTable(). // Unsupported return type ImGuiTableSortSpecs* // IMGUI_API int TableGetColumnCount(); // return number of columns (value passed to BeginTable) // Unsupported return type int // IMGUI_API int TableGetColumnIndex(); // return current column index. // Unsupported return type int // IMGUI_API int TableGetRowIndex(); // return current row index. // Unsupported return type int // IMGUI_API const char* TableGetColumnName(int column_n = -1); // return "" if column didn't have a name declared by // TableSetupColumn(). Pass -1 to use current column. IMGUI_FUNCTION(TableGetColumnName) OPTIONAL_INT_ARG(column_n, -1) CALL_FUNCTION(TableGetColumnName, const char*, column_n) PUSH_STRING(ret) END_IMGUI_FUNC // IMGUI_API ImGuiTableColumnFlags TableGetColumnFlags(int column_n = -1); // return column flags so you can query their // Enabled/Visible/Sorted/Hovered status flags. Pass -1 to use current column. // Unsupported return type ImGuiTableColumnFlags // IMGUI_API void TableSetColumnEnabled(int column_n, bool v);// change user accessible enabled/disabled state of a column. Set to // false to hide the column. User can use the context menu to change this themselves (right-click in headers, or right-click in columns body with // ImGuiTableFlags_ContextMenuInBody) IMGUI_FUNCTION(TableSetColumnEnabled) INT_ARG(column_n) BOOL_ARG(v) CALL_FUNCTION_NO_RET(TableSetColumnEnabled, column_n, v) END_IMGUI_FUNC // IMGUI_API void TableSetBgColor(ImGuiTableBgTarget target, ImU32 color, int column_n = -1); // change the color of a cell, row, // or column. See ImGuiTableBgTarget_ flags for details. IMGUI_FUNCTION(TableSetBgColor) INT_ARG(target) UINT_ARG(color) OPTIONAL_INT_ARG(column_n, -1) CALL_FUNCTION_NO_RET(TableSetBgColor, target, color, column_n) END_IMGUI_FUNC // IMGUI_API void Columns(int count = 1, const char* id = NULL, bool border = true); IMGUI_FUNCTION(Columns) OPTIONAL_INT_ARG(count, 1) OPTIONAL_LABEL_ARG(id, NULL) OPTIONAL_BOOL_ARG(border, true) CALL_FUNCTION_NO_RET(Columns, count, id, border) END_IMGUI_FUNC // IMGUI_API void NextColumn(); // next column, defaults to current row or next row // if the current row is finished IMGUI_FUNCTION(NextColumn) CALL_FUNCTION_NO_RET(NextColumn) END_IMGUI_FUNC // IMGUI_API int GetColumnIndex(); // get current column index // Unsupported return type int // IMGUI_API float GetColumnWidth(int column_index = -1); // get column width (in pixels). pass -1 to use // current column IMGUI_FUNCTION(GetColumnWidth) OPTIONAL_INT_ARG(column_index, -1) CALL_FUNCTION(GetColumnWidth, float, column_index) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API void SetColumnWidth(int column_index, float width); // set column width (in pixels). pass -1 to use // current column IMGUI_FUNCTION(SetColumnWidth) INT_ARG(column_index) NUMBER_ARG(width) CALL_FUNCTION_NO_RET(SetColumnWidth, column_index, width) END_IMGUI_FUNC // IMGUI_API float GetColumnOffset(int column_index = -1); // get position of column line (in pixels, from the // left side of the contents region). pass -1 to use current column, otherwise 0..GetColumnsCount() inclusive. column 0 is typically 0.0f IMGUI_FUNCTION(GetColumnOffset) OPTIONAL_INT_ARG(column_index, -1) CALL_FUNCTION(GetColumnOffset, float, column_index) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API void SetColumnOffset(int column_index, float offset_x); // set position of column line (in pixels, from the // left side of the contents region). pass -1 to use current column IMGUI_FUNCTION(SetColumnOffset) INT_ARG(column_index) NUMBER_ARG(offset_x) CALL_FUNCTION_NO_RET(SetColumnOffset, column_index, offset_x) END_IMGUI_FUNC // IMGUI_API int GetColumnsCount(); // Unsupported return type int // IMGUI_API bool BeginTabBar(const char* str_id, ImGuiTabBarFlags flags = 0); // create and append into a TabBar IMGUI_FUNCTION(BeginTabBar) LABEL_ARG(str_id) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(BeginTabBar, bool, str_id, flags) IF_RET_ADD_END_STACK(14) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API void EndTabBar(); // only call EndTabBar() if BeginTabBar() returns // true! IMGUI_FUNCTION(EndTabBar) CALL_FUNCTION_NO_RET(EndTabBar) POP_END_STACK(14) END_IMGUI_FUNC // IMGUI_API bool BeginTabItem(const char* label, bool* p_open = NULL, ImGuiTabItemFlags flags = 0); // create a Tab. Returns true if the // Tab is selected. IMGUI_FUNCTION(BeginTabItem) LABEL_ARG(label) OPTIONAL_BOOL_POINTER_ARG(p_open) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(BeginTabItem, bool, label, p_open, flags) IF_RET_ADD_END_STACK(15) PUSH_BOOL(ret) END_BOOL_POINTER(p_open) END_IMGUI_FUNC // IMGUI_API void EndTabItem(); // only call EndTabItem() if BeginTabItem() returns // true! IMGUI_FUNCTION(EndTabItem) CALL_FUNCTION_NO_RET(EndTabItem) POP_END_STACK(15) END_IMGUI_FUNC // IMGUI_API bool TabItemButton(const char* label, ImGuiTabItemFlags flags = 0); // create a Tab behaving like a button. return true // when clicked. cannot be selected in the tab bar. IMGUI_FUNCTION(TabItemButton) LABEL_ARG(label) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(TabItemButton, bool, label, flags) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API void SetTabItemClosed(const char* tab_or_docked_window_label); // notify TabBar or Docking system of a closed // tab/window ahead (useful to reduce visual flicker on reorderable tab bars). For tab-bar: call after BeginTabBar() and before Tab submissions. // Otherwise call with a window name. IMGUI_FUNCTION(SetTabItemClosed) LABEL_ARG(tab_or_docked_window_label) CALL_FUNCTION_NO_RET(SetTabItemClosed, tab_or_docked_window_label) END_IMGUI_FUNC // IMGUI_API ImGuiID DockSpace(ImGuiID id, const ImVec2& size = ImVec2 0 0, ImGuiDockNodeFlags flags = 0, const ImGuiWindowClass* // window_class = NULL); // Unsupported arg type const ImGuiWindowClass* window_class = NULL // IMGUI_API ImGuiID DockSpaceOverViewport(const ImGuiViewport* viewport = NULL, ImGuiDockNodeFlags flags = 0, const ImGuiWindowClass* // window_class = NULL); // Unsupported arg type const ImGuiViewport* viewport = NULL // Unsupported arg type const ImGuiWindowClass* window_class = NULL // IMGUI_API void SetNextWindowDockID(ImGuiID dock_id, ImGuiCond cond = 0); // set next window dock id IMGUI_FUNCTION(SetNextWindowDockID) UINT_ARG(dock_id) OPTIONAL_INT_ARG(cond, 0) CALL_FUNCTION_NO_RET(SetNextWindowDockID, dock_id, cond) END_IMGUI_FUNC // IMGUI_API void SetNextWindowClass(const ImGuiWindowClass* window_class); // set next window class (control docking // compatibility + provide hints to platform backend via custom viewport flags and platform parent/child relationship) // Unsupported arg type const ImGuiWindowClass* window_class // IMGUI_API ImGuiID GetWindowDockID(); IMGUI_FUNCTION(GetWindowDockID) CALL_FUNCTION(GetWindowDockID, unsigned int) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API bool IsWindowDocked(); // is current window docked into another window? IMGUI_FUNCTION(IsWindowDocked) CALL_FUNCTION(IsWindowDocked, bool) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API void LogToTTY(int auto_open_depth = -1); // start logging to tty (stdout) IMGUI_FUNCTION(LogToTTY) OPTIONAL_INT_ARG(auto_open_depth, -1) CALL_FUNCTION_NO_RET(LogToTTY, auto_open_depth) END_IMGUI_FUNC // IMGUI_API void LogToFile(int auto_open_depth = -1, const char* filename = NULL); // start logging to file IMGUI_FUNCTION(LogToFile) OPTIONAL_INT_ARG(auto_open_depth, -1) OPTIONAL_LABEL_ARG(filename, NULL) CALL_FUNCTION_NO_RET(LogToFile, auto_open_depth, filename) END_IMGUI_FUNC // IMGUI_API void LogToClipboard(int auto_open_depth = -1); // start logging to OS clipboard IMGUI_FUNCTION(LogToClipboard) OPTIONAL_INT_ARG(auto_open_depth, -1) CALL_FUNCTION_NO_RET(LogToClipboard, auto_open_depth) END_IMGUI_FUNC // IMGUI_API void LogFinish(); // stop logging (close file, etc.) IMGUI_FUNCTION(LogFinish) CALL_FUNCTION_NO_RET(LogFinish) END_IMGUI_FUNC // IMGUI_API void LogButtons(); // helper to display buttons for logging to // tty/file/clipboard IMGUI_FUNCTION(LogButtons) CALL_FUNCTION_NO_RET(LogButtons) END_IMGUI_FUNC // IMGUI_API void LogText(const char* fmt, ...) IM_FMTARGS(1); // pass text data straight to log (without being // displayed) // Unsupported arg type ...) IM_FMTARGS(1 // IMGUI_API void LogTextV(const char* fmt, va_list args) IM_FMTLIST(1); // Unsupported arg type va_list args) IM_FMTLIST(1 // IMGUI_API bool BeginDragDropSource(ImGuiDragDropFlags flags = 0); // call after submitting an item // which may be dragged. when this return true, you can call SetDragDropPayload() + EndDragDropSource() IMGUI_FUNCTION(BeginDragDropSource) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(BeginDragDropSource, bool, flags) IF_RET_ADD_END_STACK(16) PUSH_BOOL(ret) END_IMGUI_FUNC // 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. Return true // when payload has been accepted. // Unsupported arg type const void* data // Unsupported arg type size_t sz // IMGUI_API void EndDragDropSource(); // only call EndDragDropSource() // if BeginDragDropSource() returns true! IMGUI_FUNCTION(EndDragDropSource) CALL_FUNCTION_NO_RET(EndDragDropSource) POP_END_STACK(16) END_IMGUI_FUNC // IMGUI_API bool BeginDragDropTarget(); // call after submitting an item // that may receive a payload. If this returns true, you can call AcceptDragDropPayload() + EndDragDropTarget() IMGUI_FUNCTION(BeginDragDropTarget) CALL_FUNCTION(BeginDragDropTarget, bool) IF_RET_ADD_END_STACK(17) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API const ImGuiPayload* AcceptDragDropPayload(const char* type, ImGuiDragDropFlags flags = 0); // accept contents of a given // type. If ImGuiDragDropFlags_AcceptBeforeDelivery is set you can peek into the payload before the mouse button is released. // Unsupported return type const // IMGUI_API void EndDragDropTarget(); // only call EndDragDropTarget() // if BeginDragDropTarget() returns true! IMGUI_FUNCTION(EndDragDropTarget) CALL_FUNCTION_NO_RET(EndDragDropTarget) POP_END_STACK(17) END_IMGUI_FUNC // IMGUI_API const ImGuiPayload* GetDragDropPayload(); // peek directly into the // current payload from anywhere. may return NULL. use ImGuiPayload::IsDataType() to test for the payload type. // Unsupported return type const // IMGUI_API void BeginDisabled(bool disabled = true); IMGUI_FUNCTION(BeginDisabled) OPTIONAL_BOOL_ARG(disabled, true) CALL_FUNCTION_NO_RET(BeginDisabled, disabled) ADD_END_STACK(18) END_IMGUI_FUNC // IMGUI_API void EndDisabled(); IMGUI_FUNCTION(EndDisabled) CALL_FUNCTION_NO_RET(EndDisabled) POP_END_STACK(18) END_IMGUI_FUNC // IMGUI_API void PushClipRect(const ImVec2& clip_rect_min, const ImVec2& clip_rect_max, bool intersect_with_current_clip_rect); IMGUI_FUNCTION(PushClipRect) IM_VEC_2_ARG(clip_rect_min) IM_VEC_2_ARG(clip_rect_max) BOOL_ARG(intersect_with_current_clip_rect) CALL_FUNCTION_NO_RET(PushClipRect, clip_rect_min, clip_rect_max, intersect_with_current_clip_rect) END_IMGUI_FUNC // IMGUI_API void PopClipRect(); IMGUI_FUNCTION(PopClipRect) CALL_FUNCTION_NO_RET(PopClipRect) END_IMGUI_FUNC // IMGUI_API void SetItemDefaultFocus(); // make last item the default focused item of a // window. IMGUI_FUNCTION(SetItemDefaultFocus) CALL_FUNCTION_NO_RET(SetItemDefaultFocus) END_IMGUI_FUNC // IMGUI_API void SetKeyboardFocusHere(int offset = 0); // focus keyboard on the next widget. Use positive // 'offset' to access sub components of a multiple component widget. Use -1 to access previous widget. IMGUI_FUNCTION(SetKeyboardFocusHere) OPTIONAL_INT_ARG(offset, 0) CALL_FUNCTION_NO_RET(SetKeyboardFocusHere, offset) END_IMGUI_FUNC // IMGUI_API bool IsItemHovered(ImGuiHoveredFlags flags = 0); // is the last item hovered? (and usable, aka not // blocked by a popup, etc.). See ImGuiHoveredFlags for more options. IMGUI_FUNCTION(IsItemHovered) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(IsItemHovered, bool, flags) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsItemActive(); // is the last item active? (e.g. button being held, // text field being edited. This will continuously return true while holding mouse button on an item. Items that don't interact will always return // false) IMGUI_FUNCTION(IsItemActive) CALL_FUNCTION(IsItemActive, bool) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsItemFocused(); // is the last item focused for keyboard/gamepad // navigation? IMGUI_FUNCTION(IsItemFocused) CALL_FUNCTION(IsItemFocused, bool) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsItemClicked(ImGuiMouseButton mouse_button = 0); // is the last item hovered and mouse clicked on? // (**) == IsMouseClicked(mouse_button) && IsItemHovered()Important. (**) this is NOT equivalent to the behavior of e.g. Button(). Read comments // in function definition. IMGUI_FUNCTION(IsItemClicked) OPTIONAL_INT_ARG(mouse_button, 0) CALL_FUNCTION(IsItemClicked, bool, mouse_button) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsItemVisible(); // is the last item visible? (items may be out of // sight because of clipping/scrolling) IMGUI_FUNCTION(IsItemVisible) CALL_FUNCTION(IsItemVisible, bool) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsItemEdited(); // did the last item modify its underlying value // this frame? or was pressed? This is generally the same as the "bool" return value of many widgets. IMGUI_FUNCTION(IsItemEdited) CALL_FUNCTION(IsItemEdited, bool) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsItemActivated(); // was the last item just made active (item was // previously inactive). IMGUI_FUNCTION(IsItemActivated) CALL_FUNCTION(IsItemActivated, bool) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsItemDeactivated(); // was the last item just made inactive (item was // previously active). Useful for Undo/Redo patterns with widgets that require continuous editing. IMGUI_FUNCTION(IsItemDeactivated) CALL_FUNCTION(IsItemDeactivated, bool) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsItemDeactivatedAfterEdit(); // was the last item just made inactive and made a // value change when it was active? (e.g. Slider/Drag moved). Useful for Undo/Redo patterns with widgets that require continuous editing. Note that // you may get false positives (some widgets such as Combo()/ListBox()/Selectable() will return true even when clicking an already selected item). IMGUI_FUNCTION(IsItemDeactivatedAfterEdit) CALL_FUNCTION(IsItemDeactivatedAfterEdit, bool) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsItemToggledOpen(); // was the last item open state toggled? set by // TreeNode(). IMGUI_FUNCTION(IsItemToggledOpen) CALL_FUNCTION(IsItemToggledOpen, bool) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsAnyItemHovered(); // is any item hovered? IMGUI_FUNCTION(IsAnyItemHovered) CALL_FUNCTION(IsAnyItemHovered, bool) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsAnyItemActive(); // is any item active? IMGUI_FUNCTION(IsAnyItemActive) CALL_FUNCTION(IsAnyItemActive, bool) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsAnyItemFocused(); // is any item focused? IMGUI_FUNCTION(IsAnyItemFocused) CALL_FUNCTION(IsAnyItemFocused, bool) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API ImGuiID GetItemID(); // get ID of last item (~~ often same // ImGui::GetID(label) beforehand) IMGUI_FUNCTION(GetItemID) CALL_FUNCTION(GetItemID, unsigned int) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API ImVec2 GetItemRectMin(); // get upper-left bounding rectangle of the last // item (screen space) IMGUI_FUNCTION(GetItemRectMin) CALL_FUNCTION(GetItemRectMin, ImVec2) PUSH_NUMBER(ret.x) PUSH_NUMBER(ret.y) END_IMGUI_FUNC // IMGUI_API ImVec2 GetItemRectMax(); // get lower-right bounding rectangle of the last // item (screen space) IMGUI_FUNCTION(GetItemRectMax) CALL_FUNCTION(GetItemRectMax, ImVec2) PUSH_NUMBER(ret.x) PUSH_NUMBER(ret.y) END_IMGUI_FUNC // IMGUI_API ImVec2 GetItemRectSize(); // get size of last item IMGUI_FUNCTION(GetItemRectSize) CALL_FUNCTION(GetItemRectSize, ImVec2) PUSH_NUMBER(ret.x) PUSH_NUMBER(ret.y) END_IMGUI_FUNC // IMGUI_API void SetItemAllowOverlap(); // allow last item to be overlapped by a subsequent // item. sometimes useful with invisible buttons, selectables, etc. to catch unused area. IMGUI_FUNCTION(SetItemAllowOverlap) CALL_FUNCTION_NO_RET(SetItemAllowOverlap) END_IMGUI_FUNC // IMGUI_API ImGuiViewport* GetMainViewport(); // return primary/default viewport. This can never // be NULL. // Unsupported return type ImGuiViewport* // IMGUI_API ImDrawList* GetBackgroundDrawList(); // get background draw list for the viewport // associated to the current window. this draw list will be the first rendering one. Useful to quickly draw shapes/text behind dear imgui contents. // Unsupported return type ImDrawList* // IMGUI_API ImDrawList* GetForegroundDrawList(); // get foreground draw list for the viewport // associated to the current window. this draw list will be the last rendered one. Useful to quickly draw shapes/text over dear imgui contents. // Unsupported return type ImDrawList* // IMGUI_API ImDrawList* GetBackgroundDrawList(ImGuiViewport* viewport); // get background draw list for the given viewport. // this draw list will be the first rendering one. Useful to quickly draw shapes/text behind dear imgui contents. // Unsupported return type ImDrawList* // Unsupported arg type ImGuiViewport* viewport // IMGUI_API ImDrawList* GetForegroundDrawList(ImGuiViewport* viewport); // get foreground draw list for the given viewport. // this draw list will be the last rendered one. Useful to quickly draw shapes/text over dear imgui contents. // Unsupported return type ImDrawList* // Unsupported arg type ImGuiViewport* viewport // IMGUI_API bool IsRectVisible(const ImVec2& size); // test if rectangle (of given size, starting from // cursor position) is visible / not clipped. IMGUI_FUNCTION(IsRectVisible) IM_VEC_2_ARG(size) CALL_FUNCTION(IsRectVisible, bool, size) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsRectVisible(const ImVec2& rect_min, const ImVec2& rect_max); // test if rectangle (in screen space) is visible / // not clipped. to perform coarse clipping on user's side. IMGUI_FUNCTION(IsRectVisible_2) IM_VEC_2_ARG(rect_min) IM_VEC_2_ARG(rect_max) CALL_FUNCTION(IsRectVisible, bool, rect_min, rect_max) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API double GetTime(); // get global imgui time. incremented by // io.DeltaTime every frame. // Unsupported return type double // IMGUI_API int GetFrameCount(); // get global imgui frame count. incremented by 1 // every frame. // Unsupported return type int // IMGUI_API ImDrawListSharedData* GetDrawListSharedData(); // you may use this when creating your own // ImDrawList instances. // Unsupported return type ImDrawListSharedData* // IMGUI_API const char* GetStyleColorName(ImGuiCol idx); // get a string corresponding to the enum value (for // display, saving, etc.). IMGUI_FUNCTION(GetStyleColorName) INT_ARG(idx) CALL_FUNCTION(GetStyleColorName, const char*, idx) PUSH_STRING(ret) END_IMGUI_FUNC // IMGUI_API void SetStateStorage(ImGuiStorage* storage); // replace current window storage with our own (if // you want to manipulate it yourself, typically clear subsection of it) // Unsupported arg type ImGuiStorage* storage // IMGUI_API ImGuiStorage* GetStateStorage(); // Unsupported return type ImGuiStorage* // IMGUI_API bool BeginChildFrame(ImGuiID id, const ImVec2& size, ImGuiWindowFlags flags = 0); // helper to create a child window / // scrolling region that looks like a normal widget frame IMGUI_FUNCTION(BeginChildFrame) UINT_ARG(id) IM_VEC_2_ARG(size) OPTIONAL_INT_ARG(flags, 0) CALL_FUNCTION(BeginChildFrame, bool, id, size, flags) IF_RET_ADD_END_STACK(19) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API void EndChildFrame(); // always call EndChildFrame() regardless of // BeginChildFrame() return values (which indicates a collapsed/clipped window) IMGUI_FUNCTION(EndChildFrame) CALL_FUNCTION_NO_RET(EndChildFrame) POP_END_STACK(19) END_IMGUI_FUNC // IMGUI_API ImVec2 CalcTextSize(const char* text, const char* text_end = NULL, bool hide_text_after_double_hash = false, float wrap_width = // -1.0f); IMGUI_FUNCTION(CalcTextSize) LABEL_ARG(text) OPTIONAL_LABEL_ARG(text_end, NULL) OPTIONAL_BOOL_ARG(hide_text_after_double_hash, false) OPTIONAL_NUMBER_ARG(wrap_width, -1.0f) CALL_FUNCTION(CalcTextSize, ImVec2, text, text_end, hide_text_after_double_hash, wrap_width) PUSH_NUMBER(ret.x) PUSH_NUMBER(ret.y) END_IMGUI_FUNC // IMGUI_API ImVec4 ColorConvertU32ToFloat4(ImU32 in); // Unsupported return type ImVec4 // IMGUI_API ImU32 ColorConvertFloat4ToU32(const ImVec4& in); IMGUI_FUNCTION(ColorConvertFloat4ToU32) IM_VEC_4_ARG(in) CALL_FUNCTION(ColorConvertFloat4ToU32, unsigned int, in) PUSH_NUMBER(ret) END_IMGUI_FUNC // IMGUI_API void ColorConvertRGBtoHSV(float r, float g, float b, float& out_h, float& out_s, float& out_v); // Unsupported arg type float& out_h // Unsupported arg type float& out_s // Unsupported arg type float& out_v // IMGUI_API void ColorConvertHSVtoRGB(float h, float s, float v, float& out_r, float& out_g, float& out_b); // Unsupported arg type float& out_r // Unsupported arg type float& out_g // Unsupported arg type float& out_b // IMGUI_API bool IsKeyDown(ImGuiKey key); // is key being held. // Unsupported arg type ImGuiKey key // IMGUI_API bool IsKeyPressed(ImGuiKey key, bool repeat = true); // was key pressed (went from !Down to Down)? if // repeat=true, uses io.KeyRepeatDelay / KeyRepeatRate // Unsupported arg type ImGuiKey key // IMGUI_API bool IsKeyReleased(ImGuiKey key); // was key released (went from Down to !Down)? // Unsupported arg type ImGuiKey key // IMGUI_API int GetKeyPressedAmount(ImGuiKey key, float repeat_delay, float rate); // uses provided repeat rate/delay. return a count, // most often 0 or 1 but might be >1 if RepeatRate is small enough that DeltaTime > RepeatRate // Unsupported return type int // Unsupported arg type ImGuiKey key // IMGUI_API const char* GetKeyName(ImGuiKey key); // [DEBUG] returns English name of the key. Those // names a provided for debugging purpose and are not meant to be saved persistently not compared. // Unsupported arg type ImGuiKey key // IMGUI_API void SetNextFrameWantCaptureKeyboard(bool want_capture_keyboard); // Override io.WantCaptureKeyboard flag next frame // (said flag is left for your application to handle, typically when true it instructs your app to ignore inputs). e.g. force capture keyboard when // your widget is being hovered. This is equivalent to setting "io.WantCaptureKeyboard = want_capture_keyboard"; after the next NewFrame() call. IMGUI_FUNCTION(SetNextFrameWantCaptureKeyboard) BOOL_ARG(want_capture_keyboard) CALL_FUNCTION_NO_RET(SetNextFrameWantCaptureKeyboard, want_capture_keyboard) END_IMGUI_FUNC // IMGUI_API bool IsMouseDown(ImGuiMouseButton button); // is mouse button held? IMGUI_FUNCTION(IsMouseDown) INT_ARG(button) CALL_FUNCTION(IsMouseDown, bool, button) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsMouseClicked(ImGuiMouseButton button, bool repeat = false); // did mouse button clicked? (went from !Down to // Down). Same as GetMouseClickedCount() == 1. IMGUI_FUNCTION(IsMouseClicked) INT_ARG(button) OPTIONAL_BOOL_ARG(repeat, false) CALL_FUNCTION(IsMouseClicked, bool, button, repeat) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsMouseReleased(ImGuiMouseButton button); // did mouse button released? (went from Down to // !Down) IMGUI_FUNCTION(IsMouseReleased) INT_ARG(button) CALL_FUNCTION(IsMouseReleased, bool, button) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsMouseDoubleClicked(ImGuiMouseButton button); // did mouse button double-clicked? Same as // GetMouseClickedCount() == 2. (note that a double-click will also report IsMouseClicked() == true) IMGUI_FUNCTION(IsMouseDoubleClicked) INT_ARG(button) CALL_FUNCTION(IsMouseDoubleClicked, bool, button) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API int GetMouseClickedCount(ImGuiMouseButton button); // return the number of successive mouse-clicks at // the time where a click happen (otherwise 0). // Unsupported return type int // IMGUI_API bool IsMouseHoveringRect(const ImVec2& r_min, const ImVec2& r_max, bool clip = true);// is mouse hovering given bounding rect // (in screen space). clipped by current clipping settings, but disregarding of other consideration of focus/window ordering/popup-block. IMGUI_FUNCTION(IsMouseHoveringRect) IM_VEC_2_ARG(r_min) IM_VEC_2_ARG(r_max) OPTIONAL_BOOL_ARG(clip, true) CALL_FUNCTION(IsMouseHoveringRect, bool, r_min, r_max, clip) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API bool IsMousePosValid(const ImVec2* mouse_pos = NULL); // by convention we use (-FLT_MAX,-FLT_MAX) to // denote that there is no mouse available // Unsupported arg type const ImVec2* mouse_pos = NULL // IMGUI_API bool IsAnyMouseDown(); // [WILL OBSOLETE] is any mouse button held? This // was designed for backends, but prefer having backend maintain a mask of held mouse buttons, because upcoming input queue system will make this // invalid. IMGUI_FUNCTION(IsAnyMouseDown) CALL_FUNCTION(IsAnyMouseDown, bool) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API ImVec2 GetMousePos(); // shortcut to ImGui::GetIO().MousePos provided by // user, to be consistent with other calls IMGUI_FUNCTION(GetMousePos) CALL_FUNCTION(GetMousePos, ImVec2) PUSH_NUMBER(ret.x) PUSH_NUMBER(ret.y) END_IMGUI_FUNC // IMGUI_API ImVec2 GetMousePosOnOpeningCurrentPopup(); // retrieve mouse position at the time of opening // popup we have BeginPopup() into (helper to avoid user backing that value themselves) IMGUI_FUNCTION(GetMousePosOnOpeningCurrentPopup) CALL_FUNCTION(GetMousePosOnOpeningCurrentPopup, ImVec2) PUSH_NUMBER(ret.x) PUSH_NUMBER(ret.y) END_IMGUI_FUNC // IMGUI_API bool IsMouseDragging(ImGuiMouseButton button, float lock_threshold = -1.0f); // is mouse dragging? (if lock_threshold // < -1.0f, uses io.MouseDraggingThreshold) IMGUI_FUNCTION(IsMouseDragging) INT_ARG(button) OPTIONAL_NUMBER_ARG(lock_threshold, -1.0f) CALL_FUNCTION(IsMouseDragging, bool, button, lock_threshold) PUSH_BOOL(ret) END_IMGUI_FUNC // IMGUI_API ImVec2 GetMouseDragDelta(ImGuiMouseButton button = 0, float lock_threshold = -1.0f); // return the delta from the initial // clicking position while the mouse button is pressed or was just released. This is locked and return 0.0f until the mouse moves past a distance // threshold at least once (if lock_threshold < -1.0f, uses io.MouseDraggingThreshold) IMGUI_FUNCTION(GetMouseDragDelta) OPTIONAL_INT_ARG(button, 0) OPTIONAL_NUMBER_ARG(lock_threshold, -1.0f) CALL_FUNCTION(GetMouseDragDelta, ImVec2, button, lock_threshold) PUSH_NUMBER(ret.x) PUSH_NUMBER(ret.y) END_IMGUI_FUNC // IMGUI_API void ResetMouseDragDelta(ImGuiMouseButton button = 0); // IMGUI_FUNCTION(ResetMouseDragDelta) OPTIONAL_INT_ARG(button, 0) CALL_FUNCTION_NO_RET(ResetMouseDragDelta, button) END_IMGUI_FUNC // IMGUI_API ImGuiMouseCursor GetMouseCursor(); // get desired mouse cursor shape. Important: reset // in ImGui::NewFrame(), this is updated during the frame. valid before Render(). If you use software rendering by setting io.MouseDrawCursor ImGui // will render those for you // Unsupported return type ImGuiMouseCursor // IMGUI_API void SetMouseCursor(ImGuiMouseCursor cursor_type); // set desired mouse cursor shape IMGUI_FUNCTION(SetMouseCursor) INT_ARG(cursor_type) CALL_FUNCTION_NO_RET(SetMouseCursor, cursor_type) END_IMGUI_FUNC // IMGUI_API void SetNextFrameWantCaptureMouse(bool want_capture_mouse); // Override io.WantCaptureMouse flag next frame // (said flag is left for your application to handle, typical when true it instucts your app to ignore inputs). This is equivalent to setting // "io.WantCaptureMouse = want_capture_mouse;" after the next NewFrame() call. IMGUI_FUNCTION(SetNextFrameWantCaptureMouse) BOOL_ARG(want_capture_mouse) CALL_FUNCTION_NO_RET(SetNextFrameWantCaptureMouse, want_capture_mouse) END_IMGUI_FUNC // IMGUI_API const char* GetClipboardText(); IMGUI_FUNCTION(GetClipboardText) CALL_FUNCTION(GetClipboardText, const char*) PUSH_STRING(ret) END_IMGUI_FUNC // IMGUI_API void SetClipboardText(const char* text); IMGUI_FUNCTION(SetClipboardText) LABEL_ARG(text) CALL_FUNCTION_NO_RET(SetClipboardText, text) END_IMGUI_FUNC // IMGUI_API void LoadIniSettingsFromDisk(const char* ini_filename); // call after CreateContext() and before the first // call to NewFrame(). NewFrame() automatically calls LoadIniSettingsFromDisk(io.IniFilename). IMGUI_FUNCTION(LoadIniSettingsFromDisk) LABEL_ARG(ini_filename) CALL_FUNCTION_NO_RET(LoadIniSettingsFromDisk, ini_filename) END_IMGUI_FUNC // IMGUI_API void LoadIniSettingsFromMemory(const char* ini_data, size_t ini_size=0); // call after CreateContext() and before the first // call to NewFrame() to provide .ini data from your own data source. // Unsupported arg type size_t ini_size=0 // 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_FUNCTION(SaveIniSettingsToDisk) LABEL_ARG(ini_filename) CALL_FUNCTION_NO_RET(SaveIniSettingsToDisk, ini_filename) END_IMGUI_FUNC // 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. // Unsupported arg type size_t* out_ini_size = NULL // IMGUI_API void DebugTextEncoding(const char* text); IMGUI_FUNCTION(DebugTextEncoding) LABEL_ARG(text) CALL_FUNCTION_NO_RET(DebugTextEncoding, text) END_IMGUI_FUNC // 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. // Unsupported arg type size_t sz_io // Unsupported arg type size_t sz_style // Unsupported arg type size_t sz_vec2 // Unsupported arg type size_t sz_vec4 // Unsupported arg type size_t sz_drawvert // Unsupported arg type size_t sz_drawidx // IMGUI_API void SetAllocatorFunctions(ImGuiMemAllocFunc alloc_func, ImGuiMemFreeFunc free_func, void* user_data = NULL); // Unsupported arg type ImGuiMemAllocFunc alloc_func // Unsupported arg type ImGuiMemFreeFunc free_func // Unsupported arg type void* user_data = NULL // IMGUI_API void GetAllocatorFunctions(ImGuiMemAllocFunc* p_alloc_func, ImGuiMemFreeFunc* p_free_func, void** p_user_data); // Unsupported arg type ImGuiMemAllocFunc* p_alloc_func // Unsupported arg type ImGuiMemFreeFunc* p_free_func // Unsupported arg type void** p_user_data // IMGUI_API void* MemAlloc(size_t size); // Unsupported return type void* // Unsupported arg type size_t size // IMGUI_API void MemFree(void* ptr); // Unsupported arg type void* ptr // IMGUI_API ImGuiPlatformIO& GetPlatformIO(); // platform/renderer functions, for backend to setup // + viewports list. // Unsupported return type ImGuiPlatformIO& // IMGUI_API void UpdatePlatformWindows(); // call in main loop. will call // CreateWindow/ResizeWindow/etc. platform functions for each secondary viewport, and DestroyWindow for each inactive viewport. IMGUI_FUNCTION(UpdatePlatformWindows) CALL_FUNCTION_NO_RET(UpdatePlatformWindows) END_IMGUI_FUNC // IMGUI_API void RenderPlatformWindowsDefault(void* platform_render_arg = NULL, void* renderer_render_arg = NULL); // call in main // loop. will call RenderWindow/SwapBuffers platform functions for each secondary viewport which doesn't have the ImGuiViewportFlags_Minimized flag // set. May be reimplemented by user for custom rendering needs. // Unsupported arg type void* platform_render_arg = NULL // Unsupported arg type void* renderer_render_arg = NULL // IMGUI_API void DestroyPlatformWindows(); // call DestroyWindow platform functions for all // viewports. call from backend Shutdown() if you need to close platform windows before imgui shutdown. otherwise will be called by // DestroyContext(). IMGUI_FUNCTION(DestroyPlatformWindows) CALL_FUNCTION_NO_RET(DestroyPlatformWindows) END_IMGUI_FUNC // IMGUI_API ImGuiViewport* FindViewportByID(ImGuiID id); // this is a helper for backends. // Unsupported return type ImGuiViewport* // IMGUI_API ImGuiViewport* FindViewportByPlatformHandle(void* platform_handle); // this is a helper for backends. the type // platform_handle is decided by the backend (e.g. HWND, MyWindow*, GLFWwindow* etc.) // Unsupported return type ImGuiViewport* // Unsupported arg type void* platform_handle END_STACK_START END_STACK_OPTION(0, EndFrame) END_STACK_OPTION(1, End) END_STACK_OPTION(2, EndChild) END_STACK_OPTION(3, PopStyleVar) END_STACK_OPTION(4, EndGroup) END_STACK_OPTION(5, EndCombo) END_STACK_OPTION(6, TreePop) END_STACK_OPTION(7, EndListBox) END_STACK_OPTION(8, EndMenuBar) END_STACK_OPTION(9, EndMainMenuBar) END_STACK_OPTION(10, EndMenu) END_STACK_OPTION(11, EndTooltip) END_STACK_OPTION(12, EndPopup) END_STACK_OPTION(13, EndTable) END_STACK_OPTION(14, EndTabBar) END_STACK_OPTION(15, EndTabItem) END_STACK_OPTION(16, EndDragDropSource) END_STACK_OPTION(17, EndDragDropTarget) END_STACK_OPTION(18, EndDisabled) END_STACK_OPTION(19, EndChildFrame) END_STACK_END // enum ImGuiWindowFlags_ START_ENUM(WindowFlags) // ImGuiWindowFlags_None = 0, MAKE_ENUM(ImGuiWindowFlags_None, None) // ImGuiWindowFlags_NoTitleBar = 1 << 0, // Disable title-bar MAKE_ENUM(ImGuiWindowFlags_NoTitleBar, NoTitleBar) // ImGuiWindowFlags_NoResize = 1 << 1, // Disable user resizing with the lower-right grip MAKE_ENUM(ImGuiWindowFlags_NoResize, NoResize) // ImGuiWindowFlags_NoMove = 1 << 2, // Disable user moving the window MAKE_ENUM(ImGuiWindowFlags_NoMove, NoMove) // ImGuiWindowFlags_NoScrollbar = 1 << 3, // Disable scrollbars (window can still scroll with mouse or programmatically) MAKE_ENUM(ImGuiWindowFlags_NoScrollbar, NoScrollbar) // ImGuiWindowFlags_NoScrollWithMouse = 1 << 4, // Disable user vertically scrolling with mouse wheel. On child window, mouse wheel will be // forwarded to the parent unless NoScrollbar is also set. MAKE_ENUM(ImGuiWindowFlags_NoScrollWithMouse, NoScrollWithMouse) // ImGuiWindowFlags_NoCollapse = 1 << 5, // Disable user collapsing window by double-clicking on it. Also referred to as Window Menu // Button (e.g. within a docking node). MAKE_ENUM(ImGuiWindowFlags_NoCollapse, NoCollapse) // ImGuiWindowFlags_AlwaysAutoResize = 1 << 6, // Resize every window to its content every frame MAKE_ENUM(ImGuiWindowFlags_AlwaysAutoResize, AlwaysAutoResize) // ImGuiWindowFlags_NoBackground = 1 << 7, // Disable drawing background color (WindowBg, etc.) and outside border. Similar as using // SetNextWindowBgAlpha(0.0f). MAKE_ENUM(ImGuiWindowFlags_NoBackground, NoBackground) // ImGuiWindowFlags_NoSavedSettings = 1 << 8, // Never load/save settings in .ini file MAKE_ENUM(ImGuiWindowFlags_NoSavedSettings, NoSavedSettings) // ImGuiWindowFlags_NoMouseInputs = 1 << 9, // Disable catching mouse, hovering test with pass through. MAKE_ENUM(ImGuiWindowFlags_NoMouseInputs, NoMouseInputs) // ImGuiWindowFlags_MenuBar = 1 << 10, // Has a menu-bar MAKE_ENUM(ImGuiWindowFlags_MenuBar, MenuBar) // ImGuiWindowFlags_HorizontalScrollbar = 1 << 11, // Allow horizontal scrollbar to appear (off by default). You may use // SetNextWindowContentSize(ImVec2(width,0.0f)); prior to calling Begin() to specify width. Read code in imgui_demo in the "Horizontal Scrolling" // section. MAKE_ENUM(ImGuiWindowFlags_HorizontalScrollbar, HorizontalScrollbar) // ImGuiWindowFlags_NoFocusOnAppearing = 1 << 12, // Disable taking focus when transitioning from hidden to visible state MAKE_ENUM(ImGuiWindowFlags_NoFocusOnAppearing, NoFocusOnAppearing) // ImGuiWindowFlags_NoBringToFrontOnFocus = 1 << 13, // Disable bringing window to front when taking focus (e.g. clicking on it or // programmatically giving it focus) MAKE_ENUM(ImGuiWindowFlags_NoBringToFrontOnFocus, NoBringToFrontOnFocus) // ImGuiWindowFlags_AlwaysVerticalScrollbar= 1 << 14, // Always show vertical scrollbar (even if ContentSize.y < Size.y) MAKE_ENUM(ImGuiWindowFlags_AlwaysVerticalScrollbar, AlwaysVerticalScrollbar) // ImGuiWindowFlags_AlwaysHorizontalScrollbar=1<< 15, // Always show horizontal scrollbar (even if ContentSize.x < Size.x) MAKE_ENUM(ImGuiWindowFlags_AlwaysHorizontalScrollbar, AlwaysHorizontalScrollbar) // ImGuiWindowFlags_AlwaysUseWindowPadding = 1 << 16, // Ensure child windows without border uses style.WindowPadding (ignored by default for // non-bordered child windows, because more convenient) MAKE_ENUM(ImGuiWindowFlags_AlwaysUseWindowPadding, AlwaysUseWindowPadding) // ImGuiWindowFlags_NoNavInputs = 1 << 18, // No gamepad/keyboard navigation within the window MAKE_ENUM(ImGuiWindowFlags_NoNavInputs, NoNavInputs) // ImGuiWindowFlags_NoNavFocus = 1 << 19, // No focusing toward this window with gamepad/keyboard navigation (e.g. skipped by // CTRL+TAB) MAKE_ENUM(ImGuiWindowFlags_NoNavFocus, NoNavFocus) // ImGuiWindowFlags_UnsavedDocument = 1 << 20, // Display a dot next to the title. When used in a tab/docking context, tab is selected when // clicking the X + closure is not assumed (will wait for user to stop submitting the tab). Otherwise closure is assumed when pressing the X, so if // you keep submitting the tab may reappear at end of tab bar. MAKE_ENUM(ImGuiWindowFlags_UnsavedDocument, UnsavedDocument) // ImGuiWindowFlags_NoDocking = 1 << 21, // Disable docking of this window MAKE_ENUM(ImGuiWindowFlags_NoDocking, NoDocking) // ImGuiWindowFlags_NoNav = ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus, MAKE_ENUM(ImGuiWindowFlags_NoNav, NoNav) // ImGuiWindowFlags_NoDecoration = ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar | // ImGuiWindowFlags_NoCollapse, MAKE_ENUM(ImGuiWindowFlags_NoDecoration, NoDecoration) // ImGuiWindowFlags_NoInputs = ImGuiWindowFlags_NoMouseInputs | ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus, MAKE_ENUM(ImGuiWindowFlags_NoInputs, NoInputs) // ImGuiWindowFlags_NavFlattened = 1 << 23, // [BETA] On child window: allow gamepad/keyboard navigation to cross over parent border to // this child or between sibling child windows. MAKE_ENUM(ImGuiWindowFlags_NavFlattened, NavFlattened) // ImGuiWindowFlags_ChildWindow = 1 << 24, // Don't use! For internal use by BeginChild() MAKE_ENUM(ImGuiWindowFlags_ChildWindow, ChildWindow) // ImGuiWindowFlags_Tooltip = 1 << 25, // Don't use! For internal use by BeginTooltip() MAKE_ENUM(ImGuiWindowFlags_Tooltip, Tooltip) // ImGuiWindowFlags_Popup = 1 << 26, // Don't use! For internal use by BeginPopup() MAKE_ENUM(ImGuiWindowFlags_Popup, Popup) // ImGuiWindowFlags_Modal = 1 << 27, // Don't use! For internal use by BeginPopupModal() MAKE_ENUM(ImGuiWindowFlags_Modal, Modal) // ImGuiWindowFlags_ChildMenu = 1 << 28, // Don't use! For internal use by BeginMenu() MAKE_ENUM(ImGuiWindowFlags_ChildMenu, ChildMenu) // ImGuiWindowFlags_DockNodeHost = 1 << 29, // Don't use! For internal use by Begin()/NewFrame() MAKE_ENUM(ImGuiWindowFlags_DockNodeHost, DockNodeHost) END_ENUM(WindowFlags) // enum ImGuiInputTextFlags_ START_ENUM(InputTextFlags) // ImGuiInputTextFlags_None = 0, MAKE_ENUM(ImGuiInputTextFlags_None, None) // ImGuiInputTextFlags_CharsDecimal = 1 << 0, // Allow 0123456789.+-*/ MAKE_ENUM(ImGuiInputTextFlags_CharsDecimal, CharsDecimal) // ImGuiInputTextFlags_CharsHexadecimal = 1 << 1, // Allow 0123456789ABCDEFabcdef MAKE_ENUM(ImGuiInputTextFlags_CharsHexadecimal, CharsHexadecimal) // ImGuiInputTextFlags_CharsUppercase = 1 << 2, // Turn a..z into A..Z MAKE_ENUM(ImGuiInputTextFlags_CharsUppercase, CharsUppercase) // ImGuiInputTextFlags_CharsNoBlank = 1 << 3, // Filter out spaces, tabs MAKE_ENUM(ImGuiInputTextFlags_CharsNoBlank, CharsNoBlank) // ImGuiInputTextFlags_AutoSelectAll = 1 << 4, // Select entire text when first taking mouse focus MAKE_ENUM(ImGuiInputTextFlags_AutoSelectAll, AutoSelectAll) // ImGuiInputTextFlags_EnterReturnsTrue = 1 << 5, // Return 'true' when Enter is pressed (as opposed to every time the value was modified). // Consider looking at the IsItemDeactivatedAfterEdit() function. MAKE_ENUM(ImGuiInputTextFlags_EnterReturnsTrue, EnterReturnsTrue) // ImGuiInputTextFlags_CallbackCompletion = 1 << 6, // Callback on pressing TAB (for completion handling) MAKE_ENUM(ImGuiInputTextFlags_CallbackCompletion, CallbackCompletion) // ImGuiInputTextFlags_CallbackHistory = 1 << 7, // Callback on pressing Up/Down arrows (for history handling) MAKE_ENUM(ImGuiInputTextFlags_CallbackHistory, CallbackHistory) // ImGuiInputTextFlags_CallbackAlways = 1 << 8, // Callback on each iteration. User code may query cursor position, modify text buffer. MAKE_ENUM(ImGuiInputTextFlags_CallbackAlways, CallbackAlways) // ImGuiInputTextFlags_CallbackCharFilter = 1 << 9, // Callback on character inputs to replace or discard them. Modify 'EventChar' to replace or // discard, or return 1 in callback to discard. MAKE_ENUM(ImGuiInputTextFlags_CallbackCharFilter, CallbackCharFilter) // ImGuiInputTextFlags_AllowTabInput = 1 << 10, // Pressing TAB input a '\t' character into the text field MAKE_ENUM(ImGuiInputTextFlags_AllowTabInput, AllowTabInput) // ImGuiInputTextFlags_CtrlEnterForNewLine = 1 << 11, // In multi-line mode, unfocus with Enter, add new line with Ctrl+Enter (default is // opposite: unfocus with Ctrl+Enter, add line with Enter). MAKE_ENUM(ImGuiInputTextFlags_CtrlEnterForNewLine, CtrlEnterForNewLine) // ImGuiInputTextFlags_NoHorizontalScroll = 1 << 12, // Disable following the cursor horizontally MAKE_ENUM(ImGuiInputTextFlags_NoHorizontalScroll, NoHorizontalScroll) // ImGuiInputTextFlags_AlwaysOverwrite = 1 << 13, // Overwrite mode MAKE_ENUM(ImGuiInputTextFlags_AlwaysOverwrite, AlwaysOverwrite) // ImGuiInputTextFlags_ReadOnly = 1 << 14, // Read-only mode MAKE_ENUM(ImGuiInputTextFlags_ReadOnly, ReadOnly) // ImGuiInputTextFlags_Password = 1 << 15, // Password mode, display all characters as '*' MAKE_ENUM(ImGuiInputTextFlags_Password, Password) // ImGuiInputTextFlags_NoUndoRedo = 1 << 16, // Disable undo/redo. Note that input text owns the text data while active, if you want to // provide your own undo/redo stack you need e.g. to call ClearActiveID(). MAKE_ENUM(ImGuiInputTextFlags_NoUndoRedo, NoUndoRedo) // ImGuiInputTextFlags_CharsScientific = 1 << 17, // Allow 0123456789.+-*/eE (Scientific notation input) MAKE_ENUM(ImGuiInputTextFlags_CharsScientific, CharsScientific) // ImGuiInputTextFlags_CallbackResize = 1 << 18, // Callback on buffer capacity changes request (beyond 'buf_size' parameter value), allowing // the string to grow. Notify when the string wants to be resized (for string types which hold a cache of their Size). You will be provided a new // BufSize in the callback and NEED to honor it. (see misc/cpp/imgui_stdlib.h for an example of using this) MAKE_ENUM(ImGuiInputTextFlags_CallbackResize, CallbackResize) // ImGuiInputTextFlags_CallbackEdit = 1 << 19, // Callback on any edit (note that InputText() already returns true on edit, the callback is // useful mainly to manipulate the underlying buffer while focus is active) MAKE_ENUM(ImGuiInputTextFlags_CallbackEdit, CallbackEdit) // ImGuiInputTextFlags_EscapeClearsAll = 1 << 20, // Escape key clears content if not empty, and deactivate otherwise (contrast to default // behavior of Escape to revert) MAKE_ENUM(ImGuiInputTextFlags_EscapeClearsAll, EscapeClearsAll) END_ENUM(InputTextFlags) // enum ImGuiTreeNodeFlags_ START_ENUM(TreeNodeFlags) // ImGuiTreeNodeFlags_None = 0, MAKE_ENUM(ImGuiTreeNodeFlags_None, None) // ImGuiTreeNodeFlags_Selected = 1 << 0, // Draw as selected MAKE_ENUM(ImGuiTreeNodeFlags_Selected, Selected) // ImGuiTreeNodeFlags_Framed = 1 << 1, // Draw frame with background (e.g. for CollapsingHeader) MAKE_ENUM(ImGuiTreeNodeFlags_Framed, Framed) // ImGuiTreeNodeFlags_AllowItemOverlap = 1 << 2, // Hit testing to allow subsequent widgets to overlap this one MAKE_ENUM(ImGuiTreeNodeFlags_AllowItemOverlap, AllowItemOverlap) // ImGuiTreeNodeFlags_NoTreePushOnOpen = 1 << 3, // Don't do a TreePush() when open (e.g. for CollapsingHeader) = no extra indent nor pushing // on ID stack MAKE_ENUM(ImGuiTreeNodeFlags_NoTreePushOnOpen, NoTreePushOnOpen) // ImGuiTreeNodeFlags_NoAutoOpenOnLog = 1 << 4, // Don't automatically and temporarily open node when Logging is active (by default logging // will automatically open tree nodes) MAKE_ENUM(ImGuiTreeNodeFlags_NoAutoOpenOnLog, NoAutoOpenOnLog) // ImGuiTreeNodeFlags_DefaultOpen = 1 << 5, // Default node to be open MAKE_ENUM(ImGuiTreeNodeFlags_DefaultOpen, DefaultOpen) // ImGuiTreeNodeFlags_OpenOnDoubleClick = 1 << 6, // Need double-click to open node MAKE_ENUM(ImGuiTreeNodeFlags_OpenOnDoubleClick, OpenOnDoubleClick) // ImGuiTreeNodeFlags_OpenOnArrow = 1 << 7, // Only open when clicking on the arrow part. If ImGuiTreeNodeFlags_OpenOnDoubleClick is // also set, single-click arrow or double-click all box to open. MAKE_ENUM(ImGuiTreeNodeFlags_OpenOnArrow, OpenOnArrow) // ImGuiTreeNodeFlags_Leaf = 1 << 8, // No collapsing, no arrow (use as a convenience for leaf nodes). MAKE_ENUM(ImGuiTreeNodeFlags_Leaf, Leaf) // ImGuiTreeNodeFlags_Bullet = 1 << 9, // Display a bullet instead of arrow MAKE_ENUM(ImGuiTreeNodeFlags_Bullet, Bullet) // ImGuiTreeNodeFlags_FramePadding = 1 << 10, // Use FramePadding (even for an unframed text node) to vertically align text baseline to // regular widget height. Equivalent to calling AlignTextToFramePadding(). MAKE_ENUM(ImGuiTreeNodeFlags_FramePadding, FramePadding) // ImGuiTreeNodeFlags_SpanAvailWidth = 1 << 11, // Extend hit box to the right-most edge, even if not framed. This is not the default in // order to allow adding other items on the same line. In the future we may refactor the hit system to be front-to-back, allowing natural overlaps // and then this can become the default. MAKE_ENUM(ImGuiTreeNodeFlags_SpanAvailWidth, SpanAvailWidth) // ImGuiTreeNodeFlags_SpanFullWidth = 1 << 12, // Extend hit box to the left-most and right-most edges (bypass the indented area). MAKE_ENUM(ImGuiTreeNodeFlags_SpanFullWidth, SpanFullWidth) // ImGuiTreeNodeFlags_NavLeftJumpsBackHere = 1 << 13, // (WIP) Nav: left direction may move to this TreeNode() from any of its child (items // submitted between TreeNode and TreePop) MAKE_ENUM(ImGuiTreeNodeFlags_NavLeftJumpsBackHere, NavLeftJumpsBackHere) // ImGuiTreeNodeFlags_CollapsingHeader = ImGuiTreeNodeFlags_Framed | ImGuiTreeNodeFlags_NoTreePushOnOpen | ImGuiTreeNodeFlags_NoAutoOpenOnLog, MAKE_ENUM(ImGuiTreeNodeFlags_CollapsingHeader, CollapsingHeader) END_ENUM(TreeNodeFlags) // enum ImGuiPopupFlags_ START_ENUM(PopupFlags) // ImGuiPopupFlags_None = 0, MAKE_ENUM(ImGuiPopupFlags_None, None) // ImGuiPopupFlags_MouseButtonLeft = 0, // For BeginPopupContext*(): open on Left Mouse release. Guaranteed to always be == 0 (same // as ImGuiMouseButton_Left) MAKE_ENUM(ImGuiPopupFlags_MouseButtonLeft, MouseButtonLeft) // ImGuiPopupFlags_MouseButtonRight = 1, // For BeginPopupContext*(): open on Right Mouse release. Guaranteed to always be == 1 (same // as ImGuiMouseButton_Right) MAKE_ENUM(ImGuiPopupFlags_MouseButtonRight, MouseButtonRight) // ImGuiPopupFlags_MouseButtonMiddle = 2, // For BeginPopupContext*(): open on Middle Mouse release. Guaranteed to always be == 2 // (same as ImGuiMouseButton_Middle) MAKE_ENUM(ImGuiPopupFlags_MouseButtonMiddle, MouseButtonMiddle) // ImGuiPopupFlags_NoOpenOverExistingPopup = 1 << 5, // For OpenPopup*(), BeginPopupContext*(): don't open if there's already a popup at the same // level of the popup stack MAKE_ENUM(ImGuiPopupFlags_NoOpenOverExistingPopup, NoOpenOverExistingPopup) // ImGuiPopupFlags_NoOpenOverItems = 1 << 6, // For BeginPopupContextWindow(): don't return true when hovering items, only when hovering // empty space MAKE_ENUM(ImGuiPopupFlags_NoOpenOverItems, NoOpenOverItems) // ImGuiPopupFlags_AnyPopupId = 1 << 7, // For IsPopupOpen(): ignore the ImGuiID parameter and test for any popup. MAKE_ENUM(ImGuiPopupFlags_AnyPopupId, AnyPopupId) // ImGuiPopupFlags_AnyPopupLevel = 1 << 8, // For IsPopupOpen(): search/test at any level of the popup stack (default test in the // current level) MAKE_ENUM(ImGuiPopupFlags_AnyPopupLevel, AnyPopupLevel) // ImGuiPopupFlags_AnyPopup = ImGuiPopupFlags_AnyPopupId | ImGuiPopupFlags_AnyPopupLevel, MAKE_ENUM(ImGuiPopupFlags_AnyPopup, AnyPopup) END_ENUM(PopupFlags) // enum ImGuiSelectableFlags_ START_ENUM(SelectableFlags) // ImGuiSelectableFlags_None = 0, MAKE_ENUM(ImGuiSelectableFlags_None, None) // ImGuiSelectableFlags_DontClosePopups = 1 << 0, // Clicking this doesn't close parent popup window MAKE_ENUM(ImGuiSelectableFlags_DontClosePopups, DontClosePopups) // ImGuiSelectableFlags_SpanAllColumns = 1 << 1, // Selectable frame can span all columns (text will still fit in current column) MAKE_ENUM(ImGuiSelectableFlags_SpanAllColumns, SpanAllColumns) // ImGuiSelectableFlags_AllowDoubleClick = 1 << 2, // Generate press events on double clicks too MAKE_ENUM(ImGuiSelectableFlags_AllowDoubleClick, AllowDoubleClick) // ImGuiSelectableFlags_Disabled = 1 << 3, // Cannot be selected, display grayed out text MAKE_ENUM(ImGuiSelectableFlags_Disabled, Disabled) // ImGuiSelectableFlags_AllowItemOverlap = 1 << 4, // (WIP) Hit testing to allow subsequent widgets to overlap this one MAKE_ENUM(ImGuiSelectableFlags_AllowItemOverlap, AllowItemOverlap) END_ENUM(SelectableFlags) // enum ImGuiComboFlags_ START_ENUM(ComboFlags) // ImGuiComboFlags_None = 0, MAKE_ENUM(ImGuiComboFlags_None, None) // ImGuiComboFlags_PopupAlignLeft = 1 << 0, // Align the popup toward the left by default MAKE_ENUM(ImGuiComboFlags_PopupAlignLeft, PopupAlignLeft) // ImGuiComboFlags_HeightSmall = 1 << 1, // Max ~4 items visible. Tip: If you want your combo popup to be a specific size you can use // SetNextWindowSizeConstraints() prior to calling BeginCombo() MAKE_ENUM(ImGuiComboFlags_HeightSmall, HeightSmall) // ImGuiComboFlags_HeightRegular = 1 << 2, // Max ~8 items visible (default) MAKE_ENUM(ImGuiComboFlags_HeightRegular, HeightRegular) // ImGuiComboFlags_HeightLarge = 1 << 3, // Max ~20 items visible MAKE_ENUM(ImGuiComboFlags_HeightLarge, HeightLarge) // ImGuiComboFlags_HeightLargest = 1 << 4, // As many fitting items as possible MAKE_ENUM(ImGuiComboFlags_HeightLargest, HeightLargest) // ImGuiComboFlags_NoArrowButton = 1 << 5, // Display on the preview box without the square arrow button MAKE_ENUM(ImGuiComboFlags_NoArrowButton, NoArrowButton) // ImGuiComboFlags_NoPreview = 1 << 6, // Display only a square arrow button MAKE_ENUM(ImGuiComboFlags_NoPreview, NoPreview) END_ENUM(ComboFlags) // enum ImGuiTabBarFlags_ START_ENUM(TabBarFlags) // ImGuiTabBarFlags_None = 0, MAKE_ENUM(ImGuiTabBarFlags_None, None) // ImGuiTabBarFlags_Reorderable = 1 << 0, // Allow manually dragging tabs to re-order them + New tabs are appended at the end // of list MAKE_ENUM(ImGuiTabBarFlags_Reorderable, Reorderable) // ImGuiTabBarFlags_AutoSelectNewTabs = 1 << 1, // Automatically select new tabs when they appear MAKE_ENUM(ImGuiTabBarFlags_AutoSelectNewTabs, AutoSelectNewTabs) // ImGuiTabBarFlags_TabListPopupButton = 1 << 2, // Disable buttons to open the tab list popup MAKE_ENUM(ImGuiTabBarFlags_TabListPopupButton, TabListPopupButton) // ImGuiTabBarFlags_NoCloseWithMiddleMouseButton = 1 << 3, // Disable behavior of closing tabs (that are submitted with p_open != NULL) with // middle mouse button. You can still repro this behavior on user's side with if (IsItemHovered() && IsMouseClicked(2)) *p_open = false. MAKE_ENUM(ImGuiTabBarFlags_NoCloseWithMiddleMouseButton, NoCloseWithMiddleMouseButton) // ImGuiTabBarFlags_NoTabListScrollingButtons = 1 << 4, // Disable scrolling buttons (apply when fitting policy is // ImGuiTabBarFlags_FittingPolicyScroll) MAKE_ENUM(ImGuiTabBarFlags_NoTabListScrollingButtons, NoTabListScrollingButtons) // ImGuiTabBarFlags_NoTooltip = 1 << 5, // Disable tooltips when hovering a tab MAKE_ENUM(ImGuiTabBarFlags_NoTooltip, NoTooltip) // ImGuiTabBarFlags_FittingPolicyResizeDown = 1 << 6, // Resize tabs when they don't fit MAKE_ENUM(ImGuiTabBarFlags_FittingPolicyResizeDown, FittingPolicyResizeDown) // ImGuiTabBarFlags_FittingPolicyScroll = 1 << 7, // Add scroll buttons when tabs don't fit MAKE_ENUM(ImGuiTabBarFlags_FittingPolicyScroll, FittingPolicyScroll) END_ENUM(TabBarFlags) // enum ImGuiTabItemFlags_ START_ENUM(TabItemFlags) // ImGuiTabItemFlags_None = 0, MAKE_ENUM(ImGuiTabItemFlags_None, None) // ImGuiTabItemFlags_UnsavedDocument = 1 << 0, // Display a dot next to the title + tab is selected when clicking the X + closure // is not assumed (will wait for user to stop submitting the tab). Otherwise closure is assumed when pressing the X, so if you keep submitting the // tab may reappear at end of tab bar. MAKE_ENUM(ImGuiTabItemFlags_UnsavedDocument, UnsavedDocument) // ImGuiTabItemFlags_SetSelected = 1 << 1, // Trigger flag to programmatically make the tab selected when calling // BeginTabItem() MAKE_ENUM(ImGuiTabItemFlags_SetSelected, SetSelected) // ImGuiTabItemFlags_NoCloseWithMiddleMouseButton = 1 << 2, // Disable behavior of closing tabs (that are submitted with p_open != NULL) with // middle mouse button. You can still repro this behavior on user's side with if (IsItemHovered() && IsMouseClicked(2)) *p_open = false. MAKE_ENUM(ImGuiTabItemFlags_NoCloseWithMiddleMouseButton, NoCloseWithMiddleMouseButton) // ImGuiTabItemFlags_NoPushId = 1 << 3, // Don't call PushID(tab->ID)/PopID() on BeginTabItem()/EndTabItem() MAKE_ENUM(ImGuiTabItemFlags_NoPushId, NoPushId) // ImGuiTabItemFlags_NoTooltip = 1 << 4, // Disable tooltip for the given tab MAKE_ENUM(ImGuiTabItemFlags_NoTooltip, NoTooltip) // ImGuiTabItemFlags_NoReorder = 1 << 5, // Disable reordering this tab or having another tab cross over this tab MAKE_ENUM(ImGuiTabItemFlags_NoReorder, NoReorder) // ImGuiTabItemFlags_Leading = 1 << 6, // Enforce the tab position to the left of the tab bar (after the tab list popup // button) MAKE_ENUM(ImGuiTabItemFlags_Leading, Leading) // ImGuiTabItemFlags_Trailing = 1 << 7, // Enforce the tab position to the right of the tab bar (before the scrolling // buttons) MAKE_ENUM(ImGuiTabItemFlags_Trailing, Trailing) END_ENUM(TabItemFlags) // enum ImGuiTableFlags_ START_ENUM(TableFlags) // ImGuiTableFlags_None = 0, MAKE_ENUM(ImGuiTableFlags_None, None) // ImGuiTableFlags_Resizable = 1 << 0, // Enable resizing columns. MAKE_ENUM(ImGuiTableFlags_Resizable, Resizable) // ImGuiTableFlags_Reorderable = 1 << 1, // Enable reordering columns in header row (need calling TableSetupColumn() + // TableHeadersRow() to display headers) MAKE_ENUM(ImGuiTableFlags_Reorderable, Reorderable) // ImGuiTableFlags_Hideable = 1 << 2, // Enable hiding/disabling columns in context menu. MAKE_ENUM(ImGuiTableFlags_Hideable, Hideable) // ImGuiTableFlags_Sortable = 1 << 3, // Enable sorting. Call TableGetSortSpecs() to obtain sort specs. Also see // ImGuiTableFlags_SortMulti and ImGuiTableFlags_SortTristate. MAKE_ENUM(ImGuiTableFlags_Sortable, Sortable) // ImGuiTableFlags_NoSavedSettings = 1 << 4, // Disable persisting columns order, width and sort settings in the .ini file. MAKE_ENUM(ImGuiTableFlags_NoSavedSettings, NoSavedSettings) // ImGuiTableFlags_ContextMenuInBody = 1 << 5, // Right-click on columns body/contents will display table context menu. By default it is // available in TableHeadersRow(). MAKE_ENUM(ImGuiTableFlags_ContextMenuInBody, ContextMenuInBody) // ImGuiTableFlags_RowBg = 1 << 6, // Set each RowBg color with ImGuiCol_TableRowBg or ImGuiCol_TableRowBgAlt (equivalent of // calling TableSetBgColor with ImGuiTableBgFlags_RowBg0 on each row manually) MAKE_ENUM(ImGuiTableFlags_RowBg, RowBg) // ImGuiTableFlags_BordersInnerH = 1 << 7, // Draw horizontal borders between rows. MAKE_ENUM(ImGuiTableFlags_BordersInnerH, BordersInnerH) // ImGuiTableFlags_BordersOuterH = 1 << 8, // Draw horizontal borders at the top and bottom. MAKE_ENUM(ImGuiTableFlags_BordersOuterH, BordersOuterH) // ImGuiTableFlags_BordersInnerV = 1 << 9, // Draw vertical borders between columns. MAKE_ENUM(ImGuiTableFlags_BordersInnerV, BordersInnerV) // ImGuiTableFlags_BordersOuterV = 1 << 10, // Draw vertical borders on the left and right sides. MAKE_ENUM(ImGuiTableFlags_BordersOuterV, BordersOuterV) // ImGuiTableFlags_BordersH = ImGuiTableFlags_BordersInnerH | ImGuiTableFlags_BordersOuterH, // Draw horizontal borders. MAKE_ENUM(ImGuiTableFlags_BordersH, BordersH) // ImGuiTableFlags_BordersV = ImGuiTableFlags_BordersInnerV | ImGuiTableFlags_BordersOuterV, // Draw vertical borders. MAKE_ENUM(ImGuiTableFlags_BordersV, BordersV) // ImGuiTableFlags_BordersInner = ImGuiTableFlags_BordersInnerV | ImGuiTableFlags_BordersInnerH, // Draw inner borders. MAKE_ENUM(ImGuiTableFlags_BordersInner, BordersInner) // ImGuiTableFlags_BordersOuter = ImGuiTableFlags_BordersOuterV | ImGuiTableFlags_BordersOuterH, // Draw outer borders. MAKE_ENUM(ImGuiTableFlags_BordersOuter, BordersOuter) // ImGuiTableFlags_Borders = ImGuiTableFlags_BordersInner | ImGuiTableFlags_BordersOuter, // Draw all borders. MAKE_ENUM(ImGuiTableFlags_Borders, Borders) // ImGuiTableFlags_NoBordersInBody = 1 << 11, // [ALPHA] Disable vertical borders in columns Body (borders will always appear in // Headers). -> May move to style MAKE_ENUM(ImGuiTableFlags_NoBordersInBody, NoBordersInBody) // ImGuiTableFlags_NoBordersInBodyUntilResize = 1 << 12, // [ALPHA] Disable vertical borders in columns Body until hovered for resize (borders // will always appear in Headers). -> May move to style MAKE_ENUM(ImGuiTableFlags_NoBordersInBodyUntilResize, NoBordersInBodyUntilResize) // ImGuiTableFlags_SizingFixedFit = 1 << 13, // Columns default to _WidthFixed or _WidthAuto (if resizable or not resizable), matching // contents width. MAKE_ENUM(ImGuiTableFlags_SizingFixedFit, SizingFixedFit) // ImGuiTableFlags_SizingFixedSame = 2 << 13, // Columns default to _WidthFixed or _WidthAuto (if resizable or not resizable), matching // the maximum contents width of all columns. Implicitly enable ImGuiTableFlags_NoKeepColumnsVisible. MAKE_ENUM(ImGuiTableFlags_SizingFixedSame, SizingFixedSame) // ImGuiTableFlags_SizingStretchProp = 3 << 13, // Columns default to _WidthStretch with default weights proportional to each columns // contents widths. MAKE_ENUM(ImGuiTableFlags_SizingStretchProp, SizingStretchProp) // ImGuiTableFlags_SizingStretchSame = 4 << 13, // Columns default to _WidthStretch with default weights all equal, unless overridden by // TableSetupColumn(). MAKE_ENUM(ImGuiTableFlags_SizingStretchSame, SizingStretchSame) // ImGuiTableFlags_NoHostExtendX = 1 << 16, // Make outer width auto-fit to columns, overriding outer_size.x value. Only available // when ScrollX/ScrollY are disabled and Stretch columns are not used. MAKE_ENUM(ImGuiTableFlags_NoHostExtendX, NoHostExtendX) // ImGuiTableFlags_NoHostExtendY = 1 << 17, // Make outer height stop exactly at outer_size.y (prevent auto-extending table past the // limit). Only available when ScrollX/ScrollY are disabled. Data below the limit will be clipped and not visible. MAKE_ENUM(ImGuiTableFlags_NoHostExtendY, NoHostExtendY) // ImGuiTableFlags_NoKeepColumnsVisible = 1 << 18, // Disable keeping column always minimally visible when ScrollX is off and table gets too // small. Not recommended if columns are resizable. MAKE_ENUM(ImGuiTableFlags_NoKeepColumnsVisible, NoKeepColumnsVisible) // ImGuiTableFlags_PreciseWidths = 1 << 19, // Disable distributing remainder width to stretched columns (width allocation on a // 100-wide table with 3 columns: Without this flag: 33,33,34. With this flag: 33,33,33). With larger number of columns, resizing will appear to be // less smooth. MAKE_ENUM(ImGuiTableFlags_PreciseWidths, PreciseWidths) // ImGuiTableFlags_NoClip = 1 << 20, // Disable clipping rectangle for every individual columns (reduce draw command count, // items will be able to overflow into other columns). Generally incompatible with TableSetupScrollFreeze(). MAKE_ENUM(ImGuiTableFlags_NoClip, NoClip) // ImGuiTableFlags_PadOuterX = 1 << 21, // Default if BordersOuterV is on. Enable outermost padding. Generally desirable if you // have headers. MAKE_ENUM(ImGuiTableFlags_PadOuterX, PadOuterX) // ImGuiTableFlags_NoPadOuterX = 1 << 22, // Default if BordersOuterV is off. Disable outermost padding. MAKE_ENUM(ImGuiTableFlags_NoPadOuterX, NoPadOuterX) // ImGuiTableFlags_NoPadInnerX = 1 << 23, // Disable inner padding between columns (double inner padding if BordersOuterV is on, // single inner padding if BordersOuterV is off). MAKE_ENUM(ImGuiTableFlags_NoPadInnerX, NoPadInnerX) // ImGuiTableFlags_ScrollX = 1 << 24, // Enable horizontal scrolling. Require 'outer_size' parameter of BeginTable() to specify // the container size. Changes default sizing policy. Because this creates a child window, ScrollY is currently generally recommended when using // ScrollX. MAKE_ENUM(ImGuiTableFlags_ScrollX, ScrollX) // ImGuiTableFlags_ScrollY = 1 << 25, // Enable vertical scrolling. Require 'outer_size' parameter of BeginTable() to specify // the container size. MAKE_ENUM(ImGuiTableFlags_ScrollY, ScrollY) // ImGuiTableFlags_SortMulti = 1 << 26, // Hold shift when clicking headers to sort on multiple column. TableGetSortSpecs() may // return specs where (SpecsCount > 1). MAKE_ENUM(ImGuiTableFlags_SortMulti, SortMulti) // ImGuiTableFlags_SortTristate = 1 << 27, // Allow no sorting, disable default sorting. TableGetSortSpecs() may return specs where // (SpecsCount == 0). MAKE_ENUM(ImGuiTableFlags_SortTristate, SortTristate) END_ENUM(TableFlags) // enum ImGuiTableColumnFlags_ START_ENUM(TableColumnFlags) // ImGuiTableColumnFlags_None = 0, MAKE_ENUM(ImGuiTableColumnFlags_None, None) // ImGuiTableColumnFlags_Disabled = 1 << 0, // Overriding/master disable flag: hide column, won't show in context menu (unlike // calling TableSetColumnEnabled() which manipulates the user accessible state) MAKE_ENUM(ImGuiTableColumnFlags_Disabled, Disabled) // ImGuiTableColumnFlags_DefaultHide = 1 << 1, // Default as a hidden/disabled column. MAKE_ENUM(ImGuiTableColumnFlags_DefaultHide, DefaultHide) // ImGuiTableColumnFlags_DefaultSort = 1 << 2, // Default as a sorting column. MAKE_ENUM(ImGuiTableColumnFlags_DefaultSort, DefaultSort) // ImGuiTableColumnFlags_WidthStretch = 1 << 3, // Column will stretch. Preferable with horizontal scrolling disabled (default if table // sizing policy is _SizingStretchSame or _SizingStretchProp). MAKE_ENUM(ImGuiTableColumnFlags_WidthStretch, WidthStretch) // ImGuiTableColumnFlags_WidthFixed = 1 << 4, // Column will not stretch. Preferable with horizontal scrolling enabled (default if // table sizing policy is _SizingFixedFit and table is resizable). MAKE_ENUM(ImGuiTableColumnFlags_WidthFixed, WidthFixed) // ImGuiTableColumnFlags_NoResize = 1 << 5, // Disable manual resizing. MAKE_ENUM(ImGuiTableColumnFlags_NoResize, NoResize) // ImGuiTableColumnFlags_NoReorder = 1 << 6, // Disable manual reordering this column, this will also prevent other columns from // crossing over this column. MAKE_ENUM(ImGuiTableColumnFlags_NoReorder, NoReorder) // ImGuiTableColumnFlags_NoHide = 1 << 7, // Disable ability to hide/disable this column. MAKE_ENUM(ImGuiTableColumnFlags_NoHide, NoHide) // ImGuiTableColumnFlags_NoClip = 1 << 8, // Disable clipping for this column (all NoClip columns will render in a same draw // command). MAKE_ENUM(ImGuiTableColumnFlags_NoClip, NoClip) // ImGuiTableColumnFlags_NoSort = 1 << 9, // Disable ability to sort on this field (even if ImGuiTableFlags_Sortable is set on the // table). MAKE_ENUM(ImGuiTableColumnFlags_NoSort, NoSort) // ImGuiTableColumnFlags_NoSortAscending = 1 << 10, // Disable ability to sort in the ascending direction. MAKE_ENUM(ImGuiTableColumnFlags_NoSortAscending, NoSortAscending) // ImGuiTableColumnFlags_NoSortDescending = 1 << 11, // Disable ability to sort in the descending direction. MAKE_ENUM(ImGuiTableColumnFlags_NoSortDescending, NoSortDescending) // ImGuiTableColumnFlags_NoHeaderLabel = 1 << 12, // TableHeadersRow() will not submit label for this column. Convenient for some small // columns. Name will still appear in context menu. MAKE_ENUM(ImGuiTableColumnFlags_NoHeaderLabel, NoHeaderLabel) // ImGuiTableColumnFlags_NoHeaderWidth = 1 << 13, // Disable header text width contribution to automatic column width. MAKE_ENUM(ImGuiTableColumnFlags_NoHeaderWidth, NoHeaderWidth) // ImGuiTableColumnFlags_PreferSortAscending = 1 << 14, // Make the initial sort direction Ascending when first sorting on this column // (default). MAKE_ENUM(ImGuiTableColumnFlags_PreferSortAscending, PreferSortAscending) // ImGuiTableColumnFlags_PreferSortDescending = 1 << 15, // Make the initial sort direction Descending when first sorting on this column. MAKE_ENUM(ImGuiTableColumnFlags_PreferSortDescending, PreferSortDescending) // ImGuiTableColumnFlags_IndentEnable = 1 << 16, // Use current Indent value when entering cell (default for column 0). MAKE_ENUM(ImGuiTableColumnFlags_IndentEnable, IndentEnable) // ImGuiTableColumnFlags_IndentDisable = 1 << 17, // Ignore current Indent value when entering cell (default for columns > 0). Indentation // changes _within_ the cell will still be honored. MAKE_ENUM(ImGuiTableColumnFlags_IndentDisable, IndentDisable) // ImGuiTableColumnFlags_IsEnabled = 1 << 24, // Status: is enabled == not hidden by user/api (referred to as "Hide" in _DefaultHide // and _NoHide) flags. MAKE_ENUM(ImGuiTableColumnFlags_IsEnabled, IsEnabled) // ImGuiTableColumnFlags_IsVisible = 1 << 25, // Status: is visible == is enabled AND not clipped by scrolling. MAKE_ENUM(ImGuiTableColumnFlags_IsVisible, IsVisible) // ImGuiTableColumnFlags_IsSorted = 1 << 26, // Status: is currently part of the sort specs MAKE_ENUM(ImGuiTableColumnFlags_IsSorted, IsSorted) // ImGuiTableColumnFlags_IsHovered = 1 << 27, // Status: is hovered by mouse MAKE_ENUM(ImGuiTableColumnFlags_IsHovered, IsHovered) END_ENUM(TableColumnFlags) // enum ImGuiTableRowFlags_ START_ENUM(TableRowFlags) // ImGuiTableRowFlags_None = 0, MAKE_ENUM(ImGuiTableRowFlags_None, None) // ImGuiTableRowFlags_Headers = 1 << 0, // Identify header row (set default background color + width of its contents accounted // differently for auto column width) MAKE_ENUM(ImGuiTableRowFlags_Headers, Headers) END_ENUM(TableRowFlags) // enum ImGuiTableBgTarget_ START_ENUM(TableBgTarget) // ImGuiTableBgTarget_None = 0, MAKE_ENUM(ImGuiTableBgTarget_None, None) // ImGuiTableBgTarget_RowBg0 = 1, // Set row background color 0 (generally used for background, automatically set when // ImGuiTableFlags_RowBg is used) MAKE_ENUM(ImGuiTableBgTarget_RowBg0, RowBg0) // ImGuiTableBgTarget_RowBg1 = 2, // Set row background color 1 (generally used for selection marking) MAKE_ENUM(ImGuiTableBgTarget_RowBg1, RowBg1) // ImGuiTableBgTarget_CellBg = 3, // Set cell background color (top-most color) MAKE_ENUM(ImGuiTableBgTarget_CellBg, CellBg) END_ENUM(TableBgTarget) // enum ImGuiFocusedFlags_ START_ENUM(FocusedFlags) // ImGuiFocusedFlags_None = 0, MAKE_ENUM(ImGuiFocusedFlags_None, None) // ImGuiFocusedFlags_ChildWindows = 1 << 0, // Return true if any children of the window is focused MAKE_ENUM(ImGuiFocusedFlags_ChildWindows, ChildWindows) // ImGuiFocusedFlags_RootWindow = 1 << 1, // Test from root window (top most parent of the current hierarchy) MAKE_ENUM(ImGuiFocusedFlags_RootWindow, RootWindow) // ImGuiFocusedFlags_AnyWindow = 1 << 2, // Return true if any window is focused. Important: If you are trying to tell how to // dispatch your low-level inputs, do NOT use this. Use 'io.WantCaptureMouse' instead! Please read the FAQ! MAKE_ENUM(ImGuiFocusedFlags_AnyWindow, AnyWindow) // ImGuiFocusedFlags_NoPopupHierarchy = 1 << 3, // Do not consider popup hierarchy (do not treat popup emitter as parent of popup) // (when used with _ChildWindows or _RootWindow) MAKE_ENUM(ImGuiFocusedFlags_NoPopupHierarchy, NoPopupHierarchy) // ImGuiFocusedFlags_DockHierarchy = 1 << 4, // Consider docking hierarchy (treat dockspace host as parent of docked window) // (when used with _ChildWindows or _RootWindow) MAKE_ENUM(ImGuiFocusedFlags_DockHierarchy, DockHierarchy) // ImGuiFocusedFlags_RootAndChildWindows = ImGuiFocusedFlags_RootWindow | ImGuiFocusedFlags_ChildWindows, MAKE_ENUM(ImGuiFocusedFlags_RootAndChildWindows, RootAndChildWindows) END_ENUM(FocusedFlags) // enum ImGuiHoveredFlags_ START_ENUM(HoveredFlags) // ImGuiHoveredFlags_None = 0, // Return true if directly over the item/window, not obstructed by another window, // not obstructed by an active popup or modal blocking inputs under them. MAKE_ENUM(ImGuiHoveredFlags_None, None) // ImGuiHoveredFlags_ChildWindows = 1 << 0, // IsWindowHovered() only: Return true if any children of the window is hovered MAKE_ENUM(ImGuiHoveredFlags_ChildWindows, ChildWindows) // ImGuiHoveredFlags_RootWindow = 1 << 1, // IsWindowHovered() only: Test from root window (top most parent of the current // hierarchy) MAKE_ENUM(ImGuiHoveredFlags_RootWindow, RootWindow) // ImGuiHoveredFlags_AnyWindow = 1 << 2, // IsWindowHovered() only: Return true if any window is hovered MAKE_ENUM(ImGuiHoveredFlags_AnyWindow, AnyWindow) // ImGuiHoveredFlags_NoPopupHierarchy = 1 << 3, // IsWindowHovered() only: Do not consider popup hierarchy (do not treat popup // emitter as parent of popup) (when used with _ChildWindows or _RootWindow) MAKE_ENUM(ImGuiHoveredFlags_NoPopupHierarchy, NoPopupHierarchy) // ImGuiHoveredFlags_DockHierarchy = 1 << 4, // IsWindowHovered() only: Consider docking hierarchy (treat dockspace host as // parent of docked window) (when used with _ChildWindows or _RootWindow) MAKE_ENUM(ImGuiHoveredFlags_DockHierarchy, DockHierarchy) // ImGuiHoveredFlags_AllowWhenBlockedByPopup = 1 << 5, // Return true even if a popup window is normally blocking access to this // item/window MAKE_ENUM(ImGuiHoveredFlags_AllowWhenBlockedByPopup, AllowWhenBlockedByPopup) // ImGuiHoveredFlags_AllowWhenBlockedByActiveItem = 1 << 7, // Return true even if an active item is blocking access to this item/window. Useful // for Drag and Drop patterns. MAKE_ENUM(ImGuiHoveredFlags_AllowWhenBlockedByActiveItem, AllowWhenBlockedByActiveItem) // ImGuiHoveredFlags_AllowWhenOverlapped = 1 << 8, // IsItemHovered() only: Return true even if the position is obstructed or // overlapped by another window MAKE_ENUM(ImGuiHoveredFlags_AllowWhenOverlapped, AllowWhenOverlapped) // ImGuiHoveredFlags_AllowWhenDisabled = 1 << 9, // IsItemHovered() only: Return true even if the item is disabled MAKE_ENUM(ImGuiHoveredFlags_AllowWhenDisabled, AllowWhenDisabled) // ImGuiHoveredFlags_NoNavOverride = 1 << 10, // Disable using gamepad/keyboard navigation state when active, always query mouse. MAKE_ENUM(ImGuiHoveredFlags_NoNavOverride, NoNavOverride) // ImGuiHoveredFlags_RectOnly = ImGuiHoveredFlags_AllowWhenBlockedByPopup | ImGuiHoveredFlags_AllowWhenBlockedByActiveItem | // ImGuiHoveredFlags_AllowWhenOverlapped, MAKE_ENUM(ImGuiHoveredFlags_RectOnly, RectOnly) // ImGuiHoveredFlags_RootAndChildWindows = ImGuiHoveredFlags_RootWindow | ImGuiHoveredFlags_ChildWindows, MAKE_ENUM(ImGuiHoveredFlags_RootAndChildWindows, RootAndChildWindows) // ImGuiHoveredFlags_DelayNormal = 1 << 11, // Return true after io.HoverDelayNormal elapsed (~0.30 sec) MAKE_ENUM(ImGuiHoveredFlags_DelayNormal, DelayNormal) // ImGuiHoveredFlags_DelayShort = 1 << 12, // Return true after io.HoverDelayShort elapsed (~0.10 sec) MAKE_ENUM(ImGuiHoveredFlags_DelayShort, DelayShort) // ImGuiHoveredFlags_NoSharedDelay = 1 << 13, // Disable shared delay system where moving from one item to the next keeps the // previous timer for a short time (standard for tooltips with long delays) MAKE_ENUM(ImGuiHoveredFlags_NoSharedDelay, NoSharedDelay) END_ENUM(HoveredFlags) // enum ImGuiDockNodeFlags_ START_ENUM(DockNodeFlags) // ImGuiDockNodeFlags_None = 0, MAKE_ENUM(ImGuiDockNodeFlags_None, None) // ImGuiDockNodeFlags_KeepAliveOnly = 1 << 0, // Shared // Don't display the dockspace node but keep it alive. Windows // docked into this dockspace node won't be undocked. MAKE_ENUM(ImGuiDockNodeFlags_KeepAliveOnly, KeepAliveOnly) // ImGuiDockNodeFlags_NoDockingInCentralNode = 1 << 2, // Shared // Disable docking inside the Central Node, which will be always // kept empty. MAKE_ENUM(ImGuiDockNodeFlags_NoDockingInCentralNode, NoDockingInCentralNode) // ImGuiDockNodeFlags_PassthruCentralNode = 1 << 3, // Shared // Enable passthru dockspace: 1) DockSpace() will render a // ImGuiCol_WindowBg background covering everything excepted the Central Node when empty. Meaning the host window should probably use // SetNextWindowBgAlpha(0.0f) prior to Begin() when using this. 2) When Central Node is empty: let inputs pass-through + won't display a // DockingEmptyBg background. See demo for details. MAKE_ENUM(ImGuiDockNodeFlags_PassthruCentralNode, PassthruCentralNode) // ImGuiDockNodeFlags_NoSplit = 1 << 4, // Shared/Local // Disable splitting the node into smaller nodes. Useful e.g. when // embedding dockspaces into a main root one (the root one may have splitting disabled to reduce confusion). Note: when turned off, existing splits // will be preserved. MAKE_ENUM(ImGuiDockNodeFlags_NoSplit, NoSplit) // ImGuiDockNodeFlags_NoResize = 1 << 5, // Shared/Local // Disable resizing node using the splitter/separators. Useful with // programmatically setup dockspaces. MAKE_ENUM(ImGuiDockNodeFlags_NoResize, NoResize) // ImGuiDockNodeFlags_AutoHideTabBar = 1 << 6, // Shared/Local // Tab bar will automatically hide when there is a single window in // the dock node. MAKE_ENUM(ImGuiDockNodeFlags_AutoHideTabBar, AutoHideTabBar) END_ENUM(DockNodeFlags) // enum ImGuiDragDropFlags_ START_ENUM(DragDropFlags) // ImGuiDragDropFlags_None = 0, MAKE_ENUM(ImGuiDragDropFlags_None, None) // ImGuiDragDropFlags_SourceNoPreviewTooltip = 1 << 0, // Disable preview tooltip. By default, a successful call to BeginDragDropSource // opens a tooltip so you can display a preview or description of the source contents. This flag disables this behavior. MAKE_ENUM(ImGuiDragDropFlags_SourceNoPreviewTooltip, SourceNoPreviewTooltip) // ImGuiDragDropFlags_SourceNoDisableHover = 1 << 1, // By default, when dragging we clear data so that IsItemHovered() will return // false, to avoid subsequent user code submitting tooltips. This flag disables this behavior so you can still call IsItemHovered() on the source // item. MAKE_ENUM(ImGuiDragDropFlags_SourceNoDisableHover, SourceNoDisableHover) // ImGuiDragDropFlags_SourceNoHoldToOpenOthers = 1 << 2, // Disable the behavior that allows to open tree nodes and collapsing header by // holding over them while dragging a source item. MAKE_ENUM(ImGuiDragDropFlags_SourceNoHoldToOpenOthers, SourceNoHoldToOpenOthers) // ImGuiDragDropFlags_SourceAllowNullID = 1 << 3, // Allow items such as Text(), Image() that have no unique identifier to be used as // drag source, by manufacturing a temporary identifier based on their window-relative position. This is extremely unusual within the dear imgui // ecosystem and so we made it explicit. MAKE_ENUM(ImGuiDragDropFlags_SourceAllowNullID, SourceAllowNullID) // ImGuiDragDropFlags_SourceExtern = 1 << 4, // External source (from outside of dear imgui), won't attempt to read current // item/window info. Will always return true. Only one Extern source can be active simultaneously. MAKE_ENUM(ImGuiDragDropFlags_SourceExtern, SourceExtern) // ImGuiDragDropFlags_SourceAutoExpirePayload = 1 << 5, // Automatically expire the payload if the source cease to be submitted (otherwise // payloads are persisting while being dragged) MAKE_ENUM(ImGuiDragDropFlags_SourceAutoExpirePayload, SourceAutoExpirePayload) // ImGuiDragDropFlags_AcceptBeforeDelivery = 1 << 10, // AcceptDragDropPayload() will returns true even before the mouse button is // released. You can then call IsDelivery() to test if the payload needs to be delivered. MAKE_ENUM(ImGuiDragDropFlags_AcceptBeforeDelivery, AcceptBeforeDelivery) // ImGuiDragDropFlags_AcceptNoDrawDefaultRect = 1 << 11, // Do not draw the default highlight rectangle when hovering over target. MAKE_ENUM(ImGuiDragDropFlags_AcceptNoDrawDefaultRect, AcceptNoDrawDefaultRect) // ImGuiDragDropFlags_AcceptNoPreviewTooltip = 1 << 12, // Request hiding the BeginDragDropSource tooltip from the BeginDragDropTarget site. MAKE_ENUM(ImGuiDragDropFlags_AcceptNoPreviewTooltip, AcceptNoPreviewTooltip) // ImGuiDragDropFlags_AcceptPeekOnly = ImGuiDragDropFlags_AcceptBeforeDelivery | ImGuiDragDropFlags_AcceptNoDrawDefaultRect, // For // peeking ahead and inspecting the payload before delivery. MAKE_ENUM(ImGuiDragDropFlags_AcceptPeekOnly, AcceptPeekOnly) END_ENUM(DragDropFlags) // enum ImGuiDataType_ START_ENUM(DataType) // ImGuiDataType_S8, // signed char / char (with sensible compilers) MAKE_ENUM(ImGuiDataType_S8, S8) // ImGuiDataType_U8, // unsigned char MAKE_ENUM(ImGuiDataType_U8, U8) // ImGuiDataType_S16, // short MAKE_ENUM(ImGuiDataType_S16, S16) // ImGuiDataType_U16, // unsigned short MAKE_ENUM(ImGuiDataType_U16, U16) // ImGuiDataType_S32, // int MAKE_ENUM(ImGuiDataType_S32, S32) // ImGuiDataType_U32, // unsigned int MAKE_ENUM(ImGuiDataType_U32, U32) // ImGuiDataType_S64, // long long / __int64 MAKE_ENUM(ImGuiDataType_S64, S64) // ImGuiDataType_U64, // unsigned long long / unsigned __int64 MAKE_ENUM(ImGuiDataType_U64, U64) // ImGuiDataType_Float, // float MAKE_ENUM(ImGuiDataType_Float, Float) // ImGuiDataType_Double, // double MAKE_ENUM(ImGuiDataType_Double, Double) // ImGuiDataType_COUNT MAKE_ENUM(ImGuiDataType_COUNT, COUNT) END_ENUM(DataType) // enum ImGuiDir_ START_ENUM(Dir) // ImGuiDir_None = -1, MAKE_ENUM(ImGuiDir_None, None) // ImGuiDir_Left = 0, MAKE_ENUM(ImGuiDir_Left, Left) // ImGuiDir_Right = 1, MAKE_ENUM(ImGuiDir_Right, Right) // ImGuiDir_Up = 2, MAKE_ENUM(ImGuiDir_Up, Up) // ImGuiDir_Down = 3, MAKE_ENUM(ImGuiDir_Down, Down) // ImGuiDir_COUNT MAKE_ENUM(ImGuiDir_COUNT, COUNT) END_ENUM(Dir) // enum ImGuiSortDirection_ START_ENUM(SortDirection) // ImGuiSortDirection_None = 0, MAKE_ENUM(ImGuiSortDirection_None, None) // ImGuiSortDirection_Ascending = 1, // Ascending = 0->9, A->Z etc. MAKE_ENUM(ImGuiSortDirection_Ascending, Ascending) // ImGuiSortDirection_Descending = 2 // Descending = 9->0, Z->A etc. MAKE_ENUM(ImGuiSortDirection_Descending, Descending) END_ENUM(SortDirection) // enum ImGuiKey : int // enum ImGuiNavInput // enum ImGuiConfigFlags_ START_ENUM(ConfigFlags) // ImGuiConfigFlags_None = 0, MAKE_ENUM(ImGuiConfigFlags_None, None) // ImGuiConfigFlags_NavEnableKeyboard = 1 << 0, // Master keyboard navigation enable flag. Enable full Tabbing + directional arrows + // space/enter to activate. MAKE_ENUM(ImGuiConfigFlags_NavEnableKeyboard, NavEnableKeyboard) // ImGuiConfigFlags_NavEnableGamepad = 1 << 1, // Master gamepad navigation enable flag. Backend also needs to set // ImGuiBackendFlags_HasGamepad. MAKE_ENUM(ImGuiConfigFlags_NavEnableGamepad, NavEnableGamepad) // ImGuiConfigFlags_NavEnableSetMousePos = 1 << 2, // Instruct navigation to move the mouse cursor. May be useful on TV/console systems where // moving a virtual mouse is awkward. Will update io.MousePos and set io.WantSetMousePos=true. If enabled you MUST honor io.WantSetMousePos // requests in your backend, otherwise ImGui will react as if the mouse is jumping around back and forth. MAKE_ENUM(ImGuiConfigFlags_NavEnableSetMousePos, NavEnableSetMousePos) // ImGuiConfigFlags_NavNoCaptureKeyboard = 1 << 3, // Instruct navigation to not set the io.WantCaptureKeyboard flag when io.NavActive is set. MAKE_ENUM(ImGuiConfigFlags_NavNoCaptureKeyboard, NavNoCaptureKeyboard) // ImGuiConfigFlags_NoMouse = 1 << 4, // Instruct imgui to clear mouse position/buttons in NewFrame(). This allows ignoring the // mouse information set by the backend. MAKE_ENUM(ImGuiConfigFlags_NoMouse, NoMouse) // ImGuiConfigFlags_NoMouseCursorChange = 1 << 5, // Instruct backend to not alter mouse cursor shape and visibility. Use if the backend // cursor changes are interfering with yours and you don't want to use SetMouseCursor() to change mouse cursor. You may want to honor requests from // imgui by reading GetMouseCursor() yourself instead. MAKE_ENUM(ImGuiConfigFlags_NoMouseCursorChange, NoMouseCursorChange) // ImGuiConfigFlags_DockingEnable = 1 << 6, // Docking enable flags. MAKE_ENUM(ImGuiConfigFlags_DockingEnable, DockingEnable) // ImGuiConfigFlags_ViewportsEnable = 1 << 10, // Viewport enable flags (require both ImGuiBackendFlags_PlatformHasViewports + // ImGuiBackendFlags_RendererHasViewports set by the respective backends) MAKE_ENUM(ImGuiConfigFlags_ViewportsEnable, ViewportsEnable) // ImGuiConfigFlags_DpiEnableScaleViewports= 1 << 14, // [BETA: Don't use] FIXME-DPI: Reposition and resize imgui windows when the DpiScale of a // viewport changed (mostly useful for the main viewport hosting other window). Note that resizing the main window itself is up to your // application. MAKE_ENUM(ImGuiConfigFlags_DpiEnableScaleViewports, DpiEnableScaleViewports) // ImGuiConfigFlags_DpiEnableScaleFonts = 1 << 15, // [BETA: Don't use] FIXME-DPI: Request bitmap-scaled fonts to match DpiScale. This is a // very low-quality workaround. The correct way to handle DPI is _currently_ to replace the atlas and/or fonts in the Platform_OnChangedViewport // callback, but this is all early work in progress. MAKE_ENUM(ImGuiConfigFlags_DpiEnableScaleFonts, DpiEnableScaleFonts) // ImGuiConfigFlags_IsSRGB = 1 << 20, // Application is SRGB-aware. MAKE_ENUM(ImGuiConfigFlags_IsSRGB, IsSRGB) // ImGuiConfigFlags_IsTouchScreen = 1 << 21, // Application is using a touch screen instead of a mouse. MAKE_ENUM(ImGuiConfigFlags_IsTouchScreen, IsTouchScreen) END_ENUM(ConfigFlags) // enum ImGuiBackendFlags_ START_ENUM(BackendFlags) // ImGuiBackendFlags_None = 0, MAKE_ENUM(ImGuiBackendFlags_None, None) // ImGuiBackendFlags_HasGamepad = 1 << 0, // Backend Platform supports gamepad and currently has one connected. MAKE_ENUM(ImGuiBackendFlags_HasGamepad, HasGamepad) // ImGuiBackendFlags_HasMouseCursors = 1 << 1, // Backend Platform supports honoring GetMouseCursor() value to change the OS cursor shape. MAKE_ENUM(ImGuiBackendFlags_HasMouseCursors, HasMouseCursors) // ImGuiBackendFlags_HasSetMousePos = 1 << 2, // Backend Platform supports io.WantSetMousePos requests to reposition the OS mouse position // (only used if ImGuiConfigFlags_NavEnableSetMousePos is set). MAKE_ENUM(ImGuiBackendFlags_HasSetMousePos, HasSetMousePos) // ImGuiBackendFlags_RendererHasVtxOffset = 1 << 3, // Backend Renderer supports ImDrawCmd::VtxOffset. This enables output of large meshes (64K+ // vertices) while still using 16-bit indices. MAKE_ENUM(ImGuiBackendFlags_RendererHasVtxOffset, RendererHasVtxOffset) // ImGuiBackendFlags_PlatformHasViewports = 1 << 10, // Backend Platform supports multiple viewports. MAKE_ENUM(ImGuiBackendFlags_PlatformHasViewports, PlatformHasViewports) // ImGuiBackendFlags_HasMouseHoveredViewport=1 << 11, // Backend Platform supports calling io.AddMouseViewportEvent() with the viewport under the // mouse. IF POSSIBLE, ignore viewports with the ImGuiViewportFlags_NoInputs flag (Win32 backend, GLFW 3.30+ backend can do this, SDL backend // cannot). If this cannot be done, Dear ImGui needs to use a flawed heuristic to find the viewport under. MAKE_ENUM(ImGuiBackendFlags_HasMouseHoveredViewport, HasMouseHoveredViewport) // ImGuiBackendFlags_RendererHasViewports = 1 << 12, // Backend Renderer supports multiple viewports. MAKE_ENUM(ImGuiBackendFlags_RendererHasViewports, RendererHasViewports) END_ENUM(BackendFlags) // enum ImGuiCol_ START_ENUM(Col) // ImGuiCol_Text, MAKE_ENUM(ImGuiCol_Text, Text) // ImGuiCol_TextDisabled, MAKE_ENUM(ImGuiCol_TextDisabled, TextDisabled) // ImGuiCol_WindowBg, // Background of normal windows MAKE_ENUM(ImGuiCol_WindowBg, WindowBg) // ImGuiCol_ChildBg, // Background of child windows MAKE_ENUM(ImGuiCol_ChildBg, ChildBg) // ImGuiCol_PopupBg, // Background of popups, menus, tooltips windows MAKE_ENUM(ImGuiCol_PopupBg, PopupBg) // ImGuiCol_Border, MAKE_ENUM(ImGuiCol_Border, Border) // ImGuiCol_BorderShadow, MAKE_ENUM(ImGuiCol_BorderShadow, BorderShadow) // ImGuiCol_FrameBg, // Background of checkbox, radio button, plot, slider, text input MAKE_ENUM(ImGuiCol_FrameBg, FrameBg) // ImGuiCol_FrameBgHovered, MAKE_ENUM(ImGuiCol_FrameBgHovered, FrameBgHovered) // ImGuiCol_FrameBgActive, MAKE_ENUM(ImGuiCol_FrameBgActive, FrameBgActive) // ImGuiCol_TitleBg, MAKE_ENUM(ImGuiCol_TitleBg, TitleBg) // ImGuiCol_TitleBgActive, MAKE_ENUM(ImGuiCol_TitleBgActive, TitleBgActive) // ImGuiCol_TitleBgCollapsed, MAKE_ENUM(ImGuiCol_TitleBgCollapsed, TitleBgCollapsed) // ImGuiCol_MenuBarBg, MAKE_ENUM(ImGuiCol_MenuBarBg, MenuBarBg) // ImGuiCol_ScrollbarBg, MAKE_ENUM(ImGuiCol_ScrollbarBg, ScrollbarBg) // ImGuiCol_ScrollbarGrab, MAKE_ENUM(ImGuiCol_ScrollbarGrab, ScrollbarGrab) // ImGuiCol_ScrollbarGrabHovered, MAKE_ENUM(ImGuiCol_ScrollbarGrabHovered, ScrollbarGrabHovered) // ImGuiCol_ScrollbarGrabActive, MAKE_ENUM(ImGuiCol_ScrollbarGrabActive, ScrollbarGrabActive) // ImGuiCol_CheckMark, MAKE_ENUM(ImGuiCol_CheckMark, CheckMark) // ImGuiCol_SliderGrab, MAKE_ENUM(ImGuiCol_SliderGrab, SliderGrab) // ImGuiCol_SliderGrabActive, MAKE_ENUM(ImGuiCol_SliderGrabActive, SliderGrabActive) // ImGuiCol_Button, MAKE_ENUM(ImGuiCol_Button, Button) // ImGuiCol_ButtonHovered, MAKE_ENUM(ImGuiCol_ButtonHovered, ButtonHovered) // ImGuiCol_ButtonActive, MAKE_ENUM(ImGuiCol_ButtonActive, ButtonActive) // ImGuiCol_Header, // Header* colors are used for CollapsingHeader, TreeNode, Selectable, MenuItem MAKE_ENUM(ImGuiCol_Header, Header) // ImGuiCol_HeaderHovered, MAKE_ENUM(ImGuiCol_HeaderHovered, HeaderHovered) // ImGuiCol_HeaderActive, MAKE_ENUM(ImGuiCol_HeaderActive, HeaderActive) // ImGuiCol_Separator, MAKE_ENUM(ImGuiCol_Separator, Separator) // ImGuiCol_SeparatorHovered, MAKE_ENUM(ImGuiCol_SeparatorHovered, SeparatorHovered) // ImGuiCol_SeparatorActive, MAKE_ENUM(ImGuiCol_SeparatorActive, SeparatorActive) // ImGuiCol_ResizeGrip, // Resize grip in lower-right and lower-left corners of windows. MAKE_ENUM(ImGuiCol_ResizeGrip, ResizeGrip) // ImGuiCol_ResizeGripHovered, MAKE_ENUM(ImGuiCol_ResizeGripHovered, ResizeGripHovered) // ImGuiCol_ResizeGripActive, MAKE_ENUM(ImGuiCol_ResizeGripActive, ResizeGripActive) // ImGuiCol_Tab, // TabItem in a TabBar MAKE_ENUM(ImGuiCol_Tab, Tab) // ImGuiCol_TabHovered, MAKE_ENUM(ImGuiCol_TabHovered, TabHovered) // ImGuiCol_TabActive, MAKE_ENUM(ImGuiCol_TabActive, TabActive) // ImGuiCol_TabUnfocused, MAKE_ENUM(ImGuiCol_TabUnfocused, TabUnfocused) // ImGuiCol_TabUnfocusedActive, MAKE_ENUM(ImGuiCol_TabUnfocusedActive, TabUnfocusedActive) // ImGuiCol_DockingPreview, // Preview overlay color when about to docking something MAKE_ENUM(ImGuiCol_DockingPreview, DockingPreview) // ImGuiCol_DockingEmptyBg, // Background color for empty node (e.g. CentralNode with no window docked into it) MAKE_ENUM(ImGuiCol_DockingEmptyBg, DockingEmptyBg) // ImGuiCol_PlotLines, MAKE_ENUM(ImGuiCol_PlotLines, PlotLines) // ImGuiCol_PlotLinesHovered, MAKE_ENUM(ImGuiCol_PlotLinesHovered, PlotLinesHovered) // ImGuiCol_PlotHistogram, MAKE_ENUM(ImGuiCol_PlotHistogram, PlotHistogram) // ImGuiCol_PlotHistogramHovered, MAKE_ENUM(ImGuiCol_PlotHistogramHovered, PlotHistogramHovered) // ImGuiCol_TableHeaderBg, // Table header background MAKE_ENUM(ImGuiCol_TableHeaderBg, TableHeaderBg) // ImGuiCol_TableBorderStrong, // Table outer and header borders (prefer using Alpha=1.0 here) MAKE_ENUM(ImGuiCol_TableBorderStrong, TableBorderStrong) // ImGuiCol_TableBorderLight, // Table inner borders (prefer using Alpha=1.0 here) MAKE_ENUM(ImGuiCol_TableBorderLight, TableBorderLight) // ImGuiCol_TableRowBg, // Table row background (even rows) MAKE_ENUM(ImGuiCol_TableRowBg, TableRowBg) // ImGuiCol_TableRowBgAlt, // Table row background (odd rows) MAKE_ENUM(ImGuiCol_TableRowBgAlt, TableRowBgAlt) // ImGuiCol_TextSelectedBg, MAKE_ENUM(ImGuiCol_TextSelectedBg, TextSelectedBg) // ImGuiCol_DragDropTarget, // Rectangle highlighting a drop target MAKE_ENUM(ImGuiCol_DragDropTarget, DragDropTarget) // ImGuiCol_NavHighlight, // Gamepad/keyboard: current highlighted item MAKE_ENUM(ImGuiCol_NavHighlight, NavHighlight) // ImGuiCol_NavWindowingHighlight, // Highlight window when using CTRL+TAB MAKE_ENUM(ImGuiCol_NavWindowingHighlight, NavWindowingHighlight) // ImGuiCol_NavWindowingDimBg, // Darken/colorize entire screen behind the CTRL+TAB window list, when active MAKE_ENUM(ImGuiCol_NavWindowingDimBg, NavWindowingDimBg) // ImGuiCol_ModalWindowDimBg, // Darken/colorize entire screen behind a modal window, when one is active MAKE_ENUM(ImGuiCol_ModalWindowDimBg, ModalWindowDimBg) // ImGuiCol_COUNT MAKE_ENUM(ImGuiCol_COUNT, COUNT) END_ENUM(Col) // enum ImGuiStyleVar_ START_ENUM(StyleVar) // ImGuiStyleVar_Alpha, // float Alpha MAKE_ENUM(ImGuiStyleVar_Alpha, Alpha) // ImGuiStyleVar_DisabledAlpha, // float DisabledAlpha MAKE_ENUM(ImGuiStyleVar_DisabledAlpha, DisabledAlpha) // ImGuiStyleVar_WindowPadding, // ImVec2 WindowPadding MAKE_ENUM(ImGuiStyleVar_WindowPadding, WindowPadding) // ImGuiStyleVar_WindowRounding, // float WindowRounding MAKE_ENUM(ImGuiStyleVar_WindowRounding, WindowRounding) // ImGuiStyleVar_WindowBorderSize, // float WindowBorderSize MAKE_ENUM(ImGuiStyleVar_WindowBorderSize, WindowBorderSize) // ImGuiStyleVar_WindowMinSize, // ImVec2 WindowMinSize MAKE_ENUM(ImGuiStyleVar_WindowMinSize, WindowMinSize) // ImGuiStyleVar_WindowTitleAlign, // ImVec2 WindowTitleAlign MAKE_ENUM(ImGuiStyleVar_WindowTitleAlign, WindowTitleAlign) // ImGuiStyleVar_ChildRounding, // float ChildRounding MAKE_ENUM(ImGuiStyleVar_ChildRounding, ChildRounding) // ImGuiStyleVar_ChildBorderSize, // float ChildBorderSize MAKE_ENUM(ImGuiStyleVar_ChildBorderSize, ChildBorderSize) // ImGuiStyleVar_PopupRounding, // float PopupRounding MAKE_ENUM(ImGuiStyleVar_PopupRounding, PopupRounding) // ImGuiStyleVar_PopupBorderSize, // float PopupBorderSize MAKE_ENUM(ImGuiStyleVar_PopupBorderSize, PopupBorderSize) // ImGuiStyleVar_FramePadding, // ImVec2 FramePadding MAKE_ENUM(ImGuiStyleVar_FramePadding, FramePadding) // ImGuiStyleVar_FrameRounding, // float FrameRounding MAKE_ENUM(ImGuiStyleVar_FrameRounding, FrameRounding) // ImGuiStyleVar_FrameBorderSize, // float FrameBorderSize MAKE_ENUM(ImGuiStyleVar_FrameBorderSize, FrameBorderSize) // ImGuiStyleVar_ItemSpacing, // ImVec2 ItemSpacing MAKE_ENUM(ImGuiStyleVar_ItemSpacing, ItemSpacing) // ImGuiStyleVar_ItemInnerSpacing, // ImVec2 ItemInnerSpacing MAKE_ENUM(ImGuiStyleVar_ItemInnerSpacing, ItemInnerSpacing) // ImGuiStyleVar_IndentSpacing, // float IndentSpacing MAKE_ENUM(ImGuiStyleVar_IndentSpacing, IndentSpacing) // ImGuiStyleVar_CellPadding, // ImVec2 CellPadding MAKE_ENUM(ImGuiStyleVar_CellPadding, CellPadding) // ImGuiStyleVar_ScrollbarSize, // float ScrollbarSize MAKE_ENUM(ImGuiStyleVar_ScrollbarSize, ScrollbarSize) // ImGuiStyleVar_ScrollbarRounding, // float ScrollbarRounding MAKE_ENUM(ImGuiStyleVar_ScrollbarRounding, ScrollbarRounding) // ImGuiStyleVar_GrabMinSize, // float GrabMinSize MAKE_ENUM(ImGuiStyleVar_GrabMinSize, GrabMinSize) // ImGuiStyleVar_GrabRounding, // float GrabRounding MAKE_ENUM(ImGuiStyleVar_GrabRounding, GrabRounding) // ImGuiStyleVar_TabRounding, // float TabRounding MAKE_ENUM(ImGuiStyleVar_TabRounding, TabRounding) // ImGuiStyleVar_ButtonTextAlign, // ImVec2 ButtonTextAlign MAKE_ENUM(ImGuiStyleVar_ButtonTextAlign, ButtonTextAlign) // ImGuiStyleVar_SelectableTextAlign, // ImVec2 SelectableTextAlign MAKE_ENUM(ImGuiStyleVar_SelectableTextAlign, SelectableTextAlign) // ImGuiStyleVar_SeparatorTextBorderSize,// float SeparatorTextBorderSize MAKE_ENUM(ImGuiStyleVar_SeparatorTextBorderSize, SeparatorTextBorderSize) // ImGuiStyleVar_SeparatorTextAlign, // ImVec2 SeparatorTextAlign MAKE_ENUM(ImGuiStyleVar_SeparatorTextAlign, SeparatorTextAlign) // ImGuiStyleVar_SeparatorTextPadding,// ImVec2 SeparatorTextPadding MAKE_ENUM(ImGuiStyleVar_SeparatorTextPadding, SeparatorTextPadding) // ImGuiStyleVar_COUNT MAKE_ENUM(ImGuiStyleVar_COUNT, COUNT) END_ENUM(StyleVar) // enum ImGuiButtonFlags_ START_ENUM(ButtonFlags) // ImGuiButtonFlags_None = 0, MAKE_ENUM(ImGuiButtonFlags_None, None) // ImGuiButtonFlags_MouseButtonLeft = 1 << 0, // React on left mouse button (default) MAKE_ENUM(ImGuiButtonFlags_MouseButtonLeft, MouseButtonLeft) // ImGuiButtonFlags_MouseButtonRight = 1 << 1, // React on right mouse button MAKE_ENUM(ImGuiButtonFlags_MouseButtonRight, MouseButtonRight) // ImGuiButtonFlags_MouseButtonMiddle = 1 << 2, // React on center mouse button MAKE_ENUM(ImGuiButtonFlags_MouseButtonMiddle, MouseButtonMiddle) END_ENUM(ButtonFlags) // enum ImGuiColorEditFlags_ START_ENUM(ColorEditFlags) // ImGuiColorEditFlags_None = 0, MAKE_ENUM(ImGuiColorEditFlags_None, None) // ImGuiColorEditFlags_NoAlpha = 1 << 1, // // ColorEdit, ColorPicker, ColorButton: ignore Alpha component (will only read 3 // components from the input pointer). MAKE_ENUM(ImGuiColorEditFlags_NoAlpha, NoAlpha) // ImGuiColorEditFlags_NoPicker = 1 << 2, // // ColorEdit: disable picker when clicking on color square. MAKE_ENUM(ImGuiColorEditFlags_NoPicker, NoPicker) // ImGuiColorEditFlags_NoOptions = 1 << 3, // // ColorEdit: disable toggling options menu when right-clicking on inputs/small // preview. MAKE_ENUM(ImGuiColorEditFlags_NoOptions, NoOptions) // ImGuiColorEditFlags_NoSmallPreview = 1 << 4, // // ColorEdit, ColorPicker: disable color square preview next to the inputs. // (e.g. to show only the inputs) MAKE_ENUM(ImGuiColorEditFlags_NoSmallPreview, NoSmallPreview) // ImGuiColorEditFlags_NoInputs = 1 << 5, // // ColorEdit, ColorPicker: disable inputs sliders/text widgets (e.g. to show // only the small preview color square). MAKE_ENUM(ImGuiColorEditFlags_NoInputs, NoInputs) // ImGuiColorEditFlags_NoTooltip = 1 << 6, // // ColorEdit, ColorPicker, ColorButton: disable tooltip when hovering the // preview. MAKE_ENUM(ImGuiColorEditFlags_NoTooltip, NoTooltip) // ImGuiColorEditFlags_NoLabel = 1 << 7, // // ColorEdit, ColorPicker: disable display of inline text label (the label is // still forwarded to the tooltip and picker). MAKE_ENUM(ImGuiColorEditFlags_NoLabel, NoLabel) // ImGuiColorEditFlags_NoSidePreview = 1 << 8, // // ColorPicker: disable bigger color preview on right side of the picker, use // small color square preview instead. MAKE_ENUM(ImGuiColorEditFlags_NoSidePreview, NoSidePreview) // ImGuiColorEditFlags_NoDragDrop = 1 << 9, // // ColorEdit: disable drag and drop target. ColorButton: disable drag and drop // source. MAKE_ENUM(ImGuiColorEditFlags_NoDragDrop, NoDragDrop) // ImGuiColorEditFlags_NoBorder = 1 << 10, // // ColorButton: disable border (which is enforced by default) MAKE_ENUM(ImGuiColorEditFlags_NoBorder, NoBorder) // ImGuiColorEditFlags_AlphaBar = 1 << 16, // // ColorEdit, ColorPicker: show vertical alpha bar/gradient in picker. MAKE_ENUM(ImGuiColorEditFlags_AlphaBar, AlphaBar) // ImGuiColorEditFlags_AlphaPreview = 1 << 17, // // ColorEdit, ColorPicker, ColorButton: display preview as a transparent color // over a checkerboard, instead of opaque. MAKE_ENUM(ImGuiColorEditFlags_AlphaPreview, AlphaPreview) // ImGuiColorEditFlags_AlphaPreviewHalf= 1 << 18, // // ColorEdit, ColorPicker, ColorButton: display half opaque / half checkerboard, // instead of opaque. MAKE_ENUM(ImGuiColorEditFlags_AlphaPreviewHalf, AlphaPreviewHalf) // ImGuiColorEditFlags_HDR = 1 << 19, // // (WIP) ColorEdit: Currently only disable 0.0f..1.0f limits in RGBA edition // (note: you probably want to use ImGuiColorEditFlags_Float flag as well). MAKE_ENUM(ImGuiColorEditFlags_HDR, HDR) // ImGuiColorEditFlags_DisplayRGB = 1 << 20, // [Display] // ColorEdit: override _display_ type among RGB/HSV/Hex. ColorPicker: select any // combination using one or more of RGB/HSV/Hex. MAKE_ENUM(ImGuiColorEditFlags_DisplayRGB, DisplayRGB) // ImGuiColorEditFlags_DisplayHSV = 1 << 21, // [Display] // " MAKE_ENUM(ImGuiColorEditFlags_DisplayHSV, DisplayHSV) // ImGuiColorEditFlags_DisplayHex = 1 << 22, // [Display] // " MAKE_ENUM(ImGuiColorEditFlags_DisplayHex, DisplayHex) // ImGuiColorEditFlags_Uint8 = 1 << 23, // [DataType] // ColorEdit, ColorPicker, ColorButton: _display_ values formatted as 0..255. MAKE_ENUM(ImGuiColorEditFlags_Uint8, Uint8) // ImGuiColorEditFlags_Float = 1 << 24, // [DataType] // ColorEdit, ColorPicker, ColorButton: _display_ values formatted as 0.0f..1.0f // floats instead of 0..255 integers. No round-trip of value via integers. MAKE_ENUM(ImGuiColorEditFlags_Float, Float) // ImGuiColorEditFlags_PickerHueBar = 1 << 25, // [Picker] // ColorPicker: bar for Hue, rectangle for Sat/Value. MAKE_ENUM(ImGuiColorEditFlags_PickerHueBar, PickerHueBar) // ImGuiColorEditFlags_PickerHueWheel = 1 << 26, // [Picker] // ColorPicker: wheel for Hue, triangle for Sat/Value. MAKE_ENUM(ImGuiColorEditFlags_PickerHueWheel, PickerHueWheel) // ImGuiColorEditFlags_InputRGB = 1 << 27, // [Input] // ColorEdit, ColorPicker: input and output data in RGB format. MAKE_ENUM(ImGuiColorEditFlags_InputRGB, InputRGB) // ImGuiColorEditFlags_InputHSV = 1 << 28, // [Input] // ColorEdit, ColorPicker: input and output data in HSV format. MAKE_ENUM(ImGuiColorEditFlags_InputHSV, InputHSV) END_ENUM(ColorEditFlags) // enum ImGuiSliderFlags_ START_ENUM(SliderFlags) // ImGuiSliderFlags_None = 0, MAKE_ENUM(ImGuiSliderFlags_None, None) // ImGuiSliderFlags_AlwaysClamp = 1 << 4, // Clamp value to min/max bounds when input manually with CTRL+Click. By default // CTRL+Click allows going out of bounds. MAKE_ENUM(ImGuiSliderFlags_AlwaysClamp, AlwaysClamp) // ImGuiSliderFlags_Logarithmic = 1 << 5, // Make the widget logarithmic (linear otherwise). Consider using // ImGuiSliderFlags_NoRoundToFormat with this if using a format-string with small amount of digits. MAKE_ENUM(ImGuiSliderFlags_Logarithmic, Logarithmic) // ImGuiSliderFlags_NoRoundToFormat = 1 << 6, // Disable rounding underlying value to match precision of the display format string // (e.g. %.3f values are rounded to those 3 digits) MAKE_ENUM(ImGuiSliderFlags_NoRoundToFormat, NoRoundToFormat) // ImGuiSliderFlags_NoInput = 1 << 7, // Disable CTRL+Click or Enter key allowing to input text directly into the widget MAKE_ENUM(ImGuiSliderFlags_NoInput, NoInput) END_ENUM(SliderFlags) // enum ImGuiMouseButton_ START_ENUM(MouseButton) // ImGuiMouseButton_Left = 0, MAKE_ENUM(ImGuiMouseButton_Left, Left) // ImGuiMouseButton_Right = 1, MAKE_ENUM(ImGuiMouseButton_Right, Right) // ImGuiMouseButton_Middle = 2, MAKE_ENUM(ImGuiMouseButton_Middle, Middle) // ImGuiMouseButton_COUNT = 5 MAKE_ENUM(ImGuiMouseButton_COUNT, COUNT) END_ENUM(MouseButton) // enum ImGuiMouseCursor_ START_ENUM(MouseCursor) // ImGuiMouseCursor_None = -1, MAKE_ENUM(ImGuiMouseCursor_None, None) // ImGuiMouseCursor_Arrow = 0, MAKE_ENUM(ImGuiMouseCursor_Arrow, Arrow) // ImGuiMouseCursor_TextInput, // When hovering over InputText, etc. MAKE_ENUM(ImGuiMouseCursor_TextInput, TextInput) // ImGuiMouseCursor_ResizeAll, // (Unused by Dear ImGui functions) MAKE_ENUM(ImGuiMouseCursor_ResizeAll, ResizeAll) // ImGuiMouseCursor_ResizeNS, // When hovering over a horizontal border MAKE_ENUM(ImGuiMouseCursor_ResizeNS, ResizeNS) // ImGuiMouseCursor_ResizeEW, // When hovering over a vertical border or a column MAKE_ENUM(ImGuiMouseCursor_ResizeEW, ResizeEW) // ImGuiMouseCursor_ResizeNESW, // When hovering over the bottom-left corner of a window MAKE_ENUM(ImGuiMouseCursor_ResizeNESW, ResizeNESW) // ImGuiMouseCursor_ResizeNWSE, // When hovering over the bottom-right corner of a window MAKE_ENUM(ImGuiMouseCursor_ResizeNWSE, ResizeNWSE) // ImGuiMouseCursor_Hand, // (Unused by Dear ImGui functions. Use for e.g. hyperlinks) MAKE_ENUM(ImGuiMouseCursor_Hand, Hand) // ImGuiMouseCursor_NotAllowed, // When hovering something with disallowed interaction. Usually a crossed circle. MAKE_ENUM(ImGuiMouseCursor_NotAllowed, NotAllowed) // ImGuiMouseCursor_COUNT MAKE_ENUM(ImGuiMouseCursor_COUNT, COUNT) END_ENUM(MouseCursor) // enum ImGuiMouseSource : int // enum ImGuiCond_ START_ENUM(Cond) // ImGuiCond_None = 0, // No condition (always set the variable), same as _Always MAKE_ENUM(ImGuiCond_None, None) // ImGuiCond_Always = 1 << 0, // No condition (always set the variable), same as _None MAKE_ENUM(ImGuiCond_Always, Always) // ImGuiCond_Once = 1 << 1, // Set the variable once per runtime session (only the first call will succeed) MAKE_ENUM(ImGuiCond_Once, Once) // ImGuiCond_FirstUseEver = 1 << 2, // Set the variable if the object/window has no persistently saved data (no entry in .ini file) MAKE_ENUM(ImGuiCond_FirstUseEver, FirstUseEver) // ImGuiCond_Appearing = 1 << 3, // Set the variable if the object/window is appearing after being hidden/inactive (or the first time) MAKE_ENUM(ImGuiCond_Appearing, Appearing) END_ENUM(Cond) // struct ImVector // struct ImGuiStyle // struct ImGuiKeyData // struct ImGuiIO // struct ImGuiInputTextCallbackData // struct ImGuiSizeCallbackData // struct ImGuiWindowClass // struct ImGuiPayload // struct ImGuiTableColumnSortSpecs // struct ImGuiTableSortSpecs // struct ImGuiOnceUponAFrame // struct ImGuiTextFilter // struct ImGuiTextBuffer // struct ImGuiStorage // struct ImGuiListClipper // struct ImColor // struct ImDrawCmd // struct ImDrawVert // struct ImDrawCmdHeader // struct ImDrawChannel // struct ImDrawListSplitter // enum ImDrawFlags_ // enum ImDrawListFlags_ // struct ImDrawList // IMGUI_API void PushClipRect(const ImVec2& clip_rect_min, const ImVec2& clip_rect_max, bool intersect_with_current_clip_rect = false); // // Render-level scissoring. This is passed down to your render function but not used for CPU-side coarse clipping. Prefer using higher-level // ImGui::PushClipRect() to affect logic (hit-testing and widget culling) IMGUI_FUNCTION_DRAW_LIST(PushClipRect) IM_VEC_2_ARG(clip_rect_min) IM_VEC_2_ARG(clip_rect_max) OPTIONAL_BOOL_ARG(intersect_with_current_clip_rect, false) DRAW_LIST_CALL_FUNCTION_NO_RET(PushClipRect, clip_rect_min, clip_rect_max, intersect_with_current_clip_rect) END_IMGUI_FUNC // IMGUI_API void PushClipRectFullScreen(); IMGUI_FUNCTION_DRAW_LIST(PushClipRectFullScreen) DRAW_LIST_CALL_FUNCTION_NO_RET(PushClipRectFullScreen) END_IMGUI_FUNC // IMGUI_API void PopClipRect(); IMGUI_FUNCTION_DRAW_LIST(PopClipRect) DRAW_LIST_CALL_FUNCTION_NO_RET(PopClipRect) END_IMGUI_FUNC // IMGUI_API void PushTextureID(ImTextureID texture_id); IMGUI_FUNCTION_DRAW_LIST(PushTextureID) IM_TEXTURE_ID_ARG(texture_id) DRAW_LIST_CALL_FUNCTION_NO_RET(PushTextureID, texture_id) END_IMGUI_FUNC // IMGUI_API void PopTextureID(); IMGUI_FUNCTION_DRAW_LIST(PopTextureID) DRAW_LIST_CALL_FUNCTION_NO_RET(PopTextureID) END_IMGUI_FUNC // inline ImVec2 GetClipRectMin() const { const ImVec4& cr = _ClipRectStack.back(); return ImVec2 cr.x cr.y; } // Unsupported arg type ) const { const ImVec4& cr = _ClipRectStack.back( // inline ImVec2 GetClipRectMax() const { const ImVec4& cr = _ClipRectStack.back(); return ImVec2 cr.z cr.w; } // Unsupported arg type ) const { const ImVec4& cr = _ClipRectStack.back( // IMGUI_API void AddLine(const ImVec2& p1, const ImVec2& p2, ImU32 col, float thickness = 1.0f); IMGUI_FUNCTION_DRAW_LIST(AddLine) IM_VEC_2_ARG(p1) IM_VEC_2_ARG(p2) UINT_ARG(col) OPTIONAL_NUMBER_ARG(thickness, 1.0f) DRAW_LIST_CALL_FUNCTION_NO_RET(AddLine, p1, p2, col, thickness) END_IMGUI_FUNC // 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); // a: upper-left, b: lower-right (== upper-left + size) IMGUI_FUNCTION_DRAW_LIST(AddRect) IM_VEC_2_ARG(p_min) IM_VEC_2_ARG(p_max) UINT_ARG(col) OPTIONAL_NUMBER_ARG(rounding, 0.0f) OPTIONAL_INT_ARG(flags, 0) OPTIONAL_NUMBER_ARG(thickness, 1.0f) DRAW_LIST_CALL_FUNCTION_NO_RET(AddRect, p_min, p_max, col, rounding, flags, thickness) END_IMGUI_FUNC // IMGUI_API void AddRectFilled(const ImVec2& p_min, const ImVec2& p_max, ImU32 col, float rounding = 0.0f, ImDrawFlags flags = 0); // a: // upper-left, b: lower-right (== upper-left + size) IMGUI_FUNCTION_DRAW_LIST(AddRectFilled) IM_VEC_2_ARG(p_min) IM_VEC_2_ARG(p_max) UINT_ARG(col) OPTIONAL_NUMBER_ARG(rounding, 0.0f) OPTIONAL_INT_ARG(flags, 0) DRAW_LIST_CALL_FUNCTION_NO_RET(AddRectFilled, p_min, p_max, col, rounding, flags) END_IMGUI_FUNC // 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); IMGUI_FUNCTION_DRAW_LIST(AddRectFilledMultiColor) IM_VEC_2_ARG(p_min) IM_VEC_2_ARG(p_max) UINT_ARG(col_upr_left) UINT_ARG(col_upr_right) UINT_ARG(col_bot_right) UINT_ARG(col_bot_left) DRAW_LIST_CALL_FUNCTION_NO_RET(AddRectFilledMultiColor, p_min, p_max, col_upr_left, col_upr_right, col_bot_right, col_bot_left) END_IMGUI_FUNC // IMGUI_API void AddQuad(const ImVec2& p1, const ImVec2& p2, const ImVec2& p3, const ImVec2& p4, ImU32 col, float thickness = 1.0f); IMGUI_FUNCTION_DRAW_LIST(AddQuad) IM_VEC_2_ARG(p1) IM_VEC_2_ARG(p2) IM_VEC_2_ARG(p3) IM_VEC_2_ARG(p4) UINT_ARG(col) OPTIONAL_NUMBER_ARG(thickness, 1.0f) DRAW_LIST_CALL_FUNCTION_NO_RET(AddQuad, p1, p2, p3, p4, col, thickness) END_IMGUI_FUNC // IMGUI_API void AddQuadFilled(const ImVec2& p1, const ImVec2& p2, const ImVec2& p3, const ImVec2& p4, ImU32 col); IMGUI_FUNCTION_DRAW_LIST(AddQuadFilled) IM_VEC_2_ARG(p1) IM_VEC_2_ARG(p2) IM_VEC_2_ARG(p3) IM_VEC_2_ARG(p4) UINT_ARG(col) DRAW_LIST_CALL_FUNCTION_NO_RET(AddQuadFilled, p1, p2, p3, p4, col) END_IMGUI_FUNC // IMGUI_API void AddTriangle(const ImVec2& p1, const ImVec2& p2, const ImVec2& p3, ImU32 col, float thickness = 1.0f); IMGUI_FUNCTION_DRAW_LIST(AddTriangle) IM_VEC_2_ARG(p1) IM_VEC_2_ARG(p2) IM_VEC_2_ARG(p3) UINT_ARG(col) OPTIONAL_NUMBER_ARG(thickness, 1.0f) DRAW_LIST_CALL_FUNCTION_NO_RET(AddTriangle, p1, p2, p3, col, thickness) END_IMGUI_FUNC // IMGUI_API void AddTriangleFilled(const ImVec2& p1, const ImVec2& p2, const ImVec2& p3, ImU32 col); IMGUI_FUNCTION_DRAW_LIST(AddTriangleFilled) IM_VEC_2_ARG(p1) IM_VEC_2_ARG(p2) IM_VEC_2_ARG(p3) UINT_ARG(col) DRAW_LIST_CALL_FUNCTION_NO_RET(AddTriangleFilled, p1, p2, p3, col) END_IMGUI_FUNC // IMGUI_API void AddCircle(const ImVec2& center, float radius, ImU32 col, int num_segments = 0, float thickness = 1.0f); IMGUI_FUNCTION_DRAW_LIST(AddCircle) IM_VEC_2_ARG(center) NUMBER_ARG(radius) UINT_ARG(col) OPTIONAL_INT_ARG(num_segments, 0) OPTIONAL_NUMBER_ARG(thickness, 1.0f) DRAW_LIST_CALL_FUNCTION_NO_RET(AddCircle, center, radius, col, num_segments, thickness) END_IMGUI_FUNC // IMGUI_API void AddCircleFilled(const ImVec2& center, float radius, ImU32 col, int num_segments = 0); IMGUI_FUNCTION_DRAW_LIST(AddCircleFilled) IM_VEC_2_ARG(center) NUMBER_ARG(radius) UINT_ARG(col) OPTIONAL_INT_ARG(num_segments, 0) DRAW_LIST_CALL_FUNCTION_NO_RET(AddCircleFilled, center, radius, col, num_segments) END_IMGUI_FUNC // IMGUI_API void AddNgon(const ImVec2& center, float radius, ImU32 col, int num_segments, float thickness = 1.0f); IMGUI_FUNCTION_DRAW_LIST(AddNgon) IM_VEC_2_ARG(center) NUMBER_ARG(radius) UINT_ARG(col) INT_ARG(num_segments) OPTIONAL_NUMBER_ARG(thickness, 1.0f) DRAW_LIST_CALL_FUNCTION_NO_RET(AddNgon, center, radius, col, num_segments, thickness) END_IMGUI_FUNC // IMGUI_API void AddNgonFilled(const ImVec2& center, float radius, ImU32 col, int num_segments); IMGUI_FUNCTION_DRAW_LIST(AddNgonFilled) IM_VEC_2_ARG(center) NUMBER_ARG(radius) UINT_ARG(col) INT_ARG(num_segments) DRAW_LIST_CALL_FUNCTION_NO_RET(AddNgonFilled, center, radius, col, num_segments) END_IMGUI_FUNC // IMGUI_API void AddText(const ImVec2& pos, ImU32 col, const char* text_begin, const char* text_end = NULL); IMGUI_FUNCTION_DRAW_LIST(AddText) IM_VEC_2_ARG(pos) UINT_ARG(col) LABEL_ARG(text_begin) OPTIONAL_LABEL_ARG(text_end, NULL) DRAW_LIST_CALL_FUNCTION_NO_RET(AddText, pos, col, text_begin, text_end) END_IMGUI_FUNC // 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); // Unsupported arg type const ImFont* font // Unsupported arg type const ImVec4* cpu_fine_clip_rect = NULL // IMGUI_API void AddPolyline(const ImVec2* points, int num_points, ImU32 col, ImDrawFlags flags, float thickness); // Unsupported arg type const ImVec2* points // IMGUI_API void AddConvexPolyFilled(const ImVec2* points, int num_points, ImU32 col); // Unsupported arg type const ImVec2* points // IMGUI_API void AddBezierCubic(const ImVec2& p1, const ImVec2& p2, const ImVec2& p3, const ImVec2& p4, ImU32 col, float thickness, int // num_segments = 0); // Cubic Bezier (4 control points) IMGUI_FUNCTION_DRAW_LIST(AddBezierCubic) IM_VEC_2_ARG(p1) IM_VEC_2_ARG(p2) IM_VEC_2_ARG(p3) IM_VEC_2_ARG(p4) UINT_ARG(col) NUMBER_ARG(thickness) OPTIONAL_INT_ARG(num_segments, 0) DRAW_LIST_CALL_FUNCTION_NO_RET(AddBezierCubic, p1, p2, p3, p4, col, thickness, num_segments) END_IMGUI_FUNC // IMGUI_API void AddBezierQuadratic(const ImVec2& p1, const ImVec2& p2, const ImVec2& p3, ImU32 col, float thickness, int num_segments = 0); // // Quadratic Bezier (3 control points) IMGUI_FUNCTION_DRAW_LIST(AddBezierQuadratic) IM_VEC_2_ARG(p1) IM_VEC_2_ARG(p2) IM_VEC_2_ARG(p3) UINT_ARG(col) NUMBER_ARG(thickness) OPTIONAL_INT_ARG(num_segments, 0) DRAW_LIST_CALL_FUNCTION_NO_RET(AddBezierQuadratic, p1, p2, p3, col, thickness, num_segments) END_IMGUI_FUNC // 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); IMGUI_FUNCTION_DRAW_LIST(AddImage) IM_TEXTURE_ID_ARG(user_texture_id) IM_VEC_2_ARG(p_min) IM_VEC_2_ARG(p_max) OPTIONAL_IM_VEC_2_ARG(uv_min, 0, 0) OPTIONAL_IM_VEC_2_ARG(uv_max, 1, 1) OPTIONAL_UINT_ARG(col, IM_COL32_WHITE) DRAW_LIST_CALL_FUNCTION_NO_RET(AddImage, user_texture_id, p_min, p_max, uv_min, uv_max, col) END_IMGUI_FUNC // 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); IMGUI_FUNCTION_DRAW_LIST(AddImageQuad) IM_TEXTURE_ID_ARG(user_texture_id) IM_VEC_2_ARG(p1) IM_VEC_2_ARG(p2) IM_VEC_2_ARG(p3) IM_VEC_2_ARG(p4) OPTIONAL_IM_VEC_2_ARG(uv1, 0, 0) OPTIONAL_IM_VEC_2_ARG(uv2, 1, 0) OPTIONAL_IM_VEC_2_ARG(uv3, 1, 1) OPTIONAL_IM_VEC_2_ARG(uv4, 0, 1) OPTIONAL_UINT_ARG(col, IM_COL32_WHITE) DRAW_LIST_CALL_FUNCTION_NO_RET(AddImageQuad, user_texture_id, p1, p2, p3, p4, uv1, uv2, uv3, uv4, col) END_IMGUI_FUNC // 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); IMGUI_FUNCTION_DRAW_LIST(AddImageRounded) IM_TEXTURE_ID_ARG(user_texture_id) IM_VEC_2_ARG(p_min) IM_VEC_2_ARG(p_max) IM_VEC_2_ARG(uv_min) IM_VEC_2_ARG(uv_max) UINT_ARG(col) NUMBER_ARG(rounding) OPTIONAL_INT_ARG(flags, 0) DRAW_LIST_CALL_FUNCTION_NO_RET(AddImageRounded, user_texture_id, p_min, p_max, uv_min, uv_max, col, rounding, flags) END_IMGUI_FUNC // inline void PathLineTo(const ImVec2& pos) { _Path.push_back(pos); } // Unsupported arg type const ImVec2& pos) { _Path.push_back(pos // inline void PathLineToMergeDuplicate(const ImVec2& pos) { if (_Path.Size == 0 || memcmp(&_Path.Data[_Path.Size - 1], &pos, // 8) != 0) _Path.push_back(pos); } // Unsupported arg type const ImVec2& pos) { if (_Path.Size == 0 || memcmp(&_Path.Data[_Path.Size - 1] // Unsupported arg type &pos // Unsupported arg type 8) != 0) _Path.push_back(pos // inline void PathFillConvex(ImU32 col) { AddConvexPolyFilled(_Path.Data, _Path.Size, col); _Path.Size = 0; // } // Unsupported arg type ImU32 col) { AddConvexPolyFilled(_Path.Data // Unsupported arg type _Path.Size // Unsupported arg type col // inline void PathStroke(ImU32 col, ImDrawFlags flags = 0, float thickness = 1.0f) { AddPolyline(_Path.Data, _Path.Size, col, flags, // thickness); _Path.Size = 0; } // Unsupported arg type float thickness = 1.0f) { AddPolyline(_Path.Data // Unsupported arg type _Path.Size // Unsupported arg type col // Unsupported arg type flags // Unsupported arg type thickness // IMGUI_API void PathArcTo(const ImVec2& center, float radius, float a_min, float a_max, int num_segments = 0); IMGUI_FUNCTION_DRAW_LIST(PathArcTo) IM_VEC_2_ARG(center) NUMBER_ARG(radius) NUMBER_ARG(a_min) NUMBER_ARG(a_max) OPTIONAL_INT_ARG(num_segments, 0) DRAW_LIST_CALL_FUNCTION_NO_RET(PathArcTo, center, radius, a_min, a_max, num_segments) END_IMGUI_FUNC // IMGUI_API void PathArcToFast(const ImVec2& center, float radius, int a_min_of_12, int a_max_of_12); // Use precomputed angles // for a 12 steps circle IMGUI_FUNCTION_DRAW_LIST(PathArcToFast) IM_VEC_2_ARG(center) NUMBER_ARG(radius) INT_ARG(a_min_of_12) INT_ARG(a_max_of_12) DRAW_LIST_CALL_FUNCTION_NO_RET(PathArcToFast, center, radius, a_min_of_12, a_max_of_12) END_IMGUI_FUNC // IMGUI_API void PathBezierCubicCurveTo(const ImVec2& p2, const ImVec2& p3, const ImVec2& p4, int num_segments = 0); // Cubic Bezier (4 control // points) IMGUI_FUNCTION_DRAW_LIST(PathBezierCubicCurveTo) IM_VEC_2_ARG(p2) IM_VEC_2_ARG(p3) IM_VEC_2_ARG(p4) OPTIONAL_INT_ARG(num_segments, 0) DRAW_LIST_CALL_FUNCTION_NO_RET(PathBezierCubicCurveTo, p2, p3, p4, num_segments) END_IMGUI_FUNC // IMGUI_API void PathBezierQuadraticCurveTo(const ImVec2& p2, const ImVec2& p3, int num_segments = 0); // Quadratic Bezier (3 // control points) IMGUI_FUNCTION_DRAW_LIST(PathBezierQuadraticCurveTo) IM_VEC_2_ARG(p2) IM_VEC_2_ARG(p3) OPTIONAL_INT_ARG(num_segments, 0) DRAW_LIST_CALL_FUNCTION_NO_RET(PathBezierQuadraticCurveTo, p2, p3, num_segments) END_IMGUI_FUNC // IMGUI_API void PathRect(const ImVec2& rect_min, const ImVec2& rect_max, float rounding = 0.0f, ImDrawFlags flags = 0); IMGUI_FUNCTION_DRAW_LIST(PathRect) IM_VEC_2_ARG(rect_min) IM_VEC_2_ARG(rect_max) OPTIONAL_NUMBER_ARG(rounding, 0.0f) OPTIONAL_INT_ARG(flags, 0) DRAW_LIST_CALL_FUNCTION_NO_RET(PathRect, rect_min, rect_max, rounding, flags) END_IMGUI_FUNC // IMGUI_API void AddCallback(ImDrawCallback callback, void* callback_data); // Your rendering function must check for 'UserCallback' in // ImDrawCmd and call the function instead of rendering triangles. // Unsupported arg type ImDrawCallback callback // Unsupported arg type void* callback_data // IMGUI_API void AddDrawCmd(); // This is useful if you need to forcefully create a new draw call // (to allow for dependent rendering / blending). Otherwise primitives are merged into the same draw-call as much as possible IMGUI_FUNCTION_DRAW_LIST(AddDrawCmd) DRAW_LIST_CALL_FUNCTION_NO_RET(AddDrawCmd) END_IMGUI_FUNC // inline void ChannelsSplit(int count) { _Splitter.Split(this, count); } // Unsupported arg type int count) { _Splitter.Split(this // Unsupported arg type count // inline void ChannelsMerge() { _Splitter.Merge(this); } // Unsupported arg type ) { _Splitter.Merge(this // inline void ChannelsSetCurrent(int n) { _Splitter.SetCurrentChannel(this, n); } // Unsupported arg type int n) { _Splitter.SetCurrentChannel(this // Unsupported arg type n // IMGUI_API void PrimReserve(int idx_count, int vtx_count); IMGUI_FUNCTION_DRAW_LIST(PrimReserve) INT_ARG(idx_count) INT_ARG(vtx_count) DRAW_LIST_CALL_FUNCTION_NO_RET(PrimReserve, idx_count, vtx_count) END_IMGUI_FUNC // IMGUI_API void PrimUnreserve(int idx_count, int vtx_count); IMGUI_FUNCTION_DRAW_LIST(PrimUnreserve) INT_ARG(idx_count) INT_ARG(vtx_count) DRAW_LIST_CALL_FUNCTION_NO_RET(PrimUnreserve, idx_count, vtx_count) END_IMGUI_FUNC // IMGUI_API void PrimRect(const ImVec2& a, const ImVec2& b, ImU32 col); // Axis aligned rectangle (composed of two triangles) IMGUI_FUNCTION_DRAW_LIST(PrimRect) IM_VEC_2_ARG(a) IM_VEC_2_ARG(b) UINT_ARG(col) DRAW_LIST_CALL_FUNCTION_NO_RET(PrimRect, a, b, col) END_IMGUI_FUNC // IMGUI_API void PrimRectUV(const ImVec2& a, const ImVec2& b, const ImVec2& uv_a, const ImVec2& uv_b, ImU32 col); IMGUI_FUNCTION_DRAW_LIST(PrimRectUV) IM_VEC_2_ARG(a) IM_VEC_2_ARG(b) IM_VEC_2_ARG(uv_a) IM_VEC_2_ARG(uv_b) UINT_ARG(col) DRAW_LIST_CALL_FUNCTION_NO_RET(PrimRectUV, a, b, uv_a, uv_b, col) END_IMGUI_FUNC // IMGUI_API void PrimQuadUV(const ImVec2& a, const ImVec2& b, const ImVec2& c, const ImVec2& d, const ImVec2& uv_a, const ImVec2& uv_b, const // ImVec2& uv_c, const ImVec2& uv_d, ImU32 col); IMGUI_FUNCTION_DRAW_LIST(PrimQuadUV) IM_VEC_2_ARG(a) IM_VEC_2_ARG(b) IM_VEC_2_ARG(c) IM_VEC_2_ARG(d) IM_VEC_2_ARG(uv_a) IM_VEC_2_ARG(uv_b) IM_VEC_2_ARG(uv_c) IM_VEC_2_ARG(uv_d) UINT_ARG(col) DRAW_LIST_CALL_FUNCTION_NO_RET(PrimQuadUV, a, b, c, d, uv_a, uv_b, uv_c, uv_d, col) END_IMGUI_FUNC // inline void PrimVtx(const ImVec2& pos, const ImVec2& uv, ImU32 col) { PrimWriteIdx((ImDrawIdx)_VtxCurrentIdx); PrimWriteVtx(pos, uv, // col); } // Write vertex with unique index // Unsupported arg type ImU32 col) { PrimWriteIdx((ImDrawIdx)_VtxCurrentIdx // //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); } // OBSOLETED in 1.80 (Jan 2021) // Unsupported arg type int num_segments = 0) { AddBezierCubic(p1 // Unsupported arg type p2 // Unsupported arg type p3 // Unsupported arg type p4 // Unsupported arg type col // Unsupported arg type thickness // Unsupported arg type num_segments // //inline void PathBezierCurveTo(const ImVec2& p2, const ImVec2& p3, const ImVec2& p4, int num_segments = 0) { PathBezierCubicCurveTo(p2, p3, // p4, num_segments); } // OBSOLETED in 1.80 (Jan 2021) // Unsupported arg type int num_segments = 0) { PathBezierCubicCurveTo(p2 // Unsupported arg type p3 // Unsupported arg type p4 // Unsupported arg type num_segments // IMGUI_API void _ResetForNewFrame(); IMGUI_FUNCTION_DRAW_LIST(_ResetForNewFrame) DRAW_LIST_CALL_FUNCTION_NO_RET(_ResetForNewFrame) END_IMGUI_FUNC // IMGUI_API void _ClearFreeMemory(); IMGUI_FUNCTION_DRAW_LIST(_ClearFreeMemory) DRAW_LIST_CALL_FUNCTION_NO_RET(_ClearFreeMemory) END_IMGUI_FUNC // IMGUI_API void _PopUnusedDrawCmd(); IMGUI_FUNCTION_DRAW_LIST(_PopUnusedDrawCmd) DRAW_LIST_CALL_FUNCTION_NO_RET(_PopUnusedDrawCmd) END_IMGUI_FUNC // IMGUI_API void _TryMergeDrawCmds(); IMGUI_FUNCTION_DRAW_LIST(_TryMergeDrawCmds) DRAW_LIST_CALL_FUNCTION_NO_RET(_TryMergeDrawCmds) END_IMGUI_FUNC // IMGUI_API void _OnChangedClipRect(); IMGUI_FUNCTION_DRAW_LIST(_OnChangedClipRect) DRAW_LIST_CALL_FUNCTION_NO_RET(_OnChangedClipRect) END_IMGUI_FUNC // IMGUI_API void _OnChangedTextureID(); IMGUI_FUNCTION_DRAW_LIST(_OnChangedTextureID) DRAW_LIST_CALL_FUNCTION_NO_RET(_OnChangedTextureID) END_IMGUI_FUNC // IMGUI_API void _OnChangedVtxOffset(); IMGUI_FUNCTION_DRAW_LIST(_OnChangedVtxOffset) DRAW_LIST_CALL_FUNCTION_NO_RET(_OnChangedVtxOffset) END_IMGUI_FUNC // IMGUI_API void _PathArcToFastEx(const ImVec2& center, float radius, int a_min_sample, int a_max_sample, int a_step); IMGUI_FUNCTION_DRAW_LIST(_PathArcToFastEx) IM_VEC_2_ARG(center) NUMBER_ARG(radius) INT_ARG(a_min_sample) INT_ARG(a_max_sample) INT_ARG(a_step) DRAW_LIST_CALL_FUNCTION_NO_RET(_PathArcToFastEx, center, radius, a_min_sample, a_max_sample, a_step) END_IMGUI_FUNC // IMGUI_API void _PathArcToN(const ImVec2& center, float radius, float a_min, float a_max, int num_segments); IMGUI_FUNCTION_DRAW_LIST(_PathArcToN) IM_VEC_2_ARG(center) NUMBER_ARG(radius) NUMBER_ARG(a_min) NUMBER_ARG(a_max) INT_ARG(num_segments) DRAW_LIST_CALL_FUNCTION_NO_RET(_PathArcToN, center, radius, a_min, a_max, num_segments) END_IMGUI_FUNC // struct ImDrawData // struct ImFontConfig // struct ImFontGlyph // struct ImFontGlyphRangesBuilder // struct ImFontAtlasCustomRect // enum ImFontAtlasFlags_ // struct ImFontAtlas // struct ImFont // enum ImGuiViewportFlags_ START_ENUM(ViewportFlags) // ImGuiViewportFlags_None = 0, MAKE_ENUM(ImGuiViewportFlags_None, None) // ImGuiViewportFlags_IsPlatformWindow = 1 << 0, // Represent a Platform Window MAKE_ENUM(ImGuiViewportFlags_IsPlatformWindow, IsPlatformWindow) // ImGuiViewportFlags_IsPlatformMonitor = 1 << 1, // Represent a Platform Monitor (unused yet) MAKE_ENUM(ImGuiViewportFlags_IsPlatformMonitor, IsPlatformMonitor) // ImGuiViewportFlags_OwnedByApp = 1 << 2, // Platform Window: Was created/managed by the user application? (rather than our // backend) MAKE_ENUM(ImGuiViewportFlags_OwnedByApp, OwnedByApp) // ImGuiViewportFlags_NoDecoration = 1 << 3, // Platform Window: Disable platform decorations: title bar, borders, etc. (generally // set all windows, but if ImGuiConfigFlags_ViewportsDecoration is set we only set this on popups/tooltips) MAKE_ENUM(ImGuiViewportFlags_NoDecoration, NoDecoration) // ImGuiViewportFlags_NoTaskBarIcon = 1 << 4, // Platform Window: Disable platform task bar icon (generally set on popups/tooltips, or // all windows if ImGuiConfigFlags_ViewportsNoTaskBarIcon is set) MAKE_ENUM(ImGuiViewportFlags_NoTaskBarIcon, NoTaskBarIcon) // ImGuiViewportFlags_NoFocusOnAppearing = 1 << 5, // Platform Window: Don't take focus when created. MAKE_ENUM(ImGuiViewportFlags_NoFocusOnAppearing, NoFocusOnAppearing) // ImGuiViewportFlags_NoFocusOnClick = 1 << 6, // Platform Window: Don't take focus when clicked on. MAKE_ENUM(ImGuiViewportFlags_NoFocusOnClick, NoFocusOnClick) // ImGuiViewportFlags_NoInputs = 1 << 7, // Platform Window: Make mouse pass through so we can drag this window while peaking // behind it. MAKE_ENUM(ImGuiViewportFlags_NoInputs, NoInputs) // ImGuiViewportFlags_NoRendererClear = 1 << 8, // Platform Window: Renderer doesn't need to clear the framebuffer ahead (because we // will fill it entirely). MAKE_ENUM(ImGuiViewportFlags_NoRendererClear, NoRendererClear) // ImGuiViewportFlags_NoAutoMerge = 1 << 9, // Platform Window: Avoid merging this window into another host window. This can only be // set via ImGuiWindowClass viewport flags override (because we need to now ahead if we are going to create a viewport in the first place!). MAKE_ENUM(ImGuiViewportFlags_NoAutoMerge, NoAutoMerge) // ImGuiViewportFlags_TopMost = 1 << 10, // Platform Window: Display on top (for tooltips only). MAKE_ENUM(ImGuiViewportFlags_TopMost, TopMost) // ImGuiViewportFlags_CanHostOtherWindows = 1 << 11, // Viewport can host multiple imgui windows (secondary viewports are associated to a // single window). // FIXME: In practice there's still probably code making the assumption that this is always and only on the MainViewport. Will // fix once we add support for "no main viewport". MAKE_ENUM(ImGuiViewportFlags_CanHostOtherWindows, CanHostOtherWindows) // ImGuiViewportFlags_IsMinimized = 1 << 12, // Platform Window: Window is minimized, can skip render. When minimized we tend to // avoid using the viewport pos/size for clipping window or testing if they are contained in the viewport. MAKE_ENUM(ImGuiViewportFlags_IsMinimized, IsMinimized) // ImGuiViewportFlags_IsFocused = 1 << 13, // Platform Window: Window is focused (last call to Platform_GetWindowFocus() returned // true) MAKE_ENUM(ImGuiViewportFlags_IsFocused, IsFocused) END_ENUM(ViewportFlags) // struct ImGuiViewport // struct ImGuiPlatformIO // struct ImGuiPlatformMonitor // struct ImGuiPlatformImeData // namespace ImGui // namespace ImGui // enum ImDrawCornerFlags_