mirror of
https://github.com/cimgui/cimgui.git
synced 2025-08-11 04:18:29 +01:00
add sdl implementation
This commit is contained in:
@@ -32,11 +32,11 @@ typedef unsigned __int64 ImU64;
|
|||||||
typedef unsigned long long ImU64;
|
typedef unsigned long long ImU64;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct GLFWwindow;
|
//struct GLFWwindow;
|
||||||
|
//struct SDL_Window;
|
||||||
|
|
||||||
#ifdef CIMGUI_DEFINE_ENUMS_AND_STRUCTS
|
#ifdef CIMGUI_DEFINE_ENUMS_AND_STRUCTS
|
||||||
/////////////// BEGIN AUTOGENERATED SEGMENT
|
/////////////// BEGIN AUTOGENERATED SEGMENT
|
||||||
typedef struct GLFWwindow GLFWwindow;
|
|
||||||
typedef struct ImFont ImFont;
|
typedef struct ImFont ImFont;
|
||||||
typedef struct ImFontAtlas ImFontAtlas;
|
typedef struct ImFontAtlas ImFontAtlas;
|
||||||
typedef struct CustomRect CustomRect;
|
typedef struct CustomRect CustomRect;
|
||||||
@@ -1012,45 +1012,6 @@ struct ImFont
|
|||||||
// [Internal]
|
// [Internal]
|
||||||
};
|
};
|
||||||
// Include imgui_user.h at the end of imgui.h (convenient for user to only explicitly include vanilla imgui.h)
|
// Include imgui_user.h at the end of imgui.h (convenient for user to only explicitly include vanilla imgui.h)
|
||||||
// ImGui Platform Binding for: GLFW
|
|
||||||
// This needs to be used along with a Renderer (e.g. OpenGL3, Vulkan..)
|
|
||||||
// (Info: GLFW is a cross-platform general purpose library for handling windows, inputs, OpenGL/Vulkan graphics context creation, etc.)
|
|
||||||
// Implemented features:
|
|
||||||
// [X] Platform: Clipboard support.
|
|
||||||
// [X] Platform: Gamepad navigation mapping. Enable with 'io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad'.
|
|
||||||
// [x] Platform: Mouse cursor shape and visibility. Disable with 'io.ConfigFlags |= ImGuiConfigFlags_NoMouseCursorChange'. FIXME: 3 cursors types are missing from GLFW.
|
|
||||||
// You can copy and use unmodified imgui_impl_* files in your project. See main.cpp for an example of using this.
|
|
||||||
// If you use this binding you'll need to call 4 functions: ImGui_ImplXXXX_Init(), ImGui_ImplXXXX_NewFrame(), ImGui::Render() and ImGui_ImplXXXX_Shutdown().
|
|
||||||
// If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp.
|
|
||||||
// https://github.com/ocornut/imgui
|
|
||||||
// About GLSL version:
|
|
||||||
// The 'glsl_version' initialization parameter defaults to "#version 150" if NULL.
|
|
||||||
// Only override if your GL version doesn't handle this GLSL version. Keep NULL if unsure!
|
|
||||||
struct GLFWwindow;
|
|
||||||
// GLFW callbacks (installed by default if you enable 'install_callbacks' during initialization)
|
|
||||||
// Provided here if you want to chain callbacks.
|
|
||||||
// You can also handle inputs yourself and use those as a reference.
|
|
||||||
// ImGui Renderer for: OpenGL3 (modern OpenGL with shaders / programmatic pipeline)
|
|
||||||
// This needs to be used along with a Platform Binding (e.g. GLFW, SDL, Win32, custom..)
|
|
||||||
// (Note: We are using GL3W as a helper library to access OpenGL functions since there is no standard header to access modern OpenGL functions easily. Alternatives are GLEW, Glad, etc..)
|
|
||||||
// Implemented features:
|
|
||||||
// [X] Renderer: User texture binding. Use 'GLuint' OpenGL texture identifier as void*/ImTextureID. Read the FAQ about ImTextureID in imgui.cpp.
|
|
||||||
// About GLSL version:
|
|
||||||
// The 'glsl_version' initialization parameter defaults to "#version 150" if NULL.
|
|
||||||
// Only override if your GL version doesn't handle this GLSL version. Keep NULL if unsure!
|
|
||||||
// Called by Init/NewFrame/Shutdown
|
|
||||||
// ImGui Renderer for: OpenGL2 (legacy OpenGL, fixed pipeline)
|
|
||||||
// This needs to be used along with a Platform Binding (e.g. GLFW, SDL, Win32, custom..)
|
|
||||||
// Implemented features:
|
|
||||||
// [X] Renderer: User texture binding. Use 'GLuint' OpenGL texture identifier as void*/ImTextureID. Read the FAQ about ImTextureID in imgui.cpp.
|
|
||||||
// **DO NOT USE THIS CODE IF YOUR CODE/ENGINE IS USING MODERN OPENGL (SHADERS, VBO, VAO, etc.)**
|
|
||||||
// **Prefer using the code in imgui_impl_opengl3.cpp**
|
|
||||||
// This code is mostly provided as a reference to learn how ImGui integration works, because it is shorter to read.
|
|
||||||
// If your code is using GL3+ context or any semi modern OpenGL calls, using this is likely to make everything more
|
|
||||||
// complicated, will require your code to reset every single OpenGL attributes to their initial state, and might
|
|
||||||
// confuse your GPU driver.
|
|
||||||
// The GL2 code is unable to reset attributes or even call e.g. "glUseProgram(0)" because they don't exist in that API.
|
|
||||||
// Called by Init/NewFrame/Shutdown
|
|
||||||
struct GlyphRangesBuilder
|
struct GlyphRangesBuilder
|
||||||
{
|
{
|
||||||
ImVector/*<unsigned char>*/ UsedChars;
|
ImVector/*<unsigned char>*/ UsedChars;
|
||||||
@@ -1076,6 +1037,10 @@ struct GLFWwindow;
|
|||||||
};
|
};
|
||||||
//////////////// END AUTOGENERATED SEGMENT
|
//////////////// END AUTOGENERATED SEGMENT
|
||||||
|
|
||||||
|
#else
|
||||||
|
struct GLFWwindow;
|
||||||
|
struct SDL_Window;
|
||||||
|
typedef union SDL_Event SDL_Event;
|
||||||
#endif // CIMGUI_DEFINE_ENUMS_AND_STRUCTS
|
#endif // CIMGUI_DEFINE_ENUMS_AND_STRUCTS
|
||||||
|
|
||||||
#ifndef CIMGUI_DEFINE_ENUMS_AND_STRUCTS
|
#ifndef CIMGUI_DEFINE_ENUMS_AND_STRUCTS
|
||||||
@@ -1722,30 +1687,6 @@ CIMGUI_API void ImFont_RenderText(ImFont* self,ImDrawList* draw_list,float size
|
|||||||
CIMGUI_API void ImFont_GrowIndex(ImFont* self,int new_size);
|
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_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_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 bool ImGui_ImplGlfw_InitForOpenGL(GLFWwindow* window,bool install_callbacks);
|
|
||||||
CIMGUI_API bool ImGui_ImplGlfw_InitForVulkan(GLFWwindow* window,bool install_callbacks);
|
|
||||||
CIMGUI_API void ImGui_ImplGlfw_Shutdown();
|
|
||||||
CIMGUI_API void ImGui_ImplGlfw_NewFrame();
|
|
||||||
CIMGUI_API void ImGui_ImplGlfw_MouseButtonCallback(GLFWwindow* window,int button,int action,int mods);
|
|
||||||
CIMGUI_API void ImGui_ImplGlfw_ScrollCallback(GLFWwindow* window,double xoffset,double yoffset);
|
|
||||||
CIMGUI_API void ImGui_ImplGlfw_KeyCallback(GLFWwindow* window,int key,int scancode,int action,int mods);
|
|
||||||
CIMGUI_API void ImGui_ImplGlfw_CharCallback(GLFWwindow* window,unsigned int c);
|
|
||||||
CIMGUI_API bool ImGui_ImplOpenGL3_Init(const char* glsl_version);
|
|
||||||
CIMGUI_API void ImGui_ImplOpenGL3_Shutdown();
|
|
||||||
CIMGUI_API void ImGui_ImplOpenGL3_NewFrame();
|
|
||||||
CIMGUI_API void ImGui_ImplOpenGL3_RenderDrawData(ImDrawData* draw_data);
|
|
||||||
CIMGUI_API bool ImGui_ImplOpenGL3_CreateFontsTexture();
|
|
||||||
CIMGUI_API void ImGui_ImplOpenGL3_DestroyFontsTexture();
|
|
||||||
CIMGUI_API bool ImGui_ImplOpenGL3_CreateDeviceObjects();
|
|
||||||
CIMGUI_API void ImGui_ImplOpenGL3_DestroyDeviceObjects();
|
|
||||||
CIMGUI_API bool ImGui_ImplOpenGL2_Init();
|
|
||||||
CIMGUI_API void ImGui_ImplOpenGL2_Shutdown();
|
|
||||||
CIMGUI_API void ImGui_ImplOpenGL2_NewFrame();
|
|
||||||
CIMGUI_API void ImGui_ImplOpenGL2_RenderDrawData(ImDrawData* draw_data);
|
|
||||||
CIMGUI_API bool ImGui_ImplOpenGL2_CreateFontsTexture();
|
|
||||||
CIMGUI_API void ImGui_ImplOpenGL2_DestroyFontsTexture();
|
|
||||||
CIMGUI_API bool ImGui_ImplOpenGL2_CreateDeviceObjects();
|
|
||||||
CIMGUI_API void ImGui_ImplOpenGL2_DestroyDeviceObjects();
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////hand written functions
|
/////////////////////////hand written functions
|
||||||
|
@@ -32,10 +32,15 @@ typedef unsigned __int64 ImU64;
|
|||||||
typedef unsigned long long ImU64;
|
typedef unsigned long long ImU64;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct GLFWwindow;
|
//struct GLFWwindow;
|
||||||
|
//struct SDL_Window;
|
||||||
|
|
||||||
#ifdef CIMGUI_DEFINE_ENUMS_AND_STRUCTS
|
#ifdef CIMGUI_DEFINE_ENUMS_AND_STRUCTS
|
||||||
#include "imgui_structs.h"
|
#include "imgui_structs.h"
|
||||||
|
#else
|
||||||
|
struct GLFWwindow;
|
||||||
|
struct SDL_Window;
|
||||||
|
typedef union SDL_Event SDL_Event;
|
||||||
#endif // CIMGUI_DEFINE_ENUMS_AND_STRUCTS
|
#endif // CIMGUI_DEFINE_ENUMS_AND_STRUCTS
|
||||||
|
|
||||||
#include "auto_funcs.h"
|
#include "auto_funcs.h"
|
||||||
|
@@ -1,21 +1,16 @@
|
|||||||
:: this is used to rebuild cimgui.h and cimgui.cpp and must be executed in this directory
|
:: this is used to rebuild cimgui.h and cimgui.cpp and must be executed in this directory
|
||||||
:: also provides definitions.lua for function definitions
|
:: definitions.lua for function definitions
|
||||||
:: and structs_and_enums.lua with struct and enum information-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 lua 5.1 or luajit with:
|
:: set your PATH if necessary for gcc and lua 5.1 or luajit with:
|
||||||
set PATH=%PATH%;C:\mingw32\bin;C:\luaGL;
|
set PATH=%PATH%;C:\mingw32\bin;C:\luaGL;
|
||||||
|
|
||||||
:: gcc -E preprocesor striped comments
|
::process files
|
||||||
:: gcc -E -C //comments but not /* and multiple spaces to one
|
:: arg[1] true=use gcc false=dont use gcc
|
||||||
:: gcc -E -CC // and /* comments
|
:: arg[2..] name of implementation to generate
|
||||||
:: gcc -E -C -traditional-cpp // coments and respects multiple spaces
|
luajit.exe ./generator.lua true glfw opengl3 opengl2 sdl
|
||||||
:: gcc -E -P no #pragma location information
|
|
||||||
|
|
||||||
::generate preprocessed file
|
|
||||||
gcc -E -C -DIMGUI_DISABLE_OBSOLETE_FUNCTIONS -DIMGUI_API="" -DIMGUI_IMPL_API="" ../../imgui/imgui.h ../../imgui/examples/imgui_impl_glfw.h ../../imgui/examples/imgui_impl_opengl3.h ../../imgui/examples/imgui_impl_opengl2.h > 1.txt
|
|
||||||
|
|
||||||
::process preprocessed file
|
|
||||||
type 1.txt | luajit.exe ./generator.lua true imgui imgui_impl_glfw imgui_impl_opengl3 imgui_impl_opengl2 > out.txt
|
|
||||||
|
|
||||||
::copy cimgui.h and cimgui.cpp
|
::copy cimgui.h and cimgui.cpp
|
||||||
copy .\cimgui.h ..\cimgui.h
|
copy .\cimgui.h ..\cimgui.h
|
||||||
|
@@ -3,11 +3,10 @@
|
|||||||
--expects Lua 5.1 or luajit
|
--expects Lua 5.1 or luajit
|
||||||
--------------------------------------------------------------------------
|
--------------------------------------------------------------------------
|
||||||
local script_args = {...}
|
local script_args = {...}
|
||||||
local locations = {}
|
local implementations = {}
|
||||||
for i=2,#script_args do table.insert(locations,script_args[i]) end
|
for i=2,#script_args do table.insert(implementations,script_args[i]) end
|
||||||
-- first script argument to use gcc or not
|
-- first script argument to use gcc or not
|
||||||
local USEGCC = script_args[1] == "true"
|
local USEGCC = script_args[1] == "true"
|
||||||
print("USEGCC",USEGCC)
|
|
||||||
--------------------------------------------------------------------------
|
--------------------------------------------------------------------------
|
||||||
--this table has the functions to be skipped in generation
|
--this table has the functions to be skipped in generation
|
||||||
--------------------------------------------------------------------------
|
--------------------------------------------------------------------------
|
||||||
@@ -56,7 +55,7 @@ local cimgui_overloads = {
|
|||||||
--helper functions
|
--helper functions
|
||||||
--------------------------------------------------------------------------
|
--------------------------------------------------------------------------
|
||||||
--iterates lines from a .h file and discards between #if.. and #endif
|
--iterates lines from a .h file and discards between #if.. and #endif
|
||||||
local function imguilines(file)
|
local function filelines(file)
|
||||||
local iflevels = {}
|
local iflevels = {}
|
||||||
local function location_it()
|
local function location_it()
|
||||||
repeat
|
repeat
|
||||||
@@ -88,6 +87,7 @@ local function location(file,locpathT)
|
|||||||
table.insert(path_reT,'^(.*[\\/])('..locpath..')%.h$')
|
table.insert(path_reT,'^(.*[\\/])('..locpath..')%.h$')
|
||||||
end
|
end
|
||||||
local in_location = false
|
local in_location = false
|
||||||
|
local which_location = ""
|
||||||
local function location_it()
|
local function location_it()
|
||||||
repeat
|
repeat
|
||||||
local line = file:read"*l"
|
local line = file:read"*l"
|
||||||
@@ -98,11 +98,15 @@ local function location(file,locpathT)
|
|||||||
if location_match then
|
if location_match then
|
||||||
in_location = false
|
in_location = false
|
||||||
for i,path_re in ipairs(path_reT) do
|
for i,path_re in ipairs(path_reT) do
|
||||||
if location_match:match(path_re) then in_location = true; break end
|
if location_match:match(path_re) then
|
||||||
|
in_location = true;
|
||||||
|
which_location = locpathT[i]
|
||||||
|
break
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
elseif in_location then
|
elseif in_location then
|
||||||
return line
|
return line, which_location
|
||||||
end
|
end
|
||||||
until false
|
until false
|
||||||
end
|
end
|
||||||
@@ -334,7 +338,8 @@ local function func_parser()
|
|||||||
FP.embeded_structs = embeded_structs
|
FP.embeded_structs = embeded_structs
|
||||||
FP.defsT = defsT
|
FP.defsT = defsT
|
||||||
FP.ImVector_templates = ImVector_templates
|
FP.ImVector_templates = ImVector_templates
|
||||||
function FP.insert(line,comment)
|
|
||||||
|
function FP.insert(line,comment,locat)
|
||||||
line = clean_spaces(line)
|
line = clean_spaces(line)
|
||||||
if line:match"template" then return end
|
if line:match"template" then return end
|
||||||
line = line:gsub("%S+",{class="struct",mutable=""}) --class -> struct
|
line = line:gsub("%S+",{class="struct",mutable=""}) --class -> struct
|
||||||
@@ -439,6 +444,7 @@ local function func_parser()
|
|||||||
defT.signature = signature
|
defT.signature = signature
|
||||||
defT.call_args = call_args
|
defT.call_args = call_args
|
||||||
defT.isvararg = signature:match("%.%.%.%)$")
|
defT.isvararg = signature:match("%.%.%.%)$")
|
||||||
|
defT.location = locat
|
||||||
defT.comment = comment
|
defT.comment = comment
|
||||||
if ret then
|
if ret then
|
||||||
defT.ret = ret:gsub("&","*")
|
defT.ret = ret:gsub("&","*")
|
||||||
@@ -693,6 +699,29 @@ typedef struct ImVector ImVector;]])
|
|||||||
return outtab
|
return outtab
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function func_header_impl_generate(FP)
|
||||||
|
--local hfile = io.open("./auto_funcs2.h","w")
|
||||||
|
local outtab = {}
|
||||||
|
|
||||||
|
for _,t in ipairs(FP.cdefs) do
|
||||||
|
if t.cimguiname then
|
||||||
|
local cimf = FP.defsT[t.cimguiname]
|
||||||
|
local def = cimf[t.signature]
|
||||||
|
if def.ret then --not constructor
|
||||||
|
local addcoment = def.comment or ""
|
||||||
|
if def.stname == "" then --ImGui namespace or top level
|
||||||
|
table.insert(outtab,"CIMGUI_API".." "..def.ret.." "..(def.ov_cimguiname or def.cimguiname)..def.args..";"..addcoment.."\n")
|
||||||
|
else
|
||||||
|
error("class function in implementations")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else --not cimguiname
|
||||||
|
table.insert(outtab,t.comment:gsub("%%","%%%%").."\n")-- %% substitution for gsub
|
||||||
|
end
|
||||||
|
end
|
||||||
|
--hfile:close()
|
||||||
|
return outtab
|
||||||
|
end
|
||||||
local function func_header_generate(FP)
|
local function func_header_generate(FP)
|
||||||
--local hfile = io.open("./auto_funcs2.h","w")
|
--local hfile = io.open("./auto_funcs2.h","w")
|
||||||
local outtab = {}
|
local outtab = {}
|
||||||
@@ -798,19 +827,33 @@ end
|
|||||||
--------------------------------------------------------
|
--------------------------------------------------------
|
||||||
-----------------------------do it----------------------
|
-----------------------------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
|
||||||
|
end
|
||||||
|
print"goint to iterate"
|
||||||
local STP = struct_parser()
|
local STP = struct_parser()
|
||||||
local FP = func_parser()
|
local FP = func_parser()
|
||||||
print("USEGCC",USEGCC)
|
|
||||||
local iterator = (USEGCC and location) or imguilines
|
|
||||||
print("iterator",iterator)
|
|
||||||
print(location, imguilines)
|
|
||||||
|
|
||||||
for line in iterator(io.input(),locations) do
|
local iterator = (USEGCC and location) or filelines
|
||||||
|
|
||||||
|
for line in iterator(pipe,{"imgui"}) do
|
||||||
local line, comment = split_comment(line)
|
local line, comment = split_comment(line)
|
||||||
STP.insert(line,comment)
|
STP.insert(line,comment)
|
||||||
FP.insert(line,comment)
|
FP.insert(line,comment)
|
||||||
end
|
end
|
||||||
|
pipe:close()
|
||||||
|
|
||||||
--output after insert
|
--output after insert
|
||||||
-- local hfile = io.open("./outstructs.h","w")
|
-- local hfile = io.open("./outstructs.h","w")
|
||||||
@@ -822,7 +865,6 @@ FP:compute_overloads()
|
|||||||
|
|
||||||
local cstructs = gen_structs_and_enums(STP.lines)
|
local cstructs = gen_structs_and_enums(STP.lines)
|
||||||
local cfuncs = func_header_generate(FP)
|
local cfuncs = func_header_generate(FP)
|
||||||
local cstructs_table = gen_structs_and_enums_table(STP.lines)
|
|
||||||
|
|
||||||
--merge it in cimgui_template.h to cimgui.h
|
--merge it in cimgui_template.h to cimgui.h
|
||||||
local hfile = io.open("./cimgui_template.h","r")
|
local hfile = io.open("./cimgui_template.h","r")
|
||||||
@@ -857,12 +899,64 @@ hfile:close()
|
|||||||
|
|
||||||
----------save struct and enums lua table in structs_and_enums.lua for using in bindings
|
----------save struct and enums lua table in structs_and_enums.lua for using in bindings
|
||||||
local hfile = io.open("./structs_and_enums.lua","w")
|
local hfile = io.open("./structs_and_enums.lua","w")
|
||||||
local ser = serializeTable("defs",cstructs_table)
|
local ser = serializeTable("defs",gen_structs_and_enums_table(STP.lines))
|
||||||
hfile:write(ser.."\nreturn defs")
|
hfile:write(ser.."\nreturn defs")
|
||||||
hfile:close()
|
hfile:close()
|
||||||
|
|
||||||
|
--=================================Now implementations
|
||||||
|
local sources = {}
|
||||||
|
local impl_locs = {}
|
||||||
|
for i,impl in ipairs(implementations) do
|
||||||
|
table.insert(sources,[[../../imgui/examples/imgui_impl_]].. impl .. ".h ")
|
||||||
|
table.insert(impl_locs,[[imgui_impl_]].. impl )
|
||||||
|
end
|
||||||
|
|
||||||
|
if #sources > 0 then
|
||||||
|
|
||||||
|
local pipe = nil
|
||||||
|
if USEGCC then
|
||||||
|
pipe,err = io.popen([[gcc -E -C -DIMGUI_DISABLE_OBSOLETE_FUNCTIONS -DIMGUI_API="" -DIMGUI_IMPL_API="" ]] ..table.concat(sources),"r")
|
||||||
|
|
||||||
|
if not pipe then
|
||||||
|
error("could not execute gcc "..err)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local iFP = func_parser()
|
||||||
|
local iSTP = struct_parser()
|
||||||
|
|
||||||
|
for line,locat in iterator(pipe,impl_locs) do
|
||||||
|
local line, comment = split_comment(line)
|
||||||
|
iSTP.insert(line,comment)
|
||||||
|
iFP.insert(line,comment,locat)
|
||||||
|
end
|
||||||
|
pipe:close()
|
||||||
|
|
||||||
|
---[[
|
||||||
|
local impl_cfuncs = func_header_impl_generate(iFP)
|
||||||
|
local impl_cstructs = gen_structs_and_enums(iSTP.lines)
|
||||||
|
---require"anima.utils"
|
||||||
|
---prtable("impl_funcs",impl_cfuncs)
|
||||||
|
--save to cimgui_impl.h
|
||||||
|
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
|
||||||
|
local outfile = io.open("./cimgui_impl.h","w")
|
||||||
|
outfile:write(cstructstr)
|
||||||
|
outfile:write(cfuncsstr)
|
||||||
|
outfile:close()
|
||||||
|
--]]
|
||||||
|
|
||||||
|
----------save fundefs in impl_definitions.lua for using in bindings
|
||||||
|
local hfile = io.open("./impl_definitions.lua","w")
|
||||||
|
local ser = serializeTable("defs",iFP.defsT)
|
||||||
|
hfile:write(ser.."\nreturn defs")
|
||||||
|
hfile:close()
|
||||||
|
|
||||||
|
end -- #sources > 0 then
|
||||||
|
|
||||||
|
--[[
|
||||||
---dump some infos-----------------------------------------------------------------------
|
---dump some infos-----------------------------------------------------------------------
|
||||||
------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------
|
||||||
print"//-------alltypes--------------------------------------------------------------------"
|
print"//-------alltypes--------------------------------------------------------------------"
|
||||||
@@ -880,7 +974,7 @@ end
|
|||||||
|
|
||||||
print"//constructors------------------------------------------------------------------"
|
print"//constructors------------------------------------------------------------------"
|
||||||
for i,t in ipairs(FP.cdefs) do
|
for i,t in ipairs(FP.cdefs) do
|
||||||
if not t.ret then
|
if t.cimguiname and not t.ret then
|
||||||
print(t.cimguiname,"\t",t.signature,"\t",t.args,"\t",t.argsc,"\t",t.call_args,"\t",t.ret)
|
print(t.cimguiname,"\t",t.signature,"\t",t.args,"\t",t.argsc,"\t",t.call_args,"\t",t.ret)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -889,6 +983,4 @@ for i,t in ipairs(FP.cdefs) do
|
|||||||
--print(t.cimguiname," ",t.funcname,"\t",t.signature,"\t",t.args,"\t",t.argsc,"\t",t.call_args,"\t",t.ret)
|
--print(t.cimguiname," ",t.funcname,"\t",t.signature,"\t",t.args,"\t",t.argsc,"\t",t.call_args,"\t",t.ret)
|
||||||
end
|
end
|
||||||
---------------------------------------------------------------------------------------------
|
---------------------------------------------------------------------------------------------
|
||||||
|
--]]
|
||||||
|
|
||||||
|
|
@@ -2,12 +2,12 @@ rem this is used to rebuild imgui_structs.h
|
|||||||
rem set your PATH if necessary for gcc and lua with:
|
rem set your PATH if necessary for gcc and lua with:
|
||||||
set PATH=%PATH%;C:\luaGL;
|
set PATH=%PATH%;C:\luaGL;
|
||||||
|
|
||||||
rem type ..\..\imgui\imgui.h | luajit.exe ./generator.lua false > out.txt
|
|
||||||
type ..\..\imgui\imgui.h ..\..\imgui\examples\imgui_impl_glfw.h ..\..\imgui\examples\imgui_impl_opengl3.h | luajit.exe ./generator.lua false > out.txt
|
luajit.exe ./generator.lua false
|
||||||
|
|
||||||
::copy cimgui.h and cimgui.cpp
|
::copy cimgui.h and cimgui.cpp
|
||||||
copy .\cimgui.h ..\cimgui.h
|
::copy .\cimgui.h ..\cimgui.h
|
||||||
copy .\cimgui.cpp ..\cimgui.cpp
|
::copy .\cimgui.cpp ..\cimgui.cpp
|
||||||
|
|
||||||
cmd /k
|
cmd /k
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user