From 1e5ce712577b615b5bd637be97845ed6efd2812e Mon Sep 17 00:00:00 2001 From: sonoro1234 Date: Wed, 27 Jun 2018 15:21:48 +0200 Subject: [PATCH] all output to generated folder and test HAVE_GCC. cimgui and cimgui_auto versions --- cimgui.cpp | 972 ++++++++++++++-------------- cimgui.h | 978 ++++++++++++++--------------- generator/generator.bat | 20 +- generator/generator.lua | 188 +++--- generator/generator_preprocess.bat | 21 - imgui | 2 +- 6 files changed, 1093 insertions(+), 1088 deletions(-) delete mode 100644 generator/generator_preprocess.bat diff --git a/cimgui.cpp b/cimgui.cpp index d11db2e..dc6711e 100644 --- a/cimgui.cpp +++ b/cimgui.cpp @@ -4,1936 +4,1936 @@ #include "../imgui/imgui_internal.h" -CIMGUI_API ImGuiContext* igCreateContext(ImFontAtlas* shared_font_atlas) +CIMGUI_API ImGuiContext* igCreateContext(ImFontAtlas* shared_font_atlas) { return ImGui::CreateContext(shared_font_atlas); } -CIMGUI_API void igDestroyContext(ImGuiContext* ctx) +CIMGUI_API void igDestroyContext(ImGuiContext* ctx) { return ImGui::DestroyContext(ctx); } -CIMGUI_API ImGuiContext* igGetCurrentContext() +CIMGUI_API ImGuiContext* igGetCurrentContext() { return ImGui::GetCurrentContext(); } -CIMGUI_API void igSetCurrentContext(ImGuiContext* ctx) +CIMGUI_API void igSetCurrentContext(ImGuiContext* ctx) { return ImGui::SetCurrentContext(ctx); } -CIMGUI_API bool igDebugCheckVersionAndDataLayout(const char* version_str,size_t sz_io,size_t sz_style,size_t sz_vec2,size_t sz_vec4,size_t sz_drawvert) +CIMGUI_API bool igDebugCheckVersionAndDataLayout(const char* version_str,size_t sz_io,size_t sz_style,size_t sz_vec2,size_t sz_vec4,size_t sz_drawvert) { return ImGui::DebugCheckVersionAndDataLayout(version_str,sz_io,sz_style,sz_vec2,sz_vec4,sz_drawvert); } -CIMGUI_API ImGuiIO* igGetIO() +CIMGUI_API ImGuiIO* igGetIO() { return &ImGui::GetIO(); } -CIMGUI_API ImGuiStyle* igGetStyle() +CIMGUI_API ImGuiStyle* igGetStyle() { return &ImGui::GetStyle(); } -CIMGUI_API void igNewFrame() +CIMGUI_API void igNewFrame() { return ImGui::NewFrame(); } -CIMGUI_API void igEndFrame() +CIMGUI_API void igEndFrame() { return ImGui::EndFrame(); } -CIMGUI_API void igRender() +CIMGUI_API void igRender() { return ImGui::Render(); } -CIMGUI_API ImDrawData* igGetDrawData() +CIMGUI_API ImDrawData* igGetDrawData() { return ImGui::GetDrawData(); } -CIMGUI_API void igShowDemoWindow(bool* p_open) +CIMGUI_API void igShowDemoWindow(bool* p_open) { return ImGui::ShowDemoWindow(p_open); } -CIMGUI_API void igShowMetricsWindow(bool* p_open) +CIMGUI_API void igShowMetricsWindow(bool* p_open) { return ImGui::ShowMetricsWindow(p_open); } -CIMGUI_API void igShowStyleEditor(ImGuiStyle* ref) +CIMGUI_API void igShowStyleEditor(ImGuiStyle* ref) { return ImGui::ShowStyleEditor(ref); } -CIMGUI_API bool igShowStyleSelector(const char* label) +CIMGUI_API bool igShowStyleSelector(const char* label) { return ImGui::ShowStyleSelector(label); } -CIMGUI_API void igShowFontSelector(const char* label) +CIMGUI_API void igShowFontSelector(const char* label) { return ImGui::ShowFontSelector(label); } -CIMGUI_API void igShowUserGuide() +CIMGUI_API void igShowUserGuide() { return ImGui::ShowUserGuide(); } -CIMGUI_API const char* igGetVersion() +CIMGUI_API const char* igGetVersion() { return ImGui::GetVersion(); } -CIMGUI_API void igStyleColorsDark(ImGuiStyle* dst) +CIMGUI_API void igStyleColorsDark(ImGuiStyle* dst) { return ImGui::StyleColorsDark(dst); } -CIMGUI_API void igStyleColorsClassic(ImGuiStyle* dst) +CIMGUI_API void igStyleColorsClassic(ImGuiStyle* dst) { return ImGui::StyleColorsClassic(dst); } -CIMGUI_API void igStyleColorsLight(ImGuiStyle* dst) +CIMGUI_API void igStyleColorsLight(ImGuiStyle* dst) { return ImGui::StyleColorsLight(dst); } -CIMGUI_API bool igBegin(const char* name,bool* p_open,ImGuiWindowFlags flags) +CIMGUI_API bool igBegin(const char* name,bool* p_open,ImGuiWindowFlags flags) { return ImGui::Begin(name,p_open,flags); } -CIMGUI_API void igEnd() +CIMGUI_API void igEnd() { return ImGui::End(); } -CIMGUI_API bool igBeginChild(const char* str_id,const ImVec2 size,bool border,ImGuiWindowFlags flags) +CIMGUI_API bool igBeginChild(const char* str_id,const ImVec2 size,bool border,ImGuiWindowFlags flags) { return ImGui::BeginChild(str_id,size,border,flags); } -CIMGUI_API bool igBeginChildID(ImGuiID id,const ImVec2 size,bool border,ImGuiWindowFlags flags) +CIMGUI_API bool igBeginChildID(ImGuiID id,const ImVec2 size,bool border,ImGuiWindowFlags flags) { return ImGui::BeginChild(id,size,border,flags); } -CIMGUI_API void igEndChild() +CIMGUI_API void igEndChild() { return ImGui::EndChild(); } -CIMGUI_API bool igIsWindowAppearing() +CIMGUI_API bool igIsWindowAppearing() { return ImGui::IsWindowAppearing(); } -CIMGUI_API bool igIsWindowCollapsed() +CIMGUI_API bool igIsWindowCollapsed() { return ImGui::IsWindowCollapsed(); } -CIMGUI_API bool igIsWindowFocused(ImGuiFocusedFlags flags) +CIMGUI_API bool igIsWindowFocused(ImGuiFocusedFlags flags) { return ImGui::IsWindowFocused(flags); } -CIMGUI_API bool igIsWindowHovered(ImGuiHoveredFlags flags) +CIMGUI_API bool igIsWindowHovered(ImGuiHoveredFlags flags) { return ImGui::IsWindowHovered(flags); } -CIMGUI_API ImDrawList* igGetWindowDrawList() +CIMGUI_API ImDrawList* igGetWindowDrawList() { return ImGui::GetWindowDrawList(); } -CIMGUI_API ImVec2 igGetWindowPos() +CIMGUI_API ImVec2 igGetWindowPos() { return ImGui::GetWindowPos(); } -CIMGUI_API ImVec2 igGetWindowSize() +CIMGUI_API ImVec2 igGetWindowSize() { return ImGui::GetWindowSize(); } -CIMGUI_API float igGetWindowWidth() +CIMGUI_API float igGetWindowWidth() { return ImGui::GetWindowWidth(); } -CIMGUI_API float igGetWindowHeight() +CIMGUI_API float igGetWindowHeight() { return ImGui::GetWindowHeight(); } -CIMGUI_API ImVec2 igGetContentRegionMax() +CIMGUI_API ImVec2 igGetContentRegionMax() { return ImGui::GetContentRegionMax(); } -CIMGUI_API ImVec2 igGetContentRegionAvail() +CIMGUI_API ImVec2 igGetContentRegionAvail() { return ImGui::GetContentRegionAvail(); } -CIMGUI_API float igGetContentRegionAvailWidth() +CIMGUI_API float igGetContentRegionAvailWidth() { return ImGui::GetContentRegionAvailWidth(); } -CIMGUI_API ImVec2 igGetWindowContentRegionMin() +CIMGUI_API ImVec2 igGetWindowContentRegionMin() { return ImGui::GetWindowContentRegionMin(); } -CIMGUI_API ImVec2 igGetWindowContentRegionMax() +CIMGUI_API ImVec2 igGetWindowContentRegionMax() { return ImGui::GetWindowContentRegionMax(); } -CIMGUI_API float igGetWindowContentRegionWidth() +CIMGUI_API float igGetWindowContentRegionWidth() { return ImGui::GetWindowContentRegionWidth(); } -CIMGUI_API void igSetNextWindowPos(const ImVec2 pos,ImGuiCond cond,const ImVec2 pivot) +CIMGUI_API void igSetNextWindowPos(const ImVec2 pos,ImGuiCond cond,const ImVec2 pivot) { return ImGui::SetNextWindowPos(pos,cond,pivot); } -CIMGUI_API void igSetNextWindowSize(const ImVec2 size,ImGuiCond cond) +CIMGUI_API void igSetNextWindowSize(const ImVec2 size,ImGuiCond cond) { return ImGui::SetNextWindowSize(size,cond); } -CIMGUI_API void igSetNextWindowSizeConstraints(const ImVec2 size_min,const ImVec2 size_max,ImGuiSizeCallback custom_callback,void* custom_callback_data) +CIMGUI_API void igSetNextWindowSizeConstraints(const ImVec2 size_min,const ImVec2 size_max,ImGuiSizeCallback custom_callback,void* custom_callback_data) { return ImGui::SetNextWindowSizeConstraints(size_min,size_max,custom_callback,custom_callback_data); } -CIMGUI_API void igSetNextWindowContentSize(const ImVec2 size) +CIMGUI_API void igSetNextWindowContentSize(const ImVec2 size) { return ImGui::SetNextWindowContentSize(size); } -CIMGUI_API void igSetNextWindowCollapsed(bool collapsed,ImGuiCond cond) +CIMGUI_API void igSetNextWindowCollapsed(bool collapsed,ImGuiCond cond) { return ImGui::SetNextWindowCollapsed(collapsed,cond); } -CIMGUI_API void igSetNextWindowFocus() +CIMGUI_API void igSetNextWindowFocus() { return ImGui::SetNextWindowFocus(); } -CIMGUI_API void igSetNextWindowBgAlpha(float alpha) +CIMGUI_API void igSetNextWindowBgAlpha(float alpha) { return ImGui::SetNextWindowBgAlpha(alpha); } -CIMGUI_API void igSetWindowPosVec2(const ImVec2 pos,ImGuiCond cond) +CIMGUI_API void igSetWindowPosVec2(const ImVec2 pos,ImGuiCond cond) { return ImGui::SetWindowPos(pos,cond); } -CIMGUI_API void igSetWindowSizeVec2(const ImVec2 size,ImGuiCond cond) +CIMGUI_API void igSetWindowSizeVec2(const ImVec2 size,ImGuiCond cond) { return ImGui::SetWindowSize(size,cond); } -CIMGUI_API void igSetWindowCollapsedBool(bool collapsed,ImGuiCond cond) +CIMGUI_API void igSetWindowCollapsedBool(bool collapsed,ImGuiCond cond) { return ImGui::SetWindowCollapsed(collapsed,cond); } -CIMGUI_API void igSetWindowFocus() +CIMGUI_API void igSetWindowFocus() { return ImGui::SetWindowFocus(); } -CIMGUI_API void igSetWindowFontScale(float scale) +CIMGUI_API void igSetWindowFontScale(float scale) { return ImGui::SetWindowFontScale(scale); } -CIMGUI_API void igSetWindowPosStr(const char* name,const ImVec2 pos,ImGuiCond cond) +CIMGUI_API void igSetWindowPosStr(const char* name,const ImVec2 pos,ImGuiCond cond) { return ImGui::SetWindowPos(name,pos,cond); } -CIMGUI_API void igSetWindowSizeStr(const char* name,const ImVec2 size,ImGuiCond cond) +CIMGUI_API void igSetWindowSizeStr(const char* name,const ImVec2 size,ImGuiCond cond) { return ImGui::SetWindowSize(name,size,cond); } -CIMGUI_API void igSetWindowCollapsedStr(const char* name,bool collapsed,ImGuiCond cond) +CIMGUI_API void igSetWindowCollapsedStr(const char* name,bool collapsed,ImGuiCond cond) { return ImGui::SetWindowCollapsed(name,collapsed,cond); } -CIMGUI_API void igSetWindowFocusStr(const char* name) +CIMGUI_API void igSetWindowFocusStr(const char* name) { return ImGui::SetWindowFocus(name); } -CIMGUI_API float igGetScrollX() +CIMGUI_API float igGetScrollX() { return ImGui::GetScrollX(); } -CIMGUI_API float igGetScrollY() +CIMGUI_API float igGetScrollY() { return ImGui::GetScrollY(); } -CIMGUI_API float igGetScrollMaxX() +CIMGUI_API float igGetScrollMaxX() { return ImGui::GetScrollMaxX(); } -CIMGUI_API float igGetScrollMaxY() +CIMGUI_API float igGetScrollMaxY() { return ImGui::GetScrollMaxY(); } -CIMGUI_API void igSetScrollX(float scroll_x) +CIMGUI_API void igSetScrollX(float scroll_x) { return ImGui::SetScrollX(scroll_x); } -CIMGUI_API void igSetScrollY(float scroll_y) +CIMGUI_API void igSetScrollY(float scroll_y) { return ImGui::SetScrollY(scroll_y); } -CIMGUI_API void igSetScrollHere(float center_y_ratio) +CIMGUI_API void igSetScrollHere(float center_y_ratio) { return ImGui::SetScrollHere(center_y_ratio); } -CIMGUI_API void igSetScrollFromPosY(float pos_y,float center_y_ratio) +CIMGUI_API void igSetScrollFromPosY(float pos_y,float center_y_ratio) { return ImGui::SetScrollFromPosY(pos_y,center_y_ratio); } -CIMGUI_API void igPushFont(ImFont* font) +CIMGUI_API void igPushFont(ImFont* font) { return ImGui::PushFont(font); } -CIMGUI_API void igPopFont() +CIMGUI_API void igPopFont() { return ImGui::PopFont(); } -CIMGUI_API void igPushStyleColorU32(ImGuiCol idx,ImU32 col) +CIMGUI_API void igPushStyleColorU32(ImGuiCol idx,ImU32 col) { return ImGui::PushStyleColor(idx,col); } -CIMGUI_API void igPushStyleColor(ImGuiCol idx,const ImVec4 col) +CIMGUI_API void igPushStyleColor(ImGuiCol idx,const ImVec4 col) { return ImGui::PushStyleColor(idx,col); } -CIMGUI_API void igPopStyleColor(int count) +CIMGUI_API void igPopStyleColor(int count) { return ImGui::PopStyleColor(count); } -CIMGUI_API void igPushStyleVarFloat(ImGuiStyleVar idx,float val) +CIMGUI_API void igPushStyleVarFloat(ImGuiStyleVar idx,float val) { return ImGui::PushStyleVar(idx,val); } -CIMGUI_API void igPushStyleVarVec2(ImGuiStyleVar idx,const ImVec2 val) +CIMGUI_API void igPushStyleVarVec2(ImGuiStyleVar idx,const ImVec2 val) { return ImGui::PushStyleVar(idx,val); } -CIMGUI_API void igPopStyleVar(int count) +CIMGUI_API void igPopStyleVar(int count) { return ImGui::PopStyleVar(count); } -CIMGUI_API const ImVec4* igGetStyleColorVec4(ImGuiCol idx) +CIMGUI_API const ImVec4* igGetStyleColorVec4(ImGuiCol idx) { return &ImGui::GetStyleColorVec4(idx); } -CIMGUI_API ImFont* igGetFont() +CIMGUI_API ImFont* igGetFont() { return ImGui::GetFont(); } -CIMGUI_API float igGetFontSize() +CIMGUI_API float igGetFontSize() { return ImGui::GetFontSize(); } -CIMGUI_API ImVec2 igGetFontTexUvWhitePixel() +CIMGUI_API ImVec2 igGetFontTexUvWhitePixel() { return ImGui::GetFontTexUvWhitePixel(); } -CIMGUI_API ImU32 igGetColorU32(ImGuiCol idx,float alpha_mul) +CIMGUI_API ImU32 igGetColorU32(ImGuiCol idx,float alpha_mul) { return ImGui::GetColorU32(idx,alpha_mul); } -CIMGUI_API ImU32 igGetColorU32Vec4(const ImVec4 col) +CIMGUI_API ImU32 igGetColorU32Vec4(const ImVec4 col) { return ImGui::GetColorU32(col); } -CIMGUI_API ImU32 igGetColorU32U32(ImU32 col) +CIMGUI_API ImU32 igGetColorU32U32(ImU32 col) { return ImGui::GetColorU32(col); } -CIMGUI_API void igPushItemWidth(float item_width) +CIMGUI_API void igPushItemWidth(float item_width) { return ImGui::PushItemWidth(item_width); } -CIMGUI_API void igPopItemWidth() +CIMGUI_API void igPopItemWidth() { return ImGui::PopItemWidth(); } -CIMGUI_API float igCalcItemWidth() +CIMGUI_API float igCalcItemWidth() { return ImGui::CalcItemWidth(); } -CIMGUI_API void igPushTextWrapPos(float wrap_pos_x) +CIMGUI_API void igPushTextWrapPos(float wrap_pos_x) { return ImGui::PushTextWrapPos(wrap_pos_x); } -CIMGUI_API void igPopTextWrapPos() +CIMGUI_API void igPopTextWrapPos() { return ImGui::PopTextWrapPos(); } -CIMGUI_API void igPushAllowKeyboardFocus(bool allow_keyboard_focus) +CIMGUI_API void igPushAllowKeyboardFocus(bool allow_keyboard_focus) { return ImGui::PushAllowKeyboardFocus(allow_keyboard_focus); } -CIMGUI_API void igPopAllowKeyboardFocus() +CIMGUI_API void igPopAllowKeyboardFocus() { return ImGui::PopAllowKeyboardFocus(); } -CIMGUI_API void igPushButtonRepeat(bool repeat) +CIMGUI_API void igPushButtonRepeat(bool repeat) { return ImGui::PushButtonRepeat(repeat); } -CIMGUI_API void igPopButtonRepeat() +CIMGUI_API void igPopButtonRepeat() { return ImGui::PopButtonRepeat(); } -CIMGUI_API void igSeparator() +CIMGUI_API void igSeparator() { return ImGui::Separator(); } -CIMGUI_API void igSameLine(float pos_x,float spacing_w) +CIMGUI_API void igSameLine(float pos_x,float spacing_w) { return ImGui::SameLine(pos_x,spacing_w); } -CIMGUI_API void igNewLine() +CIMGUI_API void igNewLine() { return ImGui::NewLine(); } -CIMGUI_API void igSpacing() +CIMGUI_API void igSpacing() { return ImGui::Spacing(); } -CIMGUI_API void igDummy(const ImVec2 size) +CIMGUI_API void igDummy(const ImVec2 size) { return ImGui::Dummy(size); } -CIMGUI_API void igIndent(float indent_w) +CIMGUI_API void igIndent(float indent_w) { return ImGui::Indent(indent_w); } -CIMGUI_API void igUnindent(float indent_w) +CIMGUI_API void igUnindent(float indent_w) { return ImGui::Unindent(indent_w); } -CIMGUI_API void igBeginGroup() +CIMGUI_API void igBeginGroup() { return ImGui::BeginGroup(); } -CIMGUI_API void igEndGroup() +CIMGUI_API void igEndGroup() { return ImGui::EndGroup(); } -CIMGUI_API ImVec2 igGetCursorPos() +CIMGUI_API ImVec2 igGetCursorPos() { return ImGui::GetCursorPos(); } -CIMGUI_API float igGetCursorPosX() +CIMGUI_API float igGetCursorPosX() { return ImGui::GetCursorPosX(); } -CIMGUI_API float igGetCursorPosY() +CIMGUI_API float igGetCursorPosY() { return ImGui::GetCursorPosY(); } -CIMGUI_API void igSetCursorPos(const ImVec2 local_pos) +CIMGUI_API void igSetCursorPos(const ImVec2 local_pos) { return ImGui::SetCursorPos(local_pos); } -CIMGUI_API void igSetCursorPosX(float x) +CIMGUI_API void igSetCursorPosX(float x) { return ImGui::SetCursorPosX(x); } -CIMGUI_API void igSetCursorPosY(float y) +CIMGUI_API void igSetCursorPosY(float y) { return ImGui::SetCursorPosY(y); } -CIMGUI_API ImVec2 igGetCursorStartPos() +CIMGUI_API ImVec2 igGetCursorStartPos() { return ImGui::GetCursorStartPos(); } -CIMGUI_API ImVec2 igGetCursorScreenPos() +CIMGUI_API ImVec2 igGetCursorScreenPos() { return ImGui::GetCursorScreenPos(); } -CIMGUI_API void igSetCursorScreenPos(const ImVec2 screen_pos) +CIMGUI_API void igSetCursorScreenPos(const ImVec2 screen_pos) { return ImGui::SetCursorScreenPos(screen_pos); } -CIMGUI_API void igAlignTextToFramePadding() +CIMGUI_API void igAlignTextToFramePadding() { return ImGui::AlignTextToFramePadding(); } -CIMGUI_API float igGetTextLineHeight() +CIMGUI_API float igGetTextLineHeight() { return ImGui::GetTextLineHeight(); } -CIMGUI_API float igGetTextLineHeightWithSpacing() +CIMGUI_API float igGetTextLineHeightWithSpacing() { return ImGui::GetTextLineHeightWithSpacing(); } -CIMGUI_API float igGetFrameHeight() +CIMGUI_API float igGetFrameHeight() { return ImGui::GetFrameHeight(); } -CIMGUI_API float igGetFrameHeightWithSpacing() +CIMGUI_API float igGetFrameHeightWithSpacing() { return ImGui::GetFrameHeightWithSpacing(); } -CIMGUI_API void igPushIDStr(const char* str_id) +CIMGUI_API void igPushIDStr(const char* str_id) { return ImGui::PushID(str_id); } -CIMGUI_API void igPushIDRange(const char* str_id_begin,const char* str_id_end) +CIMGUI_API void igPushIDRange(const char* str_id_begin,const char* str_id_end) { return ImGui::PushID(str_id_begin,str_id_end); } -CIMGUI_API void igPushIDPtr(const void* ptr_id) +CIMGUI_API void igPushIDPtr(const void* ptr_id) { return ImGui::PushID(ptr_id); } -CIMGUI_API void igPushIDInt(int int_id) +CIMGUI_API void igPushIDInt(int int_id) { return ImGui::PushID(int_id); } -CIMGUI_API void igPopID() +CIMGUI_API void igPopID() { return ImGui::PopID(); } -CIMGUI_API ImGuiID igGetIDStr(const char* str_id) +CIMGUI_API ImGuiID igGetIDStr(const char* str_id) { return ImGui::GetID(str_id); } -CIMGUI_API ImGuiID igGetIDStrStr(const char* str_id_begin,const char* str_id_end) +CIMGUI_API ImGuiID igGetIDStrStr(const char* str_id_begin,const char* str_id_end) { return ImGui::GetID(str_id_begin,str_id_end); } -CIMGUI_API ImGuiID igGetIDPtr(const void* ptr_id) +CIMGUI_API ImGuiID igGetIDPtr(const void* ptr_id) { return ImGui::GetID(ptr_id); } -CIMGUI_API void igTextUnformatted(const char* text,const char* text_end) +CIMGUI_API void igTextUnformatted(const char* text,const char* text_end) { return ImGui::TextUnformatted(text,text_end); } -CIMGUI_API void igText(const char* fmt,...) +CIMGUI_API void igText(const char* fmt,...) { va_list args; va_start(args, fmt); ImGui::TextV(fmt,args); va_end(args); } -CIMGUI_API void igTextV(const char* fmt,va_list args) +CIMGUI_API void igTextV(const char* fmt,va_list args) { return ImGui::TextV(fmt,args); } -CIMGUI_API void igTextColored(const ImVec4 col,const char* fmt,...) +CIMGUI_API void igTextColored(const ImVec4 col,const char* fmt,...) { va_list args; va_start(args, fmt); ImGui::TextColoredV(col,fmt,args); va_end(args); } -CIMGUI_API void igTextColoredV(const ImVec4 col,const char* fmt,va_list args) +CIMGUI_API void igTextColoredV(const ImVec4 col,const char* fmt,va_list args) { return ImGui::TextColoredV(col,fmt,args); } -CIMGUI_API void igTextDisabled(const char* fmt,...) +CIMGUI_API void igTextDisabled(const char* fmt,...) { va_list args; va_start(args, fmt); ImGui::TextDisabledV(fmt,args); va_end(args); } -CIMGUI_API void igTextDisabledV(const char* fmt,va_list args) +CIMGUI_API void igTextDisabledV(const char* fmt,va_list args) { return ImGui::TextDisabledV(fmt,args); } -CIMGUI_API void igTextWrapped(const char* fmt,...) +CIMGUI_API void igTextWrapped(const char* fmt,...) { va_list args; va_start(args, fmt); ImGui::TextWrappedV(fmt,args); va_end(args); } -CIMGUI_API void igTextWrappedV(const char* fmt,va_list args) +CIMGUI_API void igTextWrappedV(const char* fmt,va_list args) { return ImGui::TextWrappedV(fmt,args); } -CIMGUI_API void igLabelText(const char* label,const char* fmt,...) +CIMGUI_API void igLabelText(const char* label,const char* fmt,...) { va_list args; va_start(args, fmt); ImGui::LabelTextV(label,fmt,args); va_end(args); } -CIMGUI_API void igLabelTextV(const char* label,const char* fmt,va_list args) +CIMGUI_API void igLabelTextV(const char* label,const char* fmt,va_list args) { return ImGui::LabelTextV(label,fmt,args); } -CIMGUI_API void igBulletText(const char* fmt,...) +CIMGUI_API void igBulletText(const char* fmt,...) { va_list args; va_start(args, fmt); ImGui::BulletTextV(fmt,args); va_end(args); } -CIMGUI_API void igBulletTextV(const char* fmt,va_list args) +CIMGUI_API void igBulletTextV(const char* fmt,va_list args) { return ImGui::BulletTextV(fmt,args); } -CIMGUI_API bool igButton(const char* label,const ImVec2 size) +CIMGUI_API bool igButton(const char* label,const ImVec2 size) { return ImGui::Button(label,size); } -CIMGUI_API bool igSmallButton(const char* label) +CIMGUI_API bool igSmallButton(const char* label) { return ImGui::SmallButton(label); } -CIMGUI_API bool igInvisibleButton(const char* str_id,const ImVec2 size) +CIMGUI_API bool igInvisibleButton(const char* str_id,const ImVec2 size) { return ImGui::InvisibleButton(str_id,size); } -CIMGUI_API bool igArrowButton(const char* str_id,ImGuiDir dir) +CIMGUI_API bool igArrowButton(const char* str_id,ImGuiDir dir) { return ImGui::ArrowButton(str_id,dir); } -CIMGUI_API void igImage(ImTextureID user_texture_id,const ImVec2 size,const ImVec2 uv0,const ImVec2 uv1,const ImVec4 tint_col,const ImVec4 border_col) +CIMGUI_API void igImage(ImTextureID user_texture_id,const ImVec2 size,const ImVec2 uv0,const ImVec2 uv1,const ImVec4 tint_col,const ImVec4 border_col) { return ImGui::Image(user_texture_id,size,uv0,uv1,tint_col,border_col); } -CIMGUI_API bool igImageButton(ImTextureID user_texture_id,const ImVec2 size,const ImVec2 uv0,const ImVec2 uv1,int frame_padding,const ImVec4 bg_col,const ImVec4 tint_col) +CIMGUI_API bool igImageButton(ImTextureID user_texture_id,const ImVec2 size,const ImVec2 uv0,const ImVec2 uv1,int frame_padding,const ImVec4 bg_col,const ImVec4 tint_col) { return ImGui::ImageButton(user_texture_id,size,uv0,uv1,frame_padding,bg_col,tint_col); } -CIMGUI_API bool igCheckbox(const char* label,bool* v) +CIMGUI_API bool igCheckbox(const char* label,bool* v) { return ImGui::Checkbox(label,v); } -CIMGUI_API bool igCheckboxFlags(const char* label,unsigned int* flags,unsigned int flags_value) +CIMGUI_API bool igCheckboxFlags(const char* label,unsigned int* flags,unsigned int flags_value) { return ImGui::CheckboxFlags(label,flags,flags_value); } -CIMGUI_API bool igRadioButtonBool(const char* label,bool active) +CIMGUI_API bool igRadioButtonBool(const char* label,bool active) { return ImGui::RadioButton(label,active); } -CIMGUI_API bool igRadioButtonIntPtr(const char* label,int* v,int v_button) +CIMGUI_API bool igRadioButtonIntPtr(const char* label,int* v,int v_button) { return ImGui::RadioButton(label,v,v_button); } -CIMGUI_API void igPlotLines(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride) +CIMGUI_API void igPlotLines(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride) { return ImGui::PlotLines(label,values,values_count,values_offset,overlay_text,scale_min,scale_max,graph_size,stride); } -CIMGUI_API void igPlotLinesFnPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size) +CIMGUI_API void igPlotLinesFnPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size) { return ImGui::PlotLines(label,values_getter,data,values_count,values_offset,overlay_text,scale_min,scale_max,graph_size); } -CIMGUI_API void igPlotHistogramFloatPtr(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride) +CIMGUI_API void igPlotHistogramFloatPtr(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride) { return ImGui::PlotHistogram(label,values,values_count,values_offset,overlay_text,scale_min,scale_max,graph_size,stride); } -CIMGUI_API void igPlotHistogramFnPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size) +CIMGUI_API void igPlotHistogramFnPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size) { return ImGui::PlotHistogram(label,values_getter,data,values_count,values_offset,overlay_text,scale_min,scale_max,graph_size); } -CIMGUI_API void igProgressBar(float fraction,const ImVec2 size_arg,const char* overlay) +CIMGUI_API void igProgressBar(float fraction,const ImVec2 size_arg,const char* overlay) { return ImGui::ProgressBar(fraction,size_arg,overlay); } -CIMGUI_API void igBullet() +CIMGUI_API void igBullet() { return ImGui::Bullet(); } -CIMGUI_API bool igBeginCombo(const char* label,const char* preview_value,ImGuiComboFlags flags) +CIMGUI_API bool igBeginCombo(const char* label,const char* preview_value,ImGuiComboFlags flags) { return ImGui::BeginCombo(label,preview_value,flags); } -CIMGUI_API void igEndCombo() +CIMGUI_API void igEndCombo() { return ImGui::EndCombo(); } -CIMGUI_API bool igCombo(const char* label,int* current_item,const char* const items[],int items_count,int popup_max_height_in_items) +CIMGUI_API bool igCombo(const char* label,int* current_item,const char* const items[],int items_count,int popup_max_height_in_items) { return ImGui::Combo(label,current_item,items,items_count,popup_max_height_in_items); } -CIMGUI_API bool igComboStr(const char* label,int* current_item,const char* items_separated_by_zeros,int popup_max_height_in_items) +CIMGUI_API bool igComboStr(const char* label,int* current_item,const char* items_separated_by_zeros,int popup_max_height_in_items) { return ImGui::Combo(label,current_item,items_separated_by_zeros,popup_max_height_in_items); } -CIMGUI_API bool igComboFnPtr(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) +CIMGUI_API bool igComboFnPtr(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) { return ImGui::Combo(label,current_item,items_getter,data,items_count,popup_max_height_in_items); } -CIMGUI_API bool igDragFloat(const char* label,float* v,float v_speed,float v_min,float v_max,const char* format,float power) +CIMGUI_API bool igDragFloat(const char* label,float* v,float v_speed,float v_min,float v_max,const char* format,float power) { return ImGui::DragFloat(label,v,v_speed,v_min,v_max,format,power); } -CIMGUI_API bool igDragFloat2(const char* label,float v[2],float v_speed,float v_min,float v_max,const char* format,float power) +CIMGUI_API bool igDragFloat2(const char* label,float v[2],float v_speed,float v_min,float v_max,const char* format,float power) { return ImGui::DragFloat2(label,v,v_speed,v_min,v_max,format,power); } -CIMGUI_API bool igDragFloat3(const char* label,float v[3],float v_speed,float v_min,float v_max,const char* format,float power) +CIMGUI_API bool igDragFloat3(const char* label,float v[3],float v_speed,float v_min,float v_max,const char* format,float power) { return ImGui::DragFloat3(label,v,v_speed,v_min,v_max,format,power); } -CIMGUI_API bool igDragFloat4(const char* label,float v[4],float v_speed,float v_min,float v_max,const char* format,float power) +CIMGUI_API bool igDragFloat4(const char* label,float v[4],float v_speed,float v_min,float v_max,const char* format,float power) { return ImGui::DragFloat4(label,v,v_speed,v_min,v_max,format,power); } -CIMGUI_API bool igDragFloatRange2(const char* label,float* v_current_min,float* v_current_max,float v_speed,float v_min,float v_max,const char* format,const char* format_max,float power) +CIMGUI_API bool igDragFloatRange2(const char* label,float* v_current_min,float* v_current_max,float v_speed,float v_min,float v_max,const char* format,const char* format_max,float power) { return ImGui::DragFloatRange2(label,v_current_min,v_current_max,v_speed,v_min,v_max,format,format_max,power); } -CIMGUI_API bool igDragInt(const char* label,int* v,float v_speed,int v_min,int v_max,const char* format) +CIMGUI_API bool igDragInt(const char* label,int* v,float v_speed,int v_min,int v_max,const char* format) { return ImGui::DragInt(label,v,v_speed,v_min,v_max,format); } -CIMGUI_API bool igDragInt2(const char* label,int v[2],float v_speed,int v_min,int v_max,const char* format) +CIMGUI_API bool igDragInt2(const char* label,int v[2],float v_speed,int v_min,int v_max,const char* format) { return ImGui::DragInt2(label,v,v_speed,v_min,v_max,format); } -CIMGUI_API bool igDragInt3(const char* label,int v[3],float v_speed,int v_min,int v_max,const char* format) +CIMGUI_API bool igDragInt3(const char* label,int v[3],float v_speed,int v_min,int v_max,const char* format) { return ImGui::DragInt3(label,v,v_speed,v_min,v_max,format); } -CIMGUI_API bool igDragInt4(const char* label,int v[4],float v_speed,int v_min,int v_max,const char* format) +CIMGUI_API bool igDragInt4(const char* label,int v[4],float v_speed,int v_min,int v_max,const char* format) { return ImGui::DragInt4(label,v,v_speed,v_min,v_max,format); } -CIMGUI_API bool igDragIntRange2(const char* label,int* v_current_min,int* v_current_max,float v_speed,int v_min,int v_max,const char* format,const char* format_max) +CIMGUI_API bool igDragIntRange2(const char* label,int* v_current_min,int* v_current_max,float v_speed,int v_min,int v_max,const char* format,const char* format_max) { return ImGui::DragIntRange2(label,v_current_min,v_current_max,v_speed,v_min,v_max,format,format_max); } -CIMGUI_API bool igDragScalar(const char* label,ImGuiDataType data_type,void* v,float v_speed,const void* v_min,const void* v_max,const char* format,float power) +CIMGUI_API bool igDragScalar(const char* label,ImGuiDataType data_type,void* v,float v_speed,const void* v_min,const void* v_max,const char* format,float power) { return ImGui::DragScalar(label,data_type,v,v_speed,v_min,v_max,format,power); } -CIMGUI_API bool igDragScalarN(const char* label,ImGuiDataType data_type,void* v,int components,float v_speed,const void* v_min,const void* v_max,const char* format,float power) +CIMGUI_API bool igDragScalarN(const char* label,ImGuiDataType data_type,void* v,int components,float v_speed,const void* v_min,const void* v_max,const char* format,float power) { return ImGui::DragScalarN(label,data_type,v,components,v_speed,v_min,v_max,format,power); } -CIMGUI_API bool igInputText(const char* label,char* buf,size_t buf_size,ImGuiInputTextFlags flags,ImGuiTextEditCallback callback,void* user_data) +CIMGUI_API bool igInputText(const char* label,char* buf,size_t buf_size,ImGuiInputTextFlags flags,ImGuiTextEditCallback callback,void* user_data) { return ImGui::InputText(label,buf,buf_size,flags,callback,user_data); } -CIMGUI_API bool igInputTextMultiline(const char* label,char* buf,size_t buf_size,const ImVec2 size,ImGuiInputTextFlags flags,ImGuiTextEditCallback callback,void* user_data) +CIMGUI_API bool igInputTextMultiline(const char* label,char* buf,size_t buf_size,const ImVec2 size,ImGuiInputTextFlags flags,ImGuiTextEditCallback callback,void* user_data) { return ImGui::InputTextMultiline(label,buf,buf_size,size,flags,callback,user_data); } -CIMGUI_API bool igInputFloat(const char* label,float* v,float step,float step_fast,const char* format,ImGuiInputTextFlags extra_flags) +CIMGUI_API bool igInputFloat(const char* label,float* v,float step,float step_fast,const char* format,ImGuiInputTextFlags extra_flags) { return ImGui::InputFloat(label,v,step,step_fast,format,extra_flags); } -CIMGUI_API bool igInputFloat2(const char* label,float v[2],const char* format,ImGuiInputTextFlags extra_flags) +CIMGUI_API bool igInputFloat2(const char* label,float v[2],const char* format,ImGuiInputTextFlags extra_flags) { return ImGui::InputFloat2(label,v,format,extra_flags); } -CIMGUI_API bool igInputFloat3(const char* label,float v[3],const char* format,ImGuiInputTextFlags extra_flags) +CIMGUI_API bool igInputFloat3(const char* label,float v[3],const char* format,ImGuiInputTextFlags extra_flags) { return ImGui::InputFloat3(label,v,format,extra_flags); } -CIMGUI_API bool igInputFloat4(const char* label,float v[4],const char* format,ImGuiInputTextFlags extra_flags) +CIMGUI_API bool igInputFloat4(const char* label,float v[4],const char* format,ImGuiInputTextFlags extra_flags) { return ImGui::InputFloat4(label,v,format,extra_flags); } -CIMGUI_API bool igInputInt(const char* label,int* v,int step,int step_fast,ImGuiInputTextFlags extra_flags) +CIMGUI_API bool igInputInt(const char* label,int* v,int step,int step_fast,ImGuiInputTextFlags extra_flags) { return ImGui::InputInt(label,v,step,step_fast,extra_flags); } -CIMGUI_API bool igInputInt2(const char* label,int v[2],ImGuiInputTextFlags extra_flags) +CIMGUI_API bool igInputInt2(const char* label,int v[2],ImGuiInputTextFlags extra_flags) { return ImGui::InputInt2(label,v,extra_flags); } -CIMGUI_API bool igInputInt3(const char* label,int v[3],ImGuiInputTextFlags extra_flags) +CIMGUI_API bool igInputInt3(const char* label,int v[3],ImGuiInputTextFlags extra_flags) { return ImGui::InputInt3(label,v,extra_flags); } -CIMGUI_API bool igInputInt4(const char* label,int v[4],ImGuiInputTextFlags extra_flags) +CIMGUI_API bool igInputInt4(const char* label,int v[4],ImGuiInputTextFlags extra_flags) { return ImGui::InputInt4(label,v,extra_flags); } -CIMGUI_API bool igInputDouble(const char* label,double* v,double step,double step_fast,const char* format,ImGuiInputTextFlags extra_flags) +CIMGUI_API bool igInputDouble(const char* label,double* v,double step,double step_fast,const char* format,ImGuiInputTextFlags extra_flags) { return ImGui::InputDouble(label,v,step,step_fast,format,extra_flags); } -CIMGUI_API bool igInputScalar(const char* label,ImGuiDataType data_type,void* v,const void* step,const void* step_fast,const char* format,ImGuiInputTextFlags extra_flags) +CIMGUI_API bool igInputScalar(const char* label,ImGuiDataType data_type,void* v,const void* step,const void* step_fast,const char* format,ImGuiInputTextFlags extra_flags) { return ImGui::InputScalar(label,data_type,v,step,step_fast,format,extra_flags); } -CIMGUI_API bool igInputScalarN(const char* label,ImGuiDataType data_type,void* v,int components,const void* step,const void* step_fast,const char* format,ImGuiInputTextFlags extra_flags) +CIMGUI_API bool igInputScalarN(const char* label,ImGuiDataType data_type,void* v,int components,const void* step,const void* step_fast,const char* format,ImGuiInputTextFlags extra_flags) { return ImGui::InputScalarN(label,data_type,v,components,step,step_fast,format,extra_flags); } -CIMGUI_API bool igSliderFloat(const char* label,float* v,float v_min,float v_max,const char* format,float power) +CIMGUI_API bool igSliderFloat(const char* label,float* v,float v_min,float v_max,const char* format,float power) { return ImGui::SliderFloat(label,v,v_min,v_max,format,power); } -CIMGUI_API bool igSliderFloat2(const char* label,float v[2],float v_min,float v_max,const char* format,float power) +CIMGUI_API bool igSliderFloat2(const char* label,float v[2],float v_min,float v_max,const char* format,float power) { return ImGui::SliderFloat2(label,v,v_min,v_max,format,power); } -CIMGUI_API bool igSliderFloat3(const char* label,float v[3],float v_min,float v_max,const char* format,float power) +CIMGUI_API bool igSliderFloat3(const char* label,float v[3],float v_min,float v_max,const char* format,float power) { return ImGui::SliderFloat3(label,v,v_min,v_max,format,power); } -CIMGUI_API bool igSliderFloat4(const char* label,float v[4],float v_min,float v_max,const char* format,float power) +CIMGUI_API bool igSliderFloat4(const char* label,float v[4],float v_min,float v_max,const char* format,float power) { return ImGui::SliderFloat4(label,v,v_min,v_max,format,power); } -CIMGUI_API bool igSliderAngle(const char* label,float* v_rad,float v_degrees_min,float v_degrees_max) +CIMGUI_API bool igSliderAngle(const char* label,float* v_rad,float v_degrees_min,float v_degrees_max) { return ImGui::SliderAngle(label,v_rad,v_degrees_min,v_degrees_max); } -CIMGUI_API bool igSliderInt(const char* label,int* v,int v_min,int v_max,const char* format) +CIMGUI_API bool igSliderInt(const char* label,int* v,int v_min,int v_max,const char* format) { return ImGui::SliderInt(label,v,v_min,v_max,format); } -CIMGUI_API bool igSliderInt2(const char* label,int v[2],int v_min,int v_max,const char* format) +CIMGUI_API bool igSliderInt2(const char* label,int v[2],int v_min,int v_max,const char* format) { return ImGui::SliderInt2(label,v,v_min,v_max,format); } -CIMGUI_API bool igSliderInt3(const char* label,int v[3],int v_min,int v_max,const char* format) +CIMGUI_API bool igSliderInt3(const char* label,int v[3],int v_min,int v_max,const char* format) { return ImGui::SliderInt3(label,v,v_min,v_max,format); } -CIMGUI_API bool igSliderInt4(const char* label,int v[4],int v_min,int v_max,const char* format) +CIMGUI_API bool igSliderInt4(const char* label,int v[4],int v_min,int v_max,const char* format) { return ImGui::SliderInt4(label,v,v_min,v_max,format); } -CIMGUI_API bool igSliderScalar(const char* label,ImGuiDataType data_type,void* v,const void* v_min,const void* v_max,const char* format,float power) +CIMGUI_API bool igSliderScalar(const char* label,ImGuiDataType data_type,void* v,const void* v_min,const void* v_max,const char* format,float power) { return ImGui::SliderScalar(label,data_type,v,v_min,v_max,format,power); } -CIMGUI_API bool igSliderScalarN(const char* label,ImGuiDataType data_type,void* v,int components,const void* v_min,const void* v_max,const char* format,float power) +CIMGUI_API bool igSliderScalarN(const char* label,ImGuiDataType data_type,void* v,int components,const void* v_min,const void* v_max,const char* format,float power) { return ImGui::SliderScalarN(label,data_type,v,components,v_min,v_max,format,power); } -CIMGUI_API bool igVSliderFloat(const char* label,const ImVec2 size,float* v,float v_min,float v_max,const char* format,float power) +CIMGUI_API bool igVSliderFloat(const char* label,const ImVec2 size,float* v,float v_min,float v_max,const char* format,float power) { return ImGui::VSliderFloat(label,size,v,v_min,v_max,format,power); } -CIMGUI_API bool igVSliderInt(const char* label,const ImVec2 size,int* v,int v_min,int v_max,const char* format) +CIMGUI_API bool igVSliderInt(const char* label,const ImVec2 size,int* v,int v_min,int v_max,const char* format) { return ImGui::VSliderInt(label,size,v,v_min,v_max,format); } -CIMGUI_API bool igVSliderScalar(const char* label,const ImVec2 size,ImGuiDataType data_type,void* v,const void* v_min,const void* v_max,const char* format,float power) +CIMGUI_API bool igVSliderScalar(const char* label,const ImVec2 size,ImGuiDataType data_type,void* v,const void* v_min,const void* v_max,const char* format,float power) { return ImGui::VSliderScalar(label,size,data_type,v,v_min,v_max,format,power); } -CIMGUI_API bool igColorEdit3(const char* label,float col[3],ImGuiColorEditFlags flags) +CIMGUI_API bool igColorEdit3(const char* label,float col[3],ImGuiColorEditFlags flags) { return ImGui::ColorEdit3(label,col,flags); } -CIMGUI_API bool igColorEdit4(const char* label,float col[4],ImGuiColorEditFlags flags) +CIMGUI_API bool igColorEdit4(const char* label,float col[4],ImGuiColorEditFlags flags) { return ImGui::ColorEdit4(label,col,flags); } -CIMGUI_API bool igColorPicker3(const char* label,float col[3],ImGuiColorEditFlags flags) +CIMGUI_API bool igColorPicker3(const char* label,float col[3],ImGuiColorEditFlags flags) { return ImGui::ColorPicker3(label,col,flags); } -CIMGUI_API bool igColorPicker4(const char* label,float col[4],ImGuiColorEditFlags flags,const float* ref_col) +CIMGUI_API bool igColorPicker4(const char* label,float col[4],ImGuiColorEditFlags flags,const float* ref_col) { return ImGui::ColorPicker4(label,col,flags,ref_col); } -CIMGUI_API bool igColorButton(const char* desc_id,const ImVec4 col,ImGuiColorEditFlags flags,ImVec2 size) +CIMGUI_API bool igColorButton(const char* desc_id,const ImVec4 col,ImGuiColorEditFlags flags,ImVec2 size) { return ImGui::ColorButton(desc_id,col,flags,size); } -CIMGUI_API void igSetColorEditOptions(ImGuiColorEditFlags flags) +CIMGUI_API void igSetColorEditOptions(ImGuiColorEditFlags flags) { return ImGui::SetColorEditOptions(flags); } -CIMGUI_API bool igTreeNodeStr(const char* label) +CIMGUI_API bool igTreeNodeStr(const char* label) { return ImGui::TreeNode(label); } -CIMGUI_API bool igTreeNodeStrStr(const char* str_id,const char* fmt,...) +CIMGUI_API bool igTreeNodeStrStr(const char* str_id,const char* fmt,...) { va_list args; va_start(args, fmt); ImGui::TreeNodeV(str_id,fmt,args); va_end(args); } -CIMGUI_API bool igTreeNodePtr(const void* ptr_id,const char* fmt,...) +CIMGUI_API bool igTreeNodePtr(const void* ptr_id,const char* fmt,...) { va_list args; va_start(args, fmt); ImGui::TreeNodeV(ptr_id,fmt,args); va_end(args); } -CIMGUI_API bool igTreeNodeVStr(const char* str_id,const char* fmt,va_list args) +CIMGUI_API bool igTreeNodeVStr(const char* str_id,const char* fmt,va_list args) { return ImGui::TreeNodeV(str_id,fmt,args); } -CIMGUI_API bool igTreeNodeVPtr(const void* ptr_id,const char* fmt,va_list args) +CIMGUI_API bool igTreeNodeVPtr(const void* ptr_id,const char* fmt,va_list args) { return ImGui::TreeNodeV(ptr_id,fmt,args); } -CIMGUI_API bool igTreeNodeExStr(const char* label,ImGuiTreeNodeFlags flags) +CIMGUI_API bool igTreeNodeExStr(const char* label,ImGuiTreeNodeFlags flags) { return ImGui::TreeNodeEx(label,flags); } -CIMGUI_API bool igTreeNodeExStrStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,...) +CIMGUI_API bool igTreeNodeExStrStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,...) { va_list args; va_start(args, fmt); ImGui::TreeNodeExV(str_id,flags,fmt,args); va_end(args); } -CIMGUI_API bool igTreeNodeExPtr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,...) +CIMGUI_API bool igTreeNodeExPtr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,...) { va_list args; va_start(args, fmt); ImGui::TreeNodeExV(ptr_id,flags,fmt,args); va_end(args); } -CIMGUI_API bool igTreeNodeExVStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args) +CIMGUI_API bool igTreeNodeExVStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args) { return ImGui::TreeNodeExV(str_id,flags,fmt,args); } -CIMGUI_API bool igTreeNodeExVPtr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args) +CIMGUI_API bool igTreeNodeExVPtr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args) { return ImGui::TreeNodeExV(ptr_id,flags,fmt,args); } -CIMGUI_API void igTreePushStr(const char* str_id) +CIMGUI_API void igTreePushStr(const char* str_id) { return ImGui::TreePush(str_id); } -CIMGUI_API void igTreePushPtr(const void* ptr_id) +CIMGUI_API void igTreePushPtr(const void* ptr_id) { return ImGui::TreePush(ptr_id); } -CIMGUI_API void igTreePop() +CIMGUI_API void igTreePop() { return ImGui::TreePop(); } -CIMGUI_API void igTreeAdvanceToLabelPos() +CIMGUI_API void igTreeAdvanceToLabelPos() { return ImGui::TreeAdvanceToLabelPos(); } -CIMGUI_API float igGetTreeNodeToLabelSpacing() +CIMGUI_API float igGetTreeNodeToLabelSpacing() { return ImGui::GetTreeNodeToLabelSpacing(); } -CIMGUI_API void igSetNextTreeNodeOpen(bool is_open,ImGuiCond cond) +CIMGUI_API void igSetNextTreeNodeOpen(bool is_open,ImGuiCond cond) { return ImGui::SetNextTreeNodeOpen(is_open,cond); } -CIMGUI_API bool igCollapsingHeader(const char* label,ImGuiTreeNodeFlags flags) +CIMGUI_API bool igCollapsingHeader(const char* label,ImGuiTreeNodeFlags flags) { return ImGui::CollapsingHeader(label,flags); } -CIMGUI_API bool igCollapsingHeaderBoolPtr(const char* label,bool* p_open,ImGuiTreeNodeFlags flags) +CIMGUI_API bool igCollapsingHeaderBoolPtr(const char* label,bool* p_open,ImGuiTreeNodeFlags flags) { return ImGui::CollapsingHeader(label,p_open,flags); } -CIMGUI_API bool igSelectable(const char* label,bool selected,ImGuiSelectableFlags flags,const ImVec2 size) +CIMGUI_API bool igSelectable(const char* label,bool selected,ImGuiSelectableFlags flags,const ImVec2 size) { return ImGui::Selectable(label,selected,flags,size); } -CIMGUI_API bool igSelectableBoolPtr(const char* label,bool* p_selected,ImGuiSelectableFlags flags,const ImVec2 size) +CIMGUI_API bool igSelectableBoolPtr(const char* label,bool* p_selected,ImGuiSelectableFlags flags,const ImVec2 size) { return ImGui::Selectable(label,p_selected,flags,size); } -CIMGUI_API bool igListBoxStr_arr(const char* label,int* current_item,const char* const items[],int items_count,int height_in_items) +CIMGUI_API bool igListBoxStr_arr(const char* label,int* current_item,const char* const items[],int items_count,int height_in_items) { return ImGui::ListBox(label,current_item,items,items_count,height_in_items); } -CIMGUI_API bool igListBoxFnPtr(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) +CIMGUI_API bool igListBoxFnPtr(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) { return ImGui::ListBox(label,current_item,items_getter,data,items_count,height_in_items); } -CIMGUI_API bool igListBoxHeaderVec2(const char* label,const ImVec2 size) +CIMGUI_API bool igListBoxHeaderVec2(const char* label,const ImVec2 size) { return ImGui::ListBoxHeader(label,size); } -CIMGUI_API bool igListBoxHeaderInt(const char* label,int items_count,int height_in_items) +CIMGUI_API bool igListBoxHeaderInt(const char* label,int items_count,int height_in_items) { return ImGui::ListBoxHeader(label,items_count,height_in_items); } -CIMGUI_API void igListBoxFooter() +CIMGUI_API void igListBoxFooter() { return ImGui::ListBoxFooter(); } -CIMGUI_API void igValueBool(const char* prefix,bool b) +CIMGUI_API void igValueBool(const char* prefix,bool b) { return ImGui::Value(prefix,b); } -CIMGUI_API void igValueInt(const char* prefix,int v) +CIMGUI_API void igValueInt(const char* prefix,int v) { return ImGui::Value(prefix,v); } -CIMGUI_API void igValueUint(const char* prefix,unsigned int v) +CIMGUI_API void igValueUint(const char* prefix,unsigned int v) { return ImGui::Value(prefix,v); } -CIMGUI_API void igValueFloat(const char* prefix,float v,const char* float_format) +CIMGUI_API void igValueFloat(const char* prefix,float v,const char* float_format) { return ImGui::Value(prefix,v,float_format); } -CIMGUI_API void igBeginTooltip() +CIMGUI_API void igBeginTooltip() { return ImGui::BeginTooltip(); } -CIMGUI_API void igEndTooltip() +CIMGUI_API void igEndTooltip() { return ImGui::EndTooltip(); } -CIMGUI_API void igSetTooltip(const char* fmt,...) +CIMGUI_API void igSetTooltip(const char* fmt,...) { va_list args; va_start(args, fmt); ImGui::SetTooltipV(fmt,args); va_end(args); } -CIMGUI_API void igSetTooltipV(const char* fmt,va_list args) +CIMGUI_API void igSetTooltipV(const char* fmt,va_list args) { return ImGui::SetTooltipV(fmt,args); } -CIMGUI_API bool igBeginMainMenuBar() +CIMGUI_API bool igBeginMainMenuBar() { return ImGui::BeginMainMenuBar(); } -CIMGUI_API void igEndMainMenuBar() +CIMGUI_API void igEndMainMenuBar() { return ImGui::EndMainMenuBar(); } -CIMGUI_API bool igBeginMenuBar() +CIMGUI_API bool igBeginMenuBar() { return ImGui::BeginMenuBar(); } -CIMGUI_API void igEndMenuBar() +CIMGUI_API void igEndMenuBar() { return ImGui::EndMenuBar(); } -CIMGUI_API bool igBeginMenu(const char* label,bool enabled) +CIMGUI_API bool igBeginMenu(const char* label,bool enabled) { return ImGui::BeginMenu(label,enabled); } -CIMGUI_API void igEndMenu() +CIMGUI_API void igEndMenu() { return ImGui::EndMenu(); } -CIMGUI_API bool igMenuItemBool(const char* label,const char* shortcut,bool selected,bool enabled) +CIMGUI_API bool igMenuItemBool(const char* label,const char* shortcut,bool selected,bool enabled) { return ImGui::MenuItem(label,shortcut,selected,enabled); } -CIMGUI_API bool igMenuItemBoolPtr(const char* label,const char* shortcut,bool* p_selected,bool enabled) +CIMGUI_API bool igMenuItemBoolPtr(const char* label,const char* shortcut,bool* p_selected,bool enabled) { return ImGui::MenuItem(label,shortcut,p_selected,enabled); } -CIMGUI_API void igOpenPopup(const char* str_id) +CIMGUI_API void igOpenPopup(const char* str_id) { return ImGui::OpenPopup(str_id); } -CIMGUI_API bool igBeginPopup(const char* str_id,ImGuiWindowFlags flags) +CIMGUI_API bool igBeginPopup(const char* str_id,ImGuiWindowFlags flags) { return ImGui::BeginPopup(str_id,flags); } -CIMGUI_API bool igBeginPopupContextItem(const char* str_id,int mouse_button) +CIMGUI_API bool igBeginPopupContextItem(const char* str_id,int mouse_button) { return ImGui::BeginPopupContextItem(str_id,mouse_button); } -CIMGUI_API bool igBeginPopupContextWindow(const char* str_id,int mouse_button,bool also_over_items) +CIMGUI_API bool igBeginPopupContextWindow(const char* str_id,int mouse_button,bool also_over_items) { return ImGui::BeginPopupContextWindow(str_id,mouse_button,also_over_items); } -CIMGUI_API bool igBeginPopupContextVoid(const char* str_id,int mouse_button) +CIMGUI_API bool igBeginPopupContextVoid(const char* str_id,int mouse_button) { return ImGui::BeginPopupContextVoid(str_id,mouse_button); } -CIMGUI_API bool igBeginPopupModal(const char* name,bool* p_open,ImGuiWindowFlags flags) +CIMGUI_API bool igBeginPopupModal(const char* name,bool* p_open,ImGuiWindowFlags flags) { return ImGui::BeginPopupModal(name,p_open,flags); } -CIMGUI_API void igEndPopup() +CIMGUI_API void igEndPopup() { return ImGui::EndPopup(); } -CIMGUI_API bool igOpenPopupOnItemClick(const char* str_id,int mouse_button) +CIMGUI_API bool igOpenPopupOnItemClick(const char* str_id,int mouse_button) { return ImGui::OpenPopupOnItemClick(str_id,mouse_button); } -CIMGUI_API bool igIsPopupOpen(const char* str_id) +CIMGUI_API bool igIsPopupOpen(const char* str_id) { return ImGui::IsPopupOpen(str_id); } -CIMGUI_API void igCloseCurrentPopup() +CIMGUI_API void igCloseCurrentPopup() { return ImGui::CloseCurrentPopup(); } -CIMGUI_API void igColumns(int count,const char* id,bool border) +CIMGUI_API void igColumns(int count,const char* id,bool border) { return ImGui::Columns(count,id,border); } -CIMGUI_API void igNextColumn() +CIMGUI_API void igNextColumn() { return ImGui::NextColumn(); } -CIMGUI_API int igGetColumnIndex() +CIMGUI_API int igGetColumnIndex() { return ImGui::GetColumnIndex(); } -CIMGUI_API float igGetColumnWidth(int column_index) +CIMGUI_API float igGetColumnWidth(int column_index) { return ImGui::GetColumnWidth(column_index); } -CIMGUI_API void igSetColumnWidth(int column_index,float width) +CIMGUI_API void igSetColumnWidth(int column_index,float width) { return ImGui::SetColumnWidth(column_index,width); } -CIMGUI_API float igGetColumnOffset(int column_index) +CIMGUI_API float igGetColumnOffset(int column_index) { return ImGui::GetColumnOffset(column_index); } -CIMGUI_API void igSetColumnOffset(int column_index,float offset_x) +CIMGUI_API void igSetColumnOffset(int column_index,float offset_x) { return ImGui::SetColumnOffset(column_index,offset_x); } -CIMGUI_API int igGetColumnsCount() +CIMGUI_API int igGetColumnsCount() { return ImGui::GetColumnsCount(); } -CIMGUI_API void igLogToTTY(int max_depth) +CIMGUI_API void igLogToTTY(int max_depth) { return ImGui::LogToTTY(max_depth); } -CIMGUI_API void igLogToFile(int max_depth,const char* filename) +CIMGUI_API void igLogToFile(int max_depth,const char* filename) { return ImGui::LogToFile(max_depth,filename); } -CIMGUI_API void igLogToClipboard(int max_depth) +CIMGUI_API void igLogToClipboard(int max_depth) { return ImGui::LogToClipboard(max_depth); } -CIMGUI_API void igLogFinish() +CIMGUI_API void igLogFinish() { return ImGui::LogFinish(); } -CIMGUI_API void igLogButtons() +CIMGUI_API void igLogButtons() { return ImGui::LogButtons(); } -CIMGUI_API bool igBeginDragDropSource(ImGuiDragDropFlags flags) +CIMGUI_API bool igBeginDragDropSource(ImGuiDragDropFlags flags) { return ImGui::BeginDragDropSource(flags); } -CIMGUI_API bool igSetDragDropPayload(const char* type,const void* data,size_t size,ImGuiCond cond) +CIMGUI_API bool igSetDragDropPayload(const char* type,const void* data,size_t size,ImGuiCond cond) { return ImGui::SetDragDropPayload(type,data,size,cond); } -CIMGUI_API void igEndDragDropSource() +CIMGUI_API void igEndDragDropSource() { return ImGui::EndDragDropSource(); } -CIMGUI_API bool igBeginDragDropTarget() +CIMGUI_API bool igBeginDragDropTarget() { return ImGui::BeginDragDropTarget(); } -CIMGUI_API const ImGuiPayload* igAcceptDragDropPayload(const char* type,ImGuiDragDropFlags flags) +CIMGUI_API const ImGuiPayload* igAcceptDragDropPayload(const char* type,ImGuiDragDropFlags flags) { return ImGui::AcceptDragDropPayload(type,flags); } -CIMGUI_API void igEndDragDropTarget() +CIMGUI_API void igEndDragDropTarget() { return ImGui::EndDragDropTarget(); } -CIMGUI_API void igPushClipRect(const ImVec2 clip_rect_min,const ImVec2 clip_rect_max,bool intersect_with_current_clip_rect) +CIMGUI_API void igPushClipRect(const ImVec2 clip_rect_min,const ImVec2 clip_rect_max,bool intersect_with_current_clip_rect) { return ImGui::PushClipRect(clip_rect_min,clip_rect_max,intersect_with_current_clip_rect); } -CIMGUI_API void igPopClipRect() +CIMGUI_API void igPopClipRect() { return ImGui::PopClipRect(); } -CIMGUI_API void igSetItemDefaultFocus() +CIMGUI_API void igSetItemDefaultFocus() { return ImGui::SetItemDefaultFocus(); } -CIMGUI_API void igSetKeyboardFocusHere(int offset) +CIMGUI_API void igSetKeyboardFocusHere(int offset) { return ImGui::SetKeyboardFocusHere(offset); } -CIMGUI_API bool igIsItemHovered(ImGuiHoveredFlags flags) +CIMGUI_API bool igIsItemHovered(ImGuiHoveredFlags flags) { return ImGui::IsItemHovered(flags); } -CIMGUI_API bool igIsItemActive() +CIMGUI_API bool igIsItemActive() { return ImGui::IsItemActive(); } -CIMGUI_API bool igIsItemFocused() +CIMGUI_API bool igIsItemFocused() { return ImGui::IsItemFocused(); } -CIMGUI_API bool igIsItemClicked(int mouse_button) +CIMGUI_API bool igIsItemClicked(int mouse_button) { return ImGui::IsItemClicked(mouse_button); } -CIMGUI_API bool igIsItemVisible() +CIMGUI_API bool igIsItemVisible() { return ImGui::IsItemVisible(); } -CIMGUI_API bool igIsItemDeactivated() +CIMGUI_API bool igIsItemDeactivated() { return ImGui::IsItemDeactivated(); } -CIMGUI_API bool igIsItemDeactivatedAfterChange() +CIMGUI_API bool igIsItemDeactivatedAfterChange() { return ImGui::IsItemDeactivatedAfterChange(); } -CIMGUI_API bool igIsAnyItemHovered() +CIMGUI_API bool igIsAnyItemHovered() { return ImGui::IsAnyItemHovered(); } -CIMGUI_API bool igIsAnyItemActive() +CIMGUI_API bool igIsAnyItemActive() { return ImGui::IsAnyItemActive(); } -CIMGUI_API bool igIsAnyItemFocused() +CIMGUI_API bool igIsAnyItemFocused() { return ImGui::IsAnyItemFocused(); } -CIMGUI_API ImVec2 igGetItemRectMin() +CIMGUI_API ImVec2 igGetItemRectMin() { return ImGui::GetItemRectMin(); } -CIMGUI_API ImVec2 igGetItemRectMax() +CIMGUI_API ImVec2 igGetItemRectMax() { return ImGui::GetItemRectMax(); } -CIMGUI_API ImVec2 igGetItemRectSize() +CIMGUI_API ImVec2 igGetItemRectSize() { return ImGui::GetItemRectSize(); } -CIMGUI_API void igSetItemAllowOverlap() +CIMGUI_API void igSetItemAllowOverlap() { return ImGui::SetItemAllowOverlap(); } -CIMGUI_API bool igIsRectVisible(const ImVec2 size) +CIMGUI_API bool igIsRectVisible(const ImVec2 size) { return ImGui::IsRectVisible(size); } -CIMGUI_API bool igIsRectVisibleVec2(const ImVec2 rect_min,const ImVec2 rect_max) +CIMGUI_API bool igIsRectVisibleVec2(const ImVec2 rect_min,const ImVec2 rect_max) { return ImGui::IsRectVisible(rect_min,rect_max); } -CIMGUI_API float igGetTime() +CIMGUI_API float igGetTime() { return ImGui::GetTime(); } -CIMGUI_API int igGetFrameCount() +CIMGUI_API int igGetFrameCount() { return ImGui::GetFrameCount(); } -CIMGUI_API ImDrawList* igGetOverlayDrawList() +CIMGUI_API ImDrawList* igGetOverlayDrawList() { return ImGui::GetOverlayDrawList(); } -CIMGUI_API ImDrawListSharedData* igGetDrawListSharedData() +CIMGUI_API ImDrawListSharedData* igGetDrawListSharedData() { return ImGui::GetDrawListSharedData(); } -CIMGUI_API const char* igGetStyleColorName(ImGuiCol idx) +CIMGUI_API const char* igGetStyleColorName(ImGuiCol idx) { return ImGui::GetStyleColorName(idx); } -CIMGUI_API void igSetStateStorage(ImGuiStorage* storage) +CIMGUI_API void igSetStateStorage(ImGuiStorage* storage) { return ImGui::SetStateStorage(storage); } -CIMGUI_API ImGuiStorage* igGetStateStorage() +CIMGUI_API ImGuiStorage* igGetStateStorage() { return ImGui::GetStateStorage(); } -CIMGUI_API ImVec2 igCalcTextSize(const char* text,const char* text_end,bool hide_text_after_double_hash,float wrap_width) +CIMGUI_API ImVec2 igCalcTextSize(const char* text,const char* text_end,bool hide_text_after_double_hash,float wrap_width) { return ImGui::CalcTextSize(text,text_end,hide_text_after_double_hash,wrap_width); } -CIMGUI_API void igCalcListClipping(int items_count,float items_height,int* out_items_display_start,int* out_items_display_end) +CIMGUI_API void igCalcListClipping(int items_count,float items_height,int* out_items_display_start,int* out_items_display_end) { return ImGui::CalcListClipping(items_count,items_height,out_items_display_start,out_items_display_end); } -CIMGUI_API bool igBeginChildFrame(ImGuiID id,const ImVec2 size,ImGuiWindowFlags flags) +CIMGUI_API bool igBeginChildFrame(ImGuiID id,const ImVec2 size,ImGuiWindowFlags flags) { return ImGui::BeginChildFrame(id,size,flags); } -CIMGUI_API void igEndChildFrame() +CIMGUI_API void igEndChildFrame() { return ImGui::EndChildFrame(); } -CIMGUI_API ImVec4 igColorConvertU32ToFloat4(ImU32 in) +CIMGUI_API ImVec4 igColorConvertU32ToFloat4(ImU32 in) { return ImGui::ColorConvertU32ToFloat4(in); } -CIMGUI_API ImU32 igColorConvertFloat4ToU32(const ImVec4 in) +CIMGUI_API ImU32 igColorConvertFloat4ToU32(const ImVec4 in) { return ImGui::ColorConvertFloat4ToU32(in); } -CIMGUI_API void igColorConvertRGBtoHSV(float r,float g,float b,float out_h,float out_s,float out_v) +CIMGUI_API void igColorConvertRGBtoHSV(float r,float g,float b,float out_h,float out_s,float out_v) { return ImGui::ColorConvertRGBtoHSV(r,g,b,out_h,out_s,out_v); } -CIMGUI_API void igColorConvertHSVtoRGB(float h,float s,float v,float out_r,float out_g,float out_b) +CIMGUI_API void igColorConvertHSVtoRGB(float h,float s,float v,float out_r,float out_g,float out_b) { return ImGui::ColorConvertHSVtoRGB(h,s,v,out_r,out_g,out_b); } -CIMGUI_API int igGetKeyIndex(ImGuiKey imgui_key) +CIMGUI_API int igGetKeyIndex(ImGuiKey imgui_key) { return ImGui::GetKeyIndex(imgui_key); } -CIMGUI_API bool igIsKeyDown(int user_key_index) +CIMGUI_API bool igIsKeyDown(int user_key_index) { return ImGui::IsKeyDown(user_key_index); } -CIMGUI_API bool igIsKeyPressed(int user_key_index,bool repeat) +CIMGUI_API bool igIsKeyPressed(int user_key_index,bool repeat) { return ImGui::IsKeyPressed(user_key_index,repeat); } -CIMGUI_API bool igIsKeyReleased(int user_key_index) +CIMGUI_API bool igIsKeyReleased(int user_key_index) { return ImGui::IsKeyReleased(user_key_index); } -CIMGUI_API int igGetKeyPressedAmount(int key_index,float repeat_delay,float rate) +CIMGUI_API int igGetKeyPressedAmount(int key_index,float repeat_delay,float rate) { return ImGui::GetKeyPressedAmount(key_index,repeat_delay,rate); } -CIMGUI_API bool igIsMouseDown(int button) +CIMGUI_API bool igIsMouseDown(int button) { return ImGui::IsMouseDown(button); } -CIMGUI_API bool igIsAnyMouseDown() +CIMGUI_API bool igIsAnyMouseDown() { return ImGui::IsAnyMouseDown(); } -CIMGUI_API bool igIsMouseClicked(int button,bool repeat) +CIMGUI_API bool igIsMouseClicked(int button,bool repeat) { return ImGui::IsMouseClicked(button,repeat); } -CIMGUI_API bool igIsMouseDoubleClicked(int button) +CIMGUI_API bool igIsMouseDoubleClicked(int button) { return ImGui::IsMouseDoubleClicked(button); } -CIMGUI_API bool igIsMouseReleased(int button) +CIMGUI_API bool igIsMouseReleased(int button) { return ImGui::IsMouseReleased(button); } -CIMGUI_API bool igIsMouseDragging(int button,float lock_threshold) +CIMGUI_API bool igIsMouseDragging(int button,float lock_threshold) { return ImGui::IsMouseDragging(button,lock_threshold); } -CIMGUI_API bool igIsMouseHoveringRect(const ImVec2 r_min,const ImVec2 r_max,bool clip) +CIMGUI_API bool igIsMouseHoveringRect(const ImVec2 r_min,const ImVec2 r_max,bool clip) { return ImGui::IsMouseHoveringRect(r_min,r_max,clip); } -CIMGUI_API bool igIsMousePosValid(const ImVec2* mouse_pos) +CIMGUI_API bool igIsMousePosValid(const ImVec2* mouse_pos) { return ImGui::IsMousePosValid(mouse_pos); } -CIMGUI_API ImVec2 igGetMousePos() +CIMGUI_API ImVec2 igGetMousePos() { return ImGui::GetMousePos(); } -CIMGUI_API ImVec2 igGetMousePosOnOpeningCurrentPopup() +CIMGUI_API ImVec2 igGetMousePosOnOpeningCurrentPopup() { return ImGui::GetMousePosOnOpeningCurrentPopup(); } -CIMGUI_API ImVec2 igGetMouseDragDelta(int button,float lock_threshold) +CIMGUI_API ImVec2 igGetMouseDragDelta(int button,float lock_threshold) { return ImGui::GetMouseDragDelta(button,lock_threshold); } -CIMGUI_API void igResetMouseDragDelta(int button) +CIMGUI_API void igResetMouseDragDelta(int button) { return ImGui::ResetMouseDragDelta(button); } -CIMGUI_API ImGuiMouseCursor igGetMouseCursor() +CIMGUI_API ImGuiMouseCursor igGetMouseCursor() { return ImGui::GetMouseCursor(); } -CIMGUI_API void igSetMouseCursor(ImGuiMouseCursor type) +CIMGUI_API void igSetMouseCursor(ImGuiMouseCursor type) { return ImGui::SetMouseCursor(type); } -CIMGUI_API void igCaptureKeyboardFromApp(bool capture) +CIMGUI_API void igCaptureKeyboardFromApp(bool capture) { return ImGui::CaptureKeyboardFromApp(capture); } -CIMGUI_API void igCaptureMouseFromApp(bool capture) +CIMGUI_API void igCaptureMouseFromApp(bool capture) { return ImGui::CaptureMouseFromApp(capture); } -CIMGUI_API const char* igGetClipboardText() +CIMGUI_API const char* igGetClipboardText() { return ImGui::GetClipboardText(); } -CIMGUI_API void igSetClipboardText(const char* text) +CIMGUI_API void igSetClipboardText(const char* text) { return ImGui::SetClipboardText(text); } -CIMGUI_API void igLoadIniSettingsFromDisk(const char* ini_filename) +CIMGUI_API void igLoadIniSettingsFromDisk(const char* ini_filename) { return ImGui::LoadIniSettingsFromDisk(ini_filename); } -CIMGUI_API void igLoadIniSettingsFromMemory(const char* ini_data,size_t ini_size) +CIMGUI_API void igLoadIniSettingsFromMemory(const char* ini_data,size_t ini_size) { return ImGui::LoadIniSettingsFromMemory(ini_data,ini_size); } -CIMGUI_API void igSaveIniSettingsToDisk(const char* ini_filename) +CIMGUI_API void igSaveIniSettingsToDisk(const char* ini_filename) { return ImGui::SaveIniSettingsToDisk(ini_filename); } -CIMGUI_API const char* igSaveIniSettingsToMemory(size_t* out_ini_size) +CIMGUI_API const char* igSaveIniSettingsToMemory(size_t* out_ini_size) { return ImGui::SaveIniSettingsToMemory(out_ini_size); } -CIMGUI_API void igSetAllocatorFunctions(void*(*alloc_func)(size_t sz,void* user_data),void(*free_func)(void* ptr,void* user_data),void* user_data) +CIMGUI_API void igSetAllocatorFunctions(void*(*alloc_func)(size_t sz,void* user_data),void(*free_func)(void* ptr,void* user_data),void* user_data) { return ImGui::SetAllocatorFunctions(alloc_func,free_func,user_data); } -CIMGUI_API void* igMemAlloc(size_t size) +CIMGUI_API void* igMemAlloc(size_t size) { return ImGui::MemAlloc(size); } -CIMGUI_API void igMemFree(void* ptr) +CIMGUI_API void igMemFree(void* ptr) { return ImGui::MemFree(ptr); } -CIMGUI_API void ImGuiStyle_ScaleAllSizes(ImGuiStyle* self,float scale_factor) +CIMGUI_API void ImGuiStyle_ScaleAllSizes(ImGuiStyle* self,float scale_factor) { return self->ScaleAllSizes(scale_factor); } -CIMGUI_API void ImGuiIO_AddInputCharacter(ImGuiIO* self,ImWchar c) +CIMGUI_API void ImGuiIO_AddInputCharacter(ImGuiIO* self,ImWchar c) { return self->AddInputCharacter(c); } -CIMGUI_API void ImGuiIO_AddInputCharactersUTF8(ImGuiIO* self,const char* utf8_chars) +CIMGUI_API void ImGuiIO_AddInputCharactersUTF8(ImGuiIO* self,const char* utf8_chars) { return self->AddInputCharactersUTF8(utf8_chars); } -CIMGUI_API inline void ImGuiIO_ClearInputCharacters(ImGuiIO* self) +CIMGUI_API inline void ImGuiIO_ClearInputCharacters(ImGuiIO* self) { return self->ClearInputCharacters(); } -CIMGUI_API const char* TextRange_begin(TextRange* self) +CIMGUI_API const char* TextRange_begin(TextRange* self) { return self->begin(); } -CIMGUI_API const char* TextRange_end(TextRange* self) +CIMGUI_API const char* TextRange_end(TextRange* self) { return self->end(); } -CIMGUI_API bool TextRange_empty(TextRange* self) +CIMGUI_API bool TextRange_empty(TextRange* self) { return self->empty(); } -CIMGUI_API char TextRange_front(TextRange* self) +CIMGUI_API char TextRange_front(TextRange* self) { return self->front(); } -CIMGUI_API bool TextRange_is_blank(TextRange* self,char c) +CIMGUI_API bool TextRange_is_blank(TextRange* self,char c) { return self->is_blank(c); } -CIMGUI_API void TextRange_trim_blanks(TextRange* self) +CIMGUI_API void TextRange_trim_blanks(TextRange* self) { return self->trim_blanks(); } -CIMGUI_API void TextRange_split(TextRange* self,char separator,ImVector_TextRange out) +CIMGUI_API void TextRange_split(TextRange* self,char separator,ImVector_TextRange out) { return self->split(separator,out); } -CIMGUI_API bool ImGuiTextFilter_Draw(ImGuiTextFilter* self,const char* label,float width) +CIMGUI_API bool ImGuiTextFilter_Draw(ImGuiTextFilter* self,const char* label,float width) { return self->Draw(label,width); } -CIMGUI_API bool ImGuiTextFilter_PassFilter(ImGuiTextFilter* self,const char* text,const char* text_end) +CIMGUI_API bool ImGuiTextFilter_PassFilter(ImGuiTextFilter* self,const char* text,const char* text_end) { return self->PassFilter(text,text_end); } -CIMGUI_API void ImGuiTextFilter_Build(ImGuiTextFilter* self) +CIMGUI_API void ImGuiTextFilter_Build(ImGuiTextFilter* self) { return self->Build(); } -CIMGUI_API void ImGuiTextFilter_Clear(ImGuiTextFilter* self) +CIMGUI_API void ImGuiTextFilter_Clear(ImGuiTextFilter* self) { return self->Clear(); } -CIMGUI_API bool ImGuiTextFilter_IsActive(ImGuiTextFilter* self) +CIMGUI_API bool ImGuiTextFilter_IsActive(ImGuiTextFilter* self) { return self->IsActive(); } -CIMGUI_API const char* ImGuiTextBuffer_begin(ImGuiTextBuffer* self) +CIMGUI_API const char* ImGuiTextBuffer_begin(ImGuiTextBuffer* self) { return self->begin(); } -CIMGUI_API const char* ImGuiTextBuffer_end(ImGuiTextBuffer* self) +CIMGUI_API const char* ImGuiTextBuffer_end(ImGuiTextBuffer* self) { return self->end(); } -CIMGUI_API int ImGuiTextBuffer_size(ImGuiTextBuffer* self) +CIMGUI_API int ImGuiTextBuffer_size(ImGuiTextBuffer* self) { return self->size(); } -CIMGUI_API bool ImGuiTextBuffer_empty(ImGuiTextBuffer* self) +CIMGUI_API bool ImGuiTextBuffer_empty(ImGuiTextBuffer* self) { return self->empty(); } -CIMGUI_API void ImGuiTextBuffer_clear(ImGuiTextBuffer* self) +CIMGUI_API void ImGuiTextBuffer_clear(ImGuiTextBuffer* self) { return self->clear(); } -CIMGUI_API void ImGuiTextBuffer_reserve(ImGuiTextBuffer* self,int capacity) +CIMGUI_API void ImGuiTextBuffer_reserve(ImGuiTextBuffer* self,int capacity) { return self->reserve(capacity); } -CIMGUI_API const char* ImGuiTextBuffer_c_str(ImGuiTextBuffer* self) +CIMGUI_API const char* ImGuiTextBuffer_c_str(ImGuiTextBuffer* self) { return self->c_str(); } -CIMGUI_API void ImGuiTextBuffer_appendfv(ImGuiTextBuffer* self,const char* fmt,va_list args) +CIMGUI_API void ImGuiTextBuffer_appendfv(ImGuiTextBuffer* self,const char* fmt,va_list args) { return self->appendfv(fmt,args); } -CIMGUI_API void ImGuiStorage_Clear(ImGuiStorage* self) +CIMGUI_API void ImGuiStorage_Clear(ImGuiStorage* self) { return self->Clear(); } -CIMGUI_API int ImGuiStorage_GetInt(ImGuiStorage* self,ImGuiID key,int default_val) +CIMGUI_API int ImGuiStorage_GetInt(ImGuiStorage* self,ImGuiID key,int default_val) { return self->GetInt(key,default_val); } -CIMGUI_API void ImGuiStorage_SetInt(ImGuiStorage* self,ImGuiID key,int val) +CIMGUI_API void ImGuiStorage_SetInt(ImGuiStorage* self,ImGuiID key,int val) { return self->SetInt(key,val); } -CIMGUI_API bool ImGuiStorage_GetBool(ImGuiStorage* self,ImGuiID key,bool default_val) +CIMGUI_API bool ImGuiStorage_GetBool(ImGuiStorage* self,ImGuiID key,bool default_val) { return self->GetBool(key,default_val); } -CIMGUI_API void ImGuiStorage_SetBool(ImGuiStorage* self,ImGuiID key,bool val) +CIMGUI_API void ImGuiStorage_SetBool(ImGuiStorage* self,ImGuiID key,bool val) { return self->SetBool(key,val); } -CIMGUI_API float ImGuiStorage_GetFloat(ImGuiStorage* self,ImGuiID key,float default_val) +CIMGUI_API float ImGuiStorage_GetFloat(ImGuiStorage* self,ImGuiID key,float default_val) { return self->GetFloat(key,default_val); } -CIMGUI_API void ImGuiStorage_SetFloat(ImGuiStorage* self,ImGuiID key,float val) +CIMGUI_API void ImGuiStorage_SetFloat(ImGuiStorage* self,ImGuiID key,float val) { return self->SetFloat(key,val); } -CIMGUI_API void* ImGuiStorage_GetVoidPtr(ImGuiStorage* self,ImGuiID key) +CIMGUI_API void* ImGuiStorage_GetVoidPtr(ImGuiStorage* self,ImGuiID key) { return self->GetVoidPtr(key); } -CIMGUI_API void ImGuiStorage_SetVoidPtr(ImGuiStorage* self,ImGuiID key,void* val) +CIMGUI_API void ImGuiStorage_SetVoidPtr(ImGuiStorage* self,ImGuiID key,void* val) { return self->SetVoidPtr(key,val); } -CIMGUI_API int* ImGuiStorage_GetIntRef(ImGuiStorage* self,ImGuiID key,int default_val) +CIMGUI_API int* ImGuiStorage_GetIntRef(ImGuiStorage* self,ImGuiID key,int default_val) { return self->GetIntRef(key,default_val); } -CIMGUI_API bool* ImGuiStorage_GetBoolRef(ImGuiStorage* self,ImGuiID key,bool default_val) +CIMGUI_API bool* ImGuiStorage_GetBoolRef(ImGuiStorage* self,ImGuiID key,bool default_val) { return self->GetBoolRef(key,default_val); } -CIMGUI_API float* ImGuiStorage_GetFloatRef(ImGuiStorage* self,ImGuiID key,float default_val) +CIMGUI_API float* ImGuiStorage_GetFloatRef(ImGuiStorage* self,ImGuiID key,float default_val) { return self->GetFloatRef(key,default_val); } -CIMGUI_API void** ImGuiStorage_GetVoidPtrRef(ImGuiStorage* self,ImGuiID key,void* default_val) +CIMGUI_API void** ImGuiStorage_GetVoidPtrRef(ImGuiStorage* self,ImGuiID key,void* default_val) { return self->GetVoidPtrRef(key,default_val); } -CIMGUI_API void ImGuiStorage_SetAllInt(ImGuiStorage* self,int val) +CIMGUI_API void ImGuiStorage_SetAllInt(ImGuiStorage* self,int val) { return self->SetAllInt(val); } -CIMGUI_API void ImGuiStorage_BuildSortByKey(ImGuiStorage* self) +CIMGUI_API void ImGuiStorage_BuildSortByKey(ImGuiStorage* self) { return self->BuildSortByKey(); } -CIMGUI_API void ImGuiTextEditCallbackData_DeleteChars(ImGuiTextEditCallbackData* self,int pos,int bytes_count) +CIMGUI_API void ImGuiTextEditCallbackData_DeleteChars(ImGuiTextEditCallbackData* self,int pos,int bytes_count) { return self->DeleteChars(pos,bytes_count); } -CIMGUI_API void ImGuiTextEditCallbackData_InsertChars(ImGuiTextEditCallbackData* self,int pos,const char* text,const char* text_end) +CIMGUI_API void ImGuiTextEditCallbackData_InsertChars(ImGuiTextEditCallbackData* self,int pos,const char* text,const char* text_end) { return self->InsertChars(pos,text,text_end); } -CIMGUI_API bool ImGuiTextEditCallbackData_HasSelection(ImGuiTextEditCallbackData* self) +CIMGUI_API bool ImGuiTextEditCallbackData_HasSelection(ImGuiTextEditCallbackData* self) { return self->HasSelection(); } -CIMGUI_API void ImGuiPayload_Clear(ImGuiPayload* self) +CIMGUI_API void ImGuiPayload_Clear(ImGuiPayload* self) { return self->Clear(); } -CIMGUI_API bool ImGuiPayload_IsDataType(ImGuiPayload* self,const char* type) +CIMGUI_API bool ImGuiPayload_IsDataType(ImGuiPayload* self,const char* type) { return self->IsDataType(type); } -CIMGUI_API bool ImGuiPayload_IsPreview(ImGuiPayload* self) +CIMGUI_API bool ImGuiPayload_IsPreview(ImGuiPayload* self) { return self->IsPreview(); } -CIMGUI_API bool ImGuiPayload_IsDelivery(ImGuiPayload* self) +CIMGUI_API bool ImGuiPayload_IsDelivery(ImGuiPayload* self) { return self->IsDelivery(); } -CIMGUI_API inline void ImColor_SetHSV(ImColor* self,float h,float s,float v,float a) +CIMGUI_API inline void ImColor_SetHSV(ImColor* self,float h,float s,float v,float a) { return self->SetHSV(h,s,v,a); } -CIMGUI_API ImColor ImColor_HSV(ImColor* self,float h,float s,float v,float a) +CIMGUI_API ImColor ImColor_HSV(ImColor* self,float h,float s,float v,float a) { return self->HSV(h,s,v,a); } -CIMGUI_API bool ImGuiListClipper_Step(ImGuiListClipper* self) +CIMGUI_API bool ImGuiListClipper_Step(ImGuiListClipper* self) { return self->Step(); } -CIMGUI_API void ImGuiListClipper_Begin(ImGuiListClipper* self,int items_count,float items_height) +CIMGUI_API void ImGuiListClipper_Begin(ImGuiListClipper* self,int items_count,float items_height) { return self->Begin(items_count,items_height); } -CIMGUI_API void ImGuiListClipper_End(ImGuiListClipper* self) +CIMGUI_API void ImGuiListClipper_End(ImGuiListClipper* self) { return self->End(); } -CIMGUI_API void ImDrawList_PushClipRect(ImDrawList* self,ImVec2 clip_rect_min,ImVec2 clip_rect_max,bool intersect_with_current_clip_rect) +CIMGUI_API void ImDrawList_PushClipRect(ImDrawList* self,ImVec2 clip_rect_min,ImVec2 clip_rect_max,bool intersect_with_current_clip_rect) { return self->PushClipRect(clip_rect_min,clip_rect_max,intersect_with_current_clip_rect); } -CIMGUI_API void ImDrawList_PushClipRectFullScreen(ImDrawList* self) +CIMGUI_API void ImDrawList_PushClipRectFullScreen(ImDrawList* self) { return self->PushClipRectFullScreen(); } -CIMGUI_API void ImDrawList_PopClipRect(ImDrawList* self) +CIMGUI_API void ImDrawList_PopClipRect(ImDrawList* self) { return self->PopClipRect(); } -CIMGUI_API void ImDrawList_PushTextureID(ImDrawList* self,ImTextureID texture_id) +CIMGUI_API void ImDrawList_PushTextureID(ImDrawList* self,ImTextureID texture_id) { return self->PushTextureID(texture_id); } -CIMGUI_API void ImDrawList_PopTextureID(ImDrawList* self) +CIMGUI_API void ImDrawList_PopTextureID(ImDrawList* self) { return self->PopTextureID(); } -CIMGUI_API inline ImVec2 ImDrawList_GetClipRectMin(ImDrawList* self) +CIMGUI_API inline ImVec2 ImDrawList_GetClipRectMin(ImDrawList* self) { return self->GetClipRectMin(); } -CIMGUI_API inline ImVec2 ImDrawList_GetClipRectMax(ImDrawList* self) +CIMGUI_API inline ImVec2 ImDrawList_GetClipRectMax(ImDrawList* self) { return self->GetClipRectMax(); } -CIMGUI_API void ImDrawList_AddLine(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col,float thickness) +CIMGUI_API void ImDrawList_AddLine(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col,float thickness) { return self->AddLine(a,b,col,thickness); } -CIMGUI_API void ImDrawList_AddRect(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col,float rounding,int rounding_corners_flags,float thickness) +CIMGUI_API void ImDrawList_AddRect(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col,float rounding,int rounding_corners_flags,float thickness) { return self->AddRect(a,b,col,rounding,rounding_corners_flags,thickness); } -CIMGUI_API void ImDrawList_AddRectFilled(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col,float rounding,int rounding_corners_flags) +CIMGUI_API void ImDrawList_AddRectFilled(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col,float rounding,int rounding_corners_flags) { return self->AddRectFilled(a,b,col,rounding,rounding_corners_flags); } -CIMGUI_API void ImDrawList_AddRectFilledMultiColor(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col_upr_left,ImU32 col_upr_right,ImU32 col_bot_right,ImU32 col_bot_left) +CIMGUI_API void ImDrawList_AddRectFilledMultiColor(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col_upr_left,ImU32 col_upr_right,ImU32 col_bot_right,ImU32 col_bot_left) { return self->AddRectFilledMultiColor(a,b,col_upr_left,col_upr_right,col_bot_right,col_bot_left); } -CIMGUI_API void ImDrawList_AddQuad(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 c,const ImVec2 d,ImU32 col,float thickness) +CIMGUI_API void ImDrawList_AddQuad(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 c,const ImVec2 d,ImU32 col,float thickness) { return self->AddQuad(a,b,c,d,col,thickness); } -CIMGUI_API void ImDrawList_AddQuadFilled(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 c,const ImVec2 d,ImU32 col) +CIMGUI_API void ImDrawList_AddQuadFilled(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 c,const ImVec2 d,ImU32 col) { return self->AddQuadFilled(a,b,c,d,col); } -CIMGUI_API void ImDrawList_AddTriangle(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 c,ImU32 col,float thickness) +CIMGUI_API void ImDrawList_AddTriangle(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 c,ImU32 col,float thickness) { return self->AddTriangle(a,b,c,col,thickness); } -CIMGUI_API void ImDrawList_AddTriangleFilled(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 c,ImU32 col) +CIMGUI_API void ImDrawList_AddTriangleFilled(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 c,ImU32 col) { return self->AddTriangleFilled(a,b,c,col); } -CIMGUI_API void ImDrawList_AddCircle(ImDrawList* self,const ImVec2 centre,float radius,ImU32 col,int num_segments,float thickness) +CIMGUI_API void ImDrawList_AddCircle(ImDrawList* self,const ImVec2 centre,float radius,ImU32 col,int num_segments,float thickness) { return self->AddCircle(centre,radius,col,num_segments,thickness); } -CIMGUI_API void ImDrawList_AddCircleFilled(ImDrawList* self,const ImVec2 centre,float radius,ImU32 col,int num_segments) +CIMGUI_API void ImDrawList_AddCircleFilled(ImDrawList* self,const ImVec2 centre,float radius,ImU32 col,int num_segments) { return self->AddCircleFilled(centre,radius,col,num_segments); } -CIMGUI_API void ImDrawList_AddText(ImDrawList* self,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end) +CIMGUI_API void ImDrawList_AddText(ImDrawList* self,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end) { return self->AddText(pos,col,text_begin,text_end); } -CIMGUI_API void ImDrawList_AddTextFontPtr(ImDrawList* self,const ImFont* font,float font_size,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end,float wrap_width,const ImVec4* cpu_fine_clip_rect) +CIMGUI_API void ImDrawList_AddTextFontPtr(ImDrawList* self,const ImFont* font,float font_size,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end,float wrap_width,const ImVec4* cpu_fine_clip_rect) { return self->AddText(font,font_size,pos,col,text_begin,text_end,wrap_width,cpu_fine_clip_rect); } -CIMGUI_API void ImDrawList_AddImage(ImDrawList* self,ImTextureID user_texture_id,const ImVec2 a,const ImVec2 b,const ImVec2 uv_a,const ImVec2 uv_b,ImU32 col) +CIMGUI_API void ImDrawList_AddImage(ImDrawList* self,ImTextureID user_texture_id,const ImVec2 a,const ImVec2 b,const ImVec2 uv_a,const ImVec2 uv_b,ImU32 col) { return self->AddImage(user_texture_id,a,b,uv_a,uv_b,col); } -CIMGUI_API void ImDrawList_AddImageQuad(ImDrawList* self,ImTextureID user_texture_id,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) +CIMGUI_API void ImDrawList_AddImageQuad(ImDrawList* self,ImTextureID user_texture_id,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) { return self->AddImageQuad(user_texture_id,a,b,c,d,uv_a,uv_b,uv_c,uv_d,col); } -CIMGUI_API void ImDrawList_AddImageRounded(ImDrawList* self,ImTextureID user_texture_id,const ImVec2 a,const ImVec2 b,const ImVec2 uv_a,const ImVec2 uv_b,ImU32 col,float rounding,int rounding_corners) +CIMGUI_API void ImDrawList_AddImageRounded(ImDrawList* self,ImTextureID user_texture_id,const ImVec2 a,const ImVec2 b,const ImVec2 uv_a,const ImVec2 uv_b,ImU32 col,float rounding,int rounding_corners) { return self->AddImageRounded(user_texture_id,a,b,uv_a,uv_b,col,rounding,rounding_corners); } -CIMGUI_API void ImDrawList_AddPolyline(ImDrawList* self,const ImVec2* points,const int num_points,ImU32 col,bool closed,float thickness) +CIMGUI_API void ImDrawList_AddPolyline(ImDrawList* self,const ImVec2* points,const int num_points,ImU32 col,bool closed,float thickness) { return self->AddPolyline(points,num_points,col,closed,thickness); } -CIMGUI_API void ImDrawList_AddConvexPolyFilled(ImDrawList* self,const ImVec2* points,const int num_points,ImU32 col) +CIMGUI_API void ImDrawList_AddConvexPolyFilled(ImDrawList* self,const ImVec2* points,const int num_points,ImU32 col) { return self->AddConvexPolyFilled(points,num_points,col); } -CIMGUI_API void ImDrawList_AddBezierCurve(ImDrawList* self,const ImVec2 pos0,const ImVec2 cp0,const ImVec2 cp1,const ImVec2 pos1,ImU32 col,float thickness,int num_segments) +CIMGUI_API void ImDrawList_AddBezierCurve(ImDrawList* self,const ImVec2 pos0,const ImVec2 cp0,const ImVec2 cp1,const ImVec2 pos1,ImU32 col,float thickness,int num_segments) { return self->AddBezierCurve(pos0,cp0,cp1,pos1,col,thickness,num_segments); } -CIMGUI_API inline void ImDrawList_PathClear(ImDrawList* self) +CIMGUI_API inline void ImDrawList_PathClear(ImDrawList* self) { return self->PathClear(); } -CIMGUI_API inline void ImDrawList_PathLineTo(ImDrawList* self,const ImVec2 pos) +CIMGUI_API inline void ImDrawList_PathLineTo(ImDrawList* self,const ImVec2 pos) { return self->PathLineTo(pos); } -CIMGUI_API inline void ImDrawList_PathLineToMergeDuplicate(ImDrawList* self,const ImVec2 pos) +CIMGUI_API inline void ImDrawList_PathLineToMergeDuplicate(ImDrawList* self,const ImVec2 pos) { return self->PathLineToMergeDuplicate(pos); } -CIMGUI_API inline void ImDrawList_PathFillConvex(ImDrawList* self,ImU32 col) +CIMGUI_API inline void ImDrawList_PathFillConvex(ImDrawList* self,ImU32 col) { return self->PathFillConvex(col); } -CIMGUI_API inline void ImDrawList_PathStroke(ImDrawList* self,ImU32 col,bool closed,float thickness) +CIMGUI_API inline void ImDrawList_PathStroke(ImDrawList* self,ImU32 col,bool closed,float thickness) { return self->PathStroke(col,closed,thickness); } -CIMGUI_API void ImDrawList_PathArcTo(ImDrawList* self,const ImVec2 centre,float radius,float a_min,float a_max,int num_segments) +CIMGUI_API void ImDrawList_PathArcTo(ImDrawList* self,const ImVec2 centre,float radius,float a_min,float a_max,int num_segments) { return self->PathArcTo(centre,radius,a_min,a_max,num_segments); } -CIMGUI_API void ImDrawList_PathArcToFast(ImDrawList* self,const ImVec2 centre,float radius,int a_min_of_12,int a_max_of_12) +CIMGUI_API void ImDrawList_PathArcToFast(ImDrawList* self,const ImVec2 centre,float radius,int a_min_of_12,int a_max_of_12) { return self->PathArcToFast(centre,radius,a_min_of_12,a_max_of_12); } -CIMGUI_API void ImDrawList_PathBezierCurveTo(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,int num_segments) +CIMGUI_API void ImDrawList_PathBezierCurveTo(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,int num_segments) { return self->PathBezierCurveTo(p1,p2,p3,num_segments); } -CIMGUI_API void ImDrawList_PathRect(ImDrawList* self,const ImVec2 rect_min,const ImVec2 rect_max,float rounding,int rounding_corners_flags) +CIMGUI_API void ImDrawList_PathRect(ImDrawList* self,const ImVec2 rect_min,const ImVec2 rect_max,float rounding,int rounding_corners_flags) { return self->PathRect(rect_min,rect_max,rounding,rounding_corners_flags); } -CIMGUI_API void ImDrawList_ChannelsSplit(ImDrawList* self,int channels_count) +CIMGUI_API void ImDrawList_ChannelsSplit(ImDrawList* self,int channels_count) { return self->ChannelsSplit(channels_count); } -CIMGUI_API void ImDrawList_ChannelsMerge(ImDrawList* self) +CIMGUI_API void ImDrawList_ChannelsMerge(ImDrawList* self) { return self->ChannelsMerge(); } -CIMGUI_API void ImDrawList_ChannelsSetCurrent(ImDrawList* self,int channel_index) +CIMGUI_API void ImDrawList_ChannelsSetCurrent(ImDrawList* self,int channel_index) { return self->ChannelsSetCurrent(channel_index); } -CIMGUI_API void ImDrawList_AddCallback(ImDrawList* self,ImDrawCallback callback,void* callback_data) +CIMGUI_API void ImDrawList_AddCallback(ImDrawList* self,ImDrawCallback callback,void* callback_data) { return self->AddCallback(callback,callback_data); } -CIMGUI_API void ImDrawList_AddDrawCmd(ImDrawList* self) +CIMGUI_API void ImDrawList_AddDrawCmd(ImDrawList* self) { return self->AddDrawCmd(); } -CIMGUI_API ImDrawList* ImDrawList_CloneOutput(ImDrawList* self) +CIMGUI_API ImDrawList* ImDrawList_CloneOutput(ImDrawList* self) { return self->CloneOutput(); } -CIMGUI_API void ImDrawList_Clear(ImDrawList* self) +CIMGUI_API void ImDrawList_Clear(ImDrawList* self) { return self->Clear(); } -CIMGUI_API void ImDrawList_ClearFreeMemory(ImDrawList* self) +CIMGUI_API void ImDrawList_ClearFreeMemory(ImDrawList* self) { return self->ClearFreeMemory(); } -CIMGUI_API void ImDrawList_PrimReserve(ImDrawList* self,int idx_count,int vtx_count) +CIMGUI_API void ImDrawList_PrimReserve(ImDrawList* self,int idx_count,int vtx_count) { return self->PrimReserve(idx_count,vtx_count); } -CIMGUI_API void ImDrawList_PrimRect(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col) +CIMGUI_API void ImDrawList_PrimRect(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col) { return self->PrimRect(a,b,col); } -CIMGUI_API void ImDrawList_PrimRectUV(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 uv_a,const ImVec2 uv_b,ImU32 col) +CIMGUI_API void ImDrawList_PrimRectUV(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 uv_a,const ImVec2 uv_b,ImU32 col) { return self->PrimRectUV(a,b,uv_a,uv_b,col); } -CIMGUI_API void ImDrawList_PrimQuadUV(ImDrawList* self,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) +CIMGUI_API void ImDrawList_PrimQuadUV(ImDrawList* self,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) { return self->PrimQuadUV(a,b,c,d,uv_a,uv_b,uv_c,uv_d,col); } -CIMGUI_API inline void ImDrawList_PrimWriteVtx(ImDrawList* self,const ImVec2 pos,const ImVec2 uv,ImU32 col) +CIMGUI_API inline void ImDrawList_PrimWriteVtx(ImDrawList* self,const ImVec2 pos,const ImVec2 uv,ImU32 col) { return self->PrimWriteVtx(pos,uv,col); } -CIMGUI_API inline void ImDrawList_PrimWriteIdx(ImDrawList* self,ImDrawIdx idx) +CIMGUI_API inline void ImDrawList_PrimWriteIdx(ImDrawList* self,ImDrawIdx idx) { return self->PrimWriteIdx(idx); } -CIMGUI_API inline void ImDrawList_PrimVtx(ImDrawList* self,const ImVec2 pos,const ImVec2 uv,ImU32 col) +CIMGUI_API inline void ImDrawList_PrimVtx(ImDrawList* self,const ImVec2 pos,const ImVec2 uv,ImU32 col) { return self->PrimVtx(pos,uv,col); } -CIMGUI_API void ImDrawList_UpdateClipRect(ImDrawList* self) +CIMGUI_API void ImDrawList_UpdateClipRect(ImDrawList* self) { return self->UpdateClipRect(); } -CIMGUI_API void ImDrawList_UpdateTextureID(ImDrawList* self) +CIMGUI_API void ImDrawList_UpdateTextureID(ImDrawList* self) { return self->UpdateTextureID(); } -CIMGUI_API void ImDrawData_Clear(ImDrawData* self) +CIMGUI_API void ImDrawData_Clear(ImDrawData* self) { return self->Clear(); } -CIMGUI_API void ImDrawData_DeIndexAllBuffers(ImDrawData* self) +CIMGUI_API void ImDrawData_DeIndexAllBuffers(ImDrawData* self) { return self->DeIndexAllBuffers(); } -CIMGUI_API void ImDrawData_ScaleClipRects(ImDrawData* self,const ImVec2 sc) +CIMGUI_API void ImDrawData_ScaleClipRects(ImDrawData* self,const ImVec2 sc) { return self->ScaleClipRects(sc); } -CIMGUI_API ImFont* ImFontAtlas_AddFont(ImFontAtlas* self,const ImFontConfig* font_cfg) +CIMGUI_API ImFont* ImFontAtlas_AddFont(ImFontAtlas* self,const ImFontConfig* font_cfg) { return self->AddFont(font_cfg); } -CIMGUI_API ImFont* ImFontAtlas_AddFontDefault(ImFontAtlas* self,const ImFontConfig* font_cfg) +CIMGUI_API ImFont* ImFontAtlas_AddFontDefault(ImFontAtlas* self,const ImFontConfig* font_cfg) { return self->AddFontDefault(font_cfg); } -CIMGUI_API ImFont* ImFontAtlas_AddFontFromFileTTF(ImFontAtlas* self,const char* filename,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges) +CIMGUI_API ImFont* ImFontAtlas_AddFontFromFileTTF(ImFontAtlas* self,const char* filename,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges) { return self->AddFontFromFileTTF(filename,size_pixels,font_cfg,glyph_ranges); } -CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryTTF(ImFontAtlas* self,void* font_data,int font_size,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges) +CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryTTF(ImFontAtlas* self,void* font_data,int font_size,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges) { return self->AddFontFromMemoryTTF(font_data,font_size,size_pixels,font_cfg,glyph_ranges); } -CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryCompressedTTF(ImFontAtlas* self,const void* compressed_font_data,int compressed_font_size,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges) +CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryCompressedTTF(ImFontAtlas* self,const void* compressed_font_data,int compressed_font_size,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges) { return self->AddFontFromMemoryCompressedTTF(compressed_font_data,compressed_font_size,size_pixels,font_cfg,glyph_ranges); } -CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryCompressedBase85TTF(ImFontAtlas* self,const char* compressed_font_data_base85,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges) +CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryCompressedBase85TTF(ImFontAtlas* self,const char* compressed_font_data_base85,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges) { return self->AddFontFromMemoryCompressedBase85TTF(compressed_font_data_base85,size_pixels,font_cfg,glyph_ranges); } -CIMGUI_API void ImFontAtlas_ClearInputData(ImFontAtlas* self) +CIMGUI_API void ImFontAtlas_ClearInputData(ImFontAtlas* self) { return self->ClearInputData(); } -CIMGUI_API void ImFontAtlas_ClearTexData(ImFontAtlas* self) +CIMGUI_API void ImFontAtlas_ClearTexData(ImFontAtlas* self) { return self->ClearTexData(); } -CIMGUI_API void ImFontAtlas_ClearFonts(ImFontAtlas* self) +CIMGUI_API void ImFontAtlas_ClearFonts(ImFontAtlas* self) { return self->ClearFonts(); } -CIMGUI_API void ImFontAtlas_Clear(ImFontAtlas* self) +CIMGUI_API void ImFontAtlas_Clear(ImFontAtlas* self) { return self->Clear(); } -CIMGUI_API bool ImFontAtlas_Build(ImFontAtlas* self) +CIMGUI_API bool ImFontAtlas_Build(ImFontAtlas* self) { return self->Build(); } -CIMGUI_API bool ImFontAtlas_IsBuilt(ImFontAtlas* self) +CIMGUI_API bool ImFontAtlas_IsBuilt(ImFontAtlas* self) { return self->IsBuilt(); } -CIMGUI_API void ImFontAtlas_GetTexDataAsAlpha8(ImFontAtlas* self,unsigned char** out_pixels,int* out_width,int* out_height,int* out_bytes_per_pixel) +CIMGUI_API void ImFontAtlas_GetTexDataAsAlpha8(ImFontAtlas* self,unsigned char** out_pixels,int* out_width,int* out_height,int* out_bytes_per_pixel) { return self->GetTexDataAsAlpha8(out_pixels,out_width,out_height,out_bytes_per_pixel); } -CIMGUI_API void ImFontAtlas_GetTexDataAsRGBA32(ImFontAtlas* self,unsigned char** out_pixels,int* out_width,int* out_height,int* out_bytes_per_pixel) +CIMGUI_API void ImFontAtlas_GetTexDataAsRGBA32(ImFontAtlas* self,unsigned char** out_pixels,int* out_width,int* out_height,int* out_bytes_per_pixel) { return self->GetTexDataAsRGBA32(out_pixels,out_width,out_height,out_bytes_per_pixel); } -CIMGUI_API void ImFontAtlas_SetTexID(ImFontAtlas* self,ImTextureID id) +CIMGUI_API void ImFontAtlas_SetTexID(ImFontAtlas* self,ImTextureID id) { return self->SetTexID(id); } -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesDefault(ImFontAtlas* self) +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesDefault(ImFontAtlas* self) { return self->GetGlyphRangesDefault(); } -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesKorean(ImFontAtlas* self) +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesKorean(ImFontAtlas* self) { return self->GetGlyphRangesKorean(); } -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesJapanese(ImFontAtlas* self) +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesJapanese(ImFontAtlas* self) { return self->GetGlyphRangesJapanese(); } -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesChineseFull(ImFontAtlas* self) +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesChineseFull(ImFontAtlas* self) { return self->GetGlyphRangesChineseFull(); } -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesChineseSimplifiedCommon(ImFontAtlas* self) +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesChineseSimplifiedCommon(ImFontAtlas* self) { return self->GetGlyphRangesChineseSimplifiedCommon(); } -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesCyrillic(ImFontAtlas* self) +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesCyrillic(ImFontAtlas* self) { return self->GetGlyphRangesCyrillic(); } -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesThai(ImFontAtlas* self) +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesThai(ImFontAtlas* self) { return self->GetGlyphRangesThai(); } -CIMGUI_API bool GlyphRangesBuilder_GetBit(GlyphRangesBuilder* self,int n) +CIMGUI_API bool GlyphRangesBuilder_GetBit(GlyphRangesBuilder* self,int n) { return self->GetBit(n); } -CIMGUI_API void GlyphRangesBuilder_SetBit(GlyphRangesBuilder* self,int n) +CIMGUI_API void GlyphRangesBuilder_SetBit(GlyphRangesBuilder* self,int n) { return self->SetBit(n); } -CIMGUI_API void GlyphRangesBuilder_AddChar(GlyphRangesBuilder* self,ImWchar c) +CIMGUI_API void GlyphRangesBuilder_AddChar(GlyphRangesBuilder* self,ImWchar c) { return self->AddChar(c); } -CIMGUI_API void GlyphRangesBuilder_AddText(GlyphRangesBuilder* self,const char* text,const char* text_end) +CIMGUI_API void GlyphRangesBuilder_AddText(GlyphRangesBuilder* self,const char* text,const char* text_end) { return self->AddText(text,text_end); } -CIMGUI_API void GlyphRangesBuilder_AddRanges(GlyphRangesBuilder* self,const ImWchar* ranges) +CIMGUI_API void GlyphRangesBuilder_AddRanges(GlyphRangesBuilder* self,const ImWchar* ranges) { return self->AddRanges(ranges); } -CIMGUI_API void GlyphRangesBuilder_BuildRanges(GlyphRangesBuilder* self,ImVector_ImWchar* out_ranges) +CIMGUI_API void GlyphRangesBuilder_BuildRanges(GlyphRangesBuilder* self,ImVector_ImWchar* out_ranges) { return self->BuildRanges(out_ranges); } -CIMGUI_API bool CustomRect_IsPacked(CustomRect* self) +CIMGUI_API bool CustomRect_IsPacked(CustomRect* self) { return self->IsPacked(); } -CIMGUI_API int ImFontAtlas_AddCustomRectRegular(ImFontAtlas* self,unsigned int id,int width,int height) +CIMGUI_API int ImFontAtlas_AddCustomRectRegular(ImFontAtlas* self,unsigned int id,int width,int height) { return self->AddCustomRectRegular(id,width,height); } -CIMGUI_API int ImFontAtlas_AddCustomRectFontGlyph(ImFontAtlas* self,ImFont* font,ImWchar id,int width,int height,float advance_x,const ImVec2 offset) +CIMGUI_API int ImFontAtlas_AddCustomRectFontGlyph(ImFontAtlas* self,ImFont* font,ImWchar id,int width,int height,float advance_x,const ImVec2 offset) { return self->AddCustomRectFontGlyph(font,id,width,height,advance_x,offset); } -CIMGUI_API const CustomRect* ImFontAtlas_GetCustomRectByIndex(ImFontAtlas* self,int index) +CIMGUI_API const CustomRect* ImFontAtlas_GetCustomRectByIndex(ImFontAtlas* self,int index) { return self->GetCustomRectByIndex(index); } -CIMGUI_API void ImFontAtlas_CalcCustomRectUV(ImFontAtlas* self,const CustomRect* rect,ImVec2* out_uv_min,ImVec2* out_uv_max) +CIMGUI_API void ImFontAtlas_CalcCustomRectUV(ImFontAtlas* self,const CustomRect* rect,ImVec2* out_uv_min,ImVec2* out_uv_max) { return self->CalcCustomRectUV(rect,out_uv_min,out_uv_max); } -CIMGUI_API bool ImFontAtlas_GetMouseCursorTexData(ImFontAtlas* self,ImGuiMouseCursor cursor,ImVec2* out_offset,ImVec2* out_size,ImVec2 out_uv_border[2],ImVec2 out_uv_fill[2]) +CIMGUI_API bool ImFontAtlas_GetMouseCursorTexData(ImFontAtlas* self,ImGuiMouseCursor cursor,ImVec2* out_offset,ImVec2* out_size,ImVec2 out_uv_border[2],ImVec2 out_uv_fill[2]) { return self->GetMouseCursorTexData(cursor,out_offset,out_size,out_uv_border,out_uv_fill); } -CIMGUI_API void ImFont_ClearOutputData(ImFont* self) +CIMGUI_API void ImFont_ClearOutputData(ImFont* self) { return self->ClearOutputData(); } -CIMGUI_API void ImFont_BuildLookupTable(ImFont* self) +CIMGUI_API void ImFont_BuildLookupTable(ImFont* self) { return self->BuildLookupTable(); } @@ -1945,47 +1945,47 @@ CIMGUI_API const ImFontGlyph* ImFont_FindGlyphNoFallback(ImFont* self,ImWchar c) { return self->FindGlyphNoFallback(c); } -CIMGUI_API void ImFont_SetFallbackChar(ImFont* self,ImWchar c) +CIMGUI_API void ImFont_SetFallbackChar(ImFont* self,ImWchar c) { return self->SetFallbackChar(c); } -CIMGUI_API float ImFont_GetCharAdvance(ImFont* self,ImWchar c) +CIMGUI_API float ImFont_GetCharAdvance(ImFont* self,ImWchar c) { return self->GetCharAdvance(c); } -CIMGUI_API bool ImFont_IsLoaded(ImFont* self) +CIMGUI_API bool ImFont_IsLoaded(ImFont* self) { return self->IsLoaded(); } -CIMGUI_API const char* ImFont_GetDebugName(ImFont* self) +CIMGUI_API const char* ImFont_GetDebugName(ImFont* self) { return self->GetDebugName(); } -CIMGUI_API ImVec2 ImFont_CalcTextSizeA(ImFont* self,float size,float max_width,float wrap_width,const char* text_begin,const char* text_end,const char** remaining) +CIMGUI_API ImVec2 ImFont_CalcTextSizeA(ImFont* self,float size,float max_width,float wrap_width,const char* text_begin,const char* text_end,const char** remaining) { return self->CalcTextSizeA(size,max_width,wrap_width,text_begin,text_end,remaining); } -CIMGUI_API const char* ImFont_CalcWordWrapPositionA(ImFont* self,float scale,const char* text,const char* text_end,float wrap_width) +CIMGUI_API const char* ImFont_CalcWordWrapPositionA(ImFont* self,float scale,const char* text,const char* text_end,float wrap_width) { return self->CalcWordWrapPositionA(scale,text,text_end,wrap_width); } -CIMGUI_API void ImFont_RenderChar(ImFont* self,ImDrawList* draw_list,float size,ImVec2 pos,ImU32 col,unsigned short c) +CIMGUI_API void ImFont_RenderChar(ImFont* self,ImDrawList* draw_list,float size,ImVec2 pos,ImU32 col,unsigned short c) { return self->RenderChar(draw_list,size,pos,col,c); } -CIMGUI_API void ImFont_RenderText(ImFont* self,ImDrawList* draw_list,float size,ImVec2 pos,ImU32 col,const ImVec4 clip_rect,const char* text_begin,const char* text_end,float wrap_width,bool cpu_fine_clip) +CIMGUI_API void ImFont_RenderText(ImFont* self,ImDrawList* draw_list,float size,ImVec2 pos,ImU32 col,const ImVec4 clip_rect,const char* text_begin,const char* text_end,float wrap_width,bool cpu_fine_clip) { return self->RenderText(draw_list,size,pos,col,clip_rect,text_begin,text_end,wrap_width,cpu_fine_clip); } -CIMGUI_API void ImFont_GrowIndex(ImFont* self,int new_size) +CIMGUI_API void ImFont_GrowIndex(ImFont* self,int new_size) { return self->GrowIndex(new_size); } -CIMGUI_API void ImFont_AddGlyph(ImFont* self,ImWchar c,float x0,float y0,float x1,float y1,float u0,float v0,float u1,float v1,float advance_x) +CIMGUI_API void ImFont_AddGlyph(ImFont* self,ImWchar c,float x0,float y0,float x1,float y1,float u0,float v0,float u1,float v1,float advance_x) { return self->AddGlyph(c,x0,y0,x1,y1,u0,v0,u1,v1,advance_x); } -CIMGUI_API void ImFont_AddRemapChar(ImFont* self,ImWchar dst,ImWchar src,bool overwrite_dst) +CIMGUI_API void ImFont_AddRemapChar(ImFont* self,ImWchar dst,ImWchar src,bool overwrite_dst) { return self->AddRemapChar(dst,src,overwrite_dst); } diff --git a/cimgui.h b/cimgui.h index f4094d5..93ad2f3 100644 --- a/cimgui.h +++ b/cimgui.h @@ -36,8 +36,7 @@ typedef unsigned long long ImU64; //struct SDL_Window; #ifdef CIMGUI_DEFINE_ENUMS_AND_STRUCTS -/////////////// BEGIN AUTOGENERATED SEGMENT -typedef struct ImFont ImFont; +typedef unsigned short ImDrawIdx;typedef struct ImFont ImFont; typedef struct ImFontAtlas ImFontAtlas; typedef struct CustomRect CustomRect; typedef struct GlyphRangesBuilder GlyphRangesBuilder; @@ -83,7 +82,7 @@ typedef struct ImDrawList ImDrawList; typedef struct ImDrawData ImDrawData; typedef struct ImDrawCmd ImDrawCmd; typedef struct ImDrawChannel ImDrawChannel; -typedef unsigned short ImDrawIdx;typedef void* ImTextureID;// dear imgui, v1.62 WIP +typedef void* ImTextureID;// dear imgui, v1.63 WIP // (headers) // See imgui.cpp file for documentation. // Call and read ImGui::ShowDemoWindow() in imgui_demo.cpp for demo code. @@ -1021,7 +1020,6 @@ struct ImFont ImGuiID key; union { int val_i; float val_f; void* val_p; }; }; -//////////////// END AUTOGENERATED SEGMENT #else struct GLFWwindow; @@ -1043,400 +1041,400 @@ typedef ImVector ImVector_ImWchar; // Context creation and access // Each context create its own ImFontAtlas by default. You may instance one yourself and pass it to CreateContext() to share a font atlas between imgui contexts. // All those functions are not reliant on the current context. -CIMGUI_API ImGuiContext* igCreateContext(ImFontAtlas* shared_font_atlas); -CIMGUI_API void igDestroyContext(ImGuiContext* ctx); // NULL = destroy current context -CIMGUI_API ImGuiContext* igGetCurrentContext(); -CIMGUI_API void igSetCurrentContext(ImGuiContext* ctx); -CIMGUI_API bool igDebugCheckVersionAndDataLayout(const char* version_str,size_t sz_io,size_t sz_style,size_t sz_vec2,size_t sz_vec4,size_t sz_drawvert); +CIMGUI_API ImGuiContext* igCreateContext(ImFontAtlas* shared_font_atlas); +CIMGUI_API void igDestroyContext(ImGuiContext* ctx); // NULL = destroy current context +CIMGUI_API ImGuiContext* igGetCurrentContext(); +CIMGUI_API void igSetCurrentContext(ImGuiContext* ctx); +CIMGUI_API bool igDebugCheckVersionAndDataLayout(const char* version_str,size_t sz_io,size_t sz_style,size_t sz_vec2,size_t sz_vec4,size_t sz_drawvert); // Main -CIMGUI_API ImGuiIO* igGetIO(); // access the IO structure (mouse/keyboard/gamepad inputs, time, various configuration options/flags) -CIMGUI_API ImGuiStyle* igGetStyle(); // access the Style structure (colors, sizes). Always use PushStyleCol(), PushStyleVar() to modify style mid-frame. -CIMGUI_API void igNewFrame(); // start a new ImGui frame, you can submit any command from this point until Render()/EndFrame(). -CIMGUI_API void igEndFrame(); // ends the ImGui frame. automatically called by Render(), you likely don't need to call that yourself directly. If you don't need to render data (skipping rendering) you may call EndFrame() but you'll have wasted CPU already! If you don't need to render, better to not create any imgui windows and not call NewFrame() at all! -CIMGUI_API void igRender(); // ends the ImGui frame, finalize the draw data. (Obsolete: optionally call io.RenderDrawListsFn if set. Nowadays, prefer calling your render function yourself.) -CIMGUI_API ImDrawData* igGetDrawData(); // valid after Render() and until the next call to NewFrame(). this is what you have to render. (Obsolete: this used to be passed to your io.RenderDrawListsFn() function.) +CIMGUI_API ImGuiIO* igGetIO(); // access the IO structure (mouse/keyboard/gamepad inputs, time, various configuration options/flags) +CIMGUI_API ImGuiStyle* igGetStyle(); // access the Style structure (colors, sizes). Always use PushStyleCol(), PushStyleVar() to modify style mid-frame. +CIMGUI_API void igNewFrame(); // start a new ImGui frame, you can submit any command from this point until Render()/EndFrame(). +CIMGUI_API void igEndFrame(); // ends the ImGui frame. automatically called by Render(), you likely don't need to call that yourself directly. If you don't need to render data (skipping rendering) you may call EndFrame() but you'll have wasted CPU already! If you don't need to render, better to not create any imgui windows and not call NewFrame() at all! +CIMGUI_API void igRender(); // ends the ImGui frame, finalize the draw data. (Obsolete: optionally call io.RenderDrawListsFn if set. Nowadays, prefer calling your render function yourself.) +CIMGUI_API ImDrawData* igGetDrawData(); // valid after Render() and until the next call to NewFrame(). this is what you have to render. (Obsolete: this used to be passed to your io.RenderDrawListsFn() function.) // Demo, Debug, Information -CIMGUI_API void igShowDemoWindow(bool* p_open); // create demo/test window (previously called ShowTestWindow). demonstrate most ImGui features. call this to learn about the library! try to make it always available in your application! -CIMGUI_API void igShowMetricsWindow(bool* p_open); // create metrics window. display ImGui internals: draw commands (with individual draw calls and vertices), window list, basic internal state, etc. -CIMGUI_API void igShowStyleEditor(ImGuiStyle* ref); // 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) -CIMGUI_API bool igShowStyleSelector(const char* label); // add style selector block (not a window), essentially a combo listing the default styles. -CIMGUI_API void igShowFontSelector(const char* label); // add font selector block (not a window), essentially a combo listing the loaded fonts. -CIMGUI_API void igShowUserGuide(); // add basic help/info block (not a window): how to manipulate ImGui as a end-user (mouse/keyboard controls). -CIMGUI_API const char* igGetVersion(); // get a version string e.g. "1.23" +CIMGUI_API void igShowDemoWindow(bool* p_open); // create demo/test window (previously called ShowTestWindow). demonstrate most ImGui features. call this to learn about the library! try to make it always available in your application! +CIMGUI_API void igShowMetricsWindow(bool* p_open); // create metrics window. display ImGui internals: draw commands (with individual draw calls and vertices), window list, basic internal state, etc. +CIMGUI_API void igShowStyleEditor(ImGuiStyle* ref); // 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) +CIMGUI_API bool igShowStyleSelector(const char* label); // add style selector block (not a window), essentially a combo listing the default styles. +CIMGUI_API void igShowFontSelector(const char* label); // add font selector block (not a window), essentially a combo listing the loaded fonts. +CIMGUI_API void igShowUserGuide(); // add basic help/info block (not a window): how to manipulate ImGui as a end-user (mouse/keyboard controls). +CIMGUI_API const char* igGetVersion(); // get a version string e.g. "1.23" // Styles -CIMGUI_API void igStyleColorsDark(ImGuiStyle* dst); // new, recommended style (default) -CIMGUI_API void igStyleColorsClassic(ImGuiStyle* dst); // classic imgui style -CIMGUI_API void igStyleColorsLight(ImGuiStyle* dst); // best used with borders and a custom, thicker font +CIMGUI_API void igStyleColorsDark(ImGuiStyle* dst); // new, recommended style (default) +CIMGUI_API void igStyleColorsClassic(ImGuiStyle* dst); // classic imgui style +CIMGUI_API void igStyleColorsLight(ImGuiStyle* dst); // best used with borders and a custom, thicker font // Windows // (Begin = push window to the stack and start appending to it. End = pop window from the stack. You may append multiple times to the same window during the same frame) // Begin()/BeginChild() return false to indicate the window being collapsed or fully clipped, so you may early out and omit submitting anything to the window. // You need to always call a matching End()/EndChild() for a Begin()/BeginChild() call, regardless of its return value (this is due to legacy reason and is inconsistent with BeginMenu/EndMenu, BeginPopup/EndPopup and other functions where the End call should only be called if the corresponding Begin function returned true.) // Passing 'bool* p_open != NULL' shows a close widget in the upper-right corner of the window, which when clicking will set the boolean to false. // Use child windows to introduce independent scrolling/clipping regions within a host window. Child windows can embed their own child. -CIMGUI_API bool igBegin(const char* name,bool* p_open,ImGuiWindowFlags flags); -CIMGUI_API void igEnd(); -CIMGUI_API bool igBeginChild(const char* str_id,const ImVec2 size,bool border,ImGuiWindowFlags flags); // Begin a scrolling region. size==0.0f: use remaining window size, size<0.0f: use remaining window size minus abs(size). size>0.0f: fixed size. each axis can use a different mode, e.g. ImVec2(0,400). -CIMGUI_API bool igBeginChildID(ImGuiID id,const ImVec2 size,bool border,ImGuiWindowFlags flags); -CIMGUI_API void igEndChild(); +CIMGUI_API bool igBegin(const char* name,bool* p_open,ImGuiWindowFlags flags); +CIMGUI_API void igEnd(); +CIMGUI_API bool igBeginChild(const char* str_id,const ImVec2 size,bool border,ImGuiWindowFlags flags); // Begin a scrolling region. size==0.0f: use remaining window size, size<0.0f: use remaining window size minus abs(size). size>0.0f: fixed size. each axis can use a different mode, e.g. ImVec2(0,400). +CIMGUI_API bool igBeginChildID(ImGuiID id,const ImVec2 size,bool border,ImGuiWindowFlags flags); +CIMGUI_API void igEndChild(); // Windows Utilities -CIMGUI_API bool igIsWindowAppearing(); -CIMGUI_API bool igIsWindowCollapsed(); -CIMGUI_API bool igIsWindowFocused(ImGuiFocusedFlags flags); // is current window focused? or its root/child, depending on flags. see flags for options. -CIMGUI_API bool igIsWindowHovered(ImGuiHoveredFlags flags); // 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! -CIMGUI_API ImDrawList* igGetWindowDrawList(); // get draw list associated to the window, to append your own drawing primitives -CIMGUI_API ImVec2 igGetWindowPos(); // get current window position in screen space (useful if you want to do your own drawing via the DrawList API) -CIMGUI_API ImVec2 igGetWindowSize(); // get current window size -CIMGUI_API float igGetWindowWidth(); // get current window width (shortcut for GetWindowSize().x) -CIMGUI_API float igGetWindowHeight(); // get current window height (shortcut for GetWindowSize().y) -CIMGUI_API ImVec2 igGetContentRegionMax(); // current content boundaries (typically window boundaries including scrolling, or current column boundaries), in windows coordinates -CIMGUI_API ImVec2 igGetContentRegionAvail(); // == GetContentRegionMax() - GetCursorPos() -CIMGUI_API float igGetContentRegionAvailWidth(); // -CIMGUI_API ImVec2 igGetWindowContentRegionMin(); // content boundaries min (roughly (0,0)-Scroll), in window coordinates -CIMGUI_API ImVec2 igGetWindowContentRegionMax(); // content boundaries max (roughly (0,0)+Size-Scroll) where Size can be override with SetNextWindowContentSize(), in window coordinates -CIMGUI_API float igGetWindowContentRegionWidth(); // -CIMGUI_API void igSetNextWindowPos(const ImVec2 pos,ImGuiCond cond,const ImVec2 pivot); // set next window position. call before Begin(). use pivot=(0.5f,0.5f) to center on given point, etc. -CIMGUI_API void igSetNextWindowSize(const ImVec2 size,ImGuiCond cond); // set next window size. set axis to 0.0f to force an auto-fit on this axis. call before Begin() -CIMGUI_API void igSetNextWindowSizeConstraints(const ImVec2 size_min,const ImVec2 size_max,ImGuiSizeCallback custom_callback,void* custom_callback_data); // set next window size limits. use -1,-1 on either X/Y axis to preserve the current size. Use callback to apply non-trivial programmatic constraints. -CIMGUI_API void igSetNextWindowContentSize(const ImVec2 size); // set next window content size (~ enforce the range of scrollbars). not including window decorations (title bar, menu bar, etc.). set an axis to 0.0f to leave it automatic. call before Begin() -CIMGUI_API void igSetNextWindowCollapsed(bool collapsed,ImGuiCond cond); // set next window collapsed state. call before Begin() -CIMGUI_API void igSetNextWindowFocus(); // set next window to be focused / front-most. call before Begin() -CIMGUI_API void igSetNextWindowBgAlpha(float alpha); // set next window background color alpha. helper to easily modify ImGuiCol_WindowBg/ChildBg/PopupBg. -CIMGUI_API void igSetWindowPosVec2(const ImVec2 pos,ImGuiCond cond); // (not recommended) set current window position - call within Begin()/End(). prefer using SetNextWindowPos(), as this may incur tearing and side-effects. -CIMGUI_API void igSetWindowSizeVec2(const ImVec2 size,ImGuiCond cond); // (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. -CIMGUI_API void igSetWindowCollapsedBool(bool collapsed,ImGuiCond cond); // (not recommended) set current window collapsed state. prefer using SetNextWindowCollapsed(). -CIMGUI_API void igSetWindowFocus(); // (not recommended) set current window to be focused / front-most. prefer using SetNextWindowFocus(). -CIMGUI_API void igSetWindowFontScale(float scale); // set font scale. Adjust IO.FontGlobalScale if you want to scale all windows -CIMGUI_API void igSetWindowPosStr(const char* name,const ImVec2 pos,ImGuiCond cond); // set named window position. -CIMGUI_API void igSetWindowSizeStr(const char* name,const ImVec2 size,ImGuiCond cond); // set named window size. set axis to 0.0f to force an auto-fit on this axis. -CIMGUI_API void igSetWindowCollapsedStr(const char* name,bool collapsed,ImGuiCond cond); // set named window collapsed state -CIMGUI_API void igSetWindowFocusStr(const char* name); // set named window to be focused / front-most. use NULL to remove focus. +CIMGUI_API bool igIsWindowAppearing(); +CIMGUI_API bool igIsWindowCollapsed(); +CIMGUI_API bool igIsWindowFocused(ImGuiFocusedFlags flags); // is current window focused? or its root/child, depending on flags. see flags for options. +CIMGUI_API bool igIsWindowHovered(ImGuiHoveredFlags flags); // 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! +CIMGUI_API ImDrawList* igGetWindowDrawList(); // get draw list associated to the window, to append your own drawing primitives +CIMGUI_API ImVec2 igGetWindowPos(); // get current window position in screen space (useful if you want to do your own drawing via the DrawList API) +CIMGUI_API ImVec2 igGetWindowSize(); // get current window size +CIMGUI_API float igGetWindowWidth(); // get current window width (shortcut for GetWindowSize().x) +CIMGUI_API float igGetWindowHeight(); // get current window height (shortcut for GetWindowSize().y) +CIMGUI_API ImVec2 igGetContentRegionMax(); // current content boundaries (typically window boundaries including scrolling, or current column boundaries), in windows coordinates +CIMGUI_API ImVec2 igGetContentRegionAvail(); // == GetContentRegionMax() - GetCursorPos() +CIMGUI_API float igGetContentRegionAvailWidth(); // +CIMGUI_API ImVec2 igGetWindowContentRegionMin(); // content boundaries min (roughly (0,0)-Scroll), in window coordinates +CIMGUI_API ImVec2 igGetWindowContentRegionMax(); // content boundaries max (roughly (0,0)+Size-Scroll) where Size can be override with SetNextWindowContentSize(), in window coordinates +CIMGUI_API float igGetWindowContentRegionWidth(); // +CIMGUI_API void igSetNextWindowPos(const ImVec2 pos,ImGuiCond cond,const ImVec2 pivot); // set next window position. call before Begin(). use pivot=(0.5f,0.5f) to center on given point, etc. +CIMGUI_API void igSetNextWindowSize(const ImVec2 size,ImGuiCond cond); // set next window size. set axis to 0.0f to force an auto-fit on this axis. call before Begin() +CIMGUI_API void igSetNextWindowSizeConstraints(const ImVec2 size_min,const ImVec2 size_max,ImGuiSizeCallback custom_callback,void* custom_callback_data); // set next window size limits. use -1,-1 on either X/Y axis to preserve the current size. Use callback to apply non-trivial programmatic constraints. +CIMGUI_API void igSetNextWindowContentSize(const ImVec2 size); // set next window content size (~ enforce the range of scrollbars). not including window decorations (title bar, menu bar, etc.). set an axis to 0.0f to leave it automatic. call before Begin() +CIMGUI_API void igSetNextWindowCollapsed(bool collapsed,ImGuiCond cond); // set next window collapsed state. call before Begin() +CIMGUI_API void igSetNextWindowFocus(); // set next window to be focused / front-most. call before Begin() +CIMGUI_API void igSetNextWindowBgAlpha(float alpha); // set next window background color alpha. helper to easily modify ImGuiCol_WindowBg/ChildBg/PopupBg. +CIMGUI_API void igSetWindowPosVec2(const ImVec2 pos,ImGuiCond cond); // (not recommended) set current window position - call within Begin()/End(). prefer using SetNextWindowPos(), as this may incur tearing and side-effects. +CIMGUI_API void igSetWindowSizeVec2(const ImVec2 size,ImGuiCond cond); // (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. +CIMGUI_API void igSetWindowCollapsedBool(bool collapsed,ImGuiCond cond); // (not recommended) set current window collapsed state. prefer using SetNextWindowCollapsed(). +CIMGUI_API void igSetWindowFocus(); // (not recommended) set current window to be focused / front-most. prefer using SetNextWindowFocus(). +CIMGUI_API void igSetWindowFontScale(float scale); // set font scale. Adjust IO.FontGlobalScale if you want to scale all windows +CIMGUI_API void igSetWindowPosStr(const char* name,const ImVec2 pos,ImGuiCond cond); // set named window position. +CIMGUI_API void igSetWindowSizeStr(const char* name,const ImVec2 size,ImGuiCond cond); // set named window size. set axis to 0.0f to force an auto-fit on this axis. +CIMGUI_API void igSetWindowCollapsedStr(const char* name,bool collapsed,ImGuiCond cond); // set named window collapsed state +CIMGUI_API void igSetWindowFocusStr(const char* name); // set named window to be focused / front-most. use NULL to remove focus. // Windows Scrolling -CIMGUI_API float igGetScrollX(); // get scrolling amount [0..GetScrollMaxX()] -CIMGUI_API float igGetScrollY(); // get scrolling amount [0..GetScrollMaxY()] -CIMGUI_API float igGetScrollMaxX(); // get maximum scrolling amount ~~ ContentSize.X - WindowSize.X -CIMGUI_API float igGetScrollMaxY(); // get maximum scrolling amount ~~ ContentSize.Y - WindowSize.Y -CIMGUI_API void igSetScrollX(float scroll_x); // set scrolling amount [0..GetScrollMaxX()] -CIMGUI_API void igSetScrollY(float scroll_y); // set scrolling amount [0..GetScrollMaxY()] -CIMGUI_API void igSetScrollHere(float center_y_ratio); // 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. -CIMGUI_API void igSetScrollFromPosY(float pos_y,float center_y_ratio); // adjust scrolling amount to make given position valid. use GetCursorPos() or GetCursorStartPos()+offset to get valid positions. +CIMGUI_API float igGetScrollX(); // get scrolling amount [0..GetScrollMaxX()] +CIMGUI_API float igGetScrollY(); // get scrolling amount [0..GetScrollMaxY()] +CIMGUI_API float igGetScrollMaxX(); // get maximum scrolling amount ~~ ContentSize.X - WindowSize.X +CIMGUI_API float igGetScrollMaxY(); // get maximum scrolling amount ~~ ContentSize.Y - WindowSize.Y +CIMGUI_API void igSetScrollX(float scroll_x); // set scrolling amount [0..GetScrollMaxX()] +CIMGUI_API void igSetScrollY(float scroll_y); // set scrolling amount [0..GetScrollMaxY()] +CIMGUI_API void igSetScrollHere(float center_y_ratio); // 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. +CIMGUI_API void igSetScrollFromPosY(float pos_y,float center_y_ratio); // adjust scrolling amount to make given position valid. use GetCursorPos() or GetCursorStartPos()+offset to get valid positions. // Parameters stacks (shared) -CIMGUI_API void igPushFont(ImFont* font); // use NULL as a shortcut to push default font -CIMGUI_API void igPopFont(); -CIMGUI_API void igPushStyleColorU32(ImGuiCol idx,ImU32 col); -CIMGUI_API void igPushStyleColor(ImGuiCol idx,const ImVec4 col); -CIMGUI_API void igPopStyleColor(int count); -CIMGUI_API void igPushStyleVarFloat(ImGuiStyleVar idx,float val); -CIMGUI_API void igPushStyleVarVec2(ImGuiStyleVar idx,const ImVec2 val); -CIMGUI_API void igPopStyleVar(int count); -CIMGUI_API const ImVec4* igGetStyleColorVec4(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. -CIMGUI_API ImFont* igGetFont(); // get current font -CIMGUI_API float igGetFontSize(); // get current font size (= height in pixels) of current font with current scale applied -CIMGUI_API ImVec2 igGetFontTexUvWhitePixel(); // get UV coordinate for a while pixel, useful to draw custom shapes via the ImDrawList API -CIMGUI_API ImU32 igGetColorU32(ImGuiCol idx,float alpha_mul); // retrieve given style color with style alpha applied and optional extra alpha multiplier -CIMGUI_API ImU32 igGetColorU32Vec4(const ImVec4 col); // retrieve given color with style alpha applied -CIMGUI_API ImU32 igGetColorU32U32(ImU32 col); // retrieve given color with style alpha applied +CIMGUI_API void igPushFont(ImFont* font); // use NULL as a shortcut to push default font +CIMGUI_API void igPopFont(); +CIMGUI_API void igPushStyleColorU32(ImGuiCol idx,ImU32 col); +CIMGUI_API void igPushStyleColor(ImGuiCol idx,const ImVec4 col); +CIMGUI_API void igPopStyleColor(int count); +CIMGUI_API void igPushStyleVarFloat(ImGuiStyleVar idx,float val); +CIMGUI_API void igPushStyleVarVec2(ImGuiStyleVar idx,const ImVec2 val); +CIMGUI_API void igPopStyleVar(int count); +CIMGUI_API const ImVec4* igGetStyleColorVec4(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. +CIMGUI_API ImFont* igGetFont(); // get current font +CIMGUI_API float igGetFontSize(); // get current font size (= height in pixels) of current font with current scale applied +CIMGUI_API ImVec2 igGetFontTexUvWhitePixel(); // get UV coordinate for a while pixel, useful to draw custom shapes via the ImDrawList API +CIMGUI_API ImU32 igGetColorU32(ImGuiCol idx,float alpha_mul); // retrieve given style color with style alpha applied and optional extra alpha multiplier +CIMGUI_API ImU32 igGetColorU32Vec4(const ImVec4 col); // retrieve given color with style alpha applied +CIMGUI_API ImU32 igGetColorU32U32(ImU32 col); // retrieve given color with style alpha applied // Parameters stacks (current window) -CIMGUI_API void igPushItemWidth(float item_width); // width of items for the common item+label case, pixels. 0.0f = default to ~2/3 of windows width, >0.0f: width in pixels, <0.0f align xx pixels to the right of window (so -1.0f always align width to the right side) -CIMGUI_API void igPopItemWidth(); -CIMGUI_API float igCalcItemWidth(); // width of item given pushed settings and current cursor position -CIMGUI_API void igPushTextWrapPos(float wrap_pos_x); // word-wrapping 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 -CIMGUI_API void igPopTextWrapPos(); -CIMGUI_API void igPushAllowKeyboardFocus(bool allow_keyboard_focus); // allow focusing using TAB/Shift-TAB, enabled by default but you can disable it for certain widgets -CIMGUI_API void igPopAllowKeyboardFocus(); -CIMGUI_API void igPushButtonRepeat(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. -CIMGUI_API void igPopButtonRepeat(); +CIMGUI_API void igPushItemWidth(float item_width); // width of items for the common item+label case, pixels. 0.0f = default to ~2/3 of windows width, >0.0f: width in pixels, <0.0f align xx pixels to the right of window (so -1.0f always align width to the right side) +CIMGUI_API void igPopItemWidth(); +CIMGUI_API float igCalcItemWidth(); // width of item given pushed settings and current cursor position +CIMGUI_API void igPushTextWrapPos(float wrap_pos_x); // word-wrapping 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 +CIMGUI_API void igPopTextWrapPos(); +CIMGUI_API void igPushAllowKeyboardFocus(bool allow_keyboard_focus); // allow focusing using TAB/Shift-TAB, enabled by default but you can disable it for certain widgets +CIMGUI_API void igPopAllowKeyboardFocus(); +CIMGUI_API void igPushButtonRepeat(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. +CIMGUI_API void igPopButtonRepeat(); // Cursor / Layout -CIMGUI_API void igSeparator(); // separator, generally horizontal. inside a menu bar or in horizontal layout mode, this becomes a vertical separator. -CIMGUI_API void igSameLine(float pos_x,float spacing_w); // call between widgets or groups to layout them horizontally -CIMGUI_API void igNewLine(); // undo a SameLine() -CIMGUI_API void igSpacing(); // add vertical spacing -CIMGUI_API void igDummy(const ImVec2 size); // add a dummy item of given size -CIMGUI_API void igIndent(float indent_w); // move content position toward the right, by style.IndentSpacing or indent_w if != 0 -CIMGUI_API void igUnindent(float indent_w); // move content position back to the left, by style.IndentSpacing or indent_w if != 0 -CIMGUI_API void igBeginGroup(); // lock horizontal starting position + capture group bounding box into one "item" (so you can use IsItemHovered() or layout primitives such as SameLine() on whole group, etc.) -CIMGUI_API void igEndGroup(); -CIMGUI_API ImVec2 igGetCursorPos(); // cursor position is relative to window position -CIMGUI_API float igGetCursorPosX(); // " -CIMGUI_API float igGetCursorPosY(); // " -CIMGUI_API void igSetCursorPos(const ImVec2 local_pos); // " -CIMGUI_API void igSetCursorPosX(float x); // " -CIMGUI_API void igSetCursorPosY(float y); // " -CIMGUI_API ImVec2 igGetCursorStartPos(); // initial cursor position -CIMGUI_API ImVec2 igGetCursorScreenPos(); // cursor position in absolute screen coordinates [0..io.DisplaySize] (useful to work with ImDrawList API) -CIMGUI_API void igSetCursorScreenPos(const ImVec2 screen_pos); // cursor position in absolute screen coordinates [0..io.DisplaySize] -CIMGUI_API void igAlignTextToFramePadding(); // 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) -CIMGUI_API float igGetTextLineHeight(); // ~ FontSize -CIMGUI_API float igGetTextLineHeightWithSpacing(); // ~ FontSize + style.ItemSpacing.y (distance in pixels between 2 consecutive lines of text) -CIMGUI_API float igGetFrameHeight(); // ~ FontSize + style.FramePadding.y * 2 -CIMGUI_API float igGetFrameHeightWithSpacing(); // ~ FontSize + style.FramePadding.y * 2 + style.ItemSpacing.y (distance in pixels between 2 consecutive lines of framed widgets) +CIMGUI_API void igSeparator(); // separator, generally horizontal. inside a menu bar or in horizontal layout mode, this becomes a vertical separator. +CIMGUI_API void igSameLine(float pos_x,float spacing_w); // call between widgets or groups to layout them horizontally +CIMGUI_API void igNewLine(); // undo a SameLine() +CIMGUI_API void igSpacing(); // add vertical spacing +CIMGUI_API void igDummy(const ImVec2 size); // add a dummy item of given size +CIMGUI_API void igIndent(float indent_w); // move content position toward the right, by style.IndentSpacing or indent_w if != 0 +CIMGUI_API void igUnindent(float indent_w); // move content position back to the left, by style.IndentSpacing or indent_w if != 0 +CIMGUI_API void igBeginGroup(); // lock horizontal starting position + capture group bounding box into one "item" (so you can use IsItemHovered() or layout primitives such as SameLine() on whole group, etc.) +CIMGUI_API void igEndGroup(); +CIMGUI_API ImVec2 igGetCursorPos(); // cursor position is relative to window position +CIMGUI_API float igGetCursorPosX(); // " +CIMGUI_API float igGetCursorPosY(); // " +CIMGUI_API void igSetCursorPos(const ImVec2 local_pos); // " +CIMGUI_API void igSetCursorPosX(float x); // " +CIMGUI_API void igSetCursorPosY(float y); // " +CIMGUI_API ImVec2 igGetCursorStartPos(); // initial cursor position +CIMGUI_API ImVec2 igGetCursorScreenPos(); // cursor position in absolute screen coordinates [0..io.DisplaySize] (useful to work with ImDrawList API) +CIMGUI_API void igSetCursorScreenPos(const ImVec2 screen_pos); // cursor position in absolute screen coordinates [0..io.DisplaySize] +CIMGUI_API void igAlignTextToFramePadding(); // 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) +CIMGUI_API float igGetTextLineHeight(); // ~ FontSize +CIMGUI_API float igGetTextLineHeightWithSpacing(); // ~ FontSize + style.ItemSpacing.y (distance in pixels between 2 consecutive lines of text) +CIMGUI_API float igGetFrameHeight(); // ~ FontSize + style.FramePadding.y * 2 +CIMGUI_API float igGetFrameHeightWithSpacing(); // ~ FontSize + style.FramePadding.y * 2 + style.ItemSpacing.y (distance in pixels between 2 consecutive lines of framed widgets) // ID stack/scopes // Read the FAQ for more details about how ID are handled in dear imgui. If you are creating widgets in a loop you most // likely want to push a unique identifier (e.g. object pointer, loop index) to uniquely differentiate them. // You can also use the "##foobar" syntax within widget label to distinguish them from each others. // In this header file we use the "label"/"name" terminology to denote a string that will be displayed and used as an ID, // whereas "str_id" denote a string that is only used as an ID and not aimed to be displayed. -CIMGUI_API void igPushIDStr(const char* str_id); // push identifier into the ID stack. IDs are hash of the entire stack! -CIMGUI_API void igPushIDRange(const char* str_id_begin,const char* str_id_end); -CIMGUI_API void igPushIDPtr(const void* ptr_id); -CIMGUI_API void igPushIDInt(int int_id); -CIMGUI_API void igPopID(); -CIMGUI_API ImGuiID igGetIDStr(const char* str_id); // calculate unique ID (hash of whole ID stack + given parameter). e.g. if you want to query into ImGuiStorage yourself -CIMGUI_API ImGuiID igGetIDStrStr(const char* str_id_begin,const char* str_id_end); -CIMGUI_API ImGuiID igGetIDPtr(const void* ptr_id); +CIMGUI_API void igPushIDStr(const char* str_id); // push identifier into the ID stack. IDs are hash of the entire stack! +CIMGUI_API void igPushIDRange(const char* str_id_begin,const char* str_id_end); +CIMGUI_API void igPushIDPtr(const void* ptr_id); +CIMGUI_API void igPushIDInt(int int_id); +CIMGUI_API void igPopID(); +CIMGUI_API ImGuiID igGetIDStr(const char* str_id); // calculate unique ID (hash of whole ID stack + given parameter). e.g. if you want to query into ImGuiStorage yourself +CIMGUI_API ImGuiID igGetIDStrStr(const char* str_id_begin,const char* str_id_end); +CIMGUI_API ImGuiID igGetIDPtr(const void* ptr_id); // Widgets: Text -CIMGUI_API void igTextUnformatted(const char* text,const char* text_end); // 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. -CIMGUI_API void igText(const char* fmt,...); // simple formatted text -CIMGUI_API void igTextV(const char* fmt,va_list args); -CIMGUI_API void igTextColored(const ImVec4 col,const char* fmt,...); // shortcut for PushStyleColor(ImGuiCol_Text, col); Text(fmt, ...); PopStyleColor(); -CIMGUI_API void igTextColoredV(const ImVec4 col,const char* fmt,va_list args); -CIMGUI_API void igTextDisabled(const char* fmt,...); // shortcut for PushStyleColor(ImGuiCol_Text, style.Colors[ImGuiCol_TextDisabled]); Text(fmt, ...); PopStyleColor(); -CIMGUI_API void igTextDisabledV(const char* fmt,va_list args); -CIMGUI_API void igTextWrapped(const char* fmt,...); // 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(). -CIMGUI_API void igTextWrappedV(const char* fmt,va_list args); -CIMGUI_API void igLabelText(const char* label,const char* fmt,...); // display text+label aligned the same way as value+label widgets -CIMGUI_API void igLabelTextV(const char* label,const char* fmt,va_list args); -CIMGUI_API void igBulletText(const char* fmt,...); // shortcut for Bullet()+Text() -CIMGUI_API void igBulletTextV(const char* fmt,va_list args); +CIMGUI_API void igTextUnformatted(const char* text,const char* text_end); // 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. +CIMGUI_API void igText(const char* fmt,...); // simple formatted text +CIMGUI_API void igTextV(const char* fmt,va_list args); +CIMGUI_API void igTextColored(const ImVec4 col,const char* fmt,...); // shortcut for PushStyleColor(ImGuiCol_Text, col); Text(fmt, ...); PopStyleColor(); +CIMGUI_API void igTextColoredV(const ImVec4 col,const char* fmt,va_list args); +CIMGUI_API void igTextDisabled(const char* fmt,...); // shortcut for PushStyleColor(ImGuiCol_Text, style.Colors[ImGuiCol_TextDisabled]); Text(fmt, ...); PopStyleColor(); +CIMGUI_API void igTextDisabledV(const char* fmt,va_list args); +CIMGUI_API void igTextWrapped(const char* fmt,...); // 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(). +CIMGUI_API void igTextWrappedV(const char* fmt,va_list args); +CIMGUI_API void igLabelText(const char* label,const char* fmt,...); // display text+label aligned the same way as value+label widgets +CIMGUI_API void igLabelTextV(const char* label,const char* fmt,va_list args); +CIMGUI_API void igBulletText(const char* fmt,...); // shortcut for Bullet()+Text() +CIMGUI_API void igBulletTextV(const char* fmt,va_list args); // Widgets: Main // Most widgets return true when the value has been changed or when pressed/selected -CIMGUI_API bool igButton(const char* label,const ImVec2 size); // button -CIMGUI_API bool igSmallButton(const char* label); // button with FramePadding=(0,0) to easily embed within text -CIMGUI_API bool igInvisibleButton(const char* str_id,const ImVec2 size); // button behavior without the visuals, useful to build custom behaviors using the public api (along with IsItemActive, IsItemHovered, etc.) -CIMGUI_API bool igArrowButton(const char* str_id,ImGuiDir dir); // square button with an arrow shape -CIMGUI_API void igImage(ImTextureID user_texture_id,const ImVec2 size,const ImVec2 uv0,const ImVec2 uv1,const ImVec4 tint_col,const ImVec4 border_col); -CIMGUI_API bool igImageButton(ImTextureID user_texture_id,const ImVec2 size,const ImVec2 uv0,const ImVec2 uv1,int frame_padding,const ImVec4 bg_col,const ImVec4 tint_col); // <0 frame_padding uses default frame padding settings. 0 for no padding -CIMGUI_API bool igCheckbox(const char* label,bool* v); -CIMGUI_API bool igCheckboxFlags(const char* label,unsigned int* flags,unsigned int flags_value); -CIMGUI_API bool igRadioButtonBool(const char* label,bool active); -CIMGUI_API bool igRadioButtonIntPtr(const char* label,int* v,int v_button); -CIMGUI_API void igPlotLines(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride); -CIMGUI_API void igPlotLinesFnPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size); -CIMGUI_API void igPlotHistogramFloatPtr(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride); -CIMGUI_API void igPlotHistogramFnPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size); -CIMGUI_API void igProgressBar(float fraction,const ImVec2 size_arg,const char* overlay); -CIMGUI_API void igBullet(); // draw a small circle and keep the cursor on the same line. advance cursor x position by GetTreeNodeToLabelSpacing(), same distance that TreeNode() uses +CIMGUI_API bool igButton(const char* label,const ImVec2 size); // button +CIMGUI_API bool igSmallButton(const char* label); // button with FramePadding=(0,0) to easily embed within text +CIMGUI_API bool igInvisibleButton(const char* str_id,const ImVec2 size); // button behavior without the visuals, useful to build custom behaviors using the public api (along with IsItemActive, IsItemHovered, etc.) +CIMGUI_API bool igArrowButton(const char* str_id,ImGuiDir dir); // square button with an arrow shape +CIMGUI_API void igImage(ImTextureID user_texture_id,const ImVec2 size,const ImVec2 uv0,const ImVec2 uv1,const ImVec4 tint_col,const ImVec4 border_col); +CIMGUI_API bool igImageButton(ImTextureID user_texture_id,const ImVec2 size,const ImVec2 uv0,const ImVec2 uv1,int frame_padding,const ImVec4 bg_col,const ImVec4 tint_col); // <0 frame_padding uses default frame padding settings. 0 for no padding +CIMGUI_API bool igCheckbox(const char* label,bool* v); +CIMGUI_API bool igCheckboxFlags(const char* label,unsigned int* flags,unsigned int flags_value); +CIMGUI_API bool igRadioButtonBool(const char* label,bool active); +CIMGUI_API bool igRadioButtonIntPtr(const char* label,int* v,int v_button); +CIMGUI_API void igPlotLines(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride); +CIMGUI_API void igPlotLinesFnPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size); +CIMGUI_API void igPlotHistogramFloatPtr(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride); +CIMGUI_API void igPlotHistogramFnPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size); +CIMGUI_API void igProgressBar(float fraction,const ImVec2 size_arg,const char* overlay); +CIMGUI_API void igBullet(); // draw a small circle and keep the cursor on the same line. advance cursor x position by GetTreeNodeToLabelSpacing(), same distance that TreeNode() uses // Widgets: Combo Box // The new BeginCombo()/EndCombo() api allows you to manage your contents and selection state however you want it. // The old Combo() api are helpers over BeginCombo()/EndCombo() which are kept available for convenience purpose. -CIMGUI_API bool igBeginCombo(const char* label,const char* preview_value,ImGuiComboFlags flags); -CIMGUI_API void igEndCombo(); // only call EndCombo() if BeginCombo() returns true! -CIMGUI_API bool igCombo(const char* label,int* current_item,const char* const items[],int items_count,int popup_max_height_in_items); -CIMGUI_API bool igComboStr(const char* label,int* current_item,const char* items_separated_by_zeros,int popup_max_height_in_items); // Separate items with \0 within a string, end item-list with \0\0. e.g. "One\0Two\0Three\0" -CIMGUI_API bool igComboFnPtr(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); +CIMGUI_API bool igBeginCombo(const char* label,const char* preview_value,ImGuiComboFlags flags); +CIMGUI_API void igEndCombo(); // only call EndCombo() if BeginCombo() returns true! +CIMGUI_API bool igCombo(const char* label,int* current_item,const char* const items[],int items_count,int popup_max_height_in_items); +CIMGUI_API bool igComboStr(const char* label,int* current_item,const char* items_separated_by_zeros,int popup_max_height_in_items); // Separate items with \0 within a string, end item-list with \0\0. e.g. "One\0Two\0Three\0" +CIMGUI_API bool igComboFnPtr(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); // Widgets: Drags (tip: ctrl+click on a drag box to input with keyboard. manually input values aren't clamped, can go off-bounds) // For all the Float2/Float3/Float4/Int2/Int3/Int4 versions of every functions, note that a 'float v[X]' function argument is the same as 'float* v', the array syntax is just a way to document the number of elements that are expected to be accessible. You can pass address of your first element out of a contiguous set, e.g. &myvector.x // Adjust format string to decorate the value with a prefix, a suffix, or adapt the editing and display precision e.g. "%.3f" -> 1.234; "%5.2f secs" -> 01.23 secs; "Biscuit: %.0f" -> Biscuit: 1; etc. // Speed are per-pixel of mouse movement (v_speed=0.2f: mouse needs to move by 5 pixels to increase value by 1). For gamepad/keyboard navigation, minimum speed is Max(v_speed, minimum_step_at_given_precision). -CIMGUI_API bool igDragFloat(const char* label,float* v,float v_speed,float v_min,float v_max,const char* format,float power); // If v_min >= v_max we have no bound -CIMGUI_API bool igDragFloat2(const char* label,float v[2],float v_speed,float v_min,float v_max,const char* format,float power); -CIMGUI_API bool igDragFloat3(const char* label,float v[3],float v_speed,float v_min,float v_max,const char* format,float power); -CIMGUI_API bool igDragFloat4(const char* label,float v[4],float v_speed,float v_min,float v_max,const char* format,float power); -CIMGUI_API bool igDragFloatRange2(const char* label,float* v_current_min,float* v_current_max,float v_speed,float v_min,float v_max,const char* format,const char* format_max,float power); -CIMGUI_API bool igDragInt(const char* label,int* v,float v_speed,int v_min,int v_max,const char* format); // If v_min >= v_max we have no bound -CIMGUI_API bool igDragInt2(const char* label,int v[2],float v_speed,int v_min,int v_max,const char* format); -CIMGUI_API bool igDragInt3(const char* label,int v[3],float v_speed,int v_min,int v_max,const char* format); -CIMGUI_API bool igDragInt4(const char* label,int v[4],float v_speed,int v_min,int v_max,const char* format); -CIMGUI_API bool igDragIntRange2(const char* label,int* v_current_min,int* v_current_max,float v_speed,int v_min,int v_max,const char* format,const char* format_max); -CIMGUI_API bool igDragScalar(const char* label,ImGuiDataType data_type,void* v,float v_speed,const void* v_min,const void* v_max,const char* format,float power); -CIMGUI_API bool igDragScalarN(const char* label,ImGuiDataType data_type,void* v,int components,float v_speed,const void* v_min,const void* v_max,const char* format,float power); +CIMGUI_API bool igDragFloat(const char* label,float* v,float v_speed,float v_min,float v_max,const char* format,float power); // If v_min >= v_max we have no bound +CIMGUI_API bool igDragFloat2(const char* label,float v[2],float v_speed,float v_min,float v_max,const char* format,float power); +CIMGUI_API bool igDragFloat3(const char* label,float v[3],float v_speed,float v_min,float v_max,const char* format,float power); +CIMGUI_API bool igDragFloat4(const char* label,float v[4],float v_speed,float v_min,float v_max,const char* format,float power); +CIMGUI_API bool igDragFloatRange2(const char* label,float* v_current_min,float* v_current_max,float v_speed,float v_min,float v_max,const char* format,const char* format_max,float power); +CIMGUI_API bool igDragInt(const char* label,int* v,float v_speed,int v_min,int v_max,const char* format); // If v_min >= v_max we have no bound +CIMGUI_API bool igDragInt2(const char* label,int v[2],float v_speed,int v_min,int v_max,const char* format); +CIMGUI_API bool igDragInt3(const char* label,int v[3],float v_speed,int v_min,int v_max,const char* format); +CIMGUI_API bool igDragInt4(const char* label,int v[4],float v_speed,int v_min,int v_max,const char* format); +CIMGUI_API bool igDragIntRange2(const char* label,int* v_current_min,int* v_current_max,float v_speed,int v_min,int v_max,const char* format,const char* format_max); +CIMGUI_API bool igDragScalar(const char* label,ImGuiDataType data_type,void* v,float v_speed,const void* v_min,const void* v_max,const char* format,float power); +CIMGUI_API bool igDragScalarN(const char* label,ImGuiDataType data_type,void* v,int components,float v_speed,const void* v_min,const void* v_max,const char* format,float power); // Widgets: Input with Keyboard -CIMGUI_API bool igInputText(const char* label,char* buf,size_t buf_size,ImGuiInputTextFlags flags,ImGuiTextEditCallback callback,void* user_data); -CIMGUI_API bool igInputTextMultiline(const char* label,char* buf,size_t buf_size,const ImVec2 size,ImGuiInputTextFlags flags,ImGuiTextEditCallback callback,void* user_data); -CIMGUI_API bool igInputFloat(const char* label,float* v,float step,float step_fast,const char* format,ImGuiInputTextFlags extra_flags); -CIMGUI_API bool igInputFloat2(const char* label,float v[2],const char* format,ImGuiInputTextFlags extra_flags); -CIMGUI_API bool igInputFloat3(const char* label,float v[3],const char* format,ImGuiInputTextFlags extra_flags); -CIMGUI_API bool igInputFloat4(const char* label,float v[4],const char* format,ImGuiInputTextFlags extra_flags); -CIMGUI_API bool igInputInt(const char* label,int* v,int step,int step_fast,ImGuiInputTextFlags extra_flags); -CIMGUI_API bool igInputInt2(const char* label,int v[2],ImGuiInputTextFlags extra_flags); -CIMGUI_API bool igInputInt3(const char* label,int v[3],ImGuiInputTextFlags extra_flags); -CIMGUI_API bool igInputInt4(const char* label,int v[4],ImGuiInputTextFlags extra_flags); -CIMGUI_API bool igInputDouble(const char* label,double* v,double step,double step_fast,const char* format,ImGuiInputTextFlags extra_flags); -CIMGUI_API bool igInputScalar(const char* label,ImGuiDataType data_type,void* v,const void* step,const void* step_fast,const char* format,ImGuiInputTextFlags extra_flags); -CIMGUI_API bool igInputScalarN(const char* label,ImGuiDataType data_type,void* v,int components,const void* step,const void* step_fast,const char* format,ImGuiInputTextFlags extra_flags); +CIMGUI_API bool igInputText(const char* label,char* buf,size_t buf_size,ImGuiInputTextFlags flags,ImGuiTextEditCallback callback,void* user_data); +CIMGUI_API bool igInputTextMultiline(const char* label,char* buf,size_t buf_size,const ImVec2 size,ImGuiInputTextFlags flags,ImGuiTextEditCallback callback,void* user_data); +CIMGUI_API bool igInputFloat(const char* label,float* v,float step,float step_fast,const char* format,ImGuiInputTextFlags extra_flags); +CIMGUI_API bool igInputFloat2(const char* label,float v[2],const char* format,ImGuiInputTextFlags extra_flags); +CIMGUI_API bool igInputFloat3(const char* label,float v[3],const char* format,ImGuiInputTextFlags extra_flags); +CIMGUI_API bool igInputFloat4(const char* label,float v[4],const char* format,ImGuiInputTextFlags extra_flags); +CIMGUI_API bool igInputInt(const char* label,int* v,int step,int step_fast,ImGuiInputTextFlags extra_flags); +CIMGUI_API bool igInputInt2(const char* label,int v[2],ImGuiInputTextFlags extra_flags); +CIMGUI_API bool igInputInt3(const char* label,int v[3],ImGuiInputTextFlags extra_flags); +CIMGUI_API bool igInputInt4(const char* label,int v[4],ImGuiInputTextFlags extra_flags); +CIMGUI_API bool igInputDouble(const char* label,double* v,double step,double step_fast,const char* format,ImGuiInputTextFlags extra_flags); +CIMGUI_API bool igInputScalar(const char* label,ImGuiDataType data_type,void* v,const void* step,const void* step_fast,const char* format,ImGuiInputTextFlags extra_flags); +CIMGUI_API bool igInputScalarN(const char* label,ImGuiDataType data_type,void* v,int components,const void* step,const void* step_fast,const char* format,ImGuiInputTextFlags extra_flags); // Widgets: Sliders (tip: ctrl+click on a slider to input with keyboard. manually input values aren't clamped, can go off-bounds) // Adjust format string to decorate the value with a prefix, a suffix, or adapt the editing and display precision e.g. "%.3f" -> 1.234; "%5.2f secs" -> 01.23 secs; "Biscuit: %.0f" -> Biscuit: 1; etc. -CIMGUI_API bool igSliderFloat(const char* label,float* v,float v_min,float v_max,const char* format,float power); // adjust format to decorate the value with a prefix or a suffix for in-slider labels or unit display. Use power!=1.0 for power curve sliders -CIMGUI_API bool igSliderFloat2(const char* label,float v[2],float v_min,float v_max,const char* format,float power); -CIMGUI_API bool igSliderFloat3(const char* label,float v[3],float v_min,float v_max,const char* format,float power); -CIMGUI_API bool igSliderFloat4(const char* label,float v[4],float v_min,float v_max,const char* format,float power); -CIMGUI_API bool igSliderAngle(const char* label,float* v_rad,float v_degrees_min,float v_degrees_max); -CIMGUI_API bool igSliderInt(const char* label,int* v,int v_min,int v_max,const char* format); -CIMGUI_API bool igSliderInt2(const char* label,int v[2],int v_min,int v_max,const char* format); -CIMGUI_API bool igSliderInt3(const char* label,int v[3],int v_min,int v_max,const char* format); -CIMGUI_API bool igSliderInt4(const char* label,int v[4],int v_min,int v_max,const char* format); -CIMGUI_API bool igSliderScalar(const char* label,ImGuiDataType data_type,void* v,const void* v_min,const void* v_max,const char* format,float power); -CIMGUI_API bool igSliderScalarN(const char* label,ImGuiDataType data_type,void* v,int components,const void* v_min,const void* v_max,const char* format,float power); -CIMGUI_API bool igVSliderFloat(const char* label,const ImVec2 size,float* v,float v_min,float v_max,const char* format,float power); -CIMGUI_API bool igVSliderInt(const char* label,const ImVec2 size,int* v,int v_min,int v_max,const char* format); -CIMGUI_API bool igVSliderScalar(const char* label,const ImVec2 size,ImGuiDataType data_type,void* v,const void* v_min,const void* v_max,const char* format,float power); +CIMGUI_API bool igSliderFloat(const char* label,float* v,float v_min,float v_max,const char* format,float power); // adjust format to decorate the value with a prefix or a suffix for in-slider labels or unit display. Use power!=1.0 for power curve sliders +CIMGUI_API bool igSliderFloat2(const char* label,float v[2],float v_min,float v_max,const char* format,float power); +CIMGUI_API bool igSliderFloat3(const char* label,float v[3],float v_min,float v_max,const char* format,float power); +CIMGUI_API bool igSliderFloat4(const char* label,float v[4],float v_min,float v_max,const char* format,float power); +CIMGUI_API bool igSliderAngle(const char* label,float* v_rad,float v_degrees_min,float v_degrees_max); +CIMGUI_API bool igSliderInt(const char* label,int* v,int v_min,int v_max,const char* format); +CIMGUI_API bool igSliderInt2(const char* label,int v[2],int v_min,int v_max,const char* format); +CIMGUI_API bool igSliderInt3(const char* label,int v[3],int v_min,int v_max,const char* format); +CIMGUI_API bool igSliderInt4(const char* label,int v[4],int v_min,int v_max,const char* format); +CIMGUI_API bool igSliderScalar(const char* label,ImGuiDataType data_type,void* v,const void* v_min,const void* v_max,const char* format,float power); +CIMGUI_API bool igSliderScalarN(const char* label,ImGuiDataType data_type,void* v,int components,const void* v_min,const void* v_max,const char* format,float power); +CIMGUI_API bool igVSliderFloat(const char* label,const ImVec2 size,float* v,float v_min,float v_max,const char* format,float power); +CIMGUI_API bool igVSliderInt(const char* label,const ImVec2 size,int* v,int v_min,int v_max,const char* format); +CIMGUI_API bool igVSliderScalar(const char* label,const ImVec2 size,ImGuiDataType data_type,void* v,const void* v_min,const void* v_max,const char* format,float power); // Widgets: Color Editor/Picker (tip: the ColorEdit* functions have a little colored preview square that can be left-clicked to open a picker, and right-clicked to open an option menu.) // Note that a 'float v[X]' function argument is the same as 'float* v', the array syntax is just a way to document the number of elements that are expected to be accessible. You can the pass the address of a first float element out of a contiguous structure, e.g. &myvector.x -CIMGUI_API bool igColorEdit3(const char* label,float col[3],ImGuiColorEditFlags flags); -CIMGUI_API bool igColorEdit4(const char* label,float col[4],ImGuiColorEditFlags flags); -CIMGUI_API bool igColorPicker3(const char* label,float col[3],ImGuiColorEditFlags flags); -CIMGUI_API bool igColorPicker4(const char* label,float col[4],ImGuiColorEditFlags flags,const float* ref_col); -CIMGUI_API bool igColorButton(const char* desc_id,const ImVec4 col,ImGuiColorEditFlags flags,ImVec2 size); // display a colored square/button, hover for details, return true when pressed. -CIMGUI_API void igSetColorEditOptions(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. +CIMGUI_API bool igColorEdit3(const char* label,float col[3],ImGuiColorEditFlags flags); +CIMGUI_API bool igColorEdit4(const char* label,float col[4],ImGuiColorEditFlags flags); +CIMGUI_API bool igColorPicker3(const char* label,float col[3],ImGuiColorEditFlags flags); +CIMGUI_API bool igColorPicker4(const char* label,float col[4],ImGuiColorEditFlags flags,const float* ref_col); +CIMGUI_API bool igColorButton(const char* desc_id,const ImVec4 col,ImGuiColorEditFlags flags,ImVec2 size); // display a colored square/button, hover for details, return true when pressed. +CIMGUI_API void igSetColorEditOptions(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. // Widgets: Trees // TreeNode functions return true when the node is open, in which case you need to also call TreePop() when you are finished displaying the tree node contents. -CIMGUI_API bool igTreeNodeStr(const char* label); -CIMGUI_API bool igTreeNodeStrStr(const char* str_id,const char* fmt,...); // helper variation to completely 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(). -CIMGUI_API bool igTreeNodePtr(const void* ptr_id,const char* fmt,...); // " -CIMGUI_API bool igTreeNodeVStr(const char* str_id,const char* fmt,va_list args); -CIMGUI_API bool igTreeNodeVPtr(const void* ptr_id,const char* fmt,va_list args); -CIMGUI_API bool igTreeNodeExStr(const char* label,ImGuiTreeNodeFlags flags); -CIMGUI_API bool igTreeNodeExStrStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,...); -CIMGUI_API bool igTreeNodeExPtr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,...); -CIMGUI_API bool igTreeNodeExVStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args); -CIMGUI_API bool igTreeNodeExVPtr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args); -CIMGUI_API void igTreePushStr(const char* str_id); // ~ Indent()+PushId(). Already called by TreeNode() when returning true, but you can call TreePush/TreePop yourself if desired. -CIMGUI_API void igTreePushPtr(const void* ptr_id); // " -CIMGUI_API void igTreePop(); // ~ Unindent()+PopId() -CIMGUI_API void igTreeAdvanceToLabelPos(); // advance cursor x position by GetTreeNodeToLabelSpacing() -CIMGUI_API float igGetTreeNodeToLabelSpacing(); // horizontal distance preceding label when using TreeNode*() or Bullet() == (g.FontSize + style.FramePadding.x*2) for a regular unframed TreeNode -CIMGUI_API void igSetNextTreeNodeOpen(bool is_open,ImGuiCond cond); // set next TreeNode/CollapsingHeader open state. -CIMGUI_API bool igCollapsingHeader(const char* label,ImGuiTreeNodeFlags flags); // if returning 'true' the header is open. doesn't indent nor push on ID stack. user doesn't have to call TreePop(). -CIMGUI_API bool igCollapsingHeaderBoolPtr(const char* label,bool* p_open,ImGuiTreeNodeFlags flags); // when 'p_open' isn't NULL, display an additional small close button on upper right of the header +CIMGUI_API bool igTreeNodeStr(const char* label); +CIMGUI_API bool igTreeNodeStrStr(const char* str_id,const char* fmt,...); // helper variation to completely 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(). +CIMGUI_API bool igTreeNodePtr(const void* ptr_id,const char* fmt,...); // " +CIMGUI_API bool igTreeNodeVStr(const char* str_id,const char* fmt,va_list args); +CIMGUI_API bool igTreeNodeVPtr(const void* ptr_id,const char* fmt,va_list args); +CIMGUI_API bool igTreeNodeExStr(const char* label,ImGuiTreeNodeFlags flags); +CIMGUI_API bool igTreeNodeExStrStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,...); +CIMGUI_API bool igTreeNodeExPtr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,...); +CIMGUI_API bool igTreeNodeExVStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args); +CIMGUI_API bool igTreeNodeExVPtr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args); +CIMGUI_API void igTreePushStr(const char* str_id); // ~ Indent()+PushId(). Already called by TreeNode() when returning true, but you can call TreePush/TreePop yourself if desired. +CIMGUI_API void igTreePushPtr(const void* ptr_id); // " +CIMGUI_API void igTreePop(); // ~ Unindent()+PopId() +CIMGUI_API void igTreeAdvanceToLabelPos(); // advance cursor x position by GetTreeNodeToLabelSpacing() +CIMGUI_API float igGetTreeNodeToLabelSpacing(); // horizontal distance preceding label when using TreeNode*() or Bullet() == (g.FontSize + style.FramePadding.x*2) for a regular unframed TreeNode +CIMGUI_API void igSetNextTreeNodeOpen(bool is_open,ImGuiCond cond); // set next TreeNode/CollapsingHeader open state. +CIMGUI_API bool igCollapsingHeader(const char* label,ImGuiTreeNodeFlags flags); // if returning 'true' the header is open. doesn't indent nor push on ID stack. user doesn't have to call TreePop(). +CIMGUI_API bool igCollapsingHeaderBoolPtr(const char* label,bool* p_open,ImGuiTreeNodeFlags flags); // when 'p_open' isn't NULL, display an additional small close button on upper right of the header // Widgets: Selectable / Lists -CIMGUI_API bool igSelectable(const char* label,bool selected,ImGuiSelectableFlags flags,const ImVec2 size); // "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 -CIMGUI_API bool igSelectableBoolPtr(const char* label,bool* p_selected,ImGuiSelectableFlags flags,const ImVec2 size); // "bool* p_selected" point to the selection state (read-write), as a convenient helper. -CIMGUI_API bool igListBoxStr_arr(const char* label,int* current_item,const char* const items[],int items_count,int height_in_items); -CIMGUI_API bool igListBoxFnPtr(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); -CIMGUI_API bool igListBoxHeaderVec2(const char* label,const ImVec2 size); // use if you want to reimplement ListBox() will custom data or interactions. if the function return true, you can output elements then call ListBoxFooter() afterwards. -CIMGUI_API bool igListBoxHeaderInt(const char* label,int items_count,int height_in_items); // " -CIMGUI_API void igListBoxFooter(); // terminate the scrolling region. only call ListBoxFooter() if ListBoxHeader() returned true! +CIMGUI_API bool igSelectable(const char* label,bool selected,ImGuiSelectableFlags flags,const ImVec2 size); // "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 +CIMGUI_API bool igSelectableBoolPtr(const char* label,bool* p_selected,ImGuiSelectableFlags flags,const ImVec2 size); // "bool* p_selected" point to the selection state (read-write), as a convenient helper. +CIMGUI_API bool igListBoxStr_arr(const char* label,int* current_item,const char* const items[],int items_count,int height_in_items); +CIMGUI_API bool igListBoxFnPtr(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); +CIMGUI_API bool igListBoxHeaderVec2(const char* label,const ImVec2 size); // use if you want to reimplement ListBox() will custom data or interactions. if the function return true, you can output elements then call ListBoxFooter() afterwards. +CIMGUI_API bool igListBoxHeaderInt(const char* label,int items_count,int height_in_items); // " +CIMGUI_API void igListBoxFooter(); // terminate the scrolling region. only call ListBoxFooter() if ListBoxHeader() returned true! // Widgets: Value() Helpers. Output single value in "name: value" format (tip: freely declare more in your code to handle your types. you can add functions to the ImGui namespace) -CIMGUI_API void igValueBool(const char* prefix,bool b); -CIMGUI_API void igValueInt(const char* prefix,int v); -CIMGUI_API void igValueUint(const char* prefix,unsigned int v); -CIMGUI_API void igValueFloat(const char* prefix,float v,const char* float_format); +CIMGUI_API void igValueBool(const char* prefix,bool b); +CIMGUI_API void igValueInt(const char* prefix,int v); +CIMGUI_API void igValueUint(const char* prefix,unsigned int v); +CIMGUI_API void igValueFloat(const char* prefix,float v,const char* float_format); // Tooltips -CIMGUI_API void igBeginTooltip(); // begin/append a tooltip window. to create full-featured tooltip (with any kind of items). -CIMGUI_API void igEndTooltip(); -CIMGUI_API void igSetTooltip(const char* fmt,...); // set a text-only tooltip, typically use with ImGui::IsItemHovered(). overidde any previous call to SetTooltip(). -CIMGUI_API void igSetTooltipV(const char* fmt,va_list args); +CIMGUI_API void igBeginTooltip(); // begin/append a tooltip window. to create full-featured tooltip (with any kind of items). +CIMGUI_API void igEndTooltip(); +CIMGUI_API void igSetTooltip(const char* fmt,...); // set a text-only tooltip, typically use with ImGui::IsItemHovered(). overidde any previous call to SetTooltip(). +CIMGUI_API void igSetTooltipV(const char* fmt,va_list args); // Menus -CIMGUI_API bool igBeginMainMenuBar(); // create and append to a full screen menu-bar. -CIMGUI_API void igEndMainMenuBar(); // only call EndMainMenuBar() if BeginMainMenuBar() returns true! -CIMGUI_API bool igBeginMenuBar(); // append to menu-bar of current window (requires ImGuiWindowFlags_MenuBar flag set on parent window). -CIMGUI_API void igEndMenuBar(); // only call EndMenuBar() if BeginMenuBar() returns true! -CIMGUI_API bool igBeginMenu(const char* label,bool enabled); // create a sub-menu entry. only call EndMenu() if this returns true! -CIMGUI_API void igEndMenu(); // only call EndMenu() if BeginMenu() returns true! -CIMGUI_API bool igMenuItemBool(const char* label,const char* shortcut,bool selected,bool enabled); // return true when activated. shortcuts are displayed for convenience but not processed by ImGui at the moment -CIMGUI_API bool igMenuItemBoolPtr(const char* label,const char* shortcut,bool* p_selected,bool enabled); // return true when activated + toggle (*p_selected) if p_selected != NULL +CIMGUI_API bool igBeginMainMenuBar(); // create and append to a full screen menu-bar. +CIMGUI_API void igEndMainMenuBar(); // only call EndMainMenuBar() if BeginMainMenuBar() returns true! +CIMGUI_API bool igBeginMenuBar(); // append to menu-bar of current window (requires ImGuiWindowFlags_MenuBar flag set on parent window). +CIMGUI_API void igEndMenuBar(); // only call EndMenuBar() if BeginMenuBar() returns true! +CIMGUI_API bool igBeginMenu(const char* label,bool enabled); // create a sub-menu entry. only call EndMenu() if this returns true! +CIMGUI_API void igEndMenu(); // only call EndMenu() if BeginMenu() returns true! +CIMGUI_API bool igMenuItemBool(const char* label,const char* shortcut,bool selected,bool enabled); // return true when activated. shortcuts are displayed for convenience but not processed by ImGui at the moment +CIMGUI_API bool igMenuItemBoolPtr(const char* label,const char* shortcut,bool* p_selected,bool enabled); // return true when activated + toggle (*p_selected) if p_selected != NULL // Popups -CIMGUI_API void igOpenPopup(const char* str_id); // call to mark popup as open (don't call every frame!). popups are closed when user click outside, or if CloseCurrentPopup() is called within a BeginPopup()/EndPopup() block. By default, Selectable()/MenuItem() are calling CloseCurrentPopup(). Popup identifiers are relative to the current ID-stack (so OpenPopup and BeginPopup needs to be at the same level). -CIMGUI_API bool igBeginPopup(const char* str_id,ImGuiWindowFlags flags); // return true if the popup is open, and you can start outputting to it. only call EndPopup() if BeginPopup() returns true! -CIMGUI_API bool igBeginPopupContextItem(const char* str_id,int mouse_button); // helper to open and begin popup when clicked on last item. if you can pass a NULL str_id only if the previous item had an id. 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! -CIMGUI_API bool igBeginPopupContextWindow(const char* str_id,int mouse_button,bool also_over_items); // helper to open and begin popup when clicked on current window. -CIMGUI_API bool igBeginPopupContextVoid(const char* str_id,int mouse_button); // helper to open and begin popup when clicked in void (where there are no imgui windows). -CIMGUI_API bool igBeginPopupModal(const char* name,bool* p_open,ImGuiWindowFlags flags); // modal dialog (regular window with title bar, block interactions behind the modal window, can't close the modal window by clicking outside) -CIMGUI_API void igEndPopup(); // only call EndPopup() if BeginPopupXXX() returns true! -CIMGUI_API bool igOpenPopupOnItemClick(const char* str_id,int mouse_button); // helper to open popup when clicked on last item. return true when just opened. -CIMGUI_API bool igIsPopupOpen(const char* str_id); // return true if the popup is open -CIMGUI_API void igCloseCurrentPopup(); // close the popup we have begin-ed into. clicking on a MenuItem or Selectable automatically close the current popup. +CIMGUI_API void igOpenPopup(const char* str_id); // call to mark popup as open (don't call every frame!). popups are closed when user click outside, or if CloseCurrentPopup() is called within a BeginPopup()/EndPopup() block. By default, Selectable()/MenuItem() are calling CloseCurrentPopup(). Popup identifiers are relative to the current ID-stack (so OpenPopup and BeginPopup needs to be at the same level). +CIMGUI_API bool igBeginPopup(const char* str_id,ImGuiWindowFlags flags); // return true if the popup is open, and you can start outputting to it. only call EndPopup() if BeginPopup() returns true! +CIMGUI_API bool igBeginPopupContextItem(const char* str_id,int mouse_button); // helper to open and begin popup when clicked on last item. if you can pass a NULL str_id only if the previous item had an id. 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! +CIMGUI_API bool igBeginPopupContextWindow(const char* str_id,int mouse_button,bool also_over_items); // helper to open and begin popup when clicked on current window. +CIMGUI_API bool igBeginPopupContextVoid(const char* str_id,int mouse_button); // helper to open and begin popup when clicked in void (where there are no imgui windows). +CIMGUI_API bool igBeginPopupModal(const char* name,bool* p_open,ImGuiWindowFlags flags); // modal dialog (regular window with title bar, block interactions behind the modal window, can't close the modal window by clicking outside) +CIMGUI_API void igEndPopup(); // only call EndPopup() if BeginPopupXXX() returns true! +CIMGUI_API bool igOpenPopupOnItemClick(const char* str_id,int mouse_button); // helper to open popup when clicked on last item. return true when just opened. +CIMGUI_API bool igIsPopupOpen(const char* str_id); // return true if the popup is open +CIMGUI_API void igCloseCurrentPopup(); // close the popup we have begin-ed into. clicking on a MenuItem or Selectable automatically close the current popup. // Columns // You can also use SameLine(pos_x) for simplified columns. The columns API is still work-in-progress and rather lacking. -CIMGUI_API void igColumns(int count,const char* id,bool border); -CIMGUI_API void igNextColumn(); // next column, defaults to current row or next row if the current row is finished -CIMGUI_API int igGetColumnIndex(); // get current column index -CIMGUI_API float igGetColumnWidth(int column_index); // get column width (in pixels). pass -1 to use current column -CIMGUI_API void igSetColumnWidth(int column_index,float width); // set column width (in pixels). pass -1 to use current column -CIMGUI_API float igGetColumnOffset(int column_index); // 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 -CIMGUI_API void igSetColumnOffset(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 -CIMGUI_API int igGetColumnsCount(); +CIMGUI_API void igColumns(int count,const char* id,bool border); +CIMGUI_API void igNextColumn(); // next column, defaults to current row or next row if the current row is finished +CIMGUI_API int igGetColumnIndex(); // get current column index +CIMGUI_API float igGetColumnWidth(int column_index); // get column width (in pixels). pass -1 to use current column +CIMGUI_API void igSetColumnWidth(int column_index,float width); // set column width (in pixels). pass -1 to use current column +CIMGUI_API float igGetColumnOffset(int column_index); // 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 +CIMGUI_API void igSetColumnOffset(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 +CIMGUI_API int igGetColumnsCount(); // Logging/Capture: all text output from interface is captured to tty/file/clipboard. By default, tree nodes are automatically opened during logging. -CIMGUI_API void igLogToTTY(int max_depth); // start logging to tty -CIMGUI_API void igLogToFile(int max_depth,const char* filename); // start logging to file -CIMGUI_API void igLogToClipboard(int max_depth); // start logging to OS clipboard -CIMGUI_API void igLogFinish(); // stop logging (close file, etc.) -CIMGUI_API void igLogButtons(); // helper to display buttons for logging to tty/file/clipboard +CIMGUI_API void igLogToTTY(int max_depth); // start logging to tty +CIMGUI_API void igLogToFile(int max_depth,const char* filename); // start logging to file +CIMGUI_API void igLogToClipboard(int max_depth); // start logging to OS clipboard +CIMGUI_API void igLogFinish(); // stop logging (close file, etc.) +CIMGUI_API void igLogButtons(); // helper to display buttons for logging to tty/file/clipboard // Drag and Drop // [BETA API] Missing Demo code. API may evolve. -CIMGUI_API bool igBeginDragDropSource(ImGuiDragDropFlags flags); // call when the current item is active. If this return true, you can call SetDragDropPayload() + EndDragDropSource() -CIMGUI_API bool igSetDragDropPayload(const char* type,const void* data,size_t size,ImGuiCond cond);// 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. -CIMGUI_API void igEndDragDropSource(); // only call EndDragDropSource() if BeginDragDropSource() returns true! -CIMGUI_API bool igBeginDragDropTarget(); // call after submitting an item that may receive an item. If this returns true, you can call AcceptDragDropPayload() + EndDragDropTarget() -CIMGUI_API const ImGuiPayload* igAcceptDragDropPayload(const char* type,ImGuiDragDropFlags flags); // accept contents of a given type. If ImGuiDragDropFlags_AcceptBeforeDelivery is set you can peek into the payload before the mouse button is released. -CIMGUI_API void igEndDragDropTarget(); // only call EndDragDropTarget() if BeginDragDropTarget() returns true! +CIMGUI_API bool igBeginDragDropSource(ImGuiDragDropFlags flags); // call when the current item is active. If this return true, you can call SetDragDropPayload() + EndDragDropSource() +CIMGUI_API bool igSetDragDropPayload(const char* type,const void* data,size_t size,ImGuiCond cond);// 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. +CIMGUI_API void igEndDragDropSource(); // only call EndDragDropSource() if BeginDragDropSource() returns true! +CIMGUI_API bool igBeginDragDropTarget(); // call after submitting an item that may receive an item. If this returns true, you can call AcceptDragDropPayload() + EndDragDropTarget() +CIMGUI_API const ImGuiPayload* igAcceptDragDropPayload(const char* type,ImGuiDragDropFlags flags); // accept contents of a given type. If ImGuiDragDropFlags_AcceptBeforeDelivery is set you can peek into the payload before the mouse button is released. +CIMGUI_API void igEndDragDropTarget(); // only call EndDragDropTarget() if BeginDragDropTarget() returns true! // Clipping -CIMGUI_API void igPushClipRect(const ImVec2 clip_rect_min,const ImVec2 clip_rect_max,bool intersect_with_current_clip_rect); -CIMGUI_API void igPopClipRect(); +CIMGUI_API void igPushClipRect(const ImVec2 clip_rect_min,const ImVec2 clip_rect_max,bool intersect_with_current_clip_rect); +CIMGUI_API void igPopClipRect(); // Focus, Activation // (Prefer using "SetItemDefaultFocus()" over "if (IsWindowAppearing()) SetScrollHere()" when applicable, to make your code more forward compatible when navigation branch is merged) -CIMGUI_API void igSetItemDefaultFocus(); // make last item the default focused item of a window. Please use instead of "if (IsWindowAppearing()) SetScrollHere()" to signify "default item". -CIMGUI_API void igSetKeyboardFocusHere(int offset); // focus keyboard on the next widget. Use positive 'offset' to access sub components of a multiple component widget. Use -1 to access previous widget. +CIMGUI_API void igSetItemDefaultFocus(); // make last item the default focused item of a window. Please use instead of "if (IsWindowAppearing()) SetScrollHere()" to signify "default item". +CIMGUI_API void igSetKeyboardFocusHere(int offset); // focus keyboard on the next widget. Use positive 'offset' to access sub components of a multiple component widget. Use -1 to access previous widget. // Utilities -CIMGUI_API bool igIsItemHovered(ImGuiHoveredFlags flags); // is the last item hovered? (and usable, aka not blocked by a popup, etc.). See ImGuiHoveredFlags for more options. -CIMGUI_API bool igIsItemActive(); // 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) -CIMGUI_API bool igIsItemFocused(); // is the last item focused for keyboard/gamepad navigation? -CIMGUI_API bool igIsItemClicked(int mouse_button); // is the last item clicked? (e.g. button/node just clicked on) == IsMouseClicked(mouse_button) && IsItemHovered() -CIMGUI_API bool igIsItemVisible(); // is the last item visible? (items may be out of sight because of clipping/scrolling) -CIMGUI_API bool igIsItemDeactivated(); // was the last item just made inactive (item was previously active). Useful for Undo/Redo patterns with widgets that requires continuous editing. -CIMGUI_API bool igIsItemDeactivatedAfterChange(); // 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 requires 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). -CIMGUI_API bool igIsAnyItemHovered(); -CIMGUI_API bool igIsAnyItemActive(); -CIMGUI_API bool igIsAnyItemFocused(); -CIMGUI_API ImVec2 igGetItemRectMin(); // get bounding rectangle of last item, in screen space -CIMGUI_API ImVec2 igGetItemRectMax(); // " -CIMGUI_API ImVec2 igGetItemRectSize(); // get size of last item, in screen space -CIMGUI_API void igSetItemAllowOverlap(); // allow last item to be overlapped by a subsequent item. sometimes useful with invisible buttons, selectables, etc. to catch unused area. -CIMGUI_API bool igIsRectVisible(const ImVec2 size); // test if rectangle (of given size, starting from cursor position) is visible / not clipped. -CIMGUI_API bool igIsRectVisibleVec2(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. -CIMGUI_API float igGetTime(); -CIMGUI_API int igGetFrameCount(); -CIMGUI_API ImDrawList* igGetOverlayDrawList(); // this draw list will be the last rendered one, useful to quickly draw overlays shapes/text -CIMGUI_API ImDrawListSharedData* igGetDrawListSharedData(); // you may use this when creating your own ImDrawList instances -CIMGUI_API const char* igGetStyleColorName(ImGuiCol idx); -CIMGUI_API void igSetStateStorage(ImGuiStorage* storage); // replace current window storage with our own (if you want to manipulate it yourself, typically clear subsection of it) -CIMGUI_API ImGuiStorage* igGetStateStorage(); -CIMGUI_API ImVec2 igCalcTextSize(const char* text,const char* text_end,bool hide_text_after_double_hash,float wrap_width); -CIMGUI_API void igCalcListClipping(int items_count,float items_height,int* out_items_display_start,int* out_items_display_end); // calculate coarse clipping for large list of evenly sized items. Prefer using the ImGuiListClipper higher-level helper if you can. -CIMGUI_API bool igBeginChildFrame(ImGuiID id,const ImVec2 size,ImGuiWindowFlags flags); // helper to create a child window / scrolling region that looks like a normal widget frame -CIMGUI_API void igEndChildFrame(); // always call EndChildFrame() regardless of BeginChildFrame() return values (which indicates a collapsed/clipped window) -CIMGUI_API ImVec4 igColorConvertU32ToFloat4(ImU32 in); -CIMGUI_API ImU32 igColorConvertFloat4ToU32(const ImVec4 in); -CIMGUI_API void igColorConvertRGBtoHSV(float r,float g,float b,float out_h,float out_s,float out_v); -CIMGUI_API void igColorConvertHSVtoRGB(float h,float s,float v,float out_r,float out_g,float out_b); +CIMGUI_API bool igIsItemHovered(ImGuiHoveredFlags flags); // is the last item hovered? (and usable, aka not blocked by a popup, etc.). See ImGuiHoveredFlags for more options. +CIMGUI_API bool igIsItemActive(); // 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) +CIMGUI_API bool igIsItemFocused(); // is the last item focused for keyboard/gamepad navigation? +CIMGUI_API bool igIsItemClicked(int mouse_button); // is the last item clicked? (e.g. button/node just clicked on) == IsMouseClicked(mouse_button) && IsItemHovered() +CIMGUI_API bool igIsItemVisible(); // is the last item visible? (items may be out of sight because of clipping/scrolling) +CIMGUI_API bool igIsItemDeactivated(); // was the last item just made inactive (item was previously active). Useful for Undo/Redo patterns with widgets that requires continuous editing. +CIMGUI_API bool igIsItemDeactivatedAfterChange(); // 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 requires 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). +CIMGUI_API bool igIsAnyItemHovered(); +CIMGUI_API bool igIsAnyItemActive(); +CIMGUI_API bool igIsAnyItemFocused(); +CIMGUI_API ImVec2 igGetItemRectMin(); // get bounding rectangle of last item, in screen space +CIMGUI_API ImVec2 igGetItemRectMax(); // " +CIMGUI_API ImVec2 igGetItemRectSize(); // get size of last item, in screen space +CIMGUI_API void igSetItemAllowOverlap(); // allow last item to be overlapped by a subsequent item. sometimes useful with invisible buttons, selectables, etc. to catch unused area. +CIMGUI_API bool igIsRectVisible(const ImVec2 size); // test if rectangle (of given size, starting from cursor position) is visible / not clipped. +CIMGUI_API bool igIsRectVisibleVec2(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. +CIMGUI_API float igGetTime(); +CIMGUI_API int igGetFrameCount(); +CIMGUI_API ImDrawList* igGetOverlayDrawList(); // this draw list will be the last rendered one, useful to quickly draw overlays shapes/text +CIMGUI_API ImDrawListSharedData* igGetDrawListSharedData(); // you may use this when creating your own ImDrawList instances +CIMGUI_API const char* igGetStyleColorName(ImGuiCol idx); +CIMGUI_API void igSetStateStorage(ImGuiStorage* storage); // replace current window storage with our own (if you want to manipulate it yourself, typically clear subsection of it) +CIMGUI_API ImGuiStorage* igGetStateStorage(); +CIMGUI_API ImVec2 igCalcTextSize(const char* text,const char* text_end,bool hide_text_after_double_hash,float wrap_width); +CIMGUI_API void igCalcListClipping(int items_count,float items_height,int* out_items_display_start,int* out_items_display_end); // calculate coarse clipping for large list of evenly sized items. Prefer using the ImGuiListClipper higher-level helper if you can. +CIMGUI_API bool igBeginChildFrame(ImGuiID id,const ImVec2 size,ImGuiWindowFlags flags); // helper to create a child window / scrolling region that looks like a normal widget frame +CIMGUI_API void igEndChildFrame(); // always call EndChildFrame() regardless of BeginChildFrame() return values (which indicates a collapsed/clipped window) +CIMGUI_API ImVec4 igColorConvertU32ToFloat4(ImU32 in); +CIMGUI_API ImU32 igColorConvertFloat4ToU32(const ImVec4 in); +CIMGUI_API void igColorConvertRGBtoHSV(float r,float g,float b,float out_h,float out_s,float out_v); +CIMGUI_API void igColorConvertHSVtoRGB(float h,float s,float v,float out_r,float out_g,float out_b); // Inputs -CIMGUI_API int igGetKeyIndex(ImGuiKey imgui_key); // map ImGuiKey_* values into user's key index. == io.KeyMap[key] -CIMGUI_API bool igIsKeyDown(int user_key_index); // is key being held. == io.KeysDown[user_key_index]. note that imgui doesn't know the semantic of each entry of io.KeysDown[]. Use your own indices/enums according to how your backend/engine stored them into io.KeysDown[]! -CIMGUI_API bool igIsKeyPressed(int user_key_index,bool repeat); // was key pressed (went from !Down to Down). if repeat=true, uses io.KeyRepeatDelay / KeyRepeatRate -CIMGUI_API bool igIsKeyReleased(int user_key_index); // was key released (went from Down to !Down).. -CIMGUI_API int igGetKeyPressedAmount(int key_index,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 -CIMGUI_API bool igIsMouseDown(int button); // is mouse button held -CIMGUI_API bool igIsAnyMouseDown(); // is any mouse button held -CIMGUI_API bool igIsMouseClicked(int button,bool repeat); // did mouse button clicked (went from !Down to Down) -CIMGUI_API bool igIsMouseDoubleClicked(int button); // did mouse button double-clicked. a double-click returns false in IsMouseClicked(). uses io.MouseDoubleClickTime. -CIMGUI_API bool igIsMouseReleased(int button); // did mouse button released (went from Down to !Down) -CIMGUI_API bool igIsMouseDragging(int button,float lock_threshold); // is mouse dragging. if lock_threshold < -1.0f uses io.MouseDraggingThreshold -CIMGUI_API bool igIsMouseHoveringRect(const ImVec2 r_min,const ImVec2 r_max,bool clip); // is mouse hovering given bounding rect (in screen space). clipped by current clipping settings. disregarding of consideration of focus/window ordering/blocked by a popup. -CIMGUI_API bool igIsMousePosValid(const ImVec2* mouse_pos); // -CIMGUI_API ImVec2 igGetMousePos(); // shortcut to ImGui::GetIO().MousePos provided by user, to be consistent with other calls -CIMGUI_API ImVec2 igGetMousePosOnOpeningCurrentPopup(); // retrieve backup of mouse position at the time of opening popup we have BeginPopup() into -CIMGUI_API ImVec2 igGetMouseDragDelta(int button,float lock_threshold); // dragging amount since clicking. if lock_threshold < -1.0f uses io.MouseDraggingThreshold -CIMGUI_API void igResetMouseDragDelta(int button); // -CIMGUI_API ImGuiMouseCursor igGetMouseCursor(); // get desired cursor type, 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 -CIMGUI_API void igSetMouseCursor(ImGuiMouseCursor type); // set desired cursor type -CIMGUI_API void igCaptureKeyboardFromApp(bool capture); // manually override io.WantCaptureKeyboard flag next frame (said flag is entirely left for your application to handle). e.g. force capture keyboard when your widget is being hovered. -CIMGUI_API void igCaptureMouseFromApp(bool capture); // manually override io.WantCaptureMouse flag next frame (said flag is entirely left for your application to handle). +CIMGUI_API int igGetKeyIndex(ImGuiKey imgui_key); // map ImGuiKey_* values into user's key index. == io.KeyMap[key] +CIMGUI_API bool igIsKeyDown(int user_key_index); // is key being held. == io.KeysDown[user_key_index]. note that imgui doesn't know the semantic of each entry of io.KeysDown[]. Use your own indices/enums according to how your backend/engine stored them into io.KeysDown[]! +CIMGUI_API bool igIsKeyPressed(int user_key_index,bool repeat); // was key pressed (went from !Down to Down). if repeat=true, uses io.KeyRepeatDelay / KeyRepeatRate +CIMGUI_API bool igIsKeyReleased(int user_key_index); // was key released (went from Down to !Down).. +CIMGUI_API int igGetKeyPressedAmount(int key_index,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 +CIMGUI_API bool igIsMouseDown(int button); // is mouse button held +CIMGUI_API bool igIsAnyMouseDown(); // is any mouse button held +CIMGUI_API bool igIsMouseClicked(int button,bool repeat); // did mouse button clicked (went from !Down to Down) +CIMGUI_API bool igIsMouseDoubleClicked(int button); // did mouse button double-clicked. a double-click returns false in IsMouseClicked(). uses io.MouseDoubleClickTime. +CIMGUI_API bool igIsMouseReleased(int button); // did mouse button released (went from Down to !Down) +CIMGUI_API bool igIsMouseDragging(int button,float lock_threshold); // is mouse dragging. if lock_threshold < -1.0f uses io.MouseDraggingThreshold +CIMGUI_API bool igIsMouseHoveringRect(const ImVec2 r_min,const ImVec2 r_max,bool clip); // is mouse hovering given bounding rect (in screen space). clipped by current clipping settings. disregarding of consideration of focus/window ordering/blocked by a popup. +CIMGUI_API bool igIsMousePosValid(const ImVec2* mouse_pos); // +CIMGUI_API ImVec2 igGetMousePos(); // shortcut to ImGui::GetIO().MousePos provided by user, to be consistent with other calls +CIMGUI_API ImVec2 igGetMousePosOnOpeningCurrentPopup(); // retrieve backup of mouse position at the time of opening popup we have BeginPopup() into +CIMGUI_API ImVec2 igGetMouseDragDelta(int button,float lock_threshold); // dragging amount since clicking. if lock_threshold < -1.0f uses io.MouseDraggingThreshold +CIMGUI_API void igResetMouseDragDelta(int button); // +CIMGUI_API ImGuiMouseCursor igGetMouseCursor(); // get desired cursor type, 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 +CIMGUI_API void igSetMouseCursor(ImGuiMouseCursor type); // set desired cursor type +CIMGUI_API void igCaptureKeyboardFromApp(bool capture); // manually override io.WantCaptureKeyboard flag next frame (said flag is entirely left for your application to handle). e.g. force capture keyboard when your widget is being hovered. +CIMGUI_API void igCaptureMouseFromApp(bool capture); // manually override io.WantCaptureMouse flag next frame (said flag is entirely left for your application to handle). // Clipboard Utilities (also see the LogToClipboard() function to capture or output text data to the clipboard) -CIMGUI_API const char* igGetClipboardText(); -CIMGUI_API void igSetClipboardText(const char* text); +CIMGUI_API const char* igGetClipboardText(); +CIMGUI_API void igSetClipboardText(const char* text); // Settings/.Ini Utilities // The disk functions are automatically called if io.IniFilename != NULL (default is "imgui.ini"). // Set io.IniFilename to NULL to load/save manually. Read io.WantSaveIniSettings description about handling .ini saving manually. -CIMGUI_API void igLoadIniSettingsFromDisk(const char* ini_filename); // call after CreateContext() and before the first call to NewFrame(). NewFrame() automatically calls LoadIniSettingsFromDisk(io.IniFilename). -CIMGUI_API void igLoadIniSettingsFromMemory(const char* ini_data,size_t ini_size); // call after CreateContext() and before the first call to NewFrame() to provide .ini data from your own data source. -CIMGUI_API void igSaveIniSettingsToDisk(const char* ini_filename); -CIMGUI_API const char* igSaveIniSettingsToMemory(size_t* out_ini_size); // 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. +CIMGUI_API void igLoadIniSettingsFromDisk(const char* ini_filename); // call after CreateContext() and before the first call to NewFrame(). NewFrame() automatically calls LoadIniSettingsFromDisk(io.IniFilename). +CIMGUI_API void igLoadIniSettingsFromMemory(const char* ini_data,size_t ini_size); // call after CreateContext() and before the first call to NewFrame() to provide .ini data from your own data source. +CIMGUI_API void igSaveIniSettingsToDisk(const char* ini_filename); +CIMGUI_API const char* igSaveIniSettingsToMemory(size_t* out_ini_size); // 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. // Memory Utilities // All those functions are not reliant on the current context. // If you reload the contents of imgui.cpp at runtime, you may need to call SetCurrentContext() + SetAllocatorFunctions() again. -CIMGUI_API void igSetAllocatorFunctions(void*(*alloc_func)(size_t sz,void* user_data),void(*free_func)(void* ptr,void* user_data),void* user_data); -CIMGUI_API void* igMemAlloc(size_t size); -CIMGUI_API void igMemFree(void* ptr); -CIMGUI_API void ImGuiStyle_ScaleAllSizes(ImGuiStyle* self,float scale_factor); +CIMGUI_API void igSetAllocatorFunctions(void*(*alloc_func)(size_t sz,void* user_data),void(*free_func)(void* ptr,void* user_data),void* user_data); +CIMGUI_API void* igMemAlloc(size_t size); +CIMGUI_API void igMemFree(void* ptr); +CIMGUI_API void ImGuiStyle_ScaleAllSizes(ImGuiStyle* self,float scale_factor); //------------------------------------------------------------------ // Settings (fill once) // Default value: //------------------------------------------------------------------ @@ -1452,9 +1450,9 @@ CIMGUI_API void ImGuiStyle_ScaleAllSizes(ImGuiStyle* self,float scale_factor); // Input - Fill before calling NewFrame() //------------------------------------------------------------------ // Functions -CIMGUI_API void ImGuiIO_AddInputCharacter(ImGuiIO* self,ImWchar c); // Add new character into InputCharacters[] -CIMGUI_API void ImGuiIO_AddInputCharactersUTF8(ImGuiIO* self,const char* utf8_chars); // Add new characters into InputCharacters[] from an UTF-8 string -CIMGUI_API inline void ImGuiIO_ClearInputCharacters(ImGuiIO* self); // Clear the text input buffer manually +CIMGUI_API void ImGuiIO_AddInputCharacter(ImGuiIO* self,ImWchar c); // Add new character into InputCharacters[] +CIMGUI_API void ImGuiIO_AddInputCharactersUTF8(ImGuiIO* self,const char* utf8_chars); // Add new characters into InputCharacters[] from an UTF-8 string +CIMGUI_API inline void ImGuiIO_ClearInputCharacters(ImGuiIO* self); // Clear the text input buffer manually //------------------------------------------------------------------ // Output - Retrieve after calling NewFrame() //------------------------------------------------------------------ @@ -1462,190 +1460,190 @@ CIMGUI_API inline void ImGuiIO_ClearInputCharacters(ImGuiIO* self); // Cle // [Internal] ImGui will maintain those fields. Forward compatibility not guaranteed! //------------------------------------------------------------------ // NB: It is forbidden to call push_back/push_front/insert with a reference pointing inside the ImVector data itself! e.g. v.push_back(v[10]) is forbidden. -CIMGUI_API const char* TextRange_begin(TextRange* self); -CIMGUI_API const char* TextRange_end(TextRange* self); -CIMGUI_API bool TextRange_empty(TextRange* self); -CIMGUI_API char TextRange_front(TextRange* self); -CIMGUI_API bool TextRange_is_blank(TextRange* self,char c); -CIMGUI_API void TextRange_trim_blanks(TextRange* self); -CIMGUI_API void TextRange_split(TextRange* self,char separator,ImVector_TextRange out); -CIMGUI_API bool ImGuiTextFilter_Draw(ImGuiTextFilter* self,const char* label,float width); // Helper calling InputText+Build -CIMGUI_API bool ImGuiTextFilter_PassFilter(ImGuiTextFilter* self,const char* text,const char* text_end); -CIMGUI_API void ImGuiTextFilter_Build(ImGuiTextFilter* self); -CIMGUI_API void ImGuiTextFilter_Clear(ImGuiTextFilter* self); -CIMGUI_API bool ImGuiTextFilter_IsActive(ImGuiTextFilter* self); -CIMGUI_API const char* ImGuiTextBuffer_begin(ImGuiTextBuffer* self); -CIMGUI_API const char* ImGuiTextBuffer_end(ImGuiTextBuffer* self); // Buf is zero-terminated, so end() will point on the zero-terminator -CIMGUI_API int ImGuiTextBuffer_size(ImGuiTextBuffer* self); -CIMGUI_API bool ImGuiTextBuffer_empty(ImGuiTextBuffer* self); -CIMGUI_API void ImGuiTextBuffer_clear(ImGuiTextBuffer* self); -CIMGUI_API void ImGuiTextBuffer_reserve(ImGuiTextBuffer* self,int capacity); -CIMGUI_API const char* ImGuiTextBuffer_c_str(ImGuiTextBuffer* self); -CIMGUI_API void ImGuiTextBuffer_appendfv(ImGuiTextBuffer* self,const char* fmt,va_list args); +CIMGUI_API const char* TextRange_begin(TextRange* self); +CIMGUI_API const char* TextRange_end(TextRange* self); +CIMGUI_API bool TextRange_empty(TextRange* self); +CIMGUI_API char TextRange_front(TextRange* self); +CIMGUI_API bool TextRange_is_blank(TextRange* self,char c); +CIMGUI_API void TextRange_trim_blanks(TextRange* self); +CIMGUI_API void TextRange_split(TextRange* self,char separator,ImVector_TextRange out); +CIMGUI_API bool ImGuiTextFilter_Draw(ImGuiTextFilter* self,const char* label,float width); // Helper calling InputText+Build +CIMGUI_API bool ImGuiTextFilter_PassFilter(ImGuiTextFilter* self,const char* text,const char* text_end); +CIMGUI_API void ImGuiTextFilter_Build(ImGuiTextFilter* self); +CIMGUI_API void ImGuiTextFilter_Clear(ImGuiTextFilter* self); +CIMGUI_API bool ImGuiTextFilter_IsActive(ImGuiTextFilter* self); +CIMGUI_API const char* ImGuiTextBuffer_begin(ImGuiTextBuffer* self); +CIMGUI_API const char* ImGuiTextBuffer_end(ImGuiTextBuffer* self); // Buf is zero-terminated, so end() will point on the zero-terminator +CIMGUI_API int ImGuiTextBuffer_size(ImGuiTextBuffer* self); +CIMGUI_API bool ImGuiTextBuffer_empty(ImGuiTextBuffer* self); +CIMGUI_API void ImGuiTextBuffer_clear(ImGuiTextBuffer* self); +CIMGUI_API void ImGuiTextBuffer_reserve(ImGuiTextBuffer* self,int capacity); +CIMGUI_API const char* ImGuiTextBuffer_c_str(ImGuiTextBuffer* self); +CIMGUI_API void ImGuiTextBuffer_appendfv(ImGuiTextBuffer* self,const char* fmt,va_list args); // - Get***() functions find pair, never add/allocate. Pairs are sorted so a query is O(log N) // - Set***() functions find pair, insertion on demand if missing. // - Sorted insertion is costly, paid once. A typical frame shouldn't need to insert any new pair. -CIMGUI_API void ImGuiStorage_Clear(ImGuiStorage* self); -CIMGUI_API int ImGuiStorage_GetInt(ImGuiStorage* self,ImGuiID key,int default_val); -CIMGUI_API void ImGuiStorage_SetInt(ImGuiStorage* self,ImGuiID key,int val); -CIMGUI_API bool ImGuiStorage_GetBool(ImGuiStorage* self,ImGuiID key,bool default_val); -CIMGUI_API void ImGuiStorage_SetBool(ImGuiStorage* self,ImGuiID key,bool val); -CIMGUI_API float ImGuiStorage_GetFloat(ImGuiStorage* self,ImGuiID key,float default_val); -CIMGUI_API void ImGuiStorage_SetFloat(ImGuiStorage* self,ImGuiID key,float val); -CIMGUI_API void* ImGuiStorage_GetVoidPtr(ImGuiStorage* self,ImGuiID key); // default_val is NULL -CIMGUI_API void ImGuiStorage_SetVoidPtr(ImGuiStorage* self,ImGuiID key,void* val); +CIMGUI_API void ImGuiStorage_Clear(ImGuiStorage* self); +CIMGUI_API int ImGuiStorage_GetInt(ImGuiStorage* self,ImGuiID key,int default_val); +CIMGUI_API void ImGuiStorage_SetInt(ImGuiStorage* self,ImGuiID key,int val); +CIMGUI_API bool ImGuiStorage_GetBool(ImGuiStorage* self,ImGuiID key,bool default_val); +CIMGUI_API void ImGuiStorage_SetBool(ImGuiStorage* self,ImGuiID key,bool val); +CIMGUI_API float ImGuiStorage_GetFloat(ImGuiStorage* self,ImGuiID key,float default_val); +CIMGUI_API void ImGuiStorage_SetFloat(ImGuiStorage* self,ImGuiID key,float val); +CIMGUI_API void* ImGuiStorage_GetVoidPtr(ImGuiStorage* self,ImGuiID key); // default_val is NULL +CIMGUI_API void ImGuiStorage_SetVoidPtr(ImGuiStorage* self,ImGuiID key,void* val); // - Get***Ref() functions finds pair, insert on demand if missing, return pointer. Useful if you intend to do Get+Set. // - References are only valid until a new value is added to the storage. Calling a Set***() function or a Get***Ref() function invalidates the pointer. // - A typical use case where this is convenient for quick hacking (e.g. add storage during a live Edit&Continue session if you can't modify existing struct) // float* pvar = ImGui::GetFloatRef(key); ImGui::SliderFloat("var", pvar, 0, 100.0f); some_var += *pvar; -CIMGUI_API int* ImGuiStorage_GetIntRef(ImGuiStorage* self,ImGuiID key,int default_val); -CIMGUI_API bool* ImGuiStorage_GetBoolRef(ImGuiStorage* self,ImGuiID key,bool default_val); -CIMGUI_API float* ImGuiStorage_GetFloatRef(ImGuiStorage* self,ImGuiID key,float default_val); -CIMGUI_API void** ImGuiStorage_GetVoidPtrRef(ImGuiStorage* self,ImGuiID key,void* default_val); +CIMGUI_API int* ImGuiStorage_GetIntRef(ImGuiStorage* self,ImGuiID key,int default_val); +CIMGUI_API bool* ImGuiStorage_GetBoolRef(ImGuiStorage* self,ImGuiID key,bool default_val); +CIMGUI_API float* ImGuiStorage_GetFloatRef(ImGuiStorage* self,ImGuiID key,float default_val); +CIMGUI_API void** ImGuiStorage_GetVoidPtrRef(ImGuiStorage* self,ImGuiID key,void* default_val); // Use on your own storage if you know only integer are being stored (open/close all tree nodes) -CIMGUI_API void ImGuiStorage_SetAllInt(ImGuiStorage* self,int val); +CIMGUI_API void ImGuiStorage_SetAllInt(ImGuiStorage* self,int val); // For quicker full rebuild of a storage (instead of an incremental one), you may add all your contents and then sort once. -CIMGUI_API void ImGuiStorage_BuildSortByKey(ImGuiStorage* self); +CIMGUI_API void ImGuiStorage_BuildSortByKey(ImGuiStorage* self); // CharFilter event: // Completion,History,Always events: // If you modify the buffer contents make sure you update 'BufTextLen' and set 'BufDirty' to true. // NB: Helper functions for text manipulation. Calling those function loses selection. -CIMGUI_API void ImGuiTextEditCallbackData_DeleteChars(ImGuiTextEditCallbackData* self,int pos,int bytes_count); -CIMGUI_API void ImGuiTextEditCallbackData_InsertChars(ImGuiTextEditCallbackData* self,int pos,const char* text,const char* text_end); -CIMGUI_API bool ImGuiTextEditCallbackData_HasSelection(ImGuiTextEditCallbackData* self); +CIMGUI_API void ImGuiTextEditCallbackData_DeleteChars(ImGuiTextEditCallbackData* self,int pos,int bytes_count); +CIMGUI_API void ImGuiTextEditCallbackData_InsertChars(ImGuiTextEditCallbackData* self,int pos,const char* text,const char* text_end); +CIMGUI_API bool ImGuiTextEditCallbackData_HasSelection(ImGuiTextEditCallbackData* self); // Members // [Internal] -CIMGUI_API void ImGuiPayload_Clear(ImGuiPayload* self); -CIMGUI_API bool ImGuiPayload_IsDataType(ImGuiPayload* self,const char* type); -CIMGUI_API bool ImGuiPayload_IsPreview(ImGuiPayload* self); -CIMGUI_API bool ImGuiPayload_IsDelivery(ImGuiPayload* self); +CIMGUI_API void ImGuiPayload_Clear(ImGuiPayload* self); +CIMGUI_API bool ImGuiPayload_IsDataType(ImGuiPayload* self,const char* type); +CIMGUI_API bool ImGuiPayload_IsPreview(ImGuiPayload* self); +CIMGUI_API bool ImGuiPayload_IsDelivery(ImGuiPayload* self); // FIXME-OBSOLETE: May need to obsolete/cleanup those helpers. -CIMGUI_API inline void ImColor_SetHSV(ImColor* self,float h,float s,float v,float a); -CIMGUI_API ImColor ImColor_HSV(ImColor* self,float h,float s,float v,float a); +CIMGUI_API inline void ImColor_SetHSV(ImColor* self,float h,float s,float v,float a); +CIMGUI_API ImColor ImColor_HSV(ImColor* self,float h,float s,float v,float a); // items_count: Use -1 to ignore (you can call Begin later). Use INT_MAX if you don't know how many items you have (in which case the cursor won't be advanced in the final step). // items_height: Use -1.0f to be calculated automatically on first step. Otherwise pass in the distance between your items, typically GetTextLineHeightWithSpacing() or GetFrameHeightWithSpacing(). // If you don't specify an items_height, you NEED to call Step(). If you specify items_height you may call the old Begin()/End() api directly, but prefer calling Step(). -CIMGUI_API bool ImGuiListClipper_Step(ImGuiListClipper* self); // Call until it returns false. The DisplayStart/DisplayEnd fields will be set and you can process/draw those items. -CIMGUI_API void ImGuiListClipper_Begin(ImGuiListClipper* self,int items_count,float items_height); // Automatically called by constructor if you passed 'items_count' or by Step() in Step 1. -CIMGUI_API void ImGuiListClipper_End(ImGuiListClipper* self); // Automatically called on the last call of Step() that returns false. +CIMGUI_API bool ImGuiListClipper_Step(ImGuiListClipper* self); // Call until it returns false. The DisplayStart/DisplayEnd fields will be set and you can process/draw those items. +CIMGUI_API void ImGuiListClipper_Begin(ImGuiListClipper* self,int items_count,float items_height); // Automatically called by constructor if you passed 'items_count' or by Step() in Step 1. +CIMGUI_API void ImGuiListClipper_End(ImGuiListClipper* self); // Automatically called on the last call of Step() that returns false. // This is what you have to render // [Internal, used while building lists] // If you want to create ImDrawList instances, pass them ImGui::GetDrawListSharedData() or create and use your own ImDrawListSharedData (so you can use ImDrawList without ImGui) -CIMGUI_API void ImDrawList_PushClipRect(ImDrawList* self,ImVec2 clip_rect_min,ImVec2 clip_rect_max,bool intersect_with_current_clip_rect); // 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) -CIMGUI_API void ImDrawList_PushClipRectFullScreen(ImDrawList* self); -CIMGUI_API void ImDrawList_PopClipRect(ImDrawList* self); -CIMGUI_API void ImDrawList_PushTextureID(ImDrawList* self,ImTextureID texture_id); -CIMGUI_API void ImDrawList_PopTextureID(ImDrawList* self); -CIMGUI_API inline ImVec2 ImDrawList_GetClipRectMin(ImDrawList* self); -CIMGUI_API inline ImVec2 ImDrawList_GetClipRectMax(ImDrawList* self); +CIMGUI_API void ImDrawList_PushClipRect(ImDrawList* self,ImVec2 clip_rect_min,ImVec2 clip_rect_max,bool intersect_with_current_clip_rect); // 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) +CIMGUI_API void ImDrawList_PushClipRectFullScreen(ImDrawList* self); +CIMGUI_API void ImDrawList_PopClipRect(ImDrawList* self); +CIMGUI_API void ImDrawList_PushTextureID(ImDrawList* self,ImTextureID texture_id); +CIMGUI_API void ImDrawList_PopTextureID(ImDrawList* self); +CIMGUI_API inline ImVec2 ImDrawList_GetClipRectMin(ImDrawList* self); +CIMGUI_API inline ImVec2 ImDrawList_GetClipRectMax(ImDrawList* self); // Primitives -CIMGUI_API void ImDrawList_AddLine(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col,float thickness); -CIMGUI_API void ImDrawList_AddRect(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col,float rounding,int rounding_corners_flags,float thickness); // a: upper-left, b: lower-right, rounding_corners_flags: 4-bits corresponding to which corner to round -CIMGUI_API void ImDrawList_AddRectFilled(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col,float rounding,int rounding_corners_flags); // a: upper-left, b: lower-right -CIMGUI_API void ImDrawList_AddRectFilledMultiColor(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col_upr_left,ImU32 col_upr_right,ImU32 col_bot_right,ImU32 col_bot_left); -CIMGUI_API void ImDrawList_AddQuad(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 c,const ImVec2 d,ImU32 col,float thickness); -CIMGUI_API void ImDrawList_AddQuadFilled(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 c,const ImVec2 d,ImU32 col); -CIMGUI_API void ImDrawList_AddTriangle(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 c,ImU32 col,float thickness); -CIMGUI_API void ImDrawList_AddTriangleFilled(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 c,ImU32 col); -CIMGUI_API void ImDrawList_AddCircle(ImDrawList* self,const ImVec2 centre,float radius,ImU32 col,int num_segments,float thickness); -CIMGUI_API void ImDrawList_AddCircleFilled(ImDrawList* self,const ImVec2 centre,float radius,ImU32 col,int num_segments); -CIMGUI_API void ImDrawList_AddText(ImDrawList* self,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end); -CIMGUI_API void ImDrawList_AddTextFontPtr(ImDrawList* self,const ImFont* font,float font_size,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end,float wrap_width,const ImVec4* cpu_fine_clip_rect); -CIMGUI_API void ImDrawList_AddImage(ImDrawList* self,ImTextureID user_texture_id,const ImVec2 a,const ImVec2 b,const ImVec2 uv_a,const ImVec2 uv_b,ImU32 col); -CIMGUI_API void ImDrawList_AddImageQuad(ImDrawList* self,ImTextureID user_texture_id,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); -CIMGUI_API void ImDrawList_AddImageRounded(ImDrawList* self,ImTextureID user_texture_id,const ImVec2 a,const ImVec2 b,const ImVec2 uv_a,const ImVec2 uv_b,ImU32 col,float rounding,int rounding_corners); -CIMGUI_API void ImDrawList_AddPolyline(ImDrawList* self,const ImVec2* points,const int num_points,ImU32 col,bool closed,float thickness); -CIMGUI_API void ImDrawList_AddConvexPolyFilled(ImDrawList* self,const ImVec2* points,const int num_points,ImU32 col); // Note: Anti-aliased filling requires points to be in clockwise order. -CIMGUI_API void ImDrawList_AddBezierCurve(ImDrawList* self,const ImVec2 pos0,const ImVec2 cp0,const ImVec2 cp1,const ImVec2 pos1,ImU32 col,float thickness,int num_segments); +CIMGUI_API void ImDrawList_AddLine(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col,float thickness); +CIMGUI_API void ImDrawList_AddRect(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col,float rounding,int rounding_corners_flags,float thickness); // a: upper-left, b: lower-right, rounding_corners_flags: 4-bits corresponding to which corner to round +CIMGUI_API void ImDrawList_AddRectFilled(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col,float rounding,int rounding_corners_flags); // a: upper-left, b: lower-right +CIMGUI_API void ImDrawList_AddRectFilledMultiColor(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col_upr_left,ImU32 col_upr_right,ImU32 col_bot_right,ImU32 col_bot_left); +CIMGUI_API void ImDrawList_AddQuad(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 c,const ImVec2 d,ImU32 col,float thickness); +CIMGUI_API void ImDrawList_AddQuadFilled(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 c,const ImVec2 d,ImU32 col); +CIMGUI_API void ImDrawList_AddTriangle(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 c,ImU32 col,float thickness); +CIMGUI_API void ImDrawList_AddTriangleFilled(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 c,ImU32 col); +CIMGUI_API void ImDrawList_AddCircle(ImDrawList* self,const ImVec2 centre,float radius,ImU32 col,int num_segments,float thickness); +CIMGUI_API void ImDrawList_AddCircleFilled(ImDrawList* self,const ImVec2 centre,float radius,ImU32 col,int num_segments); +CIMGUI_API void ImDrawList_AddText(ImDrawList* self,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end); +CIMGUI_API void ImDrawList_AddTextFontPtr(ImDrawList* self,const ImFont* font,float font_size,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end,float wrap_width,const ImVec4* cpu_fine_clip_rect); +CIMGUI_API void ImDrawList_AddImage(ImDrawList* self,ImTextureID user_texture_id,const ImVec2 a,const ImVec2 b,const ImVec2 uv_a,const ImVec2 uv_b,ImU32 col); +CIMGUI_API void ImDrawList_AddImageQuad(ImDrawList* self,ImTextureID user_texture_id,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); +CIMGUI_API void ImDrawList_AddImageRounded(ImDrawList* self,ImTextureID user_texture_id,const ImVec2 a,const ImVec2 b,const ImVec2 uv_a,const ImVec2 uv_b,ImU32 col,float rounding,int rounding_corners); +CIMGUI_API void ImDrawList_AddPolyline(ImDrawList* self,const ImVec2* points,const int num_points,ImU32 col,bool closed,float thickness); +CIMGUI_API void ImDrawList_AddConvexPolyFilled(ImDrawList* self,const ImVec2* points,const int num_points,ImU32 col); // Note: Anti-aliased filling requires points to be in clockwise order. +CIMGUI_API void ImDrawList_AddBezierCurve(ImDrawList* self,const ImVec2 pos0,const ImVec2 cp0,const ImVec2 cp1,const ImVec2 pos1,ImU32 col,float thickness,int num_segments); // Stateful path API, add points then finish with PathFillConvex() or PathStroke() -CIMGUI_API inline void ImDrawList_PathClear(ImDrawList* self); -CIMGUI_API inline void ImDrawList_PathLineTo(ImDrawList* self,const ImVec2 pos); -CIMGUI_API inline void ImDrawList_PathLineToMergeDuplicate(ImDrawList* self,const ImVec2 pos); -CIMGUI_API inline void ImDrawList_PathFillConvex(ImDrawList* self,ImU32 col); // Note: Anti-aliased filling requires points to be in clockwise order. -CIMGUI_API inline void ImDrawList_PathStroke(ImDrawList* self,ImU32 col,bool closed,float thickness); -CIMGUI_API void ImDrawList_PathArcTo(ImDrawList* self,const ImVec2 centre,float radius,float a_min,float a_max,int num_segments); -CIMGUI_API void ImDrawList_PathArcToFast(ImDrawList* self,const ImVec2 centre,float radius,int a_min_of_12,int a_max_of_12); // Use precomputed angles for a 12 steps circle -CIMGUI_API void ImDrawList_PathBezierCurveTo(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,int num_segments); -CIMGUI_API void ImDrawList_PathRect(ImDrawList* self,const ImVec2 rect_min,const ImVec2 rect_max,float rounding,int rounding_corners_flags); +CIMGUI_API inline void ImDrawList_PathClear(ImDrawList* self); +CIMGUI_API inline void ImDrawList_PathLineTo(ImDrawList* self,const ImVec2 pos); +CIMGUI_API inline void ImDrawList_PathLineToMergeDuplicate(ImDrawList* self,const ImVec2 pos); +CIMGUI_API inline void ImDrawList_PathFillConvex(ImDrawList* self,ImU32 col); // Note: Anti-aliased filling requires points to be in clockwise order. +CIMGUI_API inline void ImDrawList_PathStroke(ImDrawList* self,ImU32 col,bool closed,float thickness); +CIMGUI_API void ImDrawList_PathArcTo(ImDrawList* self,const ImVec2 centre,float radius,float a_min,float a_max,int num_segments); +CIMGUI_API void ImDrawList_PathArcToFast(ImDrawList* self,const ImVec2 centre,float radius,int a_min_of_12,int a_max_of_12); // Use precomputed angles for a 12 steps circle +CIMGUI_API void ImDrawList_PathBezierCurveTo(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,int num_segments); +CIMGUI_API void ImDrawList_PathRect(ImDrawList* self,const ImVec2 rect_min,const ImVec2 rect_max,float rounding,int rounding_corners_flags); // Channels // - Use to simulate layers. By switching channels to can render out-of-order (e.g. submit foreground primitives before background primitives) // - Use to minimize draw calls (e.g. if going back-and-forth between multiple non-overlapping clipping rectangles, prefer to append into separate channels then merge at the end) -CIMGUI_API void ImDrawList_ChannelsSplit(ImDrawList* self,int channels_count); -CIMGUI_API void ImDrawList_ChannelsMerge(ImDrawList* self); -CIMGUI_API void ImDrawList_ChannelsSetCurrent(ImDrawList* self,int channel_index); +CIMGUI_API void ImDrawList_ChannelsSplit(ImDrawList* self,int channels_count); +CIMGUI_API void ImDrawList_ChannelsMerge(ImDrawList* self); +CIMGUI_API void ImDrawList_ChannelsSetCurrent(ImDrawList* self,int channel_index); // Advanced -CIMGUI_API void ImDrawList_AddCallback(ImDrawList* self,ImDrawCallback callback,void* callback_data); // Your rendering function must check for 'UserCallback' in ImDrawCmd and call the function instead of rendering triangles. -CIMGUI_API void ImDrawList_AddDrawCmd(ImDrawList* self); // 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 -CIMGUI_API ImDrawList* ImDrawList_CloneOutput(ImDrawList* self); // Create a clone of the CmdBuffer/IdxBuffer/VtxBuffer. +CIMGUI_API void ImDrawList_AddCallback(ImDrawList* self,ImDrawCallback callback,void* callback_data); // Your rendering function must check for 'UserCallback' in ImDrawCmd and call the function instead of rendering triangles. +CIMGUI_API void ImDrawList_AddDrawCmd(ImDrawList* self); // 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 +CIMGUI_API ImDrawList* ImDrawList_CloneOutput(ImDrawList* self); // Create a clone of the CmdBuffer/IdxBuffer/VtxBuffer. // Internal helpers // NB: all primitives needs to be reserved via PrimReserve() beforehand! -CIMGUI_API void ImDrawList_Clear(ImDrawList* self); -CIMGUI_API void ImDrawList_ClearFreeMemory(ImDrawList* self); -CIMGUI_API void ImDrawList_PrimReserve(ImDrawList* self,int idx_count,int vtx_count); -CIMGUI_API void ImDrawList_PrimRect(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col); // Axis aligned rectangle (composed of two triangles) -CIMGUI_API void ImDrawList_PrimRectUV(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 uv_a,const ImVec2 uv_b,ImU32 col); -CIMGUI_API void ImDrawList_PrimQuadUV(ImDrawList* self,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); -CIMGUI_API inline void ImDrawList_PrimWriteVtx(ImDrawList* self,const ImVec2 pos,const ImVec2 uv,ImU32 col); -CIMGUI_API inline void ImDrawList_PrimWriteIdx(ImDrawList* self,ImDrawIdx idx); -CIMGUI_API inline void ImDrawList_PrimVtx(ImDrawList* self,const ImVec2 pos,const ImVec2 uv,ImU32 col); -CIMGUI_API void ImDrawList_UpdateClipRect(ImDrawList* self); -CIMGUI_API void ImDrawList_UpdateTextureID(ImDrawList* self); +CIMGUI_API void ImDrawList_Clear(ImDrawList* self); +CIMGUI_API void ImDrawList_ClearFreeMemory(ImDrawList* self); +CIMGUI_API void ImDrawList_PrimReserve(ImDrawList* self,int idx_count,int vtx_count); +CIMGUI_API void ImDrawList_PrimRect(ImDrawList* self,const ImVec2 a,const ImVec2 b,ImU32 col); // Axis aligned rectangle (composed of two triangles) +CIMGUI_API void ImDrawList_PrimRectUV(ImDrawList* self,const ImVec2 a,const ImVec2 b,const ImVec2 uv_a,const ImVec2 uv_b,ImU32 col); +CIMGUI_API void ImDrawList_PrimQuadUV(ImDrawList* self,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); +CIMGUI_API inline void ImDrawList_PrimWriteVtx(ImDrawList* self,const ImVec2 pos,const ImVec2 uv,ImU32 col); +CIMGUI_API inline void ImDrawList_PrimWriteIdx(ImDrawList* self,ImDrawIdx idx); +CIMGUI_API inline void ImDrawList_PrimVtx(ImDrawList* self,const ImVec2 pos,const ImVec2 uv,ImU32 col); +CIMGUI_API void ImDrawList_UpdateClipRect(ImDrawList* self); +CIMGUI_API void ImDrawList_UpdateTextureID(ImDrawList* self); // Functions -CIMGUI_API void ImDrawData_Clear(ImDrawData* self); // The ImDrawList are owned by ImGuiContext! -CIMGUI_API void ImDrawData_DeIndexAllBuffers(ImDrawData* self); // Helper to convert all buffers from indexed to non-indexed, in case you cannot render indexed. Note: this is slow and most likely a waste of resources. Always prefer indexed rendering! -CIMGUI_API void ImDrawData_ScaleClipRects(ImDrawData* self,const ImVec2 sc); // Helper to scale the ClipRect field of each ImDrawCmd. Use if your final output buffer is at a different scale than ImGui expects, or if there is a difference between your window resolution and framebuffer resolution. +CIMGUI_API void ImDrawData_Clear(ImDrawData* self); // The ImDrawList are owned by ImGuiContext! +CIMGUI_API void ImDrawData_DeIndexAllBuffers(ImDrawData* self); // Helper to convert all buffers from indexed to non-indexed, in case you cannot render indexed. Note: this is slow and most likely a waste of resources. Always prefer indexed rendering! +CIMGUI_API void ImDrawData_ScaleClipRects(ImDrawData* self,const ImVec2 sc); // Helper to scale the ClipRect field of each ImDrawCmd. Use if your final output buffer is at a different scale than ImGui expects, or if there is a difference between your window resolution and framebuffer resolution. // [Internal] -CIMGUI_API ImFont* ImFontAtlas_AddFont(ImFontAtlas* self,const ImFontConfig* font_cfg); -CIMGUI_API ImFont* ImFontAtlas_AddFontDefault(ImFontAtlas* self,const ImFontConfig* font_cfg); -CIMGUI_API ImFont* ImFontAtlas_AddFontFromFileTTF(ImFontAtlas* self,const char* filename,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges); -CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryTTF(ImFontAtlas* self,void* font_data,int font_size,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges); // Note: Transfer ownership of 'ttf_data' to ImFontAtlas! Will be deleted after Build(). Set font_cfg->FontDataOwnedByAtlas to false to keep ownership. -CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryCompressedTTF(ImFontAtlas* self,const void* compressed_font_data,int compressed_font_size,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges); // 'compressed_font_data' still owned by caller. Compress with binary_to_compressed_c.cpp. -CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryCompressedBase85TTF(ImFontAtlas* self,const char* compressed_font_data_base85,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges); // 'compressed_font_data_base85' still owned by caller. Compress with binary_to_compressed_c.cpp with -base85 parameter. -CIMGUI_API void ImFontAtlas_ClearInputData(ImFontAtlas* self); // Clear input data (all ImFontConfig structures including sizes, TTF data, glyph ranges, etc.) = all the data used to build the texture and fonts. -CIMGUI_API void ImFontAtlas_ClearTexData(ImFontAtlas* self); // Clear output texture data (CPU side). Saves RAM once the texture has been copied to graphics memory. -CIMGUI_API void ImFontAtlas_ClearFonts(ImFontAtlas* self); // Clear output font data (glyphs storage, UV coordinates). -CIMGUI_API void ImFontAtlas_Clear(ImFontAtlas* self); // Clear all input and output. +CIMGUI_API ImFont* ImFontAtlas_AddFont(ImFontAtlas* self,const ImFontConfig* font_cfg); +CIMGUI_API ImFont* ImFontAtlas_AddFontDefault(ImFontAtlas* self,const ImFontConfig* font_cfg); +CIMGUI_API ImFont* ImFontAtlas_AddFontFromFileTTF(ImFontAtlas* self,const char* filename,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges); +CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryTTF(ImFontAtlas* self,void* font_data,int font_size,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges); // Note: Transfer ownership of 'ttf_data' to ImFontAtlas! Will be deleted after Build(). Set font_cfg->FontDataOwnedByAtlas to false to keep ownership. +CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryCompressedTTF(ImFontAtlas* self,const void* compressed_font_data,int compressed_font_size,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges); // 'compressed_font_data' still owned by caller. Compress with binary_to_compressed_c.cpp. +CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryCompressedBase85TTF(ImFontAtlas* self,const char* compressed_font_data_base85,float size_pixels,const ImFontConfig* font_cfg,const ImWchar* glyph_ranges); // 'compressed_font_data_base85' still owned by caller. Compress with binary_to_compressed_c.cpp with -base85 parameter. +CIMGUI_API void ImFontAtlas_ClearInputData(ImFontAtlas* self); // Clear input data (all ImFontConfig structures including sizes, TTF data, glyph ranges, etc.) = all the data used to build the texture and fonts. +CIMGUI_API void ImFontAtlas_ClearTexData(ImFontAtlas* self); // Clear output texture data (CPU side). Saves RAM once the texture has been copied to graphics memory. +CIMGUI_API void ImFontAtlas_ClearFonts(ImFontAtlas* self); // Clear output font data (glyphs storage, UV coordinates). +CIMGUI_API void ImFontAtlas_Clear(ImFontAtlas* self); // Clear all input and output. // Build atlas, retrieve pixel data. // User is in charge of copying the pixels into graphics memory (e.g. create a texture with your engine). Then store your texture handle with SetTexID(). // RGBA32 format is provided for convenience and compatibility, but note that unless you use CustomRect to draw color data, the RGB pixels emitted from Fonts will all be white (~75% of waste). // Pitch = Width * BytesPerPixels -CIMGUI_API bool ImFontAtlas_Build(ImFontAtlas* self); // Build pixels data. This is called automatically for you by the GetTexData*** functions. -CIMGUI_API bool ImFontAtlas_IsBuilt(ImFontAtlas* self); -CIMGUI_API void ImFontAtlas_GetTexDataAsAlpha8(ImFontAtlas* self,unsigned char** out_pixels,int* out_width,int* out_height,int* out_bytes_per_pixel); // 1 byte per-pixel -CIMGUI_API void ImFontAtlas_GetTexDataAsRGBA32(ImFontAtlas* self,unsigned char** out_pixels,int* out_width,int* out_height,int* out_bytes_per_pixel); // 4 bytes-per-pixel -CIMGUI_API void ImFontAtlas_SetTexID(ImFontAtlas* self,ImTextureID id); +CIMGUI_API bool ImFontAtlas_Build(ImFontAtlas* self); // Build pixels data. This is called automatically for you by the GetTexData*** functions. +CIMGUI_API bool ImFontAtlas_IsBuilt(ImFontAtlas* self); +CIMGUI_API void ImFontAtlas_GetTexDataAsAlpha8(ImFontAtlas* self,unsigned char** out_pixels,int* out_width,int* out_height,int* out_bytes_per_pixel); // 1 byte per-pixel +CIMGUI_API void ImFontAtlas_GetTexDataAsRGBA32(ImFontAtlas* self,unsigned char** out_pixels,int* out_width,int* out_height,int* out_bytes_per_pixel); // 4 bytes-per-pixel +CIMGUI_API void ImFontAtlas_SetTexID(ImFontAtlas* self,ImTextureID id); //------------------------------------------- // Glyph Ranges //------------------------------------------- // Helpers to retrieve list of common Unicode ranges (2 value per range, values are inclusive, zero-terminated list) // NB: Make sure that your string are UTF-8 and NOT in your local code page. In C++11, you can create UTF-8 string literal using the u8"Hello world" syntax. See FAQ for details. // NB: Consider using GlyphRangesBuilder to build glyph ranges from textual data. -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesDefault(ImFontAtlas* self); // Basic Latin, Extended Latin -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesKorean(ImFontAtlas* self); // Default + Korean characters -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesJapanese(ImFontAtlas* self); // Default + Hiragana, Katakana, Half-Width, Selection of 1946 Ideographs -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesChineseFull(ImFontAtlas* self); // Default + Half-Width + Japanese Hiragana/Katakana + full set of about 21000 CJK Unified Ideographs -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesChineseSimplifiedCommon(ImFontAtlas* self);// Default + Half-Width + Japanese Hiragana/Katakana + set of 2500 CJK Unified Ideographs for common simplified Chinese -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesCyrillic(ImFontAtlas* self); // Default + about 400 Cyrillic characters -CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesThai(ImFontAtlas* self); // Default + Thai characters +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesDefault(ImFontAtlas* self); // Basic Latin, Extended Latin +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesKorean(ImFontAtlas* self); // Default + Korean characters +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesJapanese(ImFontAtlas* self); // Default + Hiragana, Katakana, Half-Width, Selection of 1946 Ideographs +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesChineseFull(ImFontAtlas* self); // Default + Half-Width + Japanese Hiragana/Katakana + full set of about 21000 CJK Unified Ideographs +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesChineseSimplifiedCommon(ImFontAtlas* self);// Default + Half-Width + Japanese Hiragana/Katakana + set of 2500 CJK Unified Ideographs for common simplified Chinese +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesCyrillic(ImFontAtlas* self); // Default + about 400 Cyrillic characters +CIMGUI_API const ImWchar* ImFontAtlas_GetGlyphRangesThai(ImFontAtlas* self); // Default + Thai characters // Helpers to build glyph ranges from text data. Feed your application strings/characters to it then call BuildRanges(). -CIMGUI_API bool GlyphRangesBuilder_GetBit(GlyphRangesBuilder* self,int n); -CIMGUI_API void GlyphRangesBuilder_SetBit(GlyphRangesBuilder* self,int n); // Set bit 'c' in the array -CIMGUI_API void GlyphRangesBuilder_AddChar(GlyphRangesBuilder* self,ImWchar c); // Add character -CIMGUI_API void GlyphRangesBuilder_AddText(GlyphRangesBuilder* self,const char* text,const char* text_end); // Add string (each character of the UTF-8 string are added) -CIMGUI_API void GlyphRangesBuilder_AddRanges(GlyphRangesBuilder* self,const ImWchar* ranges); // Add ranges, e.g. builder.AddRanges(ImFontAtlas::GetGlyphRangesDefault()) to force add all of ASCII/Latin+Ext -CIMGUI_API void GlyphRangesBuilder_BuildRanges(GlyphRangesBuilder* self,ImVector_ImWchar* out_ranges); // Output new ranges +CIMGUI_API bool GlyphRangesBuilder_GetBit(GlyphRangesBuilder* self,int n); +CIMGUI_API void GlyphRangesBuilder_SetBit(GlyphRangesBuilder* self,int n); // Set bit 'c' in the array +CIMGUI_API void GlyphRangesBuilder_AddChar(GlyphRangesBuilder* self,ImWchar c); // Add character +CIMGUI_API void GlyphRangesBuilder_AddText(GlyphRangesBuilder* self,const char* text,const char* text_end); // Add string (each character of the UTF-8 string are added) +CIMGUI_API void GlyphRangesBuilder_AddRanges(GlyphRangesBuilder* self,const ImWchar* ranges); // Add ranges, e.g. builder.AddRanges(ImFontAtlas::GetGlyphRangesDefault()) to force add all of ASCII/Latin+Ext +CIMGUI_API void GlyphRangesBuilder_BuildRanges(GlyphRangesBuilder* self,ImVector_ImWchar* out_ranges); // Output new ranges //------------------------------------------- // Custom Rectangles/Glyphs API //------------------------------------------- // You can request arbitrary rectangles to be packed into the atlas, for your own purposes. After calling Build(), you can query the rectangle position and render your pixels. // You can also request your rectangles to be mapped as font glyph (given a font + Unicode point), so you can render e.g. custom colorful icons and use them as regular glyphs. -CIMGUI_API bool CustomRect_IsPacked(CustomRect* self); -CIMGUI_API int ImFontAtlas_AddCustomRectRegular(ImFontAtlas* self,unsigned int id,int width,int height); // Id needs to be >= 0x10000. Id >= 0x80000000 are reserved for ImGui and ImDrawList -CIMGUI_API int ImFontAtlas_AddCustomRectFontGlyph(ImFontAtlas* self,ImFont* font,ImWchar id,int width,int height,float advance_x,const ImVec2 offset); // Id needs to be < 0x10000 to register a rectangle to map into a specific font. -CIMGUI_API const CustomRect* ImFontAtlas_GetCustomRectByIndex(ImFontAtlas* self,int index); +CIMGUI_API bool CustomRect_IsPacked(CustomRect* self); +CIMGUI_API int ImFontAtlas_AddCustomRectRegular(ImFontAtlas* self,unsigned int id,int width,int height); // Id needs to be >= 0x10000. Id >= 0x80000000 are reserved for ImGui and ImDrawList +CIMGUI_API int ImFontAtlas_AddCustomRectFontGlyph(ImFontAtlas* self,ImFont* font,ImWchar id,int width,int height,float advance_x,const ImVec2 offset); // Id needs to be < 0x10000 to register a rectangle to map into a specific font. +CIMGUI_API const CustomRect* ImFontAtlas_GetCustomRectByIndex(ImFontAtlas* self,int index); // [Internal] -CIMGUI_API void ImFontAtlas_CalcCustomRectUV(ImFontAtlas* self,const CustomRect* rect,ImVec2* out_uv_min,ImVec2* out_uv_max); -CIMGUI_API bool ImFontAtlas_GetMouseCursorTexData(ImFontAtlas* self,ImGuiMouseCursor cursor,ImVec2* out_offset,ImVec2* out_size,ImVec2 out_uv_border[2],ImVec2 out_uv_fill[2]); +CIMGUI_API void ImFontAtlas_CalcCustomRectUV(ImFontAtlas* self,const CustomRect* rect,ImVec2* out_uv_min,ImVec2* out_uv_max); +CIMGUI_API bool ImFontAtlas_GetMouseCursorTexData(ImFontAtlas* self,ImGuiMouseCursor cursor,ImVec2* out_offset,ImVec2* out_size,ImVec2 out_uv_border[2],ImVec2 out_uv_fill[2]); //------------------------------------------- // Members //------------------------------------------- @@ -1654,24 +1652,24 @@ CIMGUI_API bool ImFontAtlas_GetMouseCursorTexData(ImFontAtlas* self,ImGuiM // Members: Hot ~62/78 bytes // Members: Cold ~18/26 bytes // Methods -CIMGUI_API void ImFont_ClearOutputData(ImFont* self); -CIMGUI_API void ImFont_BuildLookupTable(ImFont* self); +CIMGUI_API void ImFont_ClearOutputData(ImFont* self); +CIMGUI_API void ImFont_BuildLookupTable(ImFont* self); CIMGUI_API const ImFontGlyph* ImFont_FindGlyph(ImFont* self,ImWchar c); CIMGUI_API const ImFontGlyph* ImFont_FindGlyphNoFallback(ImFont* self,ImWchar c); -CIMGUI_API void ImFont_SetFallbackChar(ImFont* self,ImWchar c); -CIMGUI_API float ImFont_GetCharAdvance(ImFont* self,ImWchar c); -CIMGUI_API bool ImFont_IsLoaded(ImFont* self); -CIMGUI_API const char* ImFont_GetDebugName(ImFont* self); +CIMGUI_API void ImFont_SetFallbackChar(ImFont* self,ImWchar c); +CIMGUI_API float ImFont_GetCharAdvance(ImFont* self,ImWchar c); +CIMGUI_API bool ImFont_IsLoaded(ImFont* self); +CIMGUI_API const char* ImFont_GetDebugName(ImFont* self); // 'max_width' stops rendering after a certain width (could be turned into a 2d size). FLT_MAX to disable. // 'wrap_width' enable automatic word-wrapping across multiple lines to fit into given width. 0.0f to disable. -CIMGUI_API ImVec2 ImFont_CalcTextSizeA(ImFont* self,float size,float max_width,float wrap_width,const char* text_begin,const char* text_end,const char** remaining); // utf8 -CIMGUI_API const char* ImFont_CalcWordWrapPositionA(ImFont* self,float scale,const char* text,const char* text_end,float wrap_width); -CIMGUI_API void ImFont_RenderChar(ImFont* self,ImDrawList* draw_list,float size,ImVec2 pos,ImU32 col,unsigned short c); -CIMGUI_API void ImFont_RenderText(ImFont* self,ImDrawList* draw_list,float size,ImVec2 pos,ImU32 col,const ImVec4 clip_rect,const char* text_begin,const char* text_end,float wrap_width,bool cpu_fine_clip); +CIMGUI_API ImVec2 ImFont_CalcTextSizeA(ImFont* self,float size,float max_width,float wrap_width,const char* text_begin,const char* text_end,const char** remaining); // utf8 +CIMGUI_API const char* ImFont_CalcWordWrapPositionA(ImFont* self,float scale,const char* text,const char* text_end,float wrap_width); +CIMGUI_API void ImFont_RenderChar(ImFont* self,ImDrawList* draw_list,float size,ImVec2 pos,ImU32 col,unsigned short c); +CIMGUI_API void ImFont_RenderText(ImFont* self,ImDrawList* draw_list,float size,ImVec2 pos,ImU32 col,const ImVec4 clip_rect,const char* text_begin,const char* text_end,float wrap_width,bool cpu_fine_clip); // [Internal] -CIMGUI_API void ImFont_GrowIndex(ImFont* self,int new_size); -CIMGUI_API void ImFont_AddGlyph(ImFont* self,ImWchar c,float x0,float y0,float x1,float y1,float u0,float v0,float u1,float v1,float advance_x); -CIMGUI_API void ImFont_AddRemapChar(ImFont* self,ImWchar dst,ImWchar src,bool overwrite_dst); // Makes 'dst' character/glyph points to 'src' character/glyph. Currently needs to be called AFTER fonts have been built. +CIMGUI_API void ImFont_GrowIndex(ImFont* self,int new_size); +CIMGUI_API void ImFont_AddGlyph(ImFont* self,ImWchar c,float x0,float y0,float x1,float y1,float u0,float v0,float u1,float v1,float advance_x); +CIMGUI_API void ImFont_AddRemapChar(ImFont* self,ImWchar dst,ImWchar src,bool overwrite_dst); // Makes 'dst' character/glyph points to 'src' character/glyph. Currently needs to be called AFTER fonts have been built. /////////////////////////hand written functions diff --git a/generator/generator.bat b/generator/generator.bat index 59fdd41..99dc0db 100644 --- a/generator/generator.bat +++ b/generator/generator.bat @@ -1,20 +1,24 @@ -:: this is used to rebuild cimgui.h and cimgui.cpp and must be executed in this directory +:: this script must be executed in this directory +:: all the output goes to generated folder +:: .cpp and .h files: +:: cimgui.h and cimgui.cpp generated without preprocess +:: cimgui_auto.h and cimgui_auto.cpp with gcc preprocess +:: cimgui_impl.h with implementation function cdefs +:: lua and json files: :: definitions.lua for function definitions :: structs_and_enums.lua with struct and enum information-definitions :: impl_definitions.lua for implementation function definitions -:: cimgui_impl.h with implementation function cdefs :: set your PATH if necessary for LuaJIT or Lua5.1 or luajit with: (for example) -:: set PATH=%PATH%;C:\luaGL; + set PATH=%PATH%;C:\luaGL;C:\mingw32\bin; ::process files -:: arg[1] true=use gcc false=dont use gcc -:: arg[2..] name of implementation to generate -luajit.exe ./generator.lua false glfw opengl3 opengl2 sdl +:: arg[1..n] name of implementations to generate +luajit.exe ./generator.lua glfw opengl3 opengl2 sdl ::copy cimgui.h and cimgui.cpp -copy .\cimgui.h ..\cimgui.h -copy .\cimgui.cpp ..\cimgui.cpp +copy .\generated\cimgui.h ..\cimgui.h +copy .\generated\cimgui.cpp ..\cimgui.cpp ::leave console open cmd /k diff --git a/generator/generator.lua b/generator/generator.lua index ffc9132..eccc2b2 100644 --- a/generator/generator.lua +++ b/generator/generator.lua @@ -3,10 +3,28 @@ --expects Lua 5.1 or luajit -------------------------------------------------------------------------- local script_args = {...} + +--test gcc present +local HAVE_GCC +local pipe,err = io.popen("gcc --version","r") +if pipe then + local str = pipe:read"*a" + print(str) + pipe:close() + if str=="" then + HAVE_GCC = false + else + HAVE_GCC = true + end +else + HAVE_GCC = false + print(err) +end +print("HAVE_GCC",HAVE_GCC) +--get implementations local implementations = {} -for i=2,#script_args do table.insert(implementations,script_args[i]) end --- first script argument to use gcc or not -local USEGCC = script_args[1] == "true" +for i=1,#script_args do table.insert(implementations,script_args[i]) end + -------------------------------------------------------------------------- --this table has the functions to be skipped in generation -------------------------------------------------------------------------- @@ -154,9 +172,12 @@ local function serializeTable(name, value, saved) return table.concat(string_table) end -local function save_data(filename,data) +local function save_data(filename,...) local file = io.open(filename,"w") - file:write(data) + for i=1, select('#', ...) do + local data = select(i, ...) + file:write(data) + end file:close() end @@ -165,7 +186,7 @@ local function strip(cad) end local function clean_spaces(cad) cad = strip(cad) - --cad = cad:gsub("%s+","%s") --not more than one space + cad = cad:gsub("%s+"," ") --not more than one space cad = cad:gsub("%s*([%(%),=])%s*","%1") --not spaces with ( , ) return cad end @@ -214,7 +235,7 @@ local function struct_parser() if in_functionst then if line:match(function_closing_re) then in_functionst = false - print("in function:",line) + --print("in function:",line) end return end @@ -224,7 +245,7 @@ local function struct_parser() if (line:match(function_re) or line:match(operator_re)) and not line:match("typedef.*%b().*%b().*") and not line:match(functype_re) then if not line:match(function_closed_re) then - print("match:",line) + --print("match:",line) in_functionst = true end --else @@ -453,7 +474,7 @@ local function func_parser() defT.location = locat defT.comment = comment if ret then - defT.ret = ret:gsub("&","*") + defT.ret = clean_spaces(ret:gsub("&","*")) defT.retref = ret:match("&") end defsT[cimguiname][signature] = defT @@ -592,7 +613,7 @@ local function gen_structs_and_enums_table(cdefs) end -local function gen_structs_and_enums(cdefs) +local function gen_structs_and_enums(cdefs,addextra) local function_closing_re = "}" local namespace_re = "namespace" local in_namespace = false @@ -605,8 +626,8 @@ local function gen_structs_and_enums(cdefs) local typedefs_table = {} local outtab = {} -- Output the file - table.insert(outtab,"/////////////// BEGIN AUTOGENERATED SEGMENT\n") - if not USEGCC then + --table.insert(outtab,"/////////////// BEGIN AUTOGENERATED SEGMENT\n") + if addextra then table.insert(outtab,[[typedef unsigned short ImDrawIdx;]]) table.insert(outtab,[[typedef void* ImTextureID;]]) end @@ -698,11 +719,13 @@ typedef struct ImVector ImVector;]]) end end - table.insert(outtab,"//////////////// END AUTOGENERATED SEGMENT \n") + --table.insert(outtab,"//////////////// END AUTOGENERATED SEGMENT \n") for i,l in ipairs(typedefs_table) do table.insert(outtab,2,l) end - return outtab + local cstructsstr = table.concat(outtab) + cstructsstr = cstructsstr:gsub("\n+","\n") --several empty lines to one empty line + return cstructsstr end local function func_header_impl_generate(FP) @@ -725,8 +748,9 @@ local function func_header_impl_generate(FP) table.insert(outtab,t.comment:gsub("%%","%%%%").."\n")-- %% substitution for gsub end end - --hfile:close() - return outtab + local cfuncsstr = table.concat(outtab) + cfuncsstr = cfuncsstr:gsub("\n+","\n") --several empty lines to one empty line + return cfuncsstr end local function func_header_generate(FP) @@ -765,8 +789,10 @@ local function func_header_generate(FP) table.insert(outtab,t.comment:gsub("%%","%%%%").."\n")-- %% substitution for gsub end end - --hfile:close() - return outtab + + local cfuncsstr = table.concat(outtab) + cfuncsstr = cfuncsstr:gsub("\n+","\n") --several empty lines to one empty line + return cfuncsstr end local function func_implementation(FP) @@ -828,84 +854,84 @@ local function func_implementation(FP) until true end --cppfile:close() - return outtab + return table.concat(outtab) +end +--generate cimgui.cpp cimgui.h and auto versions depending on postfix +local function cimgui_generation(postfix,STP,FP) + --merge it in cimgui_template.h to cimgui.h + local hfile = io.open("./cimgui_template.h","r") + local hstrfile = hfile:read"*a" + hfile:close() + local cstructsstr = gen_structs_and_enums(STP.lines,postfix=="") + hstrfile = hstrfile:gsub([[#include "imgui_structs%.h"]],cstructsstr) + local cfuncsstr = func_header_generate(FP) + hstrfile = hstrfile:gsub([[#include "auto_funcs%.h"]],cfuncsstr) + save_data("./generated/cimgui"..postfix..".h",hstrfile) + + + --merge it in cimgui_template.cpp to cimgui.cpp + local cimplem = func_implementation(FP) + local hfile = io.open("./cimgui_template.cpp","r") + local hstrfile = hfile:read"*a" + hfile:close() + hstrfile = hstrfile:gsub([[#include "auto_funcs%.cpp"]],cimplem) + hstrfile = hstrfile:gsub([[#include "cimgui%.h"]],[[#include "cimgui]]..postfix..[[.h"]]) + save_data("./generated/cimgui"..postfix..".cpp",hstrfile) end -------------------------------------------------------- -----------------------------do it---------------------- -------------------------------------------------------- -print("USEGCC",USEGCC) - -local pipe,err -if USEGCC then - pipe,err = io.popen([[gcc -E -C -DIMGUI_DISABLE_OBSOLETE_FUNCTIONS -DIMGUI_API="" -DIMGUI_IMPL_API="" ../imgui/imgui.h]],"r") - - if not pipe then - error("could not execute gcc "..err) - end -else - pipe,err = io.open("../imgui/imgui.h","r") - if not pipe then - error("could not execute gcc "..err) - end +--first without gcc +local pipe,err = io.open("../imgui/imgui.h","r") +if not pipe then + error("could not open file:"..err) end -print"goint to iterate" + local STP = struct_parser() local FP = func_parser() -local iterator = (USEGCC and location) or filelines - -for line in iterator(pipe,{"imgui"}) do +for line in filelines(pipe) do local line, comment = split_comment(line) STP.insert(line,comment) FP.insert(line,comment) end pipe:close() - ---output after insert --- local hfile = io.open("./outstructs.h","w") --- hfile:write(table.concat(STP.lines,"\n")) --- hfile:close() ---do return end - FP:compute_overloads() +cimgui_generation("",STP,FP) -local cstructs = gen_structs_and_enums(STP.lines) -local cfuncs = func_header_generate(FP) +--then gcc +if HAVE_GCC then +local pipe,err = io.popen([[gcc -E -C -DIMGUI_DISABLE_OBSOLETE_FUNCTIONS -DIMGUI_API="" -DIMGUI_IMPL_API="" ../imgui/imgui.h]],"r") ---merge it in cimgui_template.h to cimgui.h -local hfile = io.open("./cimgui_template.h","r") -local hstrfile = hfile:read"*a" -hfile:close() -local cstructsstr = table.concat(cstructs) -cstructsstr = cstructsstr:gsub("\n+","\n") --several empty lines to one empty line -hstrfile = hstrfile:gsub([[#include "imgui_structs%.h"]],cstructsstr) -local cfuncsstr = table.concat(cfuncs) -cfuncsstr = cfuncsstr:gsub("\n+","\n") --several empty lines to one empty line -hstrfile = hstrfile:gsub([[#include "auto_funcs%.h"]],cfuncsstr) -save_data("./cimgui.h",hstrfile) +if not pipe then + error("could not execute gcc "..err) +end +STP = struct_parser() --overwrite +FP = func_parser() --overwrite ---merge it in cimgui_template.cpp to cimgui.cpp -local cimplem = func_implementation(FP) -local hfile = io.open("./cimgui_template.cpp","r") -local hstrfile = hfile:read"*a" -hfile:close() -hstrfile = hstrfile:gsub([[#include "auto_funcs%.cpp"]],table.concat(cimplem)) -save_data("./cimgui.cpp",hstrfile) +for line in location(pipe,{"imgui"}) do + local line, comment = split_comment(line) + STP.insert(line,comment) + FP.insert(line,comment) +end +pipe:close() +FP:compute_overloads() +cimgui_generation("_auto",STP,FP) + +end ----------save fundefs in definitions.lua for using in bindings -save_data("./definitions.lua",serializeTable("defs",FP.defsT).."\nreturn defs") +save_data("./generated/definitions.lua",serializeTable("defs",FP.defsT),"\nreturn defs") ----------save struct and enums lua table in structs_and_enums.lua for using in bindings local structs_and_enums_table = gen_structs_and_enums_table(STP.lines) -save_data("./structs_and_enums.lua",serializeTable("defs",structs_and_enums_table).."\nreturn defs") +save_data("./generated/structs_and_enums.lua",serializeTable("defs",structs_and_enums_table),"\nreturn defs") --=================================Now implementations - local iFP,iSTP - if #implementations > 0 then iFP = func_parser() @@ -915,15 +941,17 @@ if #implementations > 0 then local source = [[../imgui/examples/imgui_impl_]].. impl .. ".h " local locati = [[imgui_impl_]].. impl local pipe,err - if USEGCC then - pipe,err = io.popen([[gcc -E -C -DIMGUI_DISABLE_OBSOLETE_FUNCTIONS -DIMGUI_API="" -DIMGUI_IMPL_API="" ]] ..source,"r") + if HAVE_GCC then + pipe,err = io.popen([[gcc -E -DIMGUI_DISABLE_OBSOLETE_FUNCTIONS -DIMGUI_API="" -DIMGUI_IMPL_API="" ]] ..source,"r") else pipe,err = io.open(source,"r") end if not pipe then error("could not get file: "..err) end - + + local iterator = (HAVE_GCC and location) or filelines + for line,locat in iterator(pipe,{locati}) do local line, comment = split_comment(line) iSTP.insert(line,comment) @@ -933,16 +961,12 @@ if #implementations > 0 then end -- save ./cimgui_impl.h - local impl_cfuncs = func_header_impl_generate(iFP) - local impl_cstructs = gen_structs_and_enums(iSTP.lines) - local cstructstr = table.concat(impl_cstructs) - cstructstr = cstructstr:gsub("\n+","\n") --several empty lines to one empty line - local cfuncsstr = table.concat(impl_cfuncs) - cfuncsstr = cfuncsstr:gsub("\n+","\n") --several empty lines to one empty line - save_data("./cimgui_impl.h",cstructstr..cfuncsstr) + local cfuncsstr = func_header_impl_generate(iFP) + local cstructstr = gen_structs_and_enums(iSTP.lines) + save_data("./generated/cimgui_impl.h",cstructstr,cfuncsstr) ----------save fundefs in impl_definitions.lua for using in bindings - save_data("./impl_definitions.lua",serializeTable("defs",iFP.defsT).."\nreturn defs") + save_data("./generated/impl_definitions.lua",serializeTable("defs",iFP.defsT),"\nreturn defs") end -- #implementations > 0 then @@ -961,10 +985,10 @@ local function json_prepare(defs) end local json = require"json" -save_data("./definitions.json",json.encode(json_prepare(FP.defsT))) -save_data("./structs_and_enums.json",json.encode(structs_and_enums_table)) +save_data("./generated/definitions.json",json.encode(json_prepare(FP.defsT))) +save_data("./generated/structs_and_enums.json",json.encode(structs_and_enums_table)) if iFP then - save_data("./impl_definitions.json",json.encode(json_prepare(iFP.defsT))) + save_data("./generated/impl_definitions.json",json.encode(json_prepare(iFP.defsT))) end print"all done!!" diff --git a/generator/generator_preprocess.bat b/generator/generator_preprocess.bat deleted file mode 100644 index 646bba9..0000000 --- a/generator/generator_preprocess.bat +++ /dev/null @@ -1,21 +0,0 @@ -:: this is used to rebuild cimgui.h and cimgui.cpp and must be executed in this directory -:: definitions.lua for function definitions -:: structs_and_enums.lua with struct and enum information-definitions -:: impl_definitions.lua for implementation function definitions -:: cimgui_impl.h with implementation function cdefs - -:: set your PATH if necessary for gcc and LuaJIT or Lua 5.1 with: (for example) -:: set PATH=%PATH%;C:\mingw32\bin;C:\luaGL; - -::process files -:: arg[1] true=use gcc false=dont use gcc -:: arg[2..] name of implementation to generate -luajit.exe ./generator.lua true glfw opengl3 opengl2 sdl - -::copy cimgui.h and cimgui.cpp -copy .\cimgui.h ..\cimgui.h -copy .\cimgui.cpp ..\cimgui.cpp - -::leave console open -cmd /k - diff --git a/imgui b/imgui index f9a5ff7..79153cf 160000 --- a/imgui +++ b/imgui @@ -1 +1 @@ -Subproject commit f9a5ff7a19a3cf9770f0dff23030a98885f30a69 +Subproject commit 79153cf19f53726d556637c270fc0b11122835a0