From 26c3254fcba8708513998ed96329a7c16b7804ce Mon Sep 17 00:00:00 2001 From: sonoro1234 Date: Sat, 8 Nov 2025 09:53:51 +0100 Subject: [PATCH] ccc3 --- cimgui.cpp | 52 ++-- cimgui.h | 438 +++++++++++++++--------------- generator/cpp2ffi.lua | 67 ++++- generator/generator.lua | 1 + generator/output/definitions.json | 50 ++-- generator/output/definitions.lua | 50 ++-- test/main.c | 1 + 7 files changed, 357 insertions(+), 302 deletions(-) diff --git a/cimgui.cpp b/cimgui.cpp index 3b3d43e..3cdafb3 100644 --- a/cimgui.cpp +++ b/cimgui.cpp @@ -513,9 +513,9 @@ CIMGUI_API ImU32 igGetColorU32_U32(ImU32 col,float alpha_mul) { return ImGui::GetColorU32(col,alpha_mul); } -CIMGUI_API const ImVec4* igGetStyleColorVec4(ImGuiCol idx) +CIMGUI_API const ImVec4_c* igGetStyleColorVec4(ImGuiCol idx) { - return &ImGui::GetStyleColorVec4(idx); + return reinterpret_cast(&ImGui::GetStyleColorVec4(idx)); } CIMGUI_API ImVec2_c igGetCursorScreenPos() { @@ -1786,9 +1786,9 @@ CIMGUI_API bool igIsMouseHoveringRect(const ImVec2_c r_min,const ImVec2_c r_max, { return ImGui::IsMouseHoveringRect(ConvertToCPP_ImVec2(r_min),ConvertToCPP_ImVec2(r_max),clip); } -CIMGUI_API bool igIsMousePosValid(const ImVec2* mouse_pos) +CIMGUI_API bool igIsMousePosValid(const ImVec2_c* mouse_pos) { - return ImGui::IsMousePosValid(mouse_pos); + return ImGui::IsMousePosValid(reinterpret_cast(mouse_pos)); } CIMGUI_API bool igIsAnyMouseDown() { @@ -2519,17 +2519,17 @@ CIMGUI_API void ImDrawList_AddBezierQuadratic(ImDrawList* self,const ImVec2_c p1 { return self->AddBezierQuadratic(ConvertToCPP_ImVec2(p1),ConvertToCPP_ImVec2(p2),ConvertToCPP_ImVec2(p3),col,thickness,num_segments); } -CIMGUI_API void ImDrawList_AddPolyline(ImDrawList* self,const ImVec2* points,int num_points,ImU32 col,ImDrawFlags flags,float thickness) +CIMGUI_API void ImDrawList_AddPolyline(ImDrawList* self,const ImVec2_c* points,int num_points,ImU32 col,ImDrawFlags flags,float thickness) { - return self->AddPolyline(points,num_points,col,flags,thickness); + return self->AddPolyline(reinterpret_cast(points),num_points,col,flags,thickness); } -CIMGUI_API void ImDrawList_AddConvexPolyFilled(ImDrawList* self,const ImVec2* points,int num_points,ImU32 col) +CIMGUI_API void ImDrawList_AddConvexPolyFilled(ImDrawList* self,const ImVec2_c* points,int num_points,ImU32 col) { - return self->AddConvexPolyFilled(points,num_points,col); + return self->AddConvexPolyFilled(reinterpret_cast(points),num_points,col); } -CIMGUI_API void ImDrawList_AddConcavePolyFilled(ImDrawList* self,const ImVec2* points,int num_points,ImU32 col) +CIMGUI_API void ImDrawList_AddConcavePolyFilled(ImDrawList* self,const ImVec2_c* points,int num_points,ImU32 col) { - return self->AddConcavePolyFilled(points,num_points,col); + return self->AddConcavePolyFilled(reinterpret_cast(points),num_points,col); } CIMGUI_API void ImDrawList_AddImage(ImDrawList* self,ImTextureRef_c tex_ref,const ImVec2_c p_min,const ImVec2_c p_max,const ImVec2_c uv_min,const ImVec2_c uv_max,ImU32 col) { @@ -3230,9 +3230,9 @@ CIMGUI_API int igImTextCountLines(const char* in_text,const char* in_text_end) { return ImTextCountLines(in_text,in_text_end); } -CIMGUI_API ImVec2_c igImFontCalcTextSizeEx(ImFont* font,float size,float max_width,float wrap_width,const char* text_begin,const char* text_end_display,const char* text_end,const char** out_remaining,ImVec2* out_offset,ImDrawTextFlags flags) +CIMGUI_API ImVec2_c igImFontCalcTextSizeEx(ImFont* font,float size,float max_width,float wrap_width,const char* text_begin,const char* text_end_display,const char* text_end,const char** out_remaining,ImVec2_c* out_offset,ImDrawTextFlags flags) { - return ConvertFromCPP_ImVec2(ImFontCalcTextSizeEx(font,size,max_width,wrap_width,text_begin,text_end_display,text_end,out_remaining,out_offset,flags)); + return ConvertFromCPP_ImVec2(ImFontCalcTextSizeEx(font,size,max_width,wrap_width,text_begin,text_end_display,text_end,out_remaining,reinterpret_cast(out_offset),flags)); } CIMGUI_API const char* igImFontCalcWordWrapPositionEx(ImFont* font,float size,const char* text,const char* text_end,float wrap_width,ImDrawTextFlags flags) { @@ -3606,9 +3606,9 @@ CIMGUI_API ImVec4_c ImRect_ToVec4(ImRect* self) { return ConvertFromCPP_ImVec4(self->ToVec4()); } -CIMGUI_API const ImVec4* ImRect_AsVec4(ImRect* self) +CIMGUI_API const ImVec4_c* ImRect_AsVec4(ImRect* self) { - return &self->AsVec4(); + return reinterpret_cast(&self->AsVec4()); } CIMGUI_API size_t igImBitArrayGetStorageSizeInBytes(int bitcount) { @@ -4754,9 +4754,9 @@ CIMGUI_API void igLogToBuffer(int auto_open_depth) { return ImGui::LogToBuffer(auto_open_depth); } -CIMGUI_API void igLogRenderedText(const ImVec2* ref_pos,const char* text,const char* text_end) +CIMGUI_API void igLogRenderedText(const ImVec2_c* ref_pos,const char* text,const char* text_end) { - return ImGui::LogRenderedText(ref_pos,text,text_end); + return ImGui::LogRenderedText(reinterpret_cast(ref_pos),text,text_end); } CIMGUI_API void igLogSetNextTextDecoration(const char* prefix,const char* suffix) { @@ -5138,9 +5138,9 @@ CIMGUI_API void igDockContextProcessUndockNode(ImGuiContext* ctx,ImGuiDockNode* { return ImGui::DockContextProcessUndockNode(ctx,node); } -CIMGUI_API bool igDockContextCalcDropPosForDocking(ImGuiWindow* target,ImGuiDockNode* target_node,ImGuiWindow* payload_window,ImGuiDockNode* payload_node,ImGuiDir split_dir,bool split_outer,ImVec2* out_pos) +CIMGUI_API bool igDockContextCalcDropPosForDocking(ImGuiWindow* target,ImGuiDockNode* target_node,ImGuiWindow* payload_window,ImGuiDockNode* payload_node,ImGuiDir split_dir,bool split_outer,ImVec2_c* out_pos) { - return ImGui::DockContextCalcDropPosForDocking(target,target_node,payload_window,payload_node,split_dir,split_outer,out_pos); + return ImGui::DockContextCalcDropPosForDocking(target,target_node,payload_window,payload_node,split_dir,split_outer,reinterpret_cast(out_pos)); } CIMGUI_API ImGuiDockNode* igDockContextFindNodeByID(ImGuiContext* ctx,ImGuiID id) { @@ -5694,17 +5694,17 @@ CIMGUI_API void igRenderTextWrapped(ImVec2_c pos,const char* text,const char* te { return ImGui::RenderTextWrapped(ConvertToCPP_ImVec2(pos),text,text_end,wrap_width); } -CIMGUI_API void igRenderTextClipped(const ImVec2_c pos_min,const ImVec2_c pos_max,const char* text,const char* text_end,const ImVec2* text_size_if_known,const ImVec2_c align,const ImRect* clip_rect) +CIMGUI_API void igRenderTextClipped(const ImVec2_c pos_min,const ImVec2_c pos_max,const char* text,const char* text_end,const ImVec2_c* text_size_if_known,const ImVec2_c align,const ImRect* clip_rect) { - return ImGui::RenderTextClipped(ConvertToCPP_ImVec2(pos_min),ConvertToCPP_ImVec2(pos_max),text,text_end,text_size_if_known,ConvertToCPP_ImVec2(align),clip_rect); + return ImGui::RenderTextClipped(ConvertToCPP_ImVec2(pos_min),ConvertToCPP_ImVec2(pos_max),text,text_end,reinterpret_cast(text_size_if_known),ConvertToCPP_ImVec2(align),clip_rect); } -CIMGUI_API void igRenderTextClippedEx(ImDrawList* draw_list,const ImVec2_c pos_min,const ImVec2_c pos_max,const char* text,const char* text_end,const ImVec2* text_size_if_known,const ImVec2_c align,const ImRect* clip_rect) +CIMGUI_API void igRenderTextClippedEx(ImDrawList* draw_list,const ImVec2_c pos_min,const ImVec2_c pos_max,const char* text,const char* text_end,const ImVec2_c* text_size_if_known,const ImVec2_c align,const ImRect* clip_rect) { - return ImGui::RenderTextClippedEx(draw_list,ConvertToCPP_ImVec2(pos_min),ConvertToCPP_ImVec2(pos_max),text,text_end,text_size_if_known,ConvertToCPP_ImVec2(align),clip_rect); + return ImGui::RenderTextClippedEx(draw_list,ConvertToCPP_ImVec2(pos_min),ConvertToCPP_ImVec2(pos_max),text,text_end,reinterpret_cast(text_size_if_known),ConvertToCPP_ImVec2(align),clip_rect); } -CIMGUI_API void igRenderTextEllipsis(ImDrawList* draw_list,const ImVec2_c pos_min,const ImVec2_c pos_max,float ellipsis_max_x,const char* text,const char* text_end,const ImVec2* text_size_if_known) +CIMGUI_API void igRenderTextEllipsis(ImDrawList* draw_list,const ImVec2_c pos_min,const ImVec2_c pos_max,float ellipsis_max_x,const char* text,const char* text_end,const ImVec2_c* text_size_if_known) { - return ImGui::RenderTextEllipsis(draw_list,ConvertToCPP_ImVec2(pos_min),ConvertToCPP_ImVec2(pos_max),ellipsis_max_x,text,text_end,text_size_if_known); + return ImGui::RenderTextEllipsis(draw_list,ConvertToCPP_ImVec2(pos_min),ConvertToCPP_ImVec2(pos_max),ellipsis_max_x,text,text_end,reinterpret_cast(text_size_if_known)); } CIMGUI_API void igRenderFrame(ImVec2_c p_min,ImVec2_c p_max,ImU32 fill_col,bool borders,float rounding) { @@ -6403,9 +6403,9 @@ CIMGUI_API void igImFontAtlasDebugLogTextureRequests(ImFontAtlas* atlas) { return ImFontAtlasDebugLogTextureRequests(atlas); } -CIMGUI_API bool igImFontAtlasGetMouseCursorTexData(ImFontAtlas* atlas,ImGuiMouseCursor cursor_type,ImVec2* out_offset,ImVec2* out_size,ImVec2 out_uv_border[2],ImVec2 out_uv_fill[2]) +CIMGUI_API bool igImFontAtlasGetMouseCursorTexData(ImFontAtlas* atlas,ImGuiMouseCursor cursor_type,ImVec2_c* out_offset,ImVec2_c* out_size,ImVec2 out_uv_border[2],ImVec2 out_uv_fill[2]) { - return ImFontAtlasGetMouseCursorTexData(atlas,cursor_type,out_offset,out_size,out_uv_border,out_uv_fill); + return ImFontAtlasGetMouseCursorTexData(atlas,cursor_type,reinterpret_cast(out_offset),reinterpret_cast(out_size),out_uv_border,out_uv_fill); } #ifdef IMGUI_ENABLE_FREETYPE CIMGUI_API const ImFontLoader* ImGuiFreeType_GetFontLoader() diff --git a/cimgui.h b/cimgui.h index 464a59e..6b06eea 100644 --- a/cimgui.h +++ b/cimgui.h @@ -66,7 +66,7 @@ typedef struct ImFontGlyphRangesBuilder ImFontGlyphRangesBuilder; typedef struct ImFontLoader ImFontLoader; typedef struct ImTextureData ImTextureData; typedef struct ImTextureRect ImTextureRect; -typedef struct ImColor ImColor; +typedef struct ImColor_c ImColor_c; typedef struct ImGuiContext ImGuiContext; typedef struct ImGuiIO ImGuiIO; typedef struct ImGuiInputTextCallbackData ImGuiInputTextCallbackData; @@ -92,7 +92,7 @@ typedef struct ImGuiTextFilter ImGuiTextFilter; typedef struct ImGuiViewport ImGuiViewport; typedef struct ImGuiWindowClass ImGuiWindowClass; typedef struct ImBitVector ImBitVector; -typedef struct ImRect ImRect; +typedef struct ImRect_c ImRect_c; typedef struct ImGuiTextIndex ImGuiTextIndex; typedef struct ImDrawDataBuilder ImDrawDataBuilder; typedef struct ImFontAtlasPostProcessData ImFontAtlasPostProcessData; @@ -172,7 +172,7 @@ struct ImFontGlyphRangesBuilder; struct ImFontLoader; struct ImTextureData; struct ImTextureRect; -struct ImColor; +struct ImColor_c; struct ImGuiContext; struct ImGuiIO; struct ImGuiInputTextCallbackData; @@ -255,19 +255,19 @@ typedef int (*ImGuiInputTextCallback)(ImGuiInputTextCallbackData* data); typedef void (*ImGuiSizeCallback)(ImGuiSizeCallbackData* data); typedef void* (*ImGuiMemAllocFunc)(size_t sz, void* user_data); typedef void (*ImGuiMemFreeFunc)(void* ptr, void* user_data); -typedef struct ImVec2 ImVec2; -struct ImVec2 +typedef struct ImVec2_c ImVec2_c; +struct ImVec2_c { float x, y; }; -typedef struct ImVec4 ImVec4; -struct ImVec4 +typedef struct ImVec4_c ImVec4_c; +struct ImVec4_c { float x, y, z, w; }; typedef ImU64 ImTextureID; -typedef struct ImTextureRef ImTextureRef; -struct ImTextureRef +typedef struct ImTextureRef_c ImTextureRef_c; +struct ImTextureRef_c { ImTextureData* _TexData; ImTextureID _TexID; @@ -1022,24 +1022,24 @@ struct ImGuiStyle float FontScaleDpi; float Alpha; float DisabledAlpha; - ImVec2 WindowPadding; + ImVec2_c WindowPadding; float WindowRounding; float WindowBorderSize; float WindowBorderHoverPadding; - ImVec2 WindowMinSize; - ImVec2 WindowTitleAlign; + ImVec2_c WindowMinSize; + ImVec2_c WindowTitleAlign; ImGuiDir WindowMenuButtonPosition; float ChildRounding; float ChildBorderSize; float PopupRounding; float PopupBorderSize; - ImVec2 FramePadding; + ImVec2_c FramePadding; float FrameRounding; float FrameBorderSize; - ImVec2 ItemSpacing; - ImVec2 ItemInnerSpacing; - ImVec2 CellPadding; - ImVec2 TouchExtraPadding; + ImVec2_c ItemSpacing; + ImVec2_c ItemInnerSpacing; + ImVec2_c CellPadding; + ImVec2_c TouchExtraPadding; float IndentSpacing; float ColumnsMinSpacing; float ScrollbarSize; @@ -1058,18 +1058,18 @@ struct ImGuiStyle float TabBarBorderSize; float TabBarOverlineSize; float TableAngledHeadersAngle; - ImVec2 TableAngledHeadersTextAlign; + ImVec2_c TableAngledHeadersTextAlign; ImGuiTreeNodeFlags TreeLinesFlags; float TreeLinesSize; float TreeLinesRounding; ImGuiDir ColorButtonPosition; - ImVec2 ButtonTextAlign; - ImVec2 SelectableTextAlign; + ImVec2_c ButtonTextAlign; + ImVec2_c SelectableTextAlign; float SeparatorTextBorderSize; - ImVec2 SeparatorTextAlign; - ImVec2 SeparatorTextPadding; - ImVec2 DisplayWindowPadding; - ImVec2 DisplaySafeAreaPadding; + ImVec2_c SeparatorTextAlign; + ImVec2_c SeparatorTextPadding; + ImVec2_c DisplayWindowPadding; + ImVec2_c DisplaySafeAreaPadding; bool DockingNodeHasCloseButton; float DockingSeparatorSize; float MouseCursorScale; @@ -1078,7 +1078,7 @@ struct ImGuiStyle bool AntiAliasedFill; float CurveTessellationTol; float CircleTessellationMaxError; - ImVec4 Colors[ImGuiCol_COUNT]; + ImVec4_c Colors[ImGuiCol_COUNT]; float HoverStationaryDelay; float HoverDelayShort; float HoverDelayNormal; @@ -1100,8 +1100,8 @@ struct ImGuiIO { ImGuiConfigFlags ConfigFlags; ImGuiBackendFlags BackendFlags; - ImVec2 DisplaySize; - ImVec2 DisplayFramebufferScale; + ImVec2_c DisplaySize; + ImVec2_c DisplayFramebufferScale; float DeltaTime; float IniSavingRate; const char* IniFilename; @@ -1172,9 +1172,9 @@ struct ImGuiIO int MetricsRenderIndices; int MetricsRenderWindows; int MetricsActiveWindows; - ImVec2 MouseDelta; + ImVec2_c MouseDelta; ImGuiContext* Ctx; - ImVec2 MousePos; + ImVec2_c MousePos; bool MouseDown[5]; float MouseWheel; float MouseWheelH; @@ -1187,8 +1187,8 @@ struct ImGuiIO ImGuiKeyChord KeyMods; ImGuiKeyData KeysData[ImGuiKey_NamedKey_COUNT]; bool WantCaptureMouseUnlessPopupClose; - ImVec2 MousePosPrev; - ImVec2 MouseClickedPos[5]; + ImVec2_c MousePosPrev; + ImVec2_c MouseClickedPos[5]; double MouseClickedTime[5]; bool MouseClicked[5]; bool MouseDoubleClicked[5]; @@ -1202,7 +1202,7 @@ struct ImGuiIO bool MouseCtrlLeftAsRightClick; float MouseDownDuration[5]; float MouseDownDurationPrev[5]; - ImVec2 MouseDragMaxDistanceAbs[5]; + ImVec2_c MouseDragMaxDistanceAbs[5]; float MouseDragMaxDistanceSqr[5]; float PenPressure; bool AppFocusLost; @@ -1229,9 +1229,9 @@ struct ImGuiInputTextCallbackData struct ImGuiSizeCallbackData { void* UserData; - ImVec2 Pos; - ImVec2 CurrentSize; - ImVec2 DesiredSize; + ImVec2_c Pos; + ImVec2_c CurrentSize; + ImVec2_c DesiredSize; }; struct ImGuiWindowClass { @@ -1309,9 +1309,9 @@ struct ImGuiListClipper void* TempData; ImGuiListClipperFlags Flags; }; -struct ImColor +struct ImColor_c { - ImVec4 Value; + ImVec4_c Value; }; typedef enum { ImGuiMultiSelectFlags_None = 0, @@ -1374,8 +1374,8 @@ typedef unsigned short ImDrawIdx; typedef void (*ImDrawCallback)(const ImDrawList* parent_list, const ImDrawCmd* cmd); struct ImDrawCmd { - ImVec4 ClipRect; - ImTextureRef TexRef; + ImVec4_c ClipRect; + ImTextureRef_c TexRef; unsigned int VtxOffset; unsigned int IdxOffset; unsigned int ElemCount; @@ -1386,15 +1386,15 @@ struct ImDrawCmd }; struct ImDrawVert { - ImVec2 pos; - ImVec2 uv; + ImVec2_c pos; + ImVec2_c uv; ImU32 col; }; typedef struct ImDrawCmdHeader ImDrawCmdHeader; struct ImDrawCmdHeader { - ImVec4 ClipRect; - ImTextureRef TexRef; + ImVec4_c ClipRect; + ImTextureRef_c TexRef; unsigned int VtxOffset; }; typedef struct ImVector_ImDrawCmd {int Size;int Capacity;ImDrawCmd* Data;} ImVector_ImDrawCmd; @@ -1439,11 +1439,11 @@ typedef enum { }ImDrawListFlags_; typedef struct ImVector_ImDrawVert {int Size;int Capacity;ImDrawVert* Data;} ImVector_ImDrawVert; -typedef struct ImVector_ImVec2 {int Size;int Capacity;ImVec2* Data;} ImVector_ImVec2; +typedef struct ImVector_ImVec2 {int Size;int Capacity;ImVec2_c* Data;} ImVector_ImVec2; -typedef struct ImVector_ImVec4 {int Size;int Capacity;ImVec4* Data;} ImVector_ImVec4; +typedef struct ImVector_ImVec4 {int Size;int Capacity;ImVec4_c* Data;} ImVector_ImVec4; -typedef struct ImVector_ImTextureRef {int Size;int Capacity;ImTextureRef* Data;} ImVector_ImTextureRef; +typedef struct ImVector_ImTextureRef {int Size;int Capacity;ImTextureRef_c* Data;} ImVector_ImTextureRef; typedef struct ImVector_ImU8 {int Size;int Capacity;ImU8* Data;} ImVector_ImU8; @@ -1477,9 +1477,9 @@ struct ImDrawData int TotalIdxCount; int TotalVtxCount; ImVector_ImDrawListPtr CmdLists; - ImVec2 DisplayPos; - ImVec2 DisplaySize; - ImVec2 FramebufferScale; + ImVec2_c DisplayPos; + ImVec2_c DisplaySize; + ImVec2_c FramebufferScale; ImGuiViewport* OwnerViewport; ImVector_ImTextureDataPtr* Textures; }; @@ -1535,7 +1535,7 @@ struct ImFontConfig float SizePixels; const ImWchar* GlyphRanges; const ImWchar* GlyphExcludeRanges; - ImVec2 GlyphOffset; + ImVec2_c GlyphOffset; float GlyphMinAdvanceX; float GlyphMaxAdvanceX; float GlyphExtraAdvanceX; @@ -1570,7 +1570,7 @@ struct ImFontAtlasRect { unsigned short x, y; unsigned short w, h; - ImVec2 uv0, uv1; + ImVec2_c uv0, uv1; }; typedef enum { ImFontAtlasFlags_None = 0, @@ -1594,18 +1594,18 @@ struct ImFontAtlas int TexMaxWidth; int TexMaxHeight; void* UserData; - ImTextureRef TexRef; + ImTextureRef_c TexRef; ImTextureData* TexData; ImVector_ImTextureDataPtr TexList; bool Locked; bool RendererHasTextures; bool TexIsBuilt; bool TexPixelsUseColors; - ImVec2 TexUvScale; - ImVec2 TexUvWhitePixel; + ImVec2_c TexUvScale; + ImVec2_c TexUvWhitePixel; ImVector_ImFontPtr Fonts; ImVector_ImFontConfig Sources; - ImVec4 TexUvLines[(32) + 1]; + ImVec4_c TexUvLines[(32) + 1]; int TexNextUniqueID; int FontNextUniqueID; ImVector_ImDrawListSharedDataPtr DrawListSharedDatas; @@ -1686,11 +1686,11 @@ struct ImGuiViewport { ImGuiID ID; ImGuiViewportFlags Flags; - ImVec2 Pos; - ImVec2 Size; - ImVec2 FramebufferScale; - ImVec2 WorkPos; - ImVec2 WorkSize; + ImVec2_c Pos; + ImVec2_c Size; + ImVec2_c FramebufferScale; + ImVec2_c WorkPos; + ImVec2_c WorkSize; float DpiScale; ImGuiID ParentViewportId; ImGuiViewport* ParentViewport; @@ -1724,11 +1724,11 @@ struct ImGuiPlatformIO void (*Platform_CreateWindow)(ImGuiViewport* vp); void (*Platform_DestroyWindow)(ImGuiViewport* vp); void (*Platform_ShowWindow)(ImGuiViewport* vp); - void (*Platform_SetWindowPos)(ImGuiViewport* vp, ImVec2 pos); - ImVec2 (*Platform_GetWindowPos)(ImGuiViewport* vp); - void (*Platform_SetWindowSize)(ImGuiViewport* vp, ImVec2 size); - ImVec2 (*Platform_GetWindowSize)(ImGuiViewport* vp); - ImVec2 (*Platform_GetWindowFramebufferScale)(ImGuiViewport* vp); + void (*Platform_SetWindowPos)(ImGuiViewport* vp, ImVec2_c pos); + ImVec2_c (*Platform_GetWindowPos)(ImGuiViewport* vp); + void (*Platform_SetWindowSize)(ImGuiViewport* vp, ImVec2_c size); + ImVec2_c (*Platform_GetWindowSize)(ImGuiViewport* vp); + ImVec2_c (*Platform_GetWindowFramebufferScale)(ImGuiViewport* vp); void (*Platform_SetWindowFocus)(ImGuiViewport* vp); bool (*Platform_GetWindowFocus)(ImGuiViewport* vp); bool (*Platform_GetWindowMinimized)(ImGuiViewport* vp); @@ -1739,11 +1739,11 @@ struct ImGuiPlatformIO void (*Platform_SwapBuffers)(ImGuiViewport* vp, void* render_arg); float (*Platform_GetWindowDpiScale)(ImGuiViewport* vp); void (*Platform_OnChangedViewport)(ImGuiViewport* vp); - ImVec4 (*Platform_GetWindowWorkAreaInsets)(ImGuiViewport* vp); + ImVec4_c (*Platform_GetWindowWorkAreaInsets)(ImGuiViewport* vp); int (*Platform_CreateVkSurface)(ImGuiViewport* vp, ImU64 vk_inst, const void* vk_allocators, ImU64* out_vk_surface); void (*Renderer_CreateWindow)(ImGuiViewport* vp); void (*Renderer_DestroyWindow)(ImGuiViewport* vp); - void (*Renderer_SetWindowSize)(ImGuiViewport* vp, ImVec2 size); + void (*Renderer_SetWindowSize)(ImGuiViewport* vp, ImVec2_c size); void (*Renderer_RenderWindow)(ImGuiViewport* vp, void* render_arg); void (*Renderer_SwapBuffers)(ImGuiViewport* vp, void* render_arg); ImVector_ImGuiPlatformMonitor Monitors; @@ -1752,8 +1752,8 @@ struct ImGuiPlatformIO }; struct ImGuiPlatformMonitor { - ImVec2 MainPos, MainSize; - ImVec2 WorkPos, WorkSize; + ImVec2_c MainPos, MainSize; + ImVec2_c WorkPos, WorkSize; float DpiScale; void* PlatformHandle; }; @@ -1761,12 +1761,12 @@ struct ImGuiPlatformImeData { bool WantVisible; bool WantTextInput; - ImVec2 InputPos; + ImVec2_c InputPos; float InputLineHeight; ImGuiID ViewportId; }; struct ImBitVector; -struct ImRect; +struct ImRect_c; struct ImGuiTextIndex; struct ImDrawDataBuilder; struct ImDrawListSharedData; @@ -1852,8 +1852,8 @@ struct ImVec1 { float x; }; -typedef struct ImVec2i ImVec2i; -struct ImVec2i +typedef struct ImVec2i_c ImVec2i_c; +struct ImVec2i_c { int x, y; }; @@ -1862,10 +1862,10 @@ struct ImVec2ih { short x, y; }; -struct ImRect +struct ImRect_c { - ImVec2 Min; - ImVec2 Max; + ImVec2_c Min; + ImVec2_c Max; }; typedef ImU32* ImBitArrayPtr; struct ImBitVector @@ -1882,8 +1882,8 @@ struct ImGuiTextIndex }; struct ImDrawListSharedData { - ImVec2 TexUvWhitePixel; - const ImVec4* TexUvLines; + ImVec2_c TexUvWhitePixel; + const ImVec4_c* TexUvLines; ImFontAtlas* FontAtlas; ImFont* Font; float FontSize; @@ -1892,11 +1892,11 @@ struct ImDrawListSharedData float CircleSegmentMaxError; float InitialFringeScale; ImDrawListFlags InitialFlags; - ImVec4 ClipRectFullscreen; + ImVec4_c ClipRectFullscreen; ImVector_ImVec2 TempBuffer; ImVector_ImDrawListPtr DrawLists; ImGuiContext* Context; - ImVec2 ArcFastVtx[48]; + ImVec2_c ArcFastVtx[48]; float ArcFastRadiusCutoff; ImU8 CircleSegmentCounts[64]; }; @@ -1921,7 +1921,7 @@ struct ImGuiStyleVarInfo struct ImGuiColorMod { ImGuiCol Col; - ImVec4 BackupValue; + ImVec4_c BackupValue; }; struct ImGuiStyleMod { @@ -2068,22 +2068,22 @@ typedef enum { typedef struct ImGuiComboPreviewData ImGuiComboPreviewData; struct ImGuiComboPreviewData { - ImRect PreviewRect; - ImVec2 BackupCursorPos; - ImVec2 BackupCursorMaxPos; - ImVec2 BackupCursorPosPrevLine; + ImRect_c PreviewRect; + ImVec2_c BackupCursorPos; + ImVec2_c BackupCursorMaxPos; + ImVec2_c BackupCursorPosPrevLine; float BackupPrevLineTextBaseOffset; ImGuiLayoutType BackupLayout; }; struct ImGuiGroupData { ImGuiID WindowID; - ImVec2 BackupCursorPos; - ImVec2 BackupCursorMaxPos; - ImVec2 BackupCursorPosPrevLine; + ImVec2_c BackupCursorPos; + ImVec2_c BackupCursorMaxPos; + ImVec2_c BackupCursorPosPrevLine; ImVec1 BackupIndent; ImVec1 BackupGroupOffset; - ImVec2 BackupCurrLineSize; + ImVec2_c BackupCurrLineSize; float BackupCurrLineTextBaseOffset; ImGuiID BackupActiveIdIsAlive; bool BackupDeactivatedIdIsAlive; @@ -2121,7 +2121,7 @@ struct ImGuiInputTextState ImVector_char TextToRevertTo; ImVector_char CallbackTextBackup; int BufCapacity; - ImVec2 Scroll; + ImVec2_c Scroll; int LineCount; float WrapWidth; float CursorAnim; @@ -2164,23 +2164,23 @@ struct ImGuiNextWindowData ImGuiCond SizeCond; ImGuiCond CollapsedCond; ImGuiCond DockCond; - ImVec2 PosVal; - ImVec2 PosPivotVal; - ImVec2 SizeVal; - ImVec2 ContentSizeVal; - ImVec2 ScrollVal; + ImVec2_c PosVal; + ImVec2_c PosPivotVal; + ImVec2_c SizeVal; + ImVec2_c ContentSizeVal; + ImVec2_c ScrollVal; ImGuiWindowFlags WindowFlags; ImGuiChildFlags ChildFlags; bool PosUndock; bool CollapsedVal; - ImRect SizeConstraintRect; + ImRect_c SizeConstraintRect; ImGuiSizeCallback SizeCallback; void* SizeCallbackUserData; float BgAlphaVal; ImGuiID ViewportId; ImGuiID DockId; ImGuiWindowClass WindowClass; - ImVec2 MenuBarOffsetMinVal; + ImVec2_c MenuBarOffsetMinVal; ImGuiWindowRefreshFlags RefreshFlagsVal; }; typedef enum { @@ -2210,10 +2210,10 @@ struct ImGuiLastItemData ImGuiID ID; ImGuiItemFlags ItemFlags; ImGuiItemStatusFlags StatusFlags; - ImRect Rect; - ImRect NavRect; - ImRect DisplayRect; - ImRect ClipRect; + ImRect_c Rect; + ImRect_c NavRect; + ImRect_c DisplayRect; + ImRect_c ClipRect; ImGuiKeyChord Shortcut; }; struct ImGuiTreeNodeStackData @@ -2221,7 +2221,7 @@ struct ImGuiTreeNodeStackData ImGuiID ID; ImGuiTreeNodeFlags TreeFlags; ImGuiItemFlags ItemFlags; - ImRect NavRect; + ImRect_c NavRect; float DrawLinesX1; float DrawLinesToNodesY2; ImGuiTableColumnIdx DrawLinesTableColumn; @@ -2282,8 +2282,8 @@ struct ImGuiPopupData int ParentNavLayer; int OpenFrameCount; ImGuiID OpenParentId; - ImVec2 OpenPopupPos; - ImVec2 OpenMousePos; + ImVec2_c OpenPopupPos; + ImVec2_c OpenMousePos; }; typedef struct ImBitArray_ImGuiKey_NamedKey_COUNT__lessImGuiKey_NamedKey_BEGIN {ImU32 Storage[(ImGuiKey_NamedKey_COUNT+31)>>5];} ImBitArray_ImGuiKey_NamedKey_COUNT__lessImGuiKey_NamedKey_BEGIN; @@ -2483,7 +2483,7 @@ struct ImGuiNavItemData ImGuiWindow* Window; ImGuiID ID; ImGuiID FocusScopeId; - ImRect RectRel; + ImRect_c RectRel; ImGuiItemFlags ItemFlags; float DistBox; float DistCenter; @@ -2532,7 +2532,7 @@ struct ImGuiOldColumnData float OffsetNorm; float OffsetNormBeforeResize; ImGuiOldColumnFlags Flags; - ImRect ClipRect; + ImRect_c ClipRect; }; typedef struct ImVector_ImGuiOldColumnData {int Size;int Capacity;ImGuiOldColumnData* Data;} ImVector_ImGuiOldColumnData; @@ -2548,9 +2548,9 @@ struct ImGuiOldColumns float LineMinY, LineMaxY; float HostCursorPosY; float HostCursorMaxPosX; - ImRect HostInitialClipRect; - ImRect HostBackupClipRect; - ImRect HostBackupParentWorkRect; + ImRect_c HostInitialClipRect; + ImRect_c HostBackupClipRect; + ImRect_c HostBackupParentWorkRect; ImVector_ImGuiOldColumnData Columns; ImDrawListSplitter Splitter; }; @@ -2563,14 +2563,14 @@ struct ImGuiBoxSelectState bool IsStartedSetNavIdOnce; bool RequestClear; ImGuiKeyChord KeyMods : 16; - ImVec2 StartPosRel; - ImVec2 EndPosRel; - ImVec2 ScrollAccum; + ImVec2_c StartPosRel; + ImVec2_c EndPosRel; + ImVec2_c ScrollAccum; ImGuiWindow* Window; bool UnclipMode; - ImRect UnclipRect; - ImRect BoxSelectRectPrev; - ImRect BoxSelectRectCurr; + ImRect_c UnclipRect; + ImRect_c BoxSelectRectPrev; + ImRect_c BoxSelectRectCurr; }; struct ImGuiMultiSelectTempData { @@ -2578,8 +2578,8 @@ struct ImGuiMultiSelectTempData ImGuiMultiSelectState* Storage; ImGuiID FocusScopeId; ImGuiMultiSelectFlags Flags; - ImVec2 ScopeRectMin; - ImVec2 BackupCursorMaxPos; + ImVec2_c ScopeRectMin; + ImVec2_c BackupCursorMaxPos; ImGuiSelectionUserData LastSubmittedItem; ImGuiID BoxSelectId; ImGuiKeyChord KeyMods; @@ -2647,9 +2647,9 @@ struct ImGuiDockNode ImGuiDockNode* ChildNodes[2]; ImVector_ImGuiWindowPtr Windows; ImGuiTabBar* TabBar; - ImVec2 Pos; - ImVec2 Size; - ImVec2 SizeRef; + ImVec2_c Pos; + ImVec2_c Size; + ImVec2_c SizeRef; ImGuiAxis SplitAxis; ImGuiWindowClass WindowClass; ImU32 LastBgColor; @@ -2715,8 +2715,8 @@ struct ImGuiViewportP int LastFrameActive; int LastFocusedStampCount; ImGuiID LastNameHash; - ImVec2 LastPos; - ImVec2 LastSize; + ImVec2_c LastPos; + ImVec2_c LastSize; float Alpha; float LastAlpha; bool LastFocusedHadNavWindow; @@ -2725,13 +2725,13 @@ struct ImGuiViewportP ImDrawList* BgFgDrawLists[2]; ImDrawData DrawDataP; ImDrawDataBuilder DrawDataBuilder; - ImVec2 LastPlatformPos; - ImVec2 LastPlatformSize; - ImVec2 LastRendererSize; - ImVec2 WorkInsetMin; - ImVec2 WorkInsetMax; - ImVec2 BuildWorkInsetMin; - ImVec2 BuildWorkInsetMax; + ImVec2_c LastPlatformPos; + ImVec2_c LastPlatformSize; + ImVec2_c LastRendererSize; + ImVec2_c WorkInsetMin; + ImVec2_c WorkInsetMax; + ImVec2_c BuildWorkInsetMin; + ImVec2_c BuildWorkInsetMax; }; struct ImGuiWindowSettings { @@ -2973,12 +2973,12 @@ struct ImGuiContext ImGuiWindow* HoveredWindowBeforeClear; ImGuiWindow* MovingWindow; ImGuiWindow* WheelingWindow; - ImVec2 WheelingWindowRefMousePos; + ImVec2_c WheelingWindowRefMousePos; int WheelingWindowStartFrame; int WheelingWindowScrolledFrame; float WheelingWindowReleaseTimer; - ImVec2 WheelingWindowWheelRemainder; - ImVec2 WheelingAxisAvg; + ImVec2_c WheelingWindowWheelRemainder; + ImVec2_c WheelingAxisAvg; ImGuiID DebugDrawIdConflictsId; ImGuiID DebugHookIdInfoId; ImGuiID HoveredId; @@ -3001,7 +3001,7 @@ struct ImGuiContext bool ActiveIdFromShortcut; ImGuiID ActiveIdDisabledId; int ActiveIdMouseButton : 8; - ImVec2 ActiveIdClickOffset; + ImVec2_c ActiveIdClickOffset; ImGuiWindow* ActiveIdWindow; ImGuiInputSource ActiveIdSource; ImGuiID ActiveIdPreviousFrame; @@ -3041,7 +3041,7 @@ struct ImGuiContext ImGuiViewportP* MouseLastHoveredViewport; ImGuiID PlatformLastFocusedViewportId; ImGuiPlatformMonitor FallbackMonitor; - ImRect PlatformMonitorsFullWorkRect; + ImRect_c PlatformMonitorsFullWorkRect; int ViewportCreatedCount; int PlatformWindowsCreatedCount; int ViewportFocusedStampCount; @@ -3078,8 +3078,8 @@ struct ImGuiContext ImGuiDir NavMoveDir; ImGuiDir NavMoveDirForDebug; ImGuiDir NavMoveClipDir; - ImRect NavScoringRect; - ImRect NavScoringNoClipRect; + ImRect_c NavScoringRect; + ImRect_c NavScoringNoClipRect; int NavScoringDebugCount; int NavTabbingDir; int NavTabbingCounter; @@ -3104,8 +3104,8 @@ struct ImGuiContext ImGuiInputSource NavWindowingInputSource; bool NavWindowingToggleLayer; ImGuiKey NavWindowingToggleKey; - ImVec2 NavWindowingAccumDeltaPos; - ImVec2 NavWindowingAccumDeltaSize; + ImVec2_c NavWindowingAccumDeltaPos; + ImVec2_c NavWindowingAccumDeltaSize; float DimBgRatio; bool DragDropActive; bool DragDropWithinSource; @@ -3114,8 +3114,8 @@ struct ImGuiContext int DragDropSourceFrameCount; int DragDropMouseButton; ImGuiPayload DragDropPayload; - ImRect DragDropTargetRect; - ImRect DragDropTargetClipRect; + ImRect_c DragDropTargetRect; + ImRect_c DragDropTargetClipRect; ImGuiID DragDropTargetId; ImGuiID DragDropTargetFullViewport; ImGuiDragDropFlags DragDropAcceptFlags; @@ -3152,7 +3152,7 @@ struct ImGuiContext ImGuiID HoverWindowUnlockedStationaryId; ImGuiMouseCursor MouseCursor; float MouseStationaryTimer; - ImVec2 MouseLastValidPos; + ImVec2_c MouseLastValidPos; ImGuiInputTextState InputTextState; ImGuiTextIndex InputTextLineIndex; ImGuiInputTextDeactivatedState InputTextDeactivatedState; @@ -3168,9 +3168,9 @@ struct ImGuiContext float ColorEditSavedHue; float ColorEditSavedSat; ImU32 ColorEditSavedColor; - ImVec4 ColorPickerRef; + ImVec4_c ColorPickerRef; ImGuiComboPreviewData ComboPreviewData; - ImRect WindowResizeBorderExpectedRect; + ImRect_c WindowResizeBorderExpectedRect; bool WindowResizeRelativeMode; short ScrollbarSeekMode; float ScrollbarClickDeltaToGrabCenter; @@ -3215,7 +3215,7 @@ struct ImGuiContext int LogDepthToExpandDefault; ImGuiErrorCallback ErrorCallback; void* ErrorCallbackUserData; - ImVec2 ErrorTooltipLockedPos; + ImVec2_c ErrorTooltipLockedPos; bool ErrorFirst; int ErrorCountCurrentFrame; ImGuiErrorRecoveryState StackSizesInNewFrame; @@ -3235,7 +3235,7 @@ struct ImGuiContext ImU8 DebugItemPickerMouseButton; ImGuiID DebugItemPickerBreakId; float DebugFlashStyleColorTime; - ImVec4 DebugFlashStyleColorBackup; + ImVec4_c DebugFlashStyleColorBackup; ImGuiMetricsConfig DebugMetricsConfig; ImGuiIDStackTool DebugIDStackTool; ImGuiDebugAllocInfo DebugAllocInfo; @@ -3252,13 +3252,13 @@ struct ImGuiContext }; struct ImGuiWindowTempData { - ImVec2 CursorPos; - ImVec2 CursorPosPrevLine; - ImVec2 CursorStartPos; - ImVec2 CursorMaxPos; - ImVec2 IdealMaxPos; - ImVec2 CurrLineSize; - ImVec2 PrevLineSize; + ImVec2_c CursorPos; + ImVec2_c CursorPosPrevLine; + ImVec2_c CursorStartPos; + ImVec2_c CursorMaxPos; + ImVec2_c IdealMaxPos; + ImVec2_c CurrLineSize; + ImVec2_c PrevLineSize; float CurrLineTextBaseOffset; float PrevLineTextBaseOffset; bool IsSameLine; @@ -3266,7 +3266,7 @@ struct ImGuiWindowTempData ImVec1 Indent; ImVec1 ColumnsOffset; ImVec1 GroupOffset; - ImVec2 CursorStartPosLossyness; + ImVec2_c CursorStartPosLossyness; ImGuiNavLayer NavLayerCurrent; short NavLayersActiveMask; short NavLayersActiveMaskNext; @@ -3274,7 +3274,7 @@ struct ImGuiWindowTempData bool NavHideHighlightOneFrame; bool NavWindowHasScrollY; bool MenuBarAppending; - ImVec2 MenuBarOffset; + ImVec2_c MenuBarOffset; ImGuiMenuColumns MenuColumns; int TreeDepth; ImU32 TreeHasStackDataDepthMask; @@ -3289,7 +3289,7 @@ struct ImGuiWindowTempData ImGuiItemStatusFlags WindowItemStatusFlags; ImGuiItemStatusFlags ChildItemStatusFlags; ImGuiItemStatusFlags DockTabItemStatusFlags; - ImRect DockTabItemRect; + ImRect_c DockTabItemRect; float ItemWidth; float TextWrapPos; ImVector_float ItemWidthStack; @@ -3307,15 +3307,15 @@ struct ImGuiWindow ImGuiWindowClass WindowClass; ImGuiViewportP* Viewport; ImGuiID ViewportId; - ImVec2 ViewportPos; + ImVec2_c ViewportPos; int ViewportAllowPlatformMonitorExtend; - ImVec2 Pos; - ImVec2 Size; - ImVec2 SizeFull; - ImVec2 ContentSize; - ImVec2 ContentSizeIdeal; - ImVec2 ContentSizeExplicit; - ImVec2 WindowPadding; + ImVec2_c Pos; + ImVec2_c Size; + ImVec2_c SizeFull; + ImVec2_c ContentSize; + ImVec2_c ContentSizeIdeal; + ImVec2_c ContentSizeExplicit; + ImVec2_c WindowPadding; float WindowRounding; float WindowBorderSize; float TitleBarHeight, MenuBarHeight; @@ -3327,12 +3327,12 @@ struct ImGuiWindow ImGuiID TabId; ImGuiID ChildId; ImGuiID PopupId; - ImVec2 Scroll; - ImVec2 ScrollMax; - ImVec2 ScrollTarget; - ImVec2 ScrollTargetCenterRatio; - ImVec2 ScrollTargetEdgeSnapDist; - ImVec2 ScrollbarSizes; + ImVec2_c Scroll; + ImVec2_c ScrollMax; + ImVec2_c ScrollTarget; + ImVec2_c ScrollTargetCenterRatio; + ImVec2_c ScrollTargetEdgeSnapDist; + ImVec2_c ScrollbarSizes; bool ScrollbarX, ScrollbarY; bool ScrollbarXStabilizeEnabled; ImU8 ScrollbarXStabilizeToggledHistory; @@ -3367,17 +3367,17 @@ struct ImGuiWindow ImGuiCond SetWindowSizeAllowFlags : 8; ImGuiCond SetWindowCollapsedAllowFlags : 8; ImGuiCond SetWindowDockAllowFlags : 8; - ImVec2 SetWindowPosVal; - ImVec2 SetWindowPosPivot; + ImVec2_c SetWindowPosVal; + ImVec2_c SetWindowPosPivot; ImVector_ImGuiID IDStack; ImGuiWindowTempData DC; - ImRect OuterRectClipped; - ImRect InnerRect; - ImRect InnerClipRect; - ImRect WorkRect; - ImRect ParentWorkRect; - ImRect ClipRect; - ImRect ContentRegionRect; + ImRect_c OuterRectClipped; + ImRect_c InnerRect; + ImRect_c InnerClipRect; + ImRect_c WorkRect; + ImRect_c ParentWorkRect; + ImRect_c ClipRect; + ImRect_c ContentRegionRect; ImVec2ih HitTestHoleSize; ImVec2ih HitTestHoleOffset; int LastFrameActive; @@ -3402,8 +3402,8 @@ struct ImGuiWindow ImGuiWindow* ParentWindowForFocusRoute; ImGuiWindow* NavLastChildNavWindow; ImGuiID NavLastIds[ImGuiNavLayer_COUNT]; - ImRect NavRectRel[ImGuiNavLayer_COUNT]; - ImVec2 NavPreferredScoringPosRel[ImGuiNavLayer_COUNT]; + ImRect_c NavRectRel[ImGuiNavLayer_COUNT]; + ImVec2_c NavPreferredScoringPosRel[ImGuiNavLayer_COUNT]; ImGuiID NavRootFocusScopeId; int MemoryDrawListIdxCapacity; int MemoryDrawListVtxCapacity; @@ -3459,7 +3459,7 @@ struct ImGuiTabBar ImGuiID VisibleTabId; int CurrFrameVisible; int PrevFrameVisible; - ImRect BarRect; + ImRect_c BarRect; float BarRectPrevWidth; float CurrTabsContentsHeight; float PrevTabsContentsHeight; @@ -3483,8 +3483,8 @@ struct ImGuiTabBar ImS16 TabsActiveCount; ImS16 LastTabItemIdx; float ItemSpacingY; - ImVec2 FramePadding; - ImVec2 BackupCursorPos; + ImVec2_c FramePadding; + ImVec2_c BackupCursorPos; ImGuiTextBuffer TabsNames; }; struct ImGuiTableColumn @@ -3498,7 +3498,7 @@ struct ImGuiTableColumn float WidthMax; float StretchWeight; float InitStretchWeightOrWidth; - ImRect ClipRect; + ImRect_c ClipRect; ImGuiID UserID; float WorkMinX; float WorkMaxX; @@ -3613,15 +3613,15 @@ struct ImGuiTable float RefScale; float AngledHeadersHeight; float AngledHeadersSlope; - ImRect OuterRect; - ImRect InnerRect; - ImRect WorkRect; - ImRect InnerClipRect; - ImRect BgClipRect; - ImRect Bg0ClipRectForDrawCmd; - ImRect Bg2ClipRectForDrawCmd; - ImRect HostClipRect; - ImRect HostBackupInnerClipRect; + ImRect_c OuterRect; + ImRect_c InnerRect; + ImRect_c WorkRect; + ImRect_c InnerClipRect; + ImRect_c BgClipRect; + ImRect_c Bg0ClipRectForDrawCmd; + ImRect_c Bg2ClipRectForDrawCmd; + ImRect_c HostClipRect; + ImRect_c HostBackupInnerClipRect; ImGuiWindow* OuterWindow; ImGuiWindow* InnerWindow; ImGuiTextBuffer ColumnsNames; @@ -3688,13 +3688,13 @@ struct ImGuiTableTempData float LastTimeActive; float AngledHeadersExtraWidth; ImVector_ImGuiTableHeaderData AngledHeadersRequests; - ImVec2 UserOuterSize; + ImVec2_c UserOuterSize; ImDrawListSplitter DrawSplitter; - ImRect HostBackupWorkRect; - ImRect HostBackupParentWorkRect; - ImVec2 HostBackupPrevLineSize; - ImVec2 HostBackupCurrLineSize; - ImVec2 HostBackupCursorMaxPos; + ImRect_c HostBackupWorkRect; + ImRect_c HostBackupParentWorkRect; + ImVec2_c HostBackupPrevLineSize; + ImVec2_c HostBackupCurrLineSize; + ImVec2_c HostBackupCursorMaxPos; ImVec1 HostBackupColumnsOffset; float HostBackupItemWidth; int HostBackupItemWidthStackSize; @@ -3779,8 +3779,8 @@ struct ImFontAtlasBuilder int RectsDiscardedCount; int RectsDiscardedSurface; int FrameCount; - ImVec2i MaxRectSize; - ImVec2i MaxRectBounds; + ImVec2i_c MaxRectSize; + ImVec2i_c MaxRectBounds; bool LockDisableResize; bool PreloadedAllGlyphsRanges; ImStableVector_ImFontBaked__32 BakedPool; @@ -3818,6 +3818,15 @@ struct SDL_Window; typedef union SDL_Event SDL_Event; #endif // CIMGUI_DEFINE_ENUMS_AND_STRUCTS +#ifdef CIMGUI_DEFINE_ENUMS_AND_STRUCTS +typedef struct ImColor_c ImColor; +typedef struct ImRect_c ImRect; +typedef struct ImTextureRef_c ImTextureRef; +typedef struct ImVec2_c ImVec2; +typedef struct ImVec2i_c ImVec2i; +typedef struct ImVec4_c ImVec4; +#endif +#ifndef CIMGUI_DEFINE_ENUMS_AND_STRUCTS typedef struct ImColor_c ImColor_c; struct ImColor_c { ImVec4 Value; @@ -3849,6 +3858,7 @@ struct ImVec4_c { float z; float w; }; +#endif #ifndef CIMGUI_DEFINE_ENUMS_AND_STRUCTS typedef struct ImGuiTextFilter::ImGuiTextRange ImGuiTextRange; @@ -4028,7 +4038,7 @@ CIMGUI_API ImVec2_c igGetFontTexUvWhitePixel(void); CIMGUI_API ImU32 igGetColorU32_Col(ImGuiCol idx,float alpha_mul); CIMGUI_API ImU32 igGetColorU32_Vec4(const ImVec4_c col); CIMGUI_API ImU32 igGetColorU32_U32(ImU32 col,float alpha_mul); -CIMGUI_API const ImVec4* igGetStyleColorVec4(ImGuiCol idx); +CIMGUI_API const ImVec4_c* igGetStyleColorVec4(ImGuiCol idx); CIMGUI_API ImVec2_c igGetCursorScreenPos(void); CIMGUI_API void igSetCursorScreenPos(const ImVec2_c pos); CIMGUI_API ImVec2_c igGetContentRegionAvail(void); @@ -4355,7 +4365,7 @@ CIMGUI_API bool igIsMouseDoubleClicked_Nil(ImGuiMouseButton button); CIMGUI_API bool igIsMouseReleasedWithDelay(ImGuiMouseButton button,float delay); CIMGUI_API int igGetMouseClickedCount(ImGuiMouseButton button); CIMGUI_API bool igIsMouseHoveringRect(const ImVec2_c r_min,const ImVec2_c r_max,bool clip); -CIMGUI_API bool igIsMousePosValid(const ImVec2* mouse_pos); +CIMGUI_API bool igIsMousePosValid(const ImVec2_c* mouse_pos); CIMGUI_API bool igIsAnyMouseDown(void); CIMGUI_API ImVec2_c igGetMousePos(void); CIMGUI_API ImVec2_c igGetMousePosOnOpeningCurrentPopup(void); @@ -4539,9 +4549,9 @@ CIMGUI_API void ImDrawList_AddText_Vec2(ImDrawList* self,const ImVec2_c pos,ImU3 CIMGUI_API void ImDrawList_AddText_FontPtr(ImDrawList* self,ImFont* font,float font_size,const ImVec2_c pos,ImU32 col,const char* text_begin,const char* text_end,float wrap_width,const ImVec4* cpu_fine_clip_rect); CIMGUI_API void ImDrawList_AddBezierCubic(ImDrawList* self,const ImVec2_c p1,const ImVec2_c p2,const ImVec2_c p3,const ImVec2_c p4,ImU32 col,float thickness,int num_segments); CIMGUI_API void ImDrawList_AddBezierQuadratic(ImDrawList* self,const ImVec2_c p1,const ImVec2_c p2,const ImVec2_c p3,ImU32 col,float thickness,int num_segments); -CIMGUI_API void ImDrawList_AddPolyline(ImDrawList* self,const ImVec2* points,int num_points,ImU32 col,ImDrawFlags flags,float thickness); -CIMGUI_API void ImDrawList_AddConvexPolyFilled(ImDrawList* self,const ImVec2* points,int num_points,ImU32 col); -CIMGUI_API void ImDrawList_AddConcavePolyFilled(ImDrawList* self,const ImVec2* points,int num_points,ImU32 col); +CIMGUI_API void ImDrawList_AddPolyline(ImDrawList* self,const ImVec2_c* points,int num_points,ImU32 col,ImDrawFlags flags,float thickness); +CIMGUI_API void ImDrawList_AddConvexPolyFilled(ImDrawList* self,const ImVec2_c* points,int num_points,ImU32 col); +CIMGUI_API void ImDrawList_AddConcavePolyFilled(ImDrawList* self,const ImVec2_c* points,int num_points,ImU32 col); CIMGUI_API void ImDrawList_AddImage(ImDrawList* self,ImTextureRef_c tex_ref,const ImVec2_c p_min,const ImVec2_c p_max,const ImVec2_c uv_min,const ImVec2_c uv_max,ImU32 col); CIMGUI_API void ImDrawList_AddImageQuad(ImDrawList* self,ImTextureRef_c tex_ref,const ImVec2_c p1,const ImVec2_c p2,const ImVec2_c p3,const ImVec2_c p4,const ImVec2_c uv1,const ImVec2_c uv2,const ImVec2_c uv3,const ImVec2_c uv4,ImU32 col); CIMGUI_API void ImDrawList_AddImageRounded(ImDrawList* self,ImTextureRef_c tex_ref,const ImVec2_c p_min,const ImVec2_c p_max,const ImVec2_c uv_min,const ImVec2_c uv_max,ImU32 col,float rounding,ImDrawFlags flags); @@ -4718,7 +4728,7 @@ CIMGUI_API int igImTextCountUtf8BytesFromChar(const char* in_text,const char* in CIMGUI_API int igImTextCountUtf8BytesFromStr(const ImWchar* in_text,const ImWchar* in_text_end); CIMGUI_API const char* igImTextFindPreviousUtf8Codepoint(const char* in_text_start,const char* in_text_curr); CIMGUI_API int igImTextCountLines(const char* in_text,const char* in_text_end); -CIMGUI_API ImVec2_c igImFontCalcTextSizeEx(ImFont* font,float size,float max_width,float wrap_width,const char* text_begin,const char* text_end_display,const char* text_end,const char** out_remaining,ImVec2* out_offset,ImDrawTextFlags flags); +CIMGUI_API ImVec2_c igImFontCalcTextSizeEx(ImFont* font,float size,float max_width,float wrap_width,const char* text_begin,const char* text_end_display,const char* text_end,const char** out_remaining,ImVec2_c* out_offset,ImDrawTextFlags flags); CIMGUI_API const char* igImFontCalcWordWrapPositionEx(ImFont* font,float size,const char* text,const char* text_end,float wrap_width,ImDrawTextFlags flags); CIMGUI_API const char* igImTextCalcWordWrapNextLineStart(const char* text,const char* text_end,ImDrawTextFlags flags); CIMGUI_API ImFileHandle igImFileOpen(const char* filename,const char* mode); @@ -4812,7 +4822,7 @@ CIMGUI_API void ImRect_ClipWithFull(ImRect* self,const ImRect_c r); CIMGUI_API void ImRect_Floor(ImRect* self); CIMGUI_API bool ImRect_IsInverted(ImRect* self); CIMGUI_API ImVec4_c ImRect_ToVec4(ImRect* self); -CIMGUI_API const ImVec4* ImRect_AsVec4(ImRect* self); +CIMGUI_API const ImVec4_c* ImRect_AsVec4(ImRect* self); CIMGUI_API size_t igImBitArrayGetStorageSizeInBytes(int bitcount); CIMGUI_API void igImBitArrayClearAllBits(ImU32* arr,int bitcount); CIMGUI_API bool igImBitArrayTestBit(const ImU32* arr,int n); @@ -5099,7 +5109,7 @@ CIMGUI_API void igBeginDisabledOverrideReenable(void); CIMGUI_API void igEndDisabledOverrideReenable(void); CIMGUI_API void igLogBegin(ImGuiLogFlags flags,int auto_open_depth); CIMGUI_API void igLogToBuffer(int auto_open_depth); -CIMGUI_API void igLogRenderedText(const ImVec2* ref_pos,const char* text,const char* text_end); +CIMGUI_API void igLogRenderedText(const ImVec2_c* ref_pos,const char* text,const char* text_end); CIMGUI_API void igLogSetNextTextDecoration(const char* prefix,const char* suffix); CIMGUI_API bool igBeginChildEx(const char* name,ImGuiID id,const ImVec2_c size_arg,ImGuiChildFlags child_flags,ImGuiWindowFlags window_flags); CIMGUI_API bool igBeginPopupEx(ImGuiID id,ImGuiWindowFlags extra_window_flags); @@ -5195,7 +5205,7 @@ CIMGUI_API void igDockContextQueueUndockWindow(ImGuiContext* ctx,ImGuiWindow* wi CIMGUI_API void igDockContextQueueUndockNode(ImGuiContext* ctx,ImGuiDockNode* node); CIMGUI_API void igDockContextProcessUndockWindow(ImGuiContext* ctx,ImGuiWindow* window,bool clear_persistent_docking_ref); CIMGUI_API void igDockContextProcessUndockNode(ImGuiContext* ctx,ImGuiDockNode* node); -CIMGUI_API bool igDockContextCalcDropPosForDocking(ImGuiWindow* target,ImGuiDockNode* target_node,ImGuiWindow* payload_window,ImGuiDockNode* payload_node,ImGuiDir split_dir,bool split_outer,ImVec2* out_pos); +CIMGUI_API bool igDockContextCalcDropPosForDocking(ImGuiWindow* target,ImGuiDockNode* target_node,ImGuiWindow* payload_window,ImGuiDockNode* payload_node,ImGuiDir split_dir,bool split_outer,ImVec2_c* out_pos); CIMGUI_API ImGuiDockNode* igDockContextFindNodeByID(ImGuiContext* ctx,ImGuiID id); CIMGUI_API void igDockNodeWindowMenuHandler_Default(ImGuiContext* ctx,ImGuiDockNode* node,ImGuiTabBar* tab_bar); CIMGUI_API bool igDockNodeBeginAmendTabBar(ImGuiDockNode* node); @@ -5334,9 +5344,9 @@ CIMGUI_API void igTabItemBackground(ImDrawList* draw_list,const ImRect_c bb,ImGu CIMGUI_API void igTabItemLabelAndCloseButton(ImDrawList* draw_list,const ImRect_c bb,ImGuiTabItemFlags flags,ImVec2_c frame_padding,const char* label,ImGuiID tab_id,ImGuiID close_button_id,bool is_contents_visible,bool* out_just_closed,bool* out_text_clipped); CIMGUI_API void igRenderText(ImVec2_c pos,const char* text,const char* text_end,bool hide_text_after_hash); CIMGUI_API void igRenderTextWrapped(ImVec2_c pos,const char* text,const char* text_end,float wrap_width); -CIMGUI_API void igRenderTextClipped(const ImVec2_c pos_min,const ImVec2_c pos_max,const char* text,const char* text_end,const ImVec2* text_size_if_known,const ImVec2_c align,const ImRect* clip_rect); -CIMGUI_API void igRenderTextClippedEx(ImDrawList* draw_list,const ImVec2_c pos_min,const ImVec2_c pos_max,const char* text,const char* text_end,const ImVec2* text_size_if_known,const ImVec2_c align,const ImRect* clip_rect); -CIMGUI_API void igRenderTextEllipsis(ImDrawList* draw_list,const ImVec2_c pos_min,const ImVec2_c pos_max,float ellipsis_max_x,const char* text,const char* text_end,const ImVec2* text_size_if_known); +CIMGUI_API void igRenderTextClipped(const ImVec2_c pos_min,const ImVec2_c pos_max,const char* text,const char* text_end,const ImVec2_c* text_size_if_known,const ImVec2_c align,const ImRect* clip_rect); +CIMGUI_API void igRenderTextClippedEx(ImDrawList* draw_list,const ImVec2_c pos_min,const ImVec2_c pos_max,const char* text,const char* text_end,const ImVec2_c* text_size_if_known,const ImVec2_c align,const ImRect* clip_rect); +CIMGUI_API void igRenderTextEllipsis(ImDrawList* draw_list,const ImVec2_c pos_min,const ImVec2_c pos_max,float ellipsis_max_x,const char* text,const char* text_end,const ImVec2_c* text_size_if_known); CIMGUI_API void igRenderFrame(ImVec2_c p_min,ImVec2_c p_max,ImU32 fill_col,bool borders,float rounding); CIMGUI_API void igRenderFrameBorder(ImVec2_c p_min,ImVec2_c p_max,float rounding); CIMGUI_API void igRenderColorRectWithAlphaCheckerboard(ImDrawList* draw_list,ImVec2_c p_min,ImVec2_c p_max,ImU32 fill_col,float grid_step,ImVec2_c grid_off,float rounding,ImDrawFlags flags); @@ -5512,7 +5522,7 @@ CIMGUI_API int igImTextureDataGetFormatBytesPerPixel(ImTextureFormat format); CIMGUI_API const char* igImTextureDataGetStatusName(ImTextureStatus status); CIMGUI_API const char* igImTextureDataGetFormatName(ImTextureFormat format); CIMGUI_API void igImFontAtlasDebugLogTextureRequests(ImFontAtlas* atlas); -CIMGUI_API bool igImFontAtlasGetMouseCursorTexData(ImFontAtlas* atlas,ImGuiMouseCursor cursor_type,ImVec2* out_offset,ImVec2* out_size,ImVec2 out_uv_border[2],ImVec2 out_uv_fill[2]); +CIMGUI_API bool igImFontAtlasGetMouseCursorTexData(ImFontAtlas* atlas,ImGuiMouseCursor cursor_type,ImVec2_c* out_offset,ImVec2_c* out_size,ImVec2 out_uv_border[2],ImVec2 out_uv_fill[2]); #ifdef IMGUI_ENABLE_FREETYPE CIMGUI_API const ImFontLoader* ImGuiFreeType_GetFontLoader(void); CIMGUI_API void ImGuiFreeType_SetAllocatorFunctions(void*(*alloc_func)(size_t sz,void* user_data),void(*free_func)(void* ptr,void* user_data),void* user_data); diff --git a/generator/cpp2ffi.lua b/generator/cpp2ffi.lua index 6a77c17..4226bb8 100644 --- a/generator/cpp2ffi.lua +++ b/generator/cpp2ffi.lua @@ -1119,14 +1119,18 @@ local function gen_structs_c(FP) end insert(tabs,"};") end) + if #tabs > 0 then + insert(tabs,1,"#ifndef CIMGUI_DEFINE_ENUMS_AND_STRUCTS") + insert(tabs,"#endif") + end if #tabs_c > 0 then insert(tabs_c,1,"#ifdef CIMGUI_DEFINE_ENUMS_AND_STRUCTS") insert(tabs_c,"#endif") end --print(table.concat(tabs_c,"\n")) --print(table.concat(tabs,"\n")) - --return table.concat(tabs_c,"\n").."\n"..table.concat(tabs,"\n") - return table.concat(tabs,"\n") + return table.concat(tabs_c,"\n").."\n"..table.concat(tabs,"\n") + --return table.concat(tabs,"\n") end local function gen_field_conversion(tab, struct, FP, prefix) prefix = prefix or "" @@ -1163,7 +1167,7 @@ local function genConversions(FP) return table.concat(convers,"\n") end local function get_nonPODused(FP) - print("get_nonPODused-----------------------------") + --print("get_nonPODused-----------------------------") local nonPOD = FP.structs_and_enums_table.nonPOD --M.prtable(nonPOD) local typeargs = {} @@ -1219,16 +1223,35 @@ local function get_nonPODused(FP) -- M.prtable(typeargs2_ret) end +local function header_subs_nonPOD(FP,txt) + --print("----------header_subs_nonPOD") + --M.prtable(FP.nP_used) + for k,v in pairs(FP.nP_used) do + --txt = txt:gsub("([%s;])"..k,"%1"..k.."_c") + for i=1,2 do + txt = txt:gsub("([%s;])"..k.."([%s;%*])", "%1"..k.."_c%2") + end + --txt = txt:gsub("%s"..k..";", " "..k.."_c;") + --txt = txt:gsub("%s"..k.."%*", " "..k.."_c*") + end + return txt +end +M.header_subs_nonPOD = header_subs_nonPOD local function ADDnonUDT(FP) local nonPOD = get_nonPOD(FP) get_nonPODused(FP) for k,defs in pairs(FP.defsT) do for i, def in ipairs(defs) do --ret + local rets = (def.ret or ""):gsub("const ","") + rets = rets:gsub("*","") if FP.nP_ret[def.ret] then def.conv = (def.ret):gsub("const ","") def.ret = FP.nP_ret[def.ret] def.nonUDT = 1 + elseif FP.nP_ret[rets] then + def.ret = def.ret:gsub(rets, FP.nP_ret[rets]) + def.nonUDT = 2 end --args local caar,asp @@ -1242,10 +1265,15 @@ local function ADDnonUDT(FP) asp = asp .. v.ret .. f_ .. v.name .. ")" .. v.signature .. "," caar = caar .. name .. "," else + local typ = v.type:gsub("const ","") + local typ2 = typ:gsub("*","") if FP.nP_args[v.type] then - local typ = v.type:gsub("const ","") caar = caar .. "ConvertToCPP_"..typ.."("..name..")," asp = asp .. v.type:gsub(typ,typ.."_c").." "..v.name.."," + elseif FP.nP_args[typ2] then + local typ3 = v.type:gsub(typ2,typ2.."_c") + caar = caar .. "reinterpret_cast<"..v.type..">("..name..")," + asp = asp .. typ3 .." "..v.name.."," else local siz = v.type:match("(%[%d*%])") or "" local typ = v.type:gsub("(%[%d*%])","") @@ -2013,13 +2041,15 @@ function M.Parser() if not structname then print("NO NAME",cleanst,it.item) end --if not void stname or templated if structname and not self.typenames[structname] then - - --table.insert(typedefs_table,"typedef struct "..structname.." "..structname..";\n") - local tst = "\ntypedef struct "..structname.." "..structname..";" - if check_unique_typedefs(tst,uniques) then - --table.insert(outtab,tst) - self:header_text_insert(outtab, tst, it) - end + --dont add typedef to non POD + local tst = "" + --if not self.nP_used[structname] then + tst = "\ntypedef struct "..structname.." "..structname..";" + --end + if check_unique_typedefs(tst,uniques) then + --table.insert(outtab,tst) + self:header_text_insert(outtab, tst, it) + end self.typedefs_dict[structname]="struct "..structname --dont insert child structs as they are inserted before parent struct if not (it.parent and it.parent.re_name == "struct_re") then @@ -2064,6 +2094,8 @@ function M.Parser() --check arg detection failure if no name in function declaration check_arg_detection(self.defsT,self.typedefs_dict) local outtabprest, outtabst = table.concat(outtabpre,""),table.concat(outtab,"") + outtabprest = M.header_subs_nonPOD(self,outtabprest) + outtabst = M.header_subs_nonPOD(self,outtabst) self.structs_and_enums = {outtabprest, outtabst or ""} return outtabprest, outtabst @@ -2860,6 +2892,8 @@ local function ImGui_f_implementation(def) if def.nonUDT == 1 then --table.insert(outtab," *pOut = "..namespace..def.funcname..def.call_args..";\n") insert(outtab," return ConvertFromCPP_"..def.conv.."("..namespace..def.funcname..def.call_args..");\n") + elseif def.nonUDT == 2 then + insert(outtab," return reinterpret_cast<"..def.ret..">("..ptret..namespace..def.funcname..def.call_args..");\n") end table.insert(outtab,"}\n") else --standard ImGui @@ -2896,6 +2930,8 @@ local function struct_f_implementation(def) --table.insert(outtab," *pOut = self->"..def.funcname..def.call_args..";\n") --local typret = (def.ret):gsub("const ","") insert(outtab," return ConvertFromCPP_"..def.conv.."(self->"..def.funcname..def.call_args..");\n") + elseif def.nonUDT == 2 then + insert(outtab," return reinterpret_cast<"..def.ret..">("..ptret.."self->"..def.funcname..def.call_args..");\n") end else --standard struct table.insert(outtab," return "..ptret.."self->"..def.funcname..def.call_args..";\n") @@ -2971,7 +3007,7 @@ M.table_do_sorted = table_do_sorted local function func_header_generate_structs(FP) - local outtab = {} + local outtab = {}--"\n/////func_header_generate_structs\n"} table_do_sorted(FP.embeded_structs,function(k,v) table.insert(outtab,"typedef "..v.." "..k..";\n") @@ -2989,6 +3025,7 @@ local function func_header_generate_structs(FP) end M.func_header_generate_structs = func_header_generate_structs + local function func_header_generate_funcs(FP) local outtab = {} @@ -3052,8 +3089,10 @@ local function func_header_generate(FP) table.insert(outtab,"#endif //CIMGUI_DEFINE_ENUMS_AND_STRUCTS\n") local outtabf = func_header_generate_funcs(FP) - - local cfuncsstr = table.concat(outtab)..table.concat(outtabf) + outtabf = table.concat(outtabf) + assert(type(outtabf)=="string") + --outtabf = M.header_subs_nonPOD(FP,outtabf) + local cfuncsstr = table.concat(outtab)..outtabf cfuncsstr = cfuncsstr:gsub("\n+","\n") --several empty lines to one empty line return cfuncsstr end diff --git a/generator/generator.lua b/generator/generator.lua index b1ea0f0..8ac9955 100644 --- a/generator/generator.lua +++ b/generator/generator.lua @@ -286,6 +286,7 @@ local function cimgui_generation(parser) local tdt = parser:generate_templates() + --local cstructsstr = "\n//7777estio es outpre\n"..outpre.."\n///////////////tdt\n"..tdt.."\n////////////////////outpost\n"..outpost local cstructsstr = outpre..tdt..outpost if gdefines.IMGUI_HAS_DOCK then diff --git a/generator/output/definitions.json b/generator/output/definitions.json index dc66c6b..1555e89 100644 --- a/generator/output/definitions.json +++ b/generator/output/definitions.json @@ -1457,7 +1457,7 @@ ], "ImDrawList_AddConcavePolyFilled": [ { - "args": "(ImDrawList* self,const ImVec2* points,int num_points,ImU32 col)", + "args": "(ImDrawList* self,const ImVec2_c* points,int num_points,ImU32 col)", "argsT": [ { "name": "self", @@ -1477,7 +1477,7 @@ } ], "argsoriginal": "(const ImVec2* points,int num_points,ImU32 col)", - "call_args": "(points,num_points,col)", + "call_args": "(reinterpret_cast(points),num_points,col)", "cimguiname": "ImDrawList_AddConcavePolyFilled", "defaults": {}, "funcname": "AddConcavePolyFilled", @@ -1490,7 +1490,7 @@ ], "ImDrawList_AddConvexPolyFilled": [ { - "args": "(ImDrawList* self,const ImVec2* points,int num_points,ImU32 col)", + "args": "(ImDrawList* self,const ImVec2_c* points,int num_points,ImU32 col)", "argsT": [ { "name": "self", @@ -1510,7 +1510,7 @@ } ], "argsoriginal": "(const ImVec2* points,int num_points,ImU32 col)", - "call_args": "(points,num_points,col)", + "call_args": "(reinterpret_cast(points),num_points,col)", "cimguiname": "ImDrawList_AddConvexPolyFilled", "defaults": {}, "funcname": "AddConvexPolyFilled", @@ -1927,7 +1927,7 @@ ], "ImDrawList_AddPolyline": [ { - "args": "(ImDrawList* self,const ImVec2* points,int num_points,ImU32 col,ImDrawFlags flags,float thickness)", + "args": "(ImDrawList* self,const ImVec2_c* points,int num_points,ImU32 col,ImDrawFlags flags,float thickness)", "argsT": [ { "name": "self", @@ -1955,7 +1955,7 @@ } ], "argsoriginal": "(const ImVec2* points,int num_points,ImU32 col,ImDrawFlags flags,float thickness)", - "call_args": "(points,num_points,col,flags,thickness)", + "call_args": "(reinterpret_cast(points),num_points,col,flags,thickness)", "cimguiname": "ImDrawList_AddPolyline", "defaults": {}, "funcname": "AddPolyline", @@ -11538,8 +11538,9 @@ "defaults": {}, "funcname": "AsVec4", "location": "imgui_internal:619", + "nonUDT": 2, "ov_cimguiname": "ImRect_AsVec4", - "ret": "const ImVec4*", + "ret": "const ImVec4_c*", "retref": "&", "signature": "()const", "stname": "ImRect" @@ -19053,7 +19054,7 @@ ], "igDockContextCalcDropPosForDocking": [ { - "args": "(ImGuiWindow* target,ImGuiDockNode* target_node,ImGuiWindow* payload_window,ImGuiDockNode* payload_node,ImGuiDir split_dir,bool split_outer,ImVec2* out_pos)", + "args": "(ImGuiWindow* target,ImGuiDockNode* target_node,ImGuiWindow* payload_window,ImGuiDockNode* payload_node,ImGuiDir split_dir,bool split_outer,ImVec2_c* out_pos)", "argsT": [ { "name": "target", @@ -19085,7 +19086,7 @@ } ], "argsoriginal": "(ImGuiWindow* target,ImGuiDockNode* target_node,ImGuiWindow* payload_window,ImGuiDockNode* payload_node,ImGuiDir split_dir,bool split_outer,ImVec2* out_pos)", - "call_args": "(target,target_node,payload_window,payload_node,split_dir,split_outer,out_pos)", + "call_args": "(target,target_node,payload_window,payload_node,split_dir,split_outer,reinterpret_cast(out_pos))", "cimguiname": "igDockContextCalcDropPosForDocking", "defaults": {}, "funcname": "DockContextCalcDropPosForDocking", @@ -23279,8 +23280,9 @@ "funcname": "GetStyleColorVec4", "location": "imgui:557", "namespace": "ImGui", + "nonUDT": 2, "ov_cimguiname": "igGetStyleColorVec4", - "ret": "const ImVec4*", + "ret": "const ImVec4_c*", "retref": "&", "signature": "(ImGuiCol)", "stname": "" @@ -25380,7 +25382,7 @@ ], "igImFontAtlasGetMouseCursorTexData": [ { - "args": "(ImFontAtlas* atlas,ImGuiMouseCursor cursor_type,ImVec2* out_offset,ImVec2* out_size,ImVec2 out_uv_border[2],ImVec2 out_uv_fill[2])", + "args": "(ImFontAtlas* atlas,ImGuiMouseCursor cursor_type,ImVec2_c* out_offset,ImVec2_c* out_size,ImVec2 out_uv_border[2],ImVec2 out_uv_fill[2])", "argsT": [ { "name": "atlas", @@ -25408,7 +25410,7 @@ } ], "argsoriginal": "(ImFontAtlas* atlas,ImGuiMouseCursor cursor_type,ImVec2* out_offset,ImVec2* out_size,ImVec2 out_uv_border[2],ImVec2 out_uv_fill[2])", - "call_args": "(atlas,cursor_type,out_offset,out_size,out_uv_border,out_uv_fill)", + "call_args": "(atlas,cursor_type,reinterpret_cast(out_offset),reinterpret_cast(out_size),out_uv_border,out_uv_fill)", "cimguiname": "igImFontAtlasGetMouseCursorTexData", "defaults": {}, "funcname": "ImFontAtlasGetMouseCursorTexData", @@ -26104,7 +26106,7 @@ ], "igImFontCalcTextSizeEx": [ { - "args": "(ImFont* font,float size,float max_width,float wrap_width,const char* text_begin,const char* text_end_display,const char* text_end,const char** out_remaining,ImVec2* out_offset,ImDrawTextFlags flags)", + "args": "(ImFont* font,float size,float max_width,float wrap_width,const char* text_begin,const char* text_end_display,const char* text_end,const char** out_remaining,ImVec2_c* out_offset,ImDrawTextFlags flags)", "argsT": [ { "name": "font", @@ -26148,7 +26150,7 @@ } ], "argsoriginal": "(ImFont* font,float size,float max_width,float wrap_width,const char* text_begin,const char* text_end_display,const char* text_end,const char** out_remaining,ImVec2* out_offset,ImDrawTextFlags flags)", - "call_args": "(font,size,max_width,wrap_width,text_begin,text_end_display,text_end,out_remaining,out_offset,flags)", + "call_args": "(font,size,max_width,wrap_width,text_begin,text_end_display,text_end,out_remaining,reinterpret_cast(out_offset),flags)", "cimguiname": "igImFontCalcTextSizeEx", "conv": "ImVec2", "defaults": {}, @@ -30129,7 +30131,7 @@ ], "igIsMousePosValid": [ { - "args": "(const ImVec2* mouse_pos)", + "args": "(const ImVec2_c* mouse_pos)", "argsT": [ { "name": "mouse_pos", @@ -30137,7 +30139,7 @@ } ], "argsoriginal": "(const ImVec2* mouse_pos=((void*)0))", - "call_args": "(mouse_pos)", + "call_args": "(reinterpret_cast(mouse_pos))", "cimguiname": "igIsMousePosValid", "defaults": { "mouse_pos": "NULL" @@ -31048,7 +31050,7 @@ ], "igLogRenderedText": [ { - "args": "(const ImVec2* ref_pos,const char* text,const char* text_end)", + "args": "(const ImVec2_c* ref_pos,const char* text,const char* text_end)", "argsT": [ { "name": "ref_pos", @@ -31064,7 +31066,7 @@ } ], "argsoriginal": "(const ImVec2* ref_pos,const char* text,const char* text_end=((void*)0))", - "call_args": "(ref_pos,text,text_end)", + "call_args": "(reinterpret_cast(ref_pos),text,text_end)", "cimguiname": "igLogRenderedText", "defaults": { "text_end": "NULL" @@ -33843,7 +33845,7 @@ ], "igRenderTextClipped": [ { - "args": "(const ImVec2_c pos_min,const ImVec2_c pos_max,const char* text,const char* text_end,const ImVec2* text_size_if_known,const ImVec2_c align,const ImRect* clip_rect)", + "args": "(const ImVec2_c pos_min,const ImVec2_c pos_max,const char* text,const char* text_end,const ImVec2_c* text_size_if_known,const ImVec2_c align,const ImRect* clip_rect)", "argsT": [ { "name": "pos_min", @@ -33875,7 +33877,7 @@ } ], "argsoriginal": "(const ImVec2& pos_min,const ImVec2& pos_max,const char* text,const char* text_end,const ImVec2* text_size_if_known,const ImVec2& align=ImVec2(0,0),const ImRect* clip_rect=((void*)0))", - "call_args": "(ConvertToCPP_ImVec2(pos_min),ConvertToCPP_ImVec2(pos_max),text,text_end,text_size_if_known,ConvertToCPP_ImVec2(align),clip_rect)", + "call_args": "(ConvertToCPP_ImVec2(pos_min),ConvertToCPP_ImVec2(pos_max),text,text_end,reinterpret_cast(text_size_if_known),ConvertToCPP_ImVec2(align),clip_rect)", "cimguiname": "igRenderTextClipped", "defaults": { "align": "ImVec2(0,0)", @@ -33892,7 +33894,7 @@ ], "igRenderTextClippedEx": [ { - "args": "(ImDrawList* draw_list,const ImVec2_c pos_min,const ImVec2_c pos_max,const char* text,const char* text_end,const ImVec2* text_size_if_known,const ImVec2_c align,const ImRect* clip_rect)", + "args": "(ImDrawList* draw_list,const ImVec2_c pos_min,const ImVec2_c pos_max,const char* text,const char* text_end,const ImVec2_c* text_size_if_known,const ImVec2_c align,const ImRect* clip_rect)", "argsT": [ { "name": "draw_list", @@ -33928,7 +33930,7 @@ } ], "argsoriginal": "(ImDrawList* draw_list,const ImVec2& pos_min,const ImVec2& pos_max,const char* text,const char* text_end,const ImVec2* text_size_if_known,const ImVec2& align=ImVec2(0,0),const ImRect* clip_rect=((void*)0))", - "call_args": "(draw_list,ConvertToCPP_ImVec2(pos_min),ConvertToCPP_ImVec2(pos_max),text,text_end,text_size_if_known,ConvertToCPP_ImVec2(align),clip_rect)", + "call_args": "(draw_list,ConvertToCPP_ImVec2(pos_min),ConvertToCPP_ImVec2(pos_max),text,text_end,reinterpret_cast(text_size_if_known),ConvertToCPP_ImVec2(align),clip_rect)", "cimguiname": "igRenderTextClippedEx", "defaults": { "align": "ImVec2(0,0)", @@ -33945,7 +33947,7 @@ ], "igRenderTextEllipsis": [ { - "args": "(ImDrawList* draw_list,const ImVec2_c pos_min,const ImVec2_c pos_max,float ellipsis_max_x,const char* text,const char* text_end,const ImVec2* text_size_if_known)", + "args": "(ImDrawList* draw_list,const ImVec2_c pos_min,const ImVec2_c pos_max,float ellipsis_max_x,const char* text,const char* text_end,const ImVec2_c* text_size_if_known)", "argsT": [ { "name": "draw_list", @@ -33977,7 +33979,7 @@ } ], "argsoriginal": "(ImDrawList* draw_list,const ImVec2& pos_min,const ImVec2& pos_max,float ellipsis_max_x,const char* text,const char* text_end,const ImVec2* text_size_if_known)", - "call_args": "(draw_list,ConvertToCPP_ImVec2(pos_min),ConvertToCPP_ImVec2(pos_max),ellipsis_max_x,text,text_end,text_size_if_known)", + "call_args": "(draw_list,ConvertToCPP_ImVec2(pos_min),ConvertToCPP_ImVec2(pos_max),ellipsis_max_x,text,text_end,reinterpret_cast(text_size_if_known))", "cimguiname": "igRenderTextEllipsis", "defaults": {}, "funcname": "RenderTextEllipsis", diff --git a/generator/output/definitions.lua b/generator/output/definitions.lua index 1cded04..33f6356 100644 --- a/generator/output/definitions.lua +++ b/generator/output/definitions.lua @@ -1231,7 +1231,7 @@ local t={ ["(const ImVec2,float,ImU32,int)"]=nil}, ImDrawList_AddConcavePolyFilled={ [1]={ - args="(ImDrawList* self,const ImVec2* points,int num_points,ImU32 col)", + args="(ImDrawList* self,const ImVec2_c* points,int num_points,ImU32 col)", argsT={ [1]={ name="self", @@ -1246,7 +1246,7 @@ local t={ name="col", type="ImU32"}}, argsoriginal="(const ImVec2* points,int num_points,ImU32 col)", - call_args="(points,num_points,col)", + call_args="(reinterpret_cast(points),num_points,col)", cimguiname="ImDrawList_AddConcavePolyFilled", defaults={}, funcname="AddConcavePolyFilled", @@ -1258,7 +1258,7 @@ local t={ ["(const ImVec2*,int,ImU32)"]=nil}, ImDrawList_AddConvexPolyFilled={ [1]={ - args="(ImDrawList* self,const ImVec2* points,int num_points,ImU32 col)", + args="(ImDrawList* self,const ImVec2_c* points,int num_points,ImU32 col)", argsT={ [1]={ name="self", @@ -1273,7 +1273,7 @@ local t={ name="col", type="ImU32"}}, argsoriginal="(const ImVec2* points,int num_points,ImU32 col)", - call_args="(points,num_points,col)", + call_args="(reinterpret_cast(points),num_points,col)", cimguiname="ImDrawList_AddConvexPolyFilled", defaults={}, funcname="AddConvexPolyFilled", @@ -1607,7 +1607,7 @@ local t={ ["(const ImVec2,float,ImU32,int)"]=nil}, ImDrawList_AddPolyline={ [1]={ - args="(ImDrawList* self,const ImVec2* points,int num_points,ImU32 col,ImDrawFlags flags,float thickness)", + args="(ImDrawList* self,const ImVec2_c* points,int num_points,ImU32 col,ImDrawFlags flags,float thickness)", argsT={ [1]={ name="self", @@ -1628,7 +1628,7 @@ local t={ name="thickness", type="float"}}, argsoriginal="(const ImVec2* points,int num_points,ImU32 col,ImDrawFlags flags,float thickness)", - call_args="(points,num_points,col,flags,thickness)", + call_args="(reinterpret_cast(points),num_points,col,flags,thickness)", cimguiname="ImDrawList_AddPolyline", defaults={}, funcname="AddPolyline", @@ -9763,8 +9763,9 @@ local t={ defaults={}, funcname="AsVec4", location="imgui_internal:619", + nonUDT=2, ov_cimguiname="ImRect_AsVec4", - ret="const ImVec4*", + ret="const ImVec4_c*", retref="&", signature="()const", stname="ImRect"}, @@ -16153,7 +16154,7 @@ local t={ ["(ImGuiID,ImGuiDir,float,ImGuiID*,ImGuiID*)"]=nil}, igDockContextCalcDropPosForDocking={ [1]={ - args="(ImGuiWindow* target,ImGuiDockNode* target_node,ImGuiWindow* payload_window,ImGuiDockNode* payload_node,ImGuiDir split_dir,bool split_outer,ImVec2* out_pos)", + args="(ImGuiWindow* target,ImGuiDockNode* target_node,ImGuiWindow* payload_window,ImGuiDockNode* payload_node,ImGuiDir split_dir,bool split_outer,ImVec2_c* out_pos)", argsT={ [1]={ name="target", @@ -16177,7 +16178,7 @@ local t={ name="out_pos", type="ImVec2*"}}, argsoriginal="(ImGuiWindow* target,ImGuiDockNode* target_node,ImGuiWindow* payload_window,ImGuiDockNode* payload_node,ImGuiDir split_dir,bool split_outer,ImVec2* out_pos)", - call_args="(target,target_node,payload_window,payload_node,split_dir,split_outer,out_pos)", + call_args="(target,target_node,payload_window,payload_node,split_dir,split_outer,reinterpret_cast(out_pos))", cimguiname="igDockContextCalcDropPosForDocking", defaults={}, funcname="DockContextCalcDropPosForDocking", @@ -19836,8 +19837,9 @@ local t={ funcname="GetStyleColorVec4", location="imgui:557", namespace="ImGui", + nonUDT=2, ov_cimguiname="igGetStyleColorVec4", - ret="const ImVec4*", + ret="const ImVec4_c*", retref="&", signature="(ImGuiCol)", stname=""}, @@ -21624,7 +21626,7 @@ local t={ ["()"]=nil}, igImFontAtlasGetMouseCursorTexData={ [1]={ - args="(ImFontAtlas* atlas,ImGuiMouseCursor cursor_type,ImVec2* out_offset,ImVec2* out_size,ImVec2 out_uv_border[2],ImVec2 out_uv_fill[2])", + args="(ImFontAtlas* atlas,ImGuiMouseCursor cursor_type,ImVec2_c* out_offset,ImVec2_c* out_size,ImVec2 out_uv_border[2],ImVec2 out_uv_fill[2])", argsT={ [1]={ name="atlas", @@ -21645,7 +21647,7 @@ local t={ name="out_uv_fill", type="ImVec2[2]"}}, argsoriginal="(ImFontAtlas* atlas,ImGuiMouseCursor cursor_type,ImVec2* out_offset,ImVec2* out_size,ImVec2 out_uv_border[2],ImVec2 out_uv_fill[2])", - call_args="(atlas,cursor_type,out_offset,out_size,out_uv_border,out_uv_fill)", + call_args="(atlas,cursor_type,reinterpret_cast(out_offset),reinterpret_cast(out_size),out_uv_border,out_uv_fill)", cimguiname="igImFontAtlasGetMouseCursorTexData", defaults={}, funcname="ImFontAtlasGetMouseCursorTexData", @@ -22223,7 +22225,7 @@ local t={ ["(ImFontAtlas*,int,bool)"]=nil}, igImFontCalcTextSizeEx={ [1]={ - args="(ImFont* font,float size,float max_width,float wrap_width,const char* text_begin,const char* text_end_display,const char* text_end,const char** out_remaining,ImVec2* out_offset,ImDrawTextFlags flags)", + args="(ImFont* font,float size,float max_width,float wrap_width,const char* text_begin,const char* text_end_display,const char* text_end,const char** out_remaining,ImVec2_c* out_offset,ImDrawTextFlags flags)", argsT={ [1]={ name="font", @@ -22256,7 +22258,7 @@ local t={ name="flags", type="ImDrawTextFlags"}}, argsoriginal="(ImFont* font,float size,float max_width,float wrap_width,const char* text_begin,const char* text_end_display,const char* text_end,const char** out_remaining,ImVec2* out_offset,ImDrawTextFlags flags)", - call_args="(font,size,max_width,wrap_width,text_begin,text_end_display,text_end,out_remaining,out_offset,flags)", + call_args="(font,size,max_width,wrap_width,text_begin,text_end_display,text_end,out_remaining,reinterpret_cast(out_offset),flags)", cimguiname="igImFontCalcTextSizeEx", conv="ImVec2", defaults={}, @@ -25605,13 +25607,13 @@ local t={ ["(ImGuiKey)"]=nil}, igIsMousePosValid={ [1]={ - args="(const ImVec2* mouse_pos)", + args="(const ImVec2_c* mouse_pos)", argsT={ [1]={ name="mouse_pos", type="const ImVec2*"}}, argsoriginal="(const ImVec2* mouse_pos=((void*)0))", - call_args="(mouse_pos)", + call_args="(reinterpret_cast(mouse_pos))", cimguiname="igIsMousePosValid", defaults={ mouse_pos="NULL"}, @@ -26386,7 +26388,7 @@ local t={ ["()"]=nil}, igLogRenderedText={ [1]={ - args="(const ImVec2* ref_pos,const char* text,const char* text_end)", + args="(const ImVec2_c* ref_pos,const char* text,const char* text_end)", argsT={ [1]={ name="ref_pos", @@ -26398,7 +26400,7 @@ local t={ name="text_end", type="const char*"}}, argsoriginal="(const ImVec2* ref_pos,const char* text,const char* text_end=((void*)0))", - call_args="(ref_pos,text,text_end)", + call_args="(reinterpret_cast(ref_pos),text,text_end)", cimguiname="igLogRenderedText", defaults={ text_end="NULL"}, @@ -28754,7 +28756,7 @@ local t={ ["(ImVec2,const char*,const char*,bool)"]=nil}, igRenderTextClipped={ [1]={ - args="(const ImVec2_c pos_min,const ImVec2_c pos_max,const char* text,const char* text_end,const ImVec2* text_size_if_known,const ImVec2_c align,const ImRect* clip_rect)", + args="(const ImVec2_c pos_min,const ImVec2_c pos_max,const char* text,const char* text_end,const ImVec2_c* text_size_if_known,const ImVec2_c align,const ImRect* clip_rect)", argsT={ [1]={ name="pos_min", @@ -28778,7 +28780,7 @@ local t={ name="clip_rect", type="const ImRect*"}}, argsoriginal="(const ImVec2& pos_min,const ImVec2& pos_max,const char* text,const char* text_end,const ImVec2* text_size_if_known,const ImVec2& align=ImVec2(0,0),const ImRect* clip_rect=((void*)0))", - call_args="(ConvertToCPP_ImVec2(pos_min),ConvertToCPP_ImVec2(pos_max),text,text_end,text_size_if_known,ConvertToCPP_ImVec2(align),clip_rect)", + call_args="(ConvertToCPP_ImVec2(pos_min),ConvertToCPP_ImVec2(pos_max),text,text_end,reinterpret_cast(text_size_if_known),ConvertToCPP_ImVec2(align),clip_rect)", cimguiname="igRenderTextClipped", defaults={ align="ImVec2(0,0)", @@ -28793,7 +28795,7 @@ local t={ ["(const ImVec2,const ImVec2,const char*,const char*,const ImVec2*,const ImVec2,const ImRect*)"]=nil}, igRenderTextClippedEx={ [1]={ - args="(ImDrawList* draw_list,const ImVec2_c pos_min,const ImVec2_c pos_max,const char* text,const char* text_end,const ImVec2* text_size_if_known,const ImVec2_c align,const ImRect* clip_rect)", + args="(ImDrawList* draw_list,const ImVec2_c pos_min,const ImVec2_c pos_max,const char* text,const char* text_end,const ImVec2_c* text_size_if_known,const ImVec2_c align,const ImRect* clip_rect)", argsT={ [1]={ name="draw_list", @@ -28820,7 +28822,7 @@ local t={ name="clip_rect", type="const ImRect*"}}, argsoriginal="(ImDrawList* draw_list,const ImVec2& pos_min,const ImVec2& pos_max,const char* text,const char* text_end,const ImVec2* text_size_if_known,const ImVec2& align=ImVec2(0,0),const ImRect* clip_rect=((void*)0))", - call_args="(draw_list,ConvertToCPP_ImVec2(pos_min),ConvertToCPP_ImVec2(pos_max),text,text_end,text_size_if_known,ConvertToCPP_ImVec2(align),clip_rect)", + call_args="(draw_list,ConvertToCPP_ImVec2(pos_min),ConvertToCPP_ImVec2(pos_max),text,text_end,reinterpret_cast(text_size_if_known),ConvertToCPP_ImVec2(align),clip_rect)", cimguiname="igRenderTextClippedEx", defaults={ align="ImVec2(0,0)", @@ -28835,7 +28837,7 @@ local t={ ["(ImDrawList*,const ImVec2,const ImVec2,const char*,const char*,const ImVec2*,const ImVec2,const ImRect*)"]=nil}, igRenderTextEllipsis={ [1]={ - args="(ImDrawList* draw_list,const ImVec2_c pos_min,const ImVec2_c pos_max,float ellipsis_max_x,const char* text,const char* text_end,const ImVec2* text_size_if_known)", + args="(ImDrawList* draw_list,const ImVec2_c pos_min,const ImVec2_c pos_max,float ellipsis_max_x,const char* text,const char* text_end,const ImVec2_c* text_size_if_known)", argsT={ [1]={ name="draw_list", @@ -28859,7 +28861,7 @@ local t={ name="text_size_if_known", type="const ImVec2*"}}, argsoriginal="(ImDrawList* draw_list,const ImVec2& pos_min,const ImVec2& pos_max,float ellipsis_max_x,const char* text,const char* text_end,const ImVec2* text_size_if_known)", - call_args="(draw_list,ConvertToCPP_ImVec2(pos_min),ConvertToCPP_ImVec2(pos_max),ellipsis_max_x,text,text_end,text_size_if_known)", + call_args="(draw_list,ConvertToCPP_ImVec2(pos_min),ConvertToCPP_ImVec2(pos_max),ellipsis_max_x,text,text_end,reinterpret_cast(text_size_if_known))", cimguiname="igRenderTextEllipsis", defaults={}, funcname="RenderTextEllipsis", diff --git a/test/main.c b/test/main.c index c936833..50b5762 100644 --- a/test/main.c +++ b/test/main.c @@ -34,6 +34,7 @@ int main(void) display_size.x = 1920; display_size.y = 1080; io->DisplaySize = display_size; + printf("DisplaySice %f, %f\n", io->DisplaySize.x, io->DisplaySize.y); io->DeltaTime = 1.0f / 60.0f; igNewFrame();