- split up files for clarity

- new c-api method prefix "ig_" (for ImGui)
- a lot more methods wrapped
This commit is contained in:
Stephan Dilly
2015-04-08 14:18:19 +02:00
parent 51ba866303
commit 90e207b199
7 changed files with 286 additions and 64 deletions

View File

@@ -3,6 +3,8 @@
# Compatible with Ubuntu 14.04.1 and Mac OS X
OBJS = cimgui.o
OBJS += fontAtlas.o
OBJS += drawList.o
OBJS += ../imgui/imgui.o
UNAME_S := $(shell uname -s)

View File

@@ -3,49 +3,201 @@
#include <stdio.h>
#include "../imgui/imgui.h"
#include "cimgui.h"
#if defined _WIN32 || defined __CYGWIN__
#define API __declspec(dllexport)
#else
#define API
#endif
extern "C" API ImGuiIO* ImGui_GetIO()
CIMGUI_API ImGuiIO* ig_GetIO()
{
return &ImGui::GetIO();
}
extern "C" API void ImGui_Shutdown()
CIMGUI_API ImGuiStyle* ig_GetStyle()
{
ImGui::Shutdown();
return &ImGui::GetStyle();
}
extern "C" API void ImGui_NewFrame()
CIMGUI_API void ig_NewFrame()
{
ImGui::NewFrame();
}
extern "C" API void ImGui_Render()
CIMGUI_API void ig_Render()
{
ImGui::Render();
}
extern "C" API void ImGui_ShowTestWindow(bool* opened)
CIMGUI_API void ig_Shutdown()
{
ImGui::Shutdown();
}
CIMGUI_API void ig_ShowUserGuide()
{
ImGui::ShowUserGuide();
}
CIMGUI_API void ig_ShowStyleEditor(ImGuiStyle* ref)
{
ImGui::ShowStyleEditor(ref);
}
CIMGUI_API void ig_ShowTestWindow(bool* opened)
{
ImGui::ShowTestWindow(opened);
}
extern "C" API bool ImGui_Begin(const char* name, bool* p_opened, ImGuiWindowFlags flags)
IMGUI_API void ig_ShowMetricsWindow(bool* opened)
{
ImGui::ShowMetricsWindow(opened);
}
// Window
CIMGUI_API bool ig_Begin(const char* name, bool* p_opened, ImGuiWindowFlags flags)
{
return ImGui::Begin(name, p_opened, flags);
}
extern "C" API void ImGui_End()
CIMGUI_API bool ig_Begin2(const char* name, bool* p_opened, const ImVec2& size_on_first_use, float bg_alpha, ImGuiWindowFlags flags)
{
return ImGui::Begin(name, p_opened, size_on_first_use, bg_alpha, flags);
}
CIMGUI_API void ig_End()
{
ImGui::End();
}
extern "C" API void ImGui_Text(const char* text, ...)
CIMGUI_API bool ig_BeginChild(const char* str_id, const ImVec2& size, bool border, ImGuiWindowFlags extra_flags)
{
return ImGui::BeginChild(str_id, size, border, extra_flags);
}
CIMGUI_API bool ig_BeginChild2(ImGuiID id, const ImVec2& size, bool border, ImGuiWindowFlags extra_flags)
{
return ImGui::BeginChild(id, size, border, extra_flags);
}
CIMGUI_API void ig_EndChild()
{
ImGui::EndChild();
}
CIMGUI_API void ig_GetContentRegionMax(ImVec2& out)
{
out = ImGui::GetContentRegionMax();
}
CIMGUI_API void ig_GetWindowContentRegionMin(ImVec2& out)
{
out = ImGui::GetWindowContentRegionMin();
}
CIMGUI_API void ig_GetWindowContentRegionMax(ImVec2& out)
{
out = ImGui::GetWindowContentRegionMax();
}
CIMGUI_API ImDrawList* ig_GetWindowDrawList()
{
return ImGui::GetWindowDrawList();
}
CIMGUI_API ImFont* ig_GetWindowFont()
{
return ImGui::GetWindowFont();
}
CIMGUI_API float ig_GetWindowFontSize()
{
return ImGui::GetWindowFontSize();
}
CIMGUI_API void ig_SetWindowFontScale(float scale)
{
ImGui::SetWindowFontScale(scale);
}
CIMGUI_API void ig_GetWindowPos(ImVec2& out)
{
out = ImGui::GetWindowPos();
}
CIMGUI_API void ig_GetWindowSize(ImVec2& out)
{
out = ImGui::GetWindowSize();
}
CIMGUI_API float ig_GetWindowWidth()
{
return ImGui::GetWindowWidth();
}
CIMGUI_API bool ig_GetWindowCollapsed()
{
return ImGui::GetWindowCollapsed();
}
CIMGUI_API void ig_SetNextWindowPos(const ImVec2& pos, ImGuiSetCond cond)
{
ImGui::SetNextWindowPos(pos, cond);
}
CIMGUI_API void ig_SetNextWindowSize(const ImVec2& size, ImGuiSetCond cond)
{
ImGui::SetNextWindowSize(size, cond);
}
CIMGUI_API void ig_SetNextWindowCollapsed(bool collapsed, ImGuiSetCond cond)
{
ImGui::SetNextWindowCollapsed(collapsed,cond);
}
CIMGUI_API void ig_SetNextWindowFocus()
{
ImGui::SetNextWindowFocus();
}
CIMGUI_API void ig_SetWindowPos(const ImVec2& pos, ImGuiSetCond cond)
{
ImGui::SetWindowPos(pos,cond);
}
CIMGUI_API void ig_SetWindowSize(const ImVec2& size, ImGuiSetCond cond)
{
ImGui::SetWindowSize(size, cond);
}
CIMGUI_API void ig_SetWindowCollapsed(bool collapsed, ImGuiSetCond cond)
{
ImGui::SetWindowCollapsed(collapsed,cond);
}
CIMGUI_API void ig_SetWindowFocus()
{
ImGui::SetWindowFocus();
}
CIMGUI_API void ig_SetWindowPos2(const char* name, const ImVec2& pos, ImGuiSetCond cond)
{
ImGui::SetWindowPos(name,pos,cond);
}
CIMGUI_API void ig_SetWindowSize2(const char* name, const ImVec2& size, ImGuiSetCond cond)
{
ImGui::SetWindowSize(name, size, cond);
}
CIMGUI_API void ig_SetWindowCollapsed2(const char* name, bool collapsed, ImGuiSetCond cond)
{
ImGui::SetWindowCollapsed(name, collapsed, cond);
}
CIMGUI_API void ig_SetWindowFocus2(const char* name)
{
ImGui::SetWindowFocus(name);
}
CIMGUI_API void ig_Text(const char* text, ...)
{
char buffer[256];
va_list args;
@@ -56,42 +208,32 @@ extern "C" API void ImGui_Text(const char* text, ...)
ImGui::Text(buffer);
}
extern "C" API bool ImGui_ColorEdit3(const char* label, float col[3])
CIMGUI_API bool ig_ColorEdit3(const char* label, float col[3])
{
return ImGui::ColorEdit3(label,col);
}
extern "C" API void ImGui_SetNextWindowPos(const ImVec2 pos, ImGuiSetCond cond)
{
ImGui::SetNextWindowPos(pos,cond);
}
extern "C" API void ImGui_SetNextWindowSize(const ImVec2 size, ImGuiSetCond cond)
{
ImGui::SetNextWindowSize(size, cond);
}
extern "C" API void ImGui_SliderFloat(const char* label, float* v, float v_min, float v_max, const char* display_format, float power)
CIMGUI_API void ig_SliderFloat(const char* label, float* v, float v_min, float v_max, const char* display_format, float power)
{
ImGui::SliderFloat(label,v,v_min,v_max,display_format,power);
}
extern "C" API bool ImGui_Button(const char* label, const ImVec2& size, bool repeat_when_held)
CIMGUI_API bool ig_Button(const char* label, const ImVec2& size, bool repeat_when_held)
{
return ImGui::Button(label,size,repeat_when_held);
}
extern "C" API bool ImGui_SmallButton(const char* label)
CIMGUI_API bool ig_SmallButton(const char* label)
{
return ImGui::SmallButton(label);
}
extern "C" API bool ImGui_TreeNode(const char* str_label_id)
CIMGUI_API bool ig_TreeNode(const char* str_label_id)
{
return ImGui::TreeNode(str_label_id);
}
extern "C" API bool ImGui_TreeNode_IdFmt(const void* ptr_id, const char* fmt, ...)
CIMGUI_API bool ig_TreeNode_IdFmt(const void* ptr_id, const char* fmt, ...)
{
char buffer[256];
va_list args;
@@ -103,47 +245,17 @@ extern "C" API bool ImGui_TreeNode_IdFmt(const void* ptr_id, const char* fmt, ..
return ImGui::TreeNode(ptr_id,"%s",buffer);
}
extern "C" API void ImGui_TreePop()
CIMGUI_API void ig_TreePop()
{
ImGui::TreePop();
}
extern "C" API void ImGui_SameLine(int column_x, int spacing_w)
CIMGUI_API void ig_SameLine(int column_x, int spacing_w)
{
ImGui::SameLine(column_x,spacing_w);
}
extern "C" API void ImFontAtlas_GetTexDataAsRGBA32(ImFontAtlas* atlas, unsigned char** out_pixels, int* out_width, int* out_height, int* out_bytes_per_pixel)
{
atlas->GetTexDataAsRGBA32(out_pixels,out_width,out_height,out_bytes_per_pixel);
}
extern "C" API void ImFontAtlas_SetTexID(ImFontAtlas* atlas, void* tex)
{
atlas->TexID = tex;
}
extern "C" API int ImDrawList_GetVertexBufferSize(ImDrawList* list)
{
return list->vtx_buffer.size();
}
extern "C" API ImDrawVert* ImDrawList_GetVertexPtr(ImDrawList* list, int n)
{
return &list->vtx_buffer[n];
}
extern "C" API int ImDrawList_GetCmdSize(ImDrawList* list)
{
return list->commands.size();
}
extern "C" API ImDrawCmd* ImDrawList_GetCmdPtr(ImDrawList* list, int n)
{
return &list->commands[n];
}
extern "C" API void ImGuiIO_AddInputCharacter(unsigned short c)
CIMGUI_API void ImGuiIO_AddInputCharacter(unsigned short c)
{
ImGui::GetIO().AddInputCharacter(c);
}

51
cimgui/cimgui.h Normal file
View File

@@ -0,0 +1,51 @@
#if defined _WIN32 || defined __CYGWIN__
#define API __declspec(dllexport)
#else
#define API
#endif
#define EXTERN extern "C"
#define CIMGUI_API EXTERN API
CIMGUI_API ImGuiIO* ig_GetIO();
CIMGUI_API ImGuiStyle* ig_GetStyle();
CIMGUI_API void ig_NewFrame();
CIMGUI_API void ig_Render();
CIMGUI_API void ig_Shutdown();
CIMGUI_API void ig_ShowUserGuide();
CIMGUI_API void ig_ShowStyleEditor(ImGuiStyle* ref);
CIMGUI_API void ig_ShowTestWindow(bool* opened = NULL);
CIMGUI_API void ig_ShowMetricsWindow(bool* opened = NULL);
// Window
CIMGUI_API bool ig_Begin(const char* name = "Debug", bool* p_opened = NULL, ImGuiWindowFlags flags = 0);
CIMGUI_API bool ig_Begin2(const char* name, bool* p_opened, const ImVec2& size_on_first_use, float bg_alpha = -1.0f, ImGuiWindowFlags flags = 0);
CIMGUI_API void ig_End();
CIMGUI_API bool ig_BeginChild(const char* str_id, const ImVec2& size = ImVec2(0, 0), bool border = false, ImGuiWindowFlags extra_flags = 0);
CIMGUI_API bool ig_BeginChild2(ImGuiID id, const ImVec2& size = ImVec2(0, 0), bool border = false, ImGuiWindowFlags extra_flags = 0);
CIMGUI_API void ig_EndChild();
CIMGUI_API void ig_GetContentRegionMax(ImVec2& out);
CIMGUI_API void ig_GetWindowContentRegionMin(ImVec2& out);
CIMGUI_API void ig_GetWindowContentRegionMax(ImVec2& out);
CIMGUI_API ImDrawList* ig_GetWindowDrawList();
CIMGUI_API ImFont* ig_GetWindowFont();
CIMGUI_API float ig_GetWindowFontSize();
CIMGUI_API void ig_SetWindowFontScale(float scale);
CIMGUI_API void ig_GetWindowPos(ImVec2& out);
CIMGUI_API void ig_GetWindowSize(ImVec2& out);
CIMGUI_API float ig_GetWindowWidth();
CIMGUI_API bool ig_GetWindowCollapsed();
CIMGUI_API void ig_SetNextWindowPos(const ImVec2& pos, ImGuiSetCond cond = 0);
CIMGUI_API void ig_SetNextWindowSize(const ImVec2& size, ImGuiSetCond cond = 0);
CIMGUI_API void ig_SetNextWindowCollapsed(bool collapsed, ImGuiSetCond cond = 0);
CIMGUI_API void ig_SetNextWindowFocus();
CIMGUI_API void ig_SetWindowPos(const ImVec2& pos, ImGuiSetCond cond = 0);
CIMGUI_API void ig_SetWindowSize(const ImVec2& size, ImGuiSetCond cond = 0);
CIMGUI_API void ig_SetWindowCollapsed(bool collapsed, ImGuiSetCond cond = 0);
CIMGUI_API void ig_SetWindowFocus();
CIMGUI_API void ig_SetWindowPos2(const char* name, const ImVec2& pos, ImGuiSetCond cond = 0);
CIMGUI_API void ig_SetWindowSize2(const char* name, const ImVec2& size, ImGuiSetCond cond = 0);
CIMGUI_API void ig_SetWindowCollapsed2(const char* name, bool collapsed, ImGuiSetCond cond = 0);
CIMGUI_API void ig_SetWindowFocus2(const char* name);

View File

@@ -78,6 +78,11 @@
<ItemGroup>
<ClCompile Include="..\imgui\imgui.cpp" />
<ClCompile Include="cimgui.cpp" />
<ClCompile Include="drawList.cpp" />
<ClCompile Include="fontAtlas.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="cimgui.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">

View File

@@ -21,5 +21,16 @@
<ClCompile Include="..\imgui\imgui.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="fontAtlas.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="drawList.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="cimgui.h">
<Filter>Source Files</Filter>
</ClInclude>
</ItemGroup>
</Project>

23
cimgui/drawList.cpp Normal file
View File

@@ -0,0 +1,23 @@
#include "../imgui/imgui.h"
#include "cimgui.h"
EXTERN API int ImDrawList_GetVertexBufferSize(ImDrawList* list)
{
return list->vtx_buffer.size();
}
EXTERN API ImDrawVert* ImDrawList_GetVertexPtr(ImDrawList* list, int n)
{
return &list->vtx_buffer[n];
}
EXTERN API int ImDrawList_GetCmdSize(ImDrawList* list)
{
return list->commands.size();
}
EXTERN API ImDrawCmd* ImDrawList_GetCmdPtr(ImDrawList* list, int n)
{
return &list->commands[n];
}

18
cimgui/fontAtlas.cpp Normal file
View File

@@ -0,0 +1,18 @@
#include "../imgui/imgui.h"
#include "cimgui.h"
EXTERN API void ImFontAtlas_GetTexDataAsRGBA32(ImFontAtlas* atlas, unsigned char** out_pixels, int* out_width, int* out_height, int* out_bytes_per_pixel)
{
atlas->GetTexDataAsRGBA32(out_pixels, out_width, out_height, out_bytes_per_pixel);
}
EXTERN API void ImFontAtlas_GetTexDataAsAlpha8(ImFontAtlas* atlas, unsigned char** out_pixels, int* out_width, int* out_height, int* out_bytes_per_pixel)
{
atlas->GetTexDataAsAlpha8(out_pixels, out_width, out_height, out_bytes_per_pixel);
}
EXTERN API void ImFontAtlas_SetTexID(ImFontAtlas* atlas, void* tex)
{
atlas->TexID = tex;
}