Skip to content

Commit f7ff5e8

Browse files
committed
initial bindings code
1 parent 589d2bd commit f7ff5e8

24 files changed

+90743
-0
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
build/
2+
.venv/

CMakeLists.txt

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
set(Python_EXECUTABLE ".venv/Scripts/python.exe")
2+
cmake_minimum_required(VERSION 3.15...3.27)
3+
project(slimgui LANGUAGES CXX)
4+
5+
# Try to import all Python components potentially needed by nanobind
6+
find_package(Python 3.8
7+
REQUIRED COMPONENTS Interpreter Development.Module
8+
OPTIONAL_COMPONENTS Development.SABIModule)
9+
10+
# Import nanobind through CMake's find_package mechanism
11+
find_package(nanobind CONFIG REQUIRED)
12+
13+
nanobind_add_module(slimgui_ext
14+
NB_STATIC
15+
STABLE_ABI
16+
17+
src/slimgui_ext.cpp
18+
src/c/imgui/imgui.cpp
19+
src/c/imgui/imgui_demo.cpp
20+
src/c/imgui/imgui_draw.cpp
21+
src/c/imgui/imgui_tables.cpp
22+
src/c/imgui/imgui_widgets.cpp
23+
)
24+
25+
nanobind_add_stub(
26+
slimgui_ext_stub
27+
MODULE slimgui_ext
28+
OUTPUT "${CMAKE_SOURCE_DIR}/src/slimgui/slimgui_ext.pyi"
29+
PYTHON_PATH $<TARGET_FILE_DIR:slimgui_ext>
30+
DEPENDS slimgui_ext
31+
INCLUDE_PRIVATE
32+
)
33+
34+
include_directories(${CMAKE_SOURCE_DIR}/src/c/imgui)
35+
36+
install(TARGETS slimgui_ext LIBRARY DESTINATION slimgui)
37+
install(FILES "${CMAKE_SOURCE_DIR}/src/slimgui/slimgui_ext.pyi" DESTINATION slimgui)

gen/cimgui/cimgui_impl.h

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#ifdef CIMGUI_USE_GLFW
2+
3+
typedef struct GLFWwindow GLFWwindow;
4+
typedef struct GLFWmonitor GLFWmonitor;
5+
struct GLFWwindow;
6+
struct GLFWmonitor;CIMGUI_API bool ImGui_ImplGlfw_InitForOpenGL(GLFWwindow* window,bool install_callbacks);
7+
CIMGUI_API bool ImGui_ImplGlfw_InitForVulkan(GLFWwindow* window,bool install_callbacks);
8+
CIMGUI_API bool ImGui_ImplGlfw_InitForOther(GLFWwindow* window,bool install_callbacks);
9+
CIMGUI_API void ImGui_ImplGlfw_Shutdown(void);
10+
CIMGUI_API void ImGui_ImplGlfw_NewFrame(void);
11+
CIMGUI_API void ImGui_ImplGlfw_InstallCallbacks(GLFWwindow* window);
12+
CIMGUI_API void ImGui_ImplGlfw_RestoreCallbacks(GLFWwindow* window);
13+
CIMGUI_API void ImGui_ImplGlfw_SetCallbacksChainForAllWindows(bool chain_for_all_windows);
14+
CIMGUI_API void ImGui_ImplGlfw_WindowFocusCallback(GLFWwindow* window,int focused);
15+
CIMGUI_API void ImGui_ImplGlfw_CursorEnterCallback(GLFWwindow* window,int entered);
16+
CIMGUI_API void ImGui_ImplGlfw_CursorPosCallback(GLFWwindow* window,double x,double y);
17+
CIMGUI_API void ImGui_ImplGlfw_MouseButtonCallback(GLFWwindow* window,int button,int action,int mods);
18+
CIMGUI_API void ImGui_ImplGlfw_ScrollCallback(GLFWwindow* window,double xoffset,double yoffset);
19+
CIMGUI_API void ImGui_ImplGlfw_KeyCallback(GLFWwindow* window,int key,int scancode,int action,int mods);
20+
CIMGUI_API void ImGui_ImplGlfw_CharCallback(GLFWwindow* window,unsigned int c);
21+
CIMGUI_API void ImGui_ImplGlfw_MonitorCallback(GLFWmonitor* monitor,int event);
22+
23+
#endif
24+
#ifdef CIMGUI_USE_OPENGL3
25+
CIMGUI_API bool ImGui_ImplOpenGL3_Init(const char* glsl_version);
26+
CIMGUI_API void ImGui_ImplOpenGL3_Shutdown(void);
27+
CIMGUI_API void ImGui_ImplOpenGL3_NewFrame(void);
28+
CIMGUI_API void ImGui_ImplOpenGL3_RenderDrawData(ImDrawData* draw_data);
29+
CIMGUI_API bool ImGui_ImplOpenGL3_CreateFontsTexture(void);
30+
CIMGUI_API void ImGui_ImplOpenGL3_DestroyFontsTexture(void);
31+
CIMGUI_API bool ImGui_ImplOpenGL3_CreateDeviceObjects(void);
32+
CIMGUI_API void ImGui_ImplOpenGL3_DestroyDeviceObjects(void);
33+
34+
#endif
35+
#ifdef CIMGUI_USE_OPENGL2
36+
CIMGUI_API bool ImGui_ImplOpenGL2_Init(void);
37+
CIMGUI_API void ImGui_ImplOpenGL2_Shutdown(void);
38+
CIMGUI_API void ImGui_ImplOpenGL2_NewFrame(void);
39+
CIMGUI_API void ImGui_ImplOpenGL2_RenderDrawData(ImDrawData* draw_data);
40+
CIMGUI_API bool ImGui_ImplOpenGL2_CreateFontsTexture(void);
41+
CIMGUI_API void ImGui_ImplOpenGL2_DestroyFontsTexture(void);
42+
CIMGUI_API bool ImGui_ImplOpenGL2_CreateDeviceObjects(void);
43+
CIMGUI_API void ImGui_ImplOpenGL2_DestroyDeviceObjects(void);
44+
45+
#endif
46+
#ifdef CIMGUI_USE_SDL2
47+
48+
typedef struct SDL_Window SDL_Window;
49+
typedef struct SDL_Renderer SDL_Renderer;
50+
typedef struct _SDL_GameController _SDL_GameController;
51+
struct SDL_Window;
52+
struct SDL_Renderer;
53+
struct _SDL_GameController;
54+
typedef union SDL_Event SDL_Event;
55+
typedef enum { ImGui_ImplSDL2_GamepadMode_AutoFirst, ImGui_ImplSDL2_GamepadMode_AutoAll, ImGui_ImplSDL2_GamepadMode_Manual }ImGui_ImplSDL2_GamepadMode;CIMGUI_API bool ImGui_ImplSDL2_InitForOpenGL(SDL_Window* window,void* sdl_gl_context);
56+
CIMGUI_API bool ImGui_ImplSDL2_InitForVulkan(SDL_Window* window);
57+
CIMGUI_API bool ImGui_ImplSDL2_InitForD3D(SDL_Window* window);
58+
CIMGUI_API bool ImGui_ImplSDL2_InitForMetal(SDL_Window* window);
59+
CIMGUI_API bool ImGui_ImplSDL2_InitForSDLRenderer(SDL_Window* window,SDL_Renderer* renderer);
60+
CIMGUI_API bool ImGui_ImplSDL2_InitForOther(SDL_Window* window);
61+
CIMGUI_API void ImGui_ImplSDL2_Shutdown(void);
62+
CIMGUI_API void ImGui_ImplSDL2_NewFrame(void);
63+
CIMGUI_API bool ImGui_ImplSDL2_ProcessEvent(const SDL_Event* event);
64+
CIMGUI_API void ImGui_ImplSDL2_SetGamepadMode(ImGui_ImplSDL2_GamepadMode mode,struct _SDL_GameController** manual_gamepads_array,int manual_gamepads_count);
65+
66+
#endif

0 commit comments

Comments
 (0)