Simpler ingesting of imgui: copy files into folder

Also rerun bindgen
This commit is contained in:
dbr 2021-10-27 19:25:39 +11:00
parent 929dd2fcfe
commit b1150d6c3b
63 changed files with 193000 additions and 1899 deletions

View File

@ -1,43 +0,0 @@
typedef struct SDL_Window SDL_Window;
typedef struct GLFWmonitor GLFWmonitor;
typedef struct GLFWwindow GLFWwindow;
struct GLFWwindow;
struct GLFWmonitor;
struct SDL_Window;
typedef union SDL_Event SDL_Event;CIMGUI_API bool ImGui_ImplGlfw_InitForOpenGL(GLFWwindow* window,bool install_callbacks);
CIMGUI_API bool ImGui_ImplGlfw_InitForVulkan(GLFWwindow* window,bool install_callbacks);
CIMGUI_API bool ImGui_ImplGlfw_InitForOther(GLFWwindow* window,bool install_callbacks);
CIMGUI_API void ImGui_ImplGlfw_Shutdown();
CIMGUI_API void ImGui_ImplGlfw_NewFrame();
CIMGUI_API void ImGui_ImplGlfw_WindowFocusCallback(GLFWwindow* window,int focused);
CIMGUI_API void ImGui_ImplGlfw_CursorEnterCallback(GLFWwindow* window,int entered);
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 void ImGui_ImplGlfw_MonitorCallback(GLFWmonitor* monitor,int event);
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();
CIMGUI_API bool ImGui_ImplSDL2_InitForOpenGL(SDL_Window* window,void* sdl_gl_context);
CIMGUI_API bool ImGui_ImplSDL2_InitForVulkan(SDL_Window* window);
CIMGUI_API bool ImGui_ImplSDL2_InitForD3D(SDL_Window* window);
CIMGUI_API bool ImGui_ImplSDL2_InitForMetal(SDL_Window* window);
CIMGUI_API void ImGui_ImplSDL2_Shutdown();
CIMGUI_API void ImGui_ImplSDL2_NewFrame();
CIMGUI_API bool ImGui_ImplSDL2_ProcessEvent(const SDL_Event* event);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2014-2021 Omar Cornut
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,123 @@
//-----------------------------------------------------------------------------
// COMPILE-TIME OPTIONS FOR DEAR IMGUI
// Runtime options (clipboard callbacks, enabling various features, etc.) can generally be set via the ImGuiIO structure.
// You can use ImGui::SetAllocatorFunctions() before calling ImGui::CreateContext() to rewire memory allocation functions.
//-----------------------------------------------------------------------------
// A) You may edit imconfig.h (and not overwrite it when updating Dear ImGui, or maintain a patch/rebased branch with your modifications to it)
// B) or '#define IMGUI_USER_CONFIG "my_imgui_config.h"' in your project and then add directives in your own file without touching this template.
//-----------------------------------------------------------------------------
// You need to make sure that configuration settings are defined consistently _everywhere_ Dear ImGui is used, which include the imgui*.cpp
// files but also _any_ of your code that uses Dear ImGui. This is because some compile-time options have an affect on data structures.
// Defining those options in imconfig.h will ensure every compilation unit gets to see the same data structure layouts.
// Call IMGUI_CHECKVERSION() from your .cpp files to verify that the data structures your files are using are matching the ones imgui.cpp is using.
//-----------------------------------------------------------------------------
#pragma once
//---- Define assertion handler. Defaults to calling assert().
// If your macro uses multiple statements, make sure is enclosed in a 'do { .. } while (0)' block so it can be used as a single statement.
//#define IM_ASSERT(_EXPR) MyAssert(_EXPR)
//#define IM_ASSERT(_EXPR) ((void)(_EXPR)) // Disable asserts
//---- Define attributes of all API symbols declarations, e.g. for DLL under Windows
// Using Dear ImGui via a shared library is not recommended, because of function call overhead and because we don't guarantee backward nor forward ABI compatibility.
// DLL users: heaps and globals are not shared across DLL boundaries! You will need to call SetCurrentContext() + SetAllocatorFunctions()
// for each static/DLL boundary you are calling from. Read "Context and Memory Allocators" section of imgui.cpp for more details.
//#define IMGUI_API __declspec( dllexport )
//#define IMGUI_API __declspec( dllimport )
//---- Don't define obsolete functions/enums/behaviors. Consider enabling from time to time after updating to avoid using soon-to-be obsolete function/names.
//#define IMGUI_DISABLE_OBSOLETE_FUNCTIONS
//---- Disable all of Dear ImGui or don't implement standard windows.
// It is very strongly recommended to NOT disable the demo windows during development. Please read comments in imgui_demo.cpp.
//#define IMGUI_DISABLE // Disable everything: all headers and source files will be empty.
//#define IMGUI_DISABLE_DEMO_WINDOWS // Disable demo windows: ShowDemoWindow()/ShowStyleEditor() will be empty. Not recommended.
//#define IMGUI_DISABLE_METRICS_WINDOW // Disable metrics/debugger window: ShowMetricsWindow() will be empty.
//---- Don't implement some functions to reduce linkage requirements.
//#define IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCTIONS // [Win32] Don't implement default clipboard handler. Won't use and link with OpenClipboard/GetClipboardData/CloseClipboard etc. (user32.lib/.a, kernel32.lib/.a)
//#define IMGUI_ENABLE_WIN32_DEFAULT_IME_FUNCTIONS // [Win32] [Default with Visual Studio] Implement default IME handler (require imm32.lib/.a, auto-link for Visual Studio, -limm32 on command-line for MinGW)
//#define IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS // [Win32] [Default with non-Visual Studio compilers] Don't implement default IME handler (won't require imm32.lib/.a)
//#define IMGUI_DISABLE_WIN32_FUNCTIONS // [Win32] Won't use and link with any Win32 function (clipboard, ime).
//#define IMGUI_ENABLE_OSX_DEFAULT_CLIPBOARD_FUNCTIONS // [OSX] Implement default OSX clipboard handler (need to link with '-framework ApplicationServices', this is why this is not the default).
//#define IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS // Don't implement ImFormatString/ImFormatStringV so you can implement them yourself (e.g. if you don't want to link with vsnprintf)
//#define IMGUI_DISABLE_DEFAULT_MATH_FUNCTIONS // Don't implement ImFabs/ImSqrt/ImPow/ImFmod/ImCos/ImSin/ImAcos/ImAtan2 so you can implement them yourself.
//#define IMGUI_DISABLE_FILE_FUNCTIONS // Don't implement ImFileOpen/ImFileClose/ImFileRead/ImFileWrite and ImFileHandle at all (replace them with dummies)
//#define IMGUI_DISABLE_DEFAULT_FILE_FUNCTIONS // Don't implement ImFileOpen/ImFileClose/ImFileRead/ImFileWrite and ImFileHandle so you can implement them yourself if you don't want to link with fopen/fclose/fread/fwrite. This will also disable the LogToTTY() function.
//#define IMGUI_DISABLE_DEFAULT_ALLOCATORS // Don't implement default allocators calling malloc()/free() to avoid linking with them. You will need to call ImGui::SetAllocatorFunctions().
//#define IMGUI_DISABLE_SSE // Disable use of SSE intrinsics even if available
//---- Include imgui_user.h at the end of imgui.h as a convenience
//#define IMGUI_INCLUDE_IMGUI_USER_H
//---- Pack colors to BGRA8 instead of RGBA8 (to avoid converting from one to another)
//#define IMGUI_USE_BGRA_PACKED_COLOR
//---- Use 32-bit for ImWchar (default is 16-bit) to support unicode planes 1-16. (e.g. point beyond 0xFFFF like emoticons, dingbats, symbols, shapes, ancient languages, etc...)
//#define IMGUI_USE_WCHAR32
//---- Avoid multiple STB libraries implementations, or redefine path/filenames to prioritize another version
// By default the embedded implementations are declared static and not available outside of Dear ImGui sources files.
//#define IMGUI_STB_TRUETYPE_FILENAME "my_folder/stb_truetype.h"
//#define IMGUI_STB_RECT_PACK_FILENAME "my_folder/stb_rect_pack.h"
//#define IMGUI_DISABLE_STB_TRUETYPE_IMPLEMENTATION
//#define IMGUI_DISABLE_STB_RECT_PACK_IMPLEMENTATION
//---- Use stb_printf's faster implementation of vsnprintf instead of the one from libc (unless IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS is defined)
// Requires 'stb_sprintf.h' to be available in the include path. Compatibility checks of arguments and formats done by clang and GCC will be disabled in order to support the extra formats provided by STB sprintf.
// #define IMGUI_USE_STB_SPRINTF
//---- Use FreeType to build and rasterize the font atlas (instead of stb_truetype which is embedded by default in Dear ImGui)
// Requires FreeType headers to be available in the include path. Requires program to be compiled with 'misc/freetype/imgui_freetype.cpp' (in this repository) + the FreeType library (not provided).
// On Windows you may use vcpkg with 'vcpkg install freetype --triplet=x64-windows' + 'vcpkg integrate install'.
//#define IMGUI_ENABLE_FREETYPE
//---- Use stb_truetype to build and rasterize the font atlas (default)
// The only purpose of this define is if you want force compilation of the stb_truetype backend ALONG with the FreeType backend.
//#define IMGUI_ENABLE_STB_TRUETYPE
//---- Define constructor and implicit cast operators to convert back<>forth between your math types and ImVec2/ImVec4.
// This will be inlined as part of ImVec2 and ImVec4 class declarations.
/*
#define IM_VEC2_CLASS_EXTRA \
ImVec2(const MyVec2& f) { x = f.x; y = f.y; } \
operator MyVec2() const { return MyVec2(x,y); }
#define IM_VEC4_CLASS_EXTRA \
ImVec4(const MyVec4& f) { x = f.x; y = f.y; z = f.z; w = f.w; } \
operator MyVec4() const { return MyVec4(x,y,z,w); }
*/
//---- Use 32-bit vertex indices (default is 16-bit) is one way to allow large meshes with more than 64K vertices.
// Your renderer backend will need to support it (most example renderer backends support both 16/32-bit indices).
// Another way to allow large meshes while keeping 16-bit indices is to handle ImDrawCmd::VtxOffset in your renderer.
// Read about ImGuiBackendFlags_RendererHasVtxOffset for details.
//#define ImDrawIdx unsigned int
//---- Override ImDrawCallback signature (will need to modify renderer backends accordingly)
//struct ImDrawList;
//struct ImDrawCmd;
//typedef void (*MyImDrawCallback)(const ImDrawList* draw_list, const ImDrawCmd* cmd, void* my_renderer_user_data);
//#define ImDrawCallback MyImDrawCallback
//---- Debug Tools: Macro to break in Debugger
// (use 'Metrics->Tools->Item Picker' to pick widgets with the mouse and break into them for easy debugging.)
//#define IM_DEBUG_BREAK IM_ASSERT(0)
//#define IM_DEBUG_BREAK __debugbreak()
//---- Debug Tools: Have the Item Picker break in the ItemAdd() function instead of ItemHoverable(),
// (which comes earlier in the code, will catch a few extra items, allow picking items other than Hovered one.)
// This adds a small runtime cost which is why it is not enabled by default.
//#define IMGUI_DEBUG_TOOL_ITEM_PICKER_EX
//---- Debug Tools: Enable slower asserts
//#define IMGUI_DEBUG_PARANOID
//---- Tip: You can add extra functions within the ImGui:: namespace, here or in your own headers files.
/*
namespace ImGui
{
void MyFunction(const char* name, const MyMatrix44& v);
}
*/

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,639 @@
// [DEAR IMGUI]
// This is a slightly modified version of stb_rect_pack.h 1.00.
// Those changes would need to be pushed into nothings/stb:
// - Added STBRP__CDECL
// Grep for [DEAR IMGUI] to find the changes.
// stb_rect_pack.h - v1.00 - public domain - rectangle packing
// Sean Barrett 2014
//
// Useful for e.g. packing rectangular textures into an atlas.
// Does not do rotation.
//
// Not necessarily the awesomest packing method, but better than
// the totally naive one in stb_truetype (which is primarily what
// this is meant to replace).
//
// Has only had a few tests run, may have issues.
//
// More docs to come.
//
// No memory allocations; uses qsort() and assert() from stdlib.
// Can override those by defining STBRP_SORT and STBRP_ASSERT.
//
// This library currently uses the Skyline Bottom-Left algorithm.
//
// Please note: better rectangle packers are welcome! Please
// implement them to the same API, but with a different init
// function.
//
// Credits
//
// Library
// Sean Barrett
// Minor features
// Martins Mozeiko
// github:IntellectualKitty
//
// Bugfixes / warning fixes
// Jeremy Jaussaud
// Fabian Giesen
//
// Version history:
//
// 1.00 (2019-02-25) avoid small space waste; gracefully fail too-wide rectangles
// 0.99 (2019-02-07) warning fixes
// 0.11 (2017-03-03) return packing success/fail result
// 0.10 (2016-10-25) remove cast-away-const to avoid warnings
// 0.09 (2016-08-27) fix compiler warnings
// 0.08 (2015-09-13) really fix bug with empty rects (w=0 or h=0)
// 0.07 (2015-09-13) fix bug with empty rects (w=0 or h=0)
// 0.06 (2015-04-15) added STBRP_SORT to allow replacing qsort
// 0.05: added STBRP_ASSERT to allow replacing assert
// 0.04: fixed minor bug in STBRP_LARGE_RECTS support
// 0.01: initial release
//
// LICENSE
//
// See end of file for license information.
//////////////////////////////////////////////////////////////////////////////
//
// INCLUDE SECTION
//
#ifndef STB_INCLUDE_STB_RECT_PACK_H
#define STB_INCLUDE_STB_RECT_PACK_H
#define STB_RECT_PACK_VERSION 1
#ifdef STBRP_STATIC
#define STBRP_DEF static
#else
#define STBRP_DEF extern
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef struct stbrp_context stbrp_context;
typedef struct stbrp_node stbrp_node;
typedef struct stbrp_rect stbrp_rect;
#ifdef STBRP_LARGE_RECTS
typedef int stbrp_coord;
#else
typedef unsigned short stbrp_coord;
#endif
STBRP_DEF int stbrp_pack_rects (stbrp_context *context, stbrp_rect *rects, int num_rects);
// Assign packed locations to rectangles. The rectangles are of type
// 'stbrp_rect' defined below, stored in the array 'rects', and there
// are 'num_rects' many of them.
//
// Rectangles which are successfully packed have the 'was_packed' flag
// set to a non-zero value and 'x' and 'y' store the minimum location
// on each axis (i.e. bottom-left in cartesian coordinates, top-left
// if you imagine y increasing downwards). Rectangles which do not fit
// have the 'was_packed' flag set to 0.
//
// You should not try to access the 'rects' array from another thread
// while this function is running, as the function temporarily reorders
// the array while it executes.
//
// To pack into another rectangle, you need to call stbrp_init_target
// again. To continue packing into the same rectangle, you can call
// this function again. Calling this multiple times with multiple rect
// arrays will probably produce worse packing results than calling it
// a single time with the full rectangle array, but the option is
// available.
//
// The function returns 1 if all of the rectangles were successfully
// packed and 0 otherwise.
struct stbrp_rect
{
// reserved for your use:
int id;
// input:
stbrp_coord w, h;
// output:
stbrp_coord x, y;
int was_packed; // non-zero if valid packing
}; // 16 bytes, nominally
STBRP_DEF void stbrp_init_target (stbrp_context *context, int width, int height, stbrp_node *nodes, int num_nodes);
// Initialize a rectangle packer to:
// pack a rectangle that is 'width' by 'height' in dimensions
// using temporary storage provided by the array 'nodes', which is 'num_nodes' long
//
// You must call this function every time you start packing into a new target.
//
// There is no "shutdown" function. The 'nodes' memory must stay valid for
// the following stbrp_pack_rects() call (or calls), but can be freed after
// the call (or calls) finish.
//
// Note: to guarantee best results, either:
// 1. make sure 'num_nodes' >= 'width'
// or 2. call stbrp_allow_out_of_mem() defined below with 'allow_out_of_mem = 1'
//
// If you don't do either of the above things, widths will be quantized to multiples
// of small integers to guarantee the algorithm doesn't run out of temporary storage.
//
// If you do #2, then the non-quantized algorithm will be used, but the algorithm
// may run out of temporary storage and be unable to pack some rectangles.
STBRP_DEF void stbrp_setup_allow_out_of_mem (stbrp_context *context, int allow_out_of_mem);
// Optionally call this function after init but before doing any packing to
// change the handling of the out-of-temp-memory scenario, described above.
// If you call init again, this will be reset to the default (false).
STBRP_DEF void stbrp_setup_heuristic (stbrp_context *context, int heuristic);
// Optionally select which packing heuristic the library should use. Different
// heuristics will produce better/worse results for different data sets.
// If you call init again, this will be reset to the default.
enum
{
STBRP_HEURISTIC_Skyline_default=0,
STBRP_HEURISTIC_Skyline_BL_sortHeight = STBRP_HEURISTIC_Skyline_default,
STBRP_HEURISTIC_Skyline_BF_sortHeight
};
//////////////////////////////////////////////////////////////////////////////
//
// the details of the following structures don't matter to you, but they must
// be visible so you can handle the memory allocations for them
struct stbrp_node
{
stbrp_coord x,y;
stbrp_node *next;
};
struct stbrp_context
{
int width;
int height;
int align;
int init_mode;
int heuristic;
int num_nodes;
stbrp_node *active_head;
stbrp_node *free_head;
stbrp_node extra[2]; // we allocate two extra nodes so optimal user-node-count is 'width' not 'width+2'
};
#ifdef __cplusplus
}
#endif
#endif
//////////////////////////////////////////////////////////////////////////////
//
// IMPLEMENTATION SECTION
//
#ifdef STB_RECT_PACK_IMPLEMENTATION
#ifndef STBRP_SORT
#include <stdlib.h>
#define STBRP_SORT qsort
#endif
#ifndef STBRP_ASSERT
#include <assert.h>
#define STBRP_ASSERT assert
#endif
// [DEAR IMGUI] Added STBRP__CDECL
#ifdef _MSC_VER
#define STBRP__NOTUSED(v) (void)(v)
#define STBRP__CDECL __cdecl
#else
#define STBRP__NOTUSED(v) (void)sizeof(v)
#define STBRP__CDECL
#endif
enum
{
STBRP__INIT_skyline = 1
};
STBRP_DEF void stbrp_setup_heuristic(stbrp_context *context, int heuristic)
{
switch (context->init_mode) {
case STBRP__INIT_skyline:
STBRP_ASSERT(heuristic == STBRP_HEURISTIC_Skyline_BL_sortHeight || heuristic == STBRP_HEURISTIC_Skyline_BF_sortHeight);
context->heuristic = heuristic;
break;
default:
STBRP_ASSERT(0);
}
}
STBRP_DEF void stbrp_setup_allow_out_of_mem(stbrp_context *context, int allow_out_of_mem)
{
if (allow_out_of_mem)
// if it's ok to run out of memory, then don't bother aligning them;
// this gives better packing, but may fail due to OOM (even though
// the rectangles easily fit). @TODO a smarter approach would be to only
// quantize once we've hit OOM, then we could get rid of this parameter.
context->align = 1;
else {
// if it's not ok to run out of memory, then quantize the widths
// so that num_nodes is always enough nodes.
//
// I.e. num_nodes * align >= width
// align >= width / num_nodes
// align = ceil(width/num_nodes)
context->align = (context->width + context->num_nodes-1) / context->num_nodes;
}
}
STBRP_DEF void stbrp_init_target(stbrp_context *context, int width, int height, stbrp_node *nodes, int num_nodes)
{
int i;
#ifndef STBRP_LARGE_RECTS
STBRP_ASSERT(width <= 0xffff && height <= 0xffff);
#endif
for (i=0; i < num_nodes-1; ++i)
nodes[i].next = &nodes[i+1];
nodes[i].next = NULL;
context->init_mode = STBRP__INIT_skyline;
context->heuristic = STBRP_HEURISTIC_Skyline_default;
context->free_head = &nodes[0];
context->active_head = &context->extra[0];
context->width = width;
context->height = height;
context->num_nodes = num_nodes;
stbrp_setup_allow_out_of_mem(context, 0);
// node 0 is the full width, node 1 is the sentinel (lets us not store width explicitly)
context->extra[0].x = 0;
context->extra[0].y = 0;
context->extra[0].next = &context->extra[1];
context->extra[1].x = (stbrp_coord) width;
#ifdef STBRP_LARGE_RECTS
context->extra[1].y = (1<<30);
#else
context->extra[1].y = 65535;
#endif
context->extra[1].next = NULL;
}
// find minimum y position if it starts at x1
static int stbrp__skyline_find_min_y(stbrp_context *c, stbrp_node *first, int x0, int width, int *pwaste)
{
stbrp_node *node = first;
int x1 = x0 + width;
int min_y, visited_width, waste_area;
STBRP__NOTUSED(c);
STBRP_ASSERT(first->x <= x0);
#if 0
// skip in case we're past the node
while (node->next->x <= x0)
++node;
#else
STBRP_ASSERT(node->next->x > x0); // we ended up handling this in the caller for efficiency
#endif
STBRP_ASSERT(node->x <= x0);
min_y = 0;
waste_area = 0;
visited_width = 0;
while (node->x < x1) {
if (node->y > min_y) {
// raise min_y higher.
// we've accounted for all waste up to min_y,
// but we'll now add more waste for everything we've visted
waste_area += visited_width * (node->y - min_y);
min_y = node->y;
// the first time through, visited_width might be reduced
if (node->x < x0)
visited_width += node->next->x - x0;
else
visited_width += node->next->x - node->x;
} else {
// add waste area
int under_width = node->next->x - node->x;
if (under_width + visited_width > width)
under_width = width - visited_width;
waste_area += under_width * (min_y - node->y);
visited_width += under_width;
}
node = node->next;
}
*pwaste = waste_area;
return min_y;
}
typedef struct
{
int x,y;
stbrp_node **prev_link;
} stbrp__findresult;
static stbrp__findresult stbrp__skyline_find_best_pos(stbrp_context *c, int width, int height)
{
int best_waste = (1<<30), best_x, best_y = (1 << 30);
stbrp__findresult fr;
stbrp_node **prev, *node, *tail, **best = NULL;
// align to multiple of c->align
width = (width + c->align - 1);
width -= width % c->align;
STBRP_ASSERT(width % c->align == 0);
// if it can't possibly fit, bail immediately
if (width > c->width || height > c->height) {
fr.prev_link = NULL;
fr.x = fr.y = 0;
return fr;
}
node = c->active_head;
prev = &c->active_head;
while (node->x + width <= c->width) {
int y,waste;
y = stbrp__skyline_find_min_y(c, node, node->x, width, &waste);
if (c->heuristic == STBRP_HEURISTIC_Skyline_BL_sortHeight) { // actually just want to test BL
// bottom left
if (y < best_y) {
best_y = y;
best = prev;
}
} else {
// best-fit
if (y + height <= c->height) {
// can only use it if it first vertically
if (y < best_y || (y == best_y && waste < best_waste)) {
best_y = y;
best_waste = waste;
best = prev;
}
}
}
prev = &node->next;
node = node->next;
}
best_x = (best == NULL) ? 0 : (*best)->x;
// if doing best-fit (BF), we also have to try aligning right edge to each node position
//
// e.g, if fitting
//
// ____________________
// |____________________|
//
// into
//
// | |
// | ____________|
// |____________|
//
// then right-aligned reduces waste, but bottom-left BL is always chooses left-aligned
//
// This makes BF take about 2x the time
if (c->heuristic == STBRP_HEURISTIC_Skyline_BF_sortHeight) {
tail = c->active_head;
node = c->active_head;
prev = &c->active_head;
// find first node that's admissible
while (tail->x < width)
tail = tail->next;
while (tail) {
int xpos = tail->x - width;
int y,waste;
STBRP_ASSERT(xpos >= 0);
// find the left position that matches this
while (node->next->x <= xpos) {
prev = &node->next;
node = node->next;
}
STBRP_ASSERT(node->next->x > xpos && node->x <= xpos);
y = stbrp__skyline_find_min_y(c, node, xpos, width, &waste);
if (y + height <= c->height) {
if (y <= best_y) {
if (y < best_y || waste < best_waste || (waste==best_waste && xpos < best_x)) {
best_x = xpos;
STBRP_ASSERT(y <= best_y);
best_y = y;
best_waste = waste;
best = prev;
}
}
}
tail = tail->next;
}
}
fr.prev_link = best;
fr.x = best_x;
fr.y = best_y;
return fr;
}
static stbrp__findresult stbrp__skyline_pack_rectangle(stbrp_context *context, int width, int height)
{
// find best position according to heuristic
stbrp__findresult res = stbrp__skyline_find_best_pos(context, width, height);
stbrp_node *node, *cur;
// bail if:
// 1. it failed
// 2. the best node doesn't fit (we don't always check this)
// 3. we're out of memory
if (res.prev_link == NULL || res.y + height > context->height || context->free_head == NULL) {
res.prev_link = NULL;
return res;
}
// on success, create new node
node = context->free_head;
node->x = (stbrp_coord) res.x;
node->y = (stbrp_coord) (res.y + height);
context->free_head = node->next;
// insert the new node into the right starting point, and
// let 'cur' point to the remaining nodes needing to be
// stiched back in
cur = *res.prev_link;
if (cur->x < res.x) {
// preserve the existing one, so start testing with the next one
stbrp_node *next = cur->next;
cur->next = node;
cur = next;
} else {
*res.prev_link = node;
}
// from here, traverse cur and free the nodes, until we get to one
// that shouldn't be freed
while (cur->next && cur->next->x <= res.x + width) {
stbrp_node *next = cur->next;
// move the current node to the free list
cur->next = context->free_head;
context->free_head = cur;
cur = next;
}
// stitch the list back in
node->next = cur;
if (cur->x < res.x + width)
cur->x = (stbrp_coord) (res.x + width);
#ifdef _DEBUG
cur = context->active_head;
while (cur->x < context->width) {
STBRP_ASSERT(cur->x < cur->next->x);
cur = cur->next;
}
STBRP_ASSERT(cur->next == NULL);
{
int count=0;
cur = context->active_head;
while (cur) {
cur = cur->next;
++count;
}
cur = context->free_head;
while (cur) {
cur = cur->next;
++count;
}
STBRP_ASSERT(count == context->num_nodes+2);
}
#endif
return res;
}
// [DEAR IMGUI] Added STBRP__CDECL
static int STBRP__CDECL rect_height_compare(const void *a, const void *b)
{
const stbrp_rect *p = (const stbrp_rect *) a;
const stbrp_rect *q = (const stbrp_rect *) b;
if (p->h > q->h)
return -1;
if (p->h < q->h)
return 1;
return (p->w > q->w) ? -1 : (p->w < q->w);
}
// [DEAR IMGUI] Added STBRP__CDECL
static int STBRP__CDECL rect_original_order(const void *a, const void *b)
{
const stbrp_rect *p = (const stbrp_rect *) a;
const stbrp_rect *q = (const stbrp_rect *) b;
return (p->was_packed < q->was_packed) ? -1 : (p->was_packed > q->was_packed);
}
#ifdef STBRP_LARGE_RECTS
#define STBRP__MAXVAL 0xffffffff
#else
#define STBRP__MAXVAL 0xffff
#endif
STBRP_DEF int stbrp_pack_rects(stbrp_context *context, stbrp_rect *rects, int num_rects)
{
int i, all_rects_packed = 1;
// we use the 'was_packed' field internally to allow sorting/unsorting
for (i=0; i < num_rects; ++i) {
rects[i].was_packed = i;
}
// sort according to heuristic
STBRP_SORT(rects, num_rects, sizeof(rects[0]), rect_height_compare);
for (i=0; i < num_rects; ++i) {
if (rects[i].w == 0 || rects[i].h == 0) {
rects[i].x = rects[i].y = 0; // empty rect needs no space
} else {
stbrp__findresult fr = stbrp__skyline_pack_rectangle(context, rects[i].w, rects[i].h);
if (fr.prev_link) {
rects[i].x = (stbrp_coord) fr.x;
rects[i].y = (stbrp_coord) fr.y;
} else {
rects[i].x = rects[i].y = STBRP__MAXVAL;
}
}
}
// unsort
STBRP_SORT(rects, num_rects, sizeof(rects[0]), rect_original_order);
// set was_packed flags and all_rects_packed status
for (i=0; i < num_rects; ++i) {
rects[i].was_packed = !(rects[i].x == STBRP__MAXVAL && rects[i].y == STBRP__MAXVAL);
if (!rects[i].was_packed)
all_rects_packed = 0;
}
// return the all_rects_packed status
return all_rects_packed;
}
#endif
/*
------------------------------------------------------------------------------
This software is available under 2 licenses -- choose whichever you prefer.
------------------------------------------------------------------------------
ALTERNATIVE A - MIT License
Copyright (c) 2017 Sean Barrett
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
------------------------------------------------------------------------------
ALTERNATIVE B - Public Domain (www.unlicense.org)
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
software, either in source code form or as a compiled binary, for any purpose,
commercial or non-commercial, and by any means.
In jurisdictions that recognize copyright laws, the author or authors of this
software dedicate any and all copyright interest in the software to the public
domain. We make this dedication for the benefit of the public at large and to
the detriment of our heirs and successors. We intend this dedication to be an
overt act of relinquishment in perpetuity of all present and future rights to
this software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------------------------------------------------------------------------------
*/

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,37 @@
# imgui_freetype
Build font atlases using FreeType instead of stb_truetype (which is the default font rasterizer).
<br>by @vuhdo, @mikesart, @ocornut.
### Usage
1. Get latest FreeType binaries or build yourself (under Windows you may use vcpkg with `vcpkg install freetype --triplet=x64-windows`, `vcpkg integrate install`).
2. Add imgui_freetype.h/cpp alongside your project files.
3. Add `#define IMGUI_ENABLE_FREETYPE` in your [imconfig.h](https://github.com/ocornut/imgui/blob/master/imconfig.h) file
### About Gamma Correct Blending
FreeType assumes blending in linear space rather than gamma space.
See FreeType note for [FT_Render_Glyph](https://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#FT_Render_Glyph).
For correct results you need to be using sRGB and convert to linear space in the pixel shader output.
The default Dear ImGui styles will be impacted by this change (alpha values will need tweaking).
### Testbed for toying with settings (for developers)
See https://gist.github.com/ocornut/b3a9ecf13502fd818799a452969649ad
### Known issues
- Oversampling settins are ignored but also not so much necessary with the higher quality rendering.
### Comparaison
Small, thin anti-aliased fonts are typically benefiting a lots from Freetype's hinting:
![comparing_font_rasterizers](https://user-images.githubusercontent.com/8225057/107550178-fef87f00-6bd0-11eb-8d09-e2edb2f0ccfc.gif)
### Colorful glyphs/emojis
You can use the `ImGuiFreeTypeBuilderFlags_LoadColor` flag to load certain colorful glyphs. See
["Using Colorful Glyphs/Emojis"](https://github.com/ocornut/imgui/edit/master/docs/FONTS.md#using-colorful-glyphsemojis) section of FONTS.md.
![colored glyphs](https://user-images.githubusercontent.com/8225057/106171241-9dc4ba80-6191-11eb-8a69-ca1467b206d1.png)

View File

@ -0,0 +1,773 @@
// dear imgui: FreeType font builder (used as a replacement for the stb_truetype builder)
// (code)
// Get the latest version at https://github.com/ocornut/imgui/tree/master/misc/freetype
// Original code by @vuhdo (Aleksei Skriabin). Improvements by @mikesart. Maintained since 2019 by @ocornut.
// CHANGELOG
// (minor and older changes stripped away, please see git history for details)
// 2021/08/23: fixed crash when FT_Render_Glyph() fails to render a glyph and returns NULL.
// 2021/03/05: added ImGuiFreeTypeBuilderFlags_Bitmap to load bitmap glyphs.
// 2021/03/02: set 'atlas->TexPixelsUseColors = true' to help some backends with deciding of a prefered texture format.
// 2021/01/28: added support for color-layered glyphs via ImGuiFreeTypeBuilderFlags_LoadColor (require Freetype 2.10+).
// 2021/01/26: simplified integration by using '#define IMGUI_ENABLE_FREETYPE'.
// renamed ImGuiFreeType::XXX flags to ImGuiFreeTypeBuilderFlags_XXX for consistency with other API. removed ImGuiFreeType::BuildFontAtlas().
// 2020/06/04: fix for rare case where FT_Get_Char_Index() succeed but FT_Load_Glyph() fails.
// 2019/02/09: added RasterizerFlags::Monochrome flag to disable font anti-aliasing (combine with ::MonoHinting for best results!)
// 2019/01/15: added support for imgui allocators + added FreeType only override function SetAllocatorFunctions().
// 2019/01/10: re-factored to match big update in STB builder. fixed texture height waste. fixed redundant glyphs when merging. support for glyph padding.
// 2018/06/08: added support for ImFontConfig::GlyphMinAdvanceX, GlyphMaxAdvanceX.
// 2018/02/04: moved to main imgui repository (away from http://www.github.com/ocornut/imgui_club)
// 2018/01/22: fix for addition of ImFontAtlas::TexUvscale member.
// 2017/10/22: minor inconsequential change to match change in master (removed an unnecessary statement).
// 2017/09/26: fixes for imgui internal changes.
// 2017/08/26: cleanup, optimizations, support for ImFontConfig::RasterizerFlags, ImFontConfig::RasterizerMultiply.
// 2017/08/16: imported from https://github.com/Vuhdo/imgui_freetype into http://www.github.com/ocornut/imgui_club, updated for latest changes in ImFontAtlas, minor tweaks.
// About Gamma Correct Blending:
// - FreeType assumes blending in linear space rather than gamma space.
// - See https://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#FT_Render_Glyph
// - For correct results you need to be using sRGB and convert to linear space in the pixel shader output.
// - The default dear imgui styles will be impacted by this change (alpha values will need tweaking).
// FIXME: cfg.OversampleH, OversampleV are not supported (but perhaps not so necessary with this rasterizer).
#include "imgui_freetype.h"
#include "imgui_internal.h" // ImMin,ImMax,ImFontAtlasBuild*,
#include <stdint.h>
#include <ft2build.h>
#include FT_FREETYPE_H // <freetype/freetype.h>
#include FT_MODULE_H // <freetype/ftmodapi.h>
#include FT_GLYPH_H // <freetype/ftglyph.h>
#include FT_SYNTHESIS_H // <freetype/ftsynth.h>
#ifdef _MSC_VER
#pragma warning (disable: 4505) // unreferenced local function has been removed (stb stuff)
#pragma warning (disable: 26812) // [Static Analyzer] The enum type 'xxx' is unscoped. Prefer 'enum class' over 'enum' (Enum.3).
#endif
#if defined(__GNUC__)
#pragma GCC diagnostic ignored "-Wpragmas" // warning: unknown option after '#pragma GCC diagnostic' kind
#pragma GCC diagnostic ignored "-Wunused-function" // warning: 'xxxx' defined but not used
#endif
//-------------------------------------------------------------------------
// Data
//-------------------------------------------------------------------------
// Default memory allocators
static void* ImGuiFreeTypeDefaultAllocFunc(size_t size, void* user_data) { IM_UNUSED(user_data); return IM_ALLOC(size); }
static void ImGuiFreeTypeDefaultFreeFunc(void* ptr, void* user_data) { IM_UNUSED(user_data); IM_FREE(ptr); }
// Current memory allocators
static void* (*GImGuiFreeTypeAllocFunc)(size_t size, void* user_data) = ImGuiFreeTypeDefaultAllocFunc;
static void (*GImGuiFreeTypeFreeFunc)(void* ptr, void* user_data) = ImGuiFreeTypeDefaultFreeFunc;
static void* GImGuiFreeTypeAllocatorUserData = NULL;
//-------------------------------------------------------------------------
// Code
//-------------------------------------------------------------------------
namespace
{
// Glyph metrics:
// --------------
//
// xmin xmax
// | |
// |<-------- width -------->|
// | |
// | +-------------------------+----------------- ymax
// | | ggggggggg ggggg | ^ ^
// | | g:::::::::ggg::::g | | |
// | | g:::::::::::::::::g | | |
// | | g::::::ggggg::::::gg | | |
// | | g:::::g g:::::g | | |
// offsetX -|-------->| g:::::g g:::::g | offsetY |
// | | g:::::g g:::::g | | |
// | | g::::::g g:::::g | | |
// | | g:::::::ggggg:::::g | | |
// | | g::::::::::::::::g | | height
// | | gg::::::::::::::g | | |
// baseline ---*---------|---- gggggggg::::::g-----*-------- |
// / | | g:::::g | |
// origin | | gggggg g:::::g | |
// | | g:::::gg gg:::::g | |
// | | g::::::ggg:::::::g | |
// | | gg:::::::::::::g | |
// | | ggg::::::ggg | |
// | | gggggg | v
// | +-------------------------+----------------- ymin
// | |
// |------------- advanceX ----------->|
// A structure that describe a glyph.
struct GlyphInfo
{
int Width; // Glyph's width in pixels.
int Height; // Glyph's height in pixels.
FT_Int OffsetX; // The distance from the origin ("pen position") to the left of the glyph.
FT_Int OffsetY; // The distance from the origin to the top of the glyph. This is usually a value < 0.
float AdvanceX; // The distance from the origin to the origin of the next glyph. This is usually a value > 0.
bool IsColored; // The glyph is colored
};
// Font parameters and metrics.
struct FontInfo
{
uint32_t PixelHeight; // Size this font was generated with.
float Ascender; // The pixel extents above the baseline in pixels (typically positive).
float Descender; // The extents below the baseline in pixels (typically negative).
float LineSpacing; // The baseline-to-baseline distance. Note that it usually is larger than the sum of the ascender and descender taken as absolute values. There is also no guarantee that no glyphs extend above or below subsequent baselines when using this distance. Think of it as a value the designer of the font finds appropriate.
float LineGap; // The spacing in pixels between one row's descent and the next row's ascent.
float MaxAdvanceWidth; // This field gives the maximum horizontal cursor advance for all glyphs in the font.
};
// FreeType glyph rasterizer.
// NB: No ctor/dtor, explicitly call Init()/Shutdown()
struct FreeTypeFont
{
bool InitFont(FT_Library ft_library, const ImFontConfig& cfg, unsigned int extra_user_flags); // Initialize from an external data buffer. Doesn't copy data, and you must ensure it stays valid up to this object lifetime.
void CloseFont();
void SetPixelHeight(int pixel_height); // Change font pixel size. All following calls to RasterizeGlyph() will use this size
const FT_Glyph_Metrics* LoadGlyph(uint32_t in_codepoint);
const FT_Bitmap* RenderGlyphAndGetInfo(GlyphInfo* out_glyph_info);
void BlitGlyph(const FT_Bitmap* ft_bitmap, uint32_t* dst, uint32_t dst_pitch, unsigned char* multiply_table = NULL);
~FreeTypeFont() { CloseFont(); }
// [Internals]
FontInfo Info; // Font descriptor of the current font.
FT_Face Face;
unsigned int UserFlags; // = ImFontConfig::RasterizerFlags
FT_Int32 LoadFlags;
FT_Render_Mode RenderMode;
};
// From SDL_ttf: Handy routines for converting from fixed point
#define FT_CEIL(X) (((X + 63) & -64) / 64)
bool FreeTypeFont::InitFont(FT_Library ft_library, const ImFontConfig& cfg, unsigned int extra_font_builder_flags)
{
FT_Error error = FT_New_Memory_Face(ft_library, (uint8_t*)cfg.FontData, (uint32_t)cfg.FontDataSize, (uint32_t)cfg.FontNo, &Face);
if (error != 0)
return false;
error = FT_Select_Charmap(Face, FT_ENCODING_UNICODE);
if (error != 0)
return false;
// Convert to FreeType flags (NB: Bold and Oblique are processed separately)
UserFlags = cfg.FontBuilderFlags | extra_font_builder_flags;
LoadFlags = 0;
if ((UserFlags & ImGuiFreeTypeBuilderFlags_Bitmap) == 0)
LoadFlags |= FT_LOAD_NO_BITMAP;
if (UserFlags & ImGuiFreeTypeBuilderFlags_NoHinting)
LoadFlags |= FT_LOAD_NO_HINTING;
if (UserFlags & ImGuiFreeTypeBuilderFlags_NoAutoHint)
LoadFlags |= FT_LOAD_NO_AUTOHINT;
if (UserFlags & ImGuiFreeTypeBuilderFlags_ForceAutoHint)
LoadFlags |= FT_LOAD_FORCE_AUTOHINT;
if (UserFlags & ImGuiFreeTypeBuilderFlags_LightHinting)
LoadFlags |= FT_LOAD_TARGET_LIGHT;
else if (UserFlags & ImGuiFreeTypeBuilderFlags_MonoHinting)
LoadFlags |= FT_LOAD_TARGET_MONO;
else
LoadFlags |= FT_LOAD_TARGET_NORMAL;
if (UserFlags & ImGuiFreeTypeBuilderFlags_Monochrome)
RenderMode = FT_RENDER_MODE_MONO;
else
RenderMode = FT_RENDER_MODE_NORMAL;
if (UserFlags & ImGuiFreeTypeBuilderFlags_LoadColor)
LoadFlags |= FT_LOAD_COLOR;
memset(&Info, 0, sizeof(Info));
SetPixelHeight((uint32_t)cfg.SizePixels);
return true;
}
void FreeTypeFont::CloseFont()
{
if (Face)
{
FT_Done_Face(Face);
Face = NULL;
}
}
void FreeTypeFont::SetPixelHeight(int pixel_height)
{
// Vuhdo: I'm not sure how to deal with font sizes properly. As far as I understand, currently ImGui assumes that the 'pixel_height'
// is a maximum height of an any given glyph, i.e. it's the sum of font's ascender and descender. Seems strange to me.
// NB: FT_Set_Pixel_Sizes() doesn't seem to get us the same result.
FT_Size_RequestRec req;
req.type = (UserFlags & ImGuiFreeTypeBuilderFlags_Bitmap) ? FT_SIZE_REQUEST_TYPE_NOMINAL : FT_SIZE_REQUEST_TYPE_REAL_DIM;
req.width = 0;
req.height = (uint32_t)pixel_height * 64;
req.horiResolution = 0;
req.vertResolution = 0;
FT_Request_Size(Face, &req);
// Update font info
FT_Size_Metrics metrics = Face->size->metrics;
Info.PixelHeight = (uint32_t)pixel_height;
Info.Ascender = (float)FT_CEIL(metrics.ascender);
Info.Descender = (float)FT_CEIL(metrics.descender);
Info.LineSpacing = (float)FT_CEIL(metrics.height);
Info.LineGap = (float)FT_CEIL(metrics.height - metrics.ascender + metrics.descender);
Info.MaxAdvanceWidth = (float)FT_CEIL(metrics.max_advance);
}
const FT_Glyph_Metrics* FreeTypeFont::LoadGlyph(uint32_t codepoint)
{
uint32_t glyph_index = FT_Get_Char_Index(Face, codepoint);
if (glyph_index == 0)
return NULL;
FT_Error error = FT_Load_Glyph(Face, glyph_index, LoadFlags);
if (error)
return NULL;
// Need an outline for this to work
FT_GlyphSlot slot = Face->glyph;
IM_ASSERT(slot->format == FT_GLYPH_FORMAT_OUTLINE || slot->format == FT_GLYPH_FORMAT_BITMAP);
// Apply convenience transform (this is not picking from real "Bold"/"Italic" fonts! Merely applying FreeType helper transform. Oblique == Slanting)
if (UserFlags & ImGuiFreeTypeBuilderFlags_Bold)
FT_GlyphSlot_Embolden(slot);
if (UserFlags & ImGuiFreeTypeBuilderFlags_Oblique)
{
FT_GlyphSlot_Oblique(slot);
//FT_BBox bbox;
//FT_Outline_Get_BBox(&slot->outline, &bbox);
//slot->metrics.width = bbox.xMax - bbox.xMin;
//slot->metrics.height = bbox.yMax - bbox.yMin;
}
return &slot->metrics;
}
const FT_Bitmap* FreeTypeFont::RenderGlyphAndGetInfo(GlyphInfo* out_glyph_info)
{
FT_GlyphSlot slot = Face->glyph;
FT_Error error = FT_Render_Glyph(slot, RenderMode);
if (error != 0)
return NULL;
FT_Bitmap* ft_bitmap = &Face->glyph->bitmap;
out_glyph_info->Width = (int)ft_bitmap->width;
out_glyph_info->Height = (int)ft_bitmap->rows;
out_glyph_info->OffsetX = Face->glyph->bitmap_left;
out_glyph_info->OffsetY = -Face->glyph->bitmap_top;
out_glyph_info->AdvanceX = (float)FT_CEIL(slot->advance.x);
out_glyph_info->IsColored = (ft_bitmap->pixel_mode == FT_PIXEL_MODE_BGRA);
return ft_bitmap;
}
void FreeTypeFont::BlitGlyph(const FT_Bitmap* ft_bitmap, uint32_t* dst, uint32_t dst_pitch, unsigned char* multiply_table)
{
IM_ASSERT(ft_bitmap != NULL);
const uint32_t w = ft_bitmap->width;
const uint32_t h = ft_bitmap->rows;
const uint8_t* src = ft_bitmap->buffer;
const uint32_t src_pitch = ft_bitmap->pitch;
switch (ft_bitmap->pixel_mode)
{
case FT_PIXEL_MODE_GRAY: // Grayscale image, 1 byte per pixel.
{
if (multiply_table == NULL)
{
for (uint32_t y = 0; y < h; y++, src += src_pitch, dst += dst_pitch)
for (uint32_t x = 0; x < w; x++)
dst[x] = IM_COL32(255, 255, 255, src[x]);
}
else
{
for (uint32_t y = 0; y < h; y++, src += src_pitch, dst += dst_pitch)
for (uint32_t x = 0; x < w; x++)
dst[x] = IM_COL32(255, 255, 255, multiply_table[src[x]]);
}
break;
}
case FT_PIXEL_MODE_MONO: // Monochrome image, 1 bit per pixel. The bits in each byte are ordered from MSB to LSB.
{
uint8_t color0 = multiply_table ? multiply_table[0] : 0;
uint8_t color1 = multiply_table ? multiply_table[255] : 255;
for (uint32_t y = 0; y < h; y++, src += src_pitch, dst += dst_pitch)
{
uint8_t bits = 0;
const uint8_t* bits_ptr = src;
for (uint32_t x = 0; x < w; x++, bits <<= 1)
{
if ((x & 7) == 0)
bits = *bits_ptr++;
dst[x] = IM_COL32(255, 255, 255, (bits & 0x80) ? color1 : color0);
}
}
break;
}
case FT_PIXEL_MODE_BGRA:
{
// FIXME: Converting pre-multiplied alpha to straight. Doesn't smell good.
#define DE_MULTIPLY(color, alpha) (ImU32)(255.0f * (float)color / (float)alpha + 0.5f)
if (multiply_table == NULL)
{
for (uint32_t y = 0; y < h; y++, src += src_pitch, dst += dst_pitch)
for (uint32_t x = 0; x < w; x++)
{
uint8_t r = src[x * 4 + 2], g = src[x * 4 + 1], b = src[x * 4], a = src[x * 4 + 3];
dst[x] = IM_COL32(DE_MULTIPLY(r, a), DE_MULTIPLY(g, a), DE_MULTIPLY(b, a), a);
}
}
else
{
for (uint32_t y = 0; y < h; y++, src += src_pitch, dst += dst_pitch)
{
for (uint32_t x = 0; x < w; x++)
{
uint8_t r = src[x * 4 + 2], g = src[x * 4 + 1], b = src[x * 4], a = src[x * 4 + 3];
dst[x] = IM_COL32(multiply_table[DE_MULTIPLY(r, a)], multiply_table[DE_MULTIPLY(g, a)], multiply_table[DE_MULTIPLY(b, a)], multiply_table[a]);
}
}
}
#undef DE_MULTIPLY
break;
}
default:
IM_ASSERT(0 && "FreeTypeFont::BlitGlyph(): Unknown bitmap pixel mode!");
}
}
}
#ifndef STB_RECT_PACK_IMPLEMENTATION // in case the user already have an implementation in the _same_ compilation unit (e.g. unity builds)
#ifndef IMGUI_DISABLE_STB_RECT_PACK_IMPLEMENTATION
#define STBRP_ASSERT(x) do { IM_ASSERT(x); } while (0)
#define STBRP_STATIC
#define STB_RECT_PACK_IMPLEMENTATION
#endif
#ifdef IMGUI_STB_RECT_PACK_FILENAME
#include IMGUI_STB_RECT_PACK_FILENAME
#else
#include "imstb_rectpack.h"
#endif
#endif
struct ImFontBuildSrcGlyphFT
{
GlyphInfo Info;
uint32_t Codepoint;
unsigned int* BitmapData; // Point within one of the dst_tmp_bitmap_buffers[] array
ImFontBuildSrcGlyphFT() { memset(this, 0, sizeof(*this)); }
};
struct ImFontBuildSrcDataFT
{
FreeTypeFont Font;
stbrp_rect* Rects; // Rectangle to pack. We first fill in their size and the packer will give us their position.
const ImWchar* SrcRanges; // Ranges as requested by user (user is allowed to request too much, e.g. 0x0020..0xFFFF)
int DstIndex; // Index into atlas->Fonts[] and dst_tmp_array[]
int GlyphsHighest; // Highest requested codepoint
int GlyphsCount; // Glyph count (excluding missing glyphs and glyphs already set by an earlier source font)
ImBitVector GlyphsSet; // Glyph bit map (random access, 1-bit per codepoint. This will be a maximum of 8KB)
ImVector<ImFontBuildSrcGlyphFT> GlyphsList;
};
// Temporary data for one destination ImFont* (multiple source fonts can be merged into one destination ImFont)
struct ImFontBuildDstDataFT
{
int SrcCount; // Number of source fonts targeting this destination font.
int GlyphsHighest;
int GlyphsCount;
ImBitVector GlyphsSet; // This is used to resolve collision when multiple sources are merged into a same destination font.
};
bool ImFontAtlasBuildWithFreeTypeEx(FT_Library ft_library, ImFontAtlas* atlas, unsigned int extra_flags)
{
IM_ASSERT(atlas->ConfigData.Size > 0);
ImFontAtlasBuildInit(atlas);
// Clear atlas
atlas->TexID = (ImTextureID)NULL;
atlas->TexWidth = atlas->TexHeight = 0;
atlas->TexUvScale = ImVec2(0.0f, 0.0f);
atlas->TexUvWhitePixel = ImVec2(0.0f, 0.0f);
atlas->ClearTexData();
// Temporary storage for building
bool src_load_color = false;
ImVector<ImFontBuildSrcDataFT> src_tmp_array;
ImVector<ImFontBuildDstDataFT> dst_tmp_array;
src_tmp_array.resize(atlas->ConfigData.Size);
dst_tmp_array.resize(atlas->Fonts.Size);
memset((void*)src_tmp_array.Data, 0, (size_t)src_tmp_array.size_in_bytes());
memset((void*)dst_tmp_array.Data, 0, (size_t)dst_tmp_array.size_in_bytes());
// 1. Initialize font loading structure, check font data validity
for (int src_i = 0; src_i < atlas->ConfigData.Size; src_i++)
{
ImFontBuildSrcDataFT& src_tmp = src_tmp_array[src_i];
ImFontConfig& cfg = atlas->ConfigData[src_i];
FreeTypeFont& font_face = src_tmp.Font;
IM_ASSERT(cfg.DstFont && (!cfg.DstFont->IsLoaded() || cfg.DstFont->ContainerAtlas == atlas));
// Find index from cfg.DstFont (we allow the user to set cfg.DstFont. Also it makes casual debugging nicer than when storing indices)
src_tmp.DstIndex = -1;
for (int output_i = 0; output_i < atlas->Fonts.Size && src_tmp.DstIndex == -1; output_i++)
if (cfg.DstFont == atlas->Fonts[output_i])
src_tmp.DstIndex = output_i;
IM_ASSERT(src_tmp.DstIndex != -1); // cfg.DstFont not pointing within atlas->Fonts[] array?
if (src_tmp.DstIndex == -1)
return false;
// Load font
if (!font_face.InitFont(ft_library, cfg, extra_flags))
return false;
// Measure highest codepoints
src_load_color |= (cfg.FontBuilderFlags & ImGuiFreeTypeBuilderFlags_LoadColor) != 0;
ImFontBuildDstDataFT& dst_tmp = dst_tmp_array[src_tmp.DstIndex];
src_tmp.SrcRanges = cfg.GlyphRanges ? cfg.GlyphRanges : atlas->GetGlyphRangesDefault();
for (const ImWchar* src_range = src_tmp.SrcRanges; src_range[0] && src_range[1]; src_range += 2)
src_tmp.GlyphsHighest = ImMax(src_tmp.GlyphsHighest, (int)src_range[1]);
dst_tmp.SrcCount++;
dst_tmp.GlyphsHighest = ImMax(dst_tmp.GlyphsHighest, src_tmp.GlyphsHighest);
}
// 2. For every requested codepoint, check for their presence in the font data, and handle redundancy or overlaps between source fonts to avoid unused glyphs.
int total_glyphs_count = 0;
for (int src_i = 0; src_i < src_tmp_array.Size; src_i++)
{
ImFontBuildSrcDataFT& src_tmp = src_tmp_array[src_i];
ImFontBuildDstDataFT& dst_tmp = dst_tmp_array[src_tmp.DstIndex];
src_tmp.GlyphsSet.Create(src_tmp.GlyphsHighest + 1);
if (dst_tmp.GlyphsSet.Storage.empty())
dst_tmp.GlyphsSet.Create(dst_tmp.GlyphsHighest + 1);
for (const ImWchar* src_range = src_tmp.SrcRanges; src_range[0] && src_range[1]; src_range += 2)
for (int codepoint = src_range[0]; codepoint <= (int)src_range[1]; codepoint++)
{
if (dst_tmp.GlyphsSet.TestBit(codepoint)) // Don't overwrite existing glyphs. We could make this an option (e.g. MergeOverwrite)
continue;
uint32_t glyph_index = FT_Get_Char_Index(src_tmp.Font.Face, codepoint); // It is actually in the font? (FIXME-OPT: We are not storing the glyph_index..)
if (glyph_index == 0)
continue;
// Add to avail set/counters
src_tmp.GlyphsCount++;
dst_tmp.GlyphsCount++;
src_tmp.GlyphsSet.SetBit(codepoint);
dst_tmp.GlyphsSet.SetBit(codepoint);
total_glyphs_count++;
}
}
// 3. Unpack our bit map into a flat list (we now have all the Unicode points that we know are requested _and_ available _and_ not overlapping another)
for (int src_i = 0; src_i < src_tmp_array.Size; src_i++)
{
ImFontBuildSrcDataFT& src_tmp = src_tmp_array[src_i];
src_tmp.GlyphsList.reserve(src_tmp.GlyphsCount);
IM_ASSERT(sizeof(src_tmp.GlyphsSet.Storage.Data[0]) == sizeof(ImU32));
const ImU32* it_begin = src_tmp.GlyphsSet.Storage.begin();
const ImU32* it_end = src_tmp.GlyphsSet.Storage.end();
for (const ImU32* it = it_begin; it < it_end; it++)
if (ImU32 entries_32 = *it)
for (ImU32 bit_n = 0; bit_n < 32; bit_n++)
if (entries_32 & ((ImU32)1 << bit_n))
{
ImFontBuildSrcGlyphFT src_glyph;
src_glyph.Codepoint = (ImWchar)(((it - it_begin) << 5) + bit_n);
//src_glyph.GlyphIndex = 0; // FIXME-OPT: We had this info in the previous step and lost it..
src_tmp.GlyphsList.push_back(src_glyph);
}
src_tmp.GlyphsSet.Clear();
IM_ASSERT(src_tmp.GlyphsList.Size == src_tmp.GlyphsCount);
}
for (int dst_i = 0; dst_i < dst_tmp_array.Size; dst_i++)
dst_tmp_array[dst_i].GlyphsSet.Clear();
dst_tmp_array.clear();
// Allocate packing character data and flag packed characters buffer as non-packed (x0=y0=x1=y1=0)
// (We technically don't need to zero-clear buf_rects, but let's do it for the sake of sanity)
ImVector<stbrp_rect> buf_rects;
buf_rects.resize(total_glyphs_count);
memset(buf_rects.Data, 0, (size_t)buf_rects.size_in_bytes());
// Allocate temporary rasterization data buffers.
// We could not find a way to retrieve accurate glyph size without rendering them.
// (e.g. slot->metrics->width not always matching bitmap->width, especially considering the Oblique transform)
// We allocate in chunks of 256 KB to not waste too much extra memory ahead. Hopefully users of FreeType won't find the temporary allocations.
const int BITMAP_BUFFERS_CHUNK_SIZE = 256 * 1024;
int buf_bitmap_current_used_bytes = 0;
ImVector<unsigned char*> buf_bitmap_buffers;
buf_bitmap_buffers.push_back((unsigned char*)IM_ALLOC(BITMAP_BUFFERS_CHUNK_SIZE));
// 4. Gather glyphs sizes so we can pack them in our virtual canvas.
// 8. Render/rasterize font characters into the texture
int total_surface = 0;
int buf_rects_out_n = 0;
for (int src_i = 0; src_i < src_tmp_array.Size; src_i++)
{
ImFontBuildSrcDataFT& src_tmp = src_tmp_array[src_i];
ImFontConfig& cfg = atlas->ConfigData[src_i];
if (src_tmp.GlyphsCount == 0)
continue;
src_tmp.Rects = &buf_rects[buf_rects_out_n];
buf_rects_out_n += src_tmp.GlyphsCount;
// Compute multiply table if requested
const bool multiply_enabled = (cfg.RasterizerMultiply != 1.0f);
unsigned char multiply_table[256];
if (multiply_enabled)
ImFontAtlasBuildMultiplyCalcLookupTable(multiply_table, cfg.RasterizerMultiply);
// Gather the sizes of all rectangles we will need to pack
const int padding = atlas->TexGlyphPadding;
for (int glyph_i = 0; glyph_i < src_tmp.GlyphsList.Size; glyph_i++)
{
ImFontBuildSrcGlyphFT& src_glyph = src_tmp.GlyphsList[glyph_i];
const FT_Glyph_Metrics* metrics = src_tmp.Font.LoadGlyph(src_glyph.Codepoint);
if (metrics == NULL)
continue;
// Render glyph into a bitmap (currently held by FreeType)
const FT_Bitmap* ft_bitmap = src_tmp.Font.RenderGlyphAndGetInfo(&src_glyph.Info);
if (ft_bitmap == NULL)
continue;
// Allocate new temporary chunk if needed
const int bitmap_size_in_bytes = src_glyph.Info.Width * src_glyph.Info.Height * 4;
if (buf_bitmap_current_used_bytes + bitmap_size_in_bytes > BITMAP_BUFFERS_CHUNK_SIZE)
{
buf_bitmap_current_used_bytes = 0;
buf_bitmap_buffers.push_back((unsigned char*)IM_ALLOC(BITMAP_BUFFERS_CHUNK_SIZE));
}
// Blit rasterized pixels to our temporary buffer and keep a pointer to it.
src_glyph.BitmapData = (unsigned int*)(buf_bitmap_buffers.back() + buf_bitmap_current_used_bytes);
buf_bitmap_current_used_bytes += bitmap_size_in_bytes;
src_tmp.Font.BlitGlyph(ft_bitmap, src_glyph.BitmapData, src_glyph.Info.Width, multiply_enabled ? multiply_table : NULL);
src_tmp.Rects[glyph_i].w = (stbrp_coord)(src_glyph.Info.Width + padding);
src_tmp.Rects[glyph_i].h = (stbrp_coord)(src_glyph.Info.Height + padding);
total_surface += src_tmp.Rects[glyph_i].w * src_tmp.Rects[glyph_i].h;
}
}
// We need a width for the skyline algorithm, any width!
// The exact width doesn't really matter much, but some API/GPU have texture size limitations and increasing width can decrease height.
// User can override TexDesiredWidth and TexGlyphPadding if they wish, otherwise we use a simple heuristic to select the width based on expected surface.
const int surface_sqrt = (int)ImSqrt((float)total_surface) + 1;
atlas->TexHeight = 0;
if (atlas->TexDesiredWidth > 0)
atlas->TexWidth = atlas->TexDesiredWidth;
else
atlas->TexWidth = (surface_sqrt >= 4096 * 0.7f) ? 4096 : (surface_sqrt >= 2048 * 0.7f) ? 2048 : (surface_sqrt >= 1024 * 0.7f) ? 1024 : 512;
// 5. Start packing
// Pack our extra data rectangles first, so it will be on the upper-left corner of our texture (UV will have small values).
const int TEX_HEIGHT_MAX = 1024 * 32;
const int num_nodes_for_packing_algorithm = atlas->TexWidth - atlas->TexGlyphPadding;
ImVector<stbrp_node> pack_nodes;
pack_nodes.resize(num_nodes_for_packing_algorithm);
stbrp_context pack_context;
stbrp_init_target(&pack_context, atlas->TexWidth, TEX_HEIGHT_MAX, pack_nodes.Data, pack_nodes.Size);
ImFontAtlasBuildPackCustomRects(atlas, &pack_context);
// 6. Pack each source font. No rendering yet, we are working with rectangles in an infinitely tall texture at this point.
for (int src_i = 0; src_i < src_tmp_array.Size; src_i++)
{
ImFontBuildSrcDataFT& src_tmp = src_tmp_array[src_i];
if (src_tmp.GlyphsCount == 0)
continue;
stbrp_pack_rects(&pack_context, src_tmp.Rects, src_tmp.GlyphsCount);
// Extend texture height and mark missing glyphs as non-packed so we won't render them.
// FIXME: We are not handling packing failure here (would happen if we got off TEX_HEIGHT_MAX or if a single if larger than TexWidth?)
for (int glyph_i = 0; glyph_i < src_tmp.GlyphsCount; glyph_i++)
if (src_tmp.Rects[glyph_i].was_packed)
atlas->TexHeight = ImMax(atlas->TexHeight, src_tmp.Rects[glyph_i].y + src_tmp.Rects[glyph_i].h);
}
// 7. Allocate texture
atlas->TexHeight = (atlas->Flags & ImFontAtlasFlags_NoPowerOfTwoHeight) ? (atlas->TexHeight + 1) : ImUpperPowerOfTwo(atlas->TexHeight);
atlas->TexUvScale = ImVec2(1.0f / atlas->TexWidth, 1.0f / atlas->TexHeight);
if (src_load_color)
{
size_t tex_size = (size_t)atlas->TexWidth * atlas->TexHeight * 4;
atlas->TexPixelsRGBA32 = (unsigned int*)IM_ALLOC(tex_size);
memset(atlas->TexPixelsRGBA32, 0, tex_size);
}
else
{
size_t tex_size = (size_t)atlas->TexWidth * atlas->TexHeight * 1;
atlas->TexPixelsAlpha8 = (unsigned char*)IM_ALLOC(tex_size);
memset(atlas->TexPixelsAlpha8, 0, tex_size);
}
// 8. Copy rasterized font characters back into the main texture
// 9. Setup ImFont and glyphs for runtime
bool tex_use_colors = false;
for (int src_i = 0; src_i < src_tmp_array.Size; src_i++)
{
ImFontBuildSrcDataFT& src_tmp = src_tmp_array[src_i];
if (src_tmp.GlyphsCount == 0)
continue;
// When merging fonts with MergeMode=true:
// - We can have multiple input fonts writing into a same destination font.
// - dst_font->ConfigData is != from cfg which is our source configuration.
ImFontConfig& cfg = atlas->ConfigData[src_i];
ImFont* dst_font = cfg.DstFont;
const float ascent = src_tmp.Font.Info.Ascender;
const float descent = src_tmp.Font.Info.Descender;
ImFontAtlasBuildSetupFont(atlas, dst_font, &cfg, ascent, descent);
const float font_off_x = cfg.GlyphOffset.x;
const float font_off_y = cfg.GlyphOffset.y + IM_ROUND(dst_font->Ascent);
const int padding = atlas->TexGlyphPadding;
for (int glyph_i = 0; glyph_i < src_tmp.GlyphsCount; glyph_i++)
{
ImFontBuildSrcGlyphFT& src_glyph = src_tmp.GlyphsList[glyph_i];
stbrp_rect& pack_rect = src_tmp.Rects[glyph_i];
IM_ASSERT(pack_rect.was_packed);
if (pack_rect.w == 0 && pack_rect.h == 0)
continue;
GlyphInfo& info = src_glyph.Info;
IM_ASSERT(info.Width + padding <= pack_rect.w);
IM_ASSERT(info.Height + padding <= pack_rect.h);
const int tx = pack_rect.x + padding;
const int ty = pack_rect.y + padding;
// Register glyph
float x0 = info.OffsetX + font_off_x;
float y0 = info.OffsetY + font_off_y;
float x1 = x0 + info.Width;
float y1 = y0 + info.Height;
float u0 = (tx) / (float)atlas->TexWidth;
float v0 = (ty) / (float)atlas->TexHeight;
float u1 = (tx + info.Width) / (float)atlas->TexWidth;
float v1 = (ty + info.Height) / (float)atlas->TexHeight;
dst_font->AddGlyph(&cfg, (ImWchar)src_glyph.Codepoint, x0, y0, x1, y1, u0, v0, u1, v1, info.AdvanceX);
ImFontGlyph* dst_glyph = &dst_font->Glyphs.back();
IM_ASSERT(dst_glyph->Codepoint == src_glyph.Codepoint);
if (src_glyph.Info.IsColored)
dst_glyph->Colored = tex_use_colors = true;
// Blit from temporary buffer to final texture
size_t blit_src_stride = (size_t)src_glyph.Info.Width;
size_t blit_dst_stride = (size_t)atlas->TexWidth;
unsigned int* blit_src = src_glyph.BitmapData;
if (atlas->TexPixelsAlpha8 != NULL)
{
unsigned char* blit_dst = atlas->TexPixelsAlpha8 + (ty * blit_dst_stride) + tx;
for (int y = 0; y < info.Height; y++, blit_dst += blit_dst_stride, blit_src += blit_src_stride)
for (int x = 0; x < info.Width; x++)
blit_dst[x] = (unsigned char)((blit_src[x] >> IM_COL32_A_SHIFT) & 0xFF);
}
else
{
unsigned int* blit_dst = atlas->TexPixelsRGBA32 + (ty * blit_dst_stride) + tx;
for (int y = 0; y < info.Height; y++, blit_dst += blit_dst_stride, blit_src += blit_src_stride)
for (int x = 0; x < info.Width; x++)
blit_dst[x] = blit_src[x];
}
}
src_tmp.Rects = NULL;
}
atlas->TexPixelsUseColors = tex_use_colors;
// Cleanup
for (int buf_i = 0; buf_i < buf_bitmap_buffers.Size; buf_i++)
IM_FREE(buf_bitmap_buffers[buf_i]);
src_tmp_array.clear_destruct();
ImFontAtlasBuildFinish(atlas);
return true;
}
// FreeType memory allocation callbacks
static void* FreeType_Alloc(FT_Memory /*memory*/, long size)
{
return GImGuiFreeTypeAllocFunc((size_t)size, GImGuiFreeTypeAllocatorUserData);
}
static void FreeType_Free(FT_Memory /*memory*/, void* block)
{
GImGuiFreeTypeFreeFunc(block, GImGuiFreeTypeAllocatorUserData);
}
static void* FreeType_Realloc(FT_Memory /*memory*/, long cur_size, long new_size, void* block)
{
// Implement realloc() as we don't ask user to provide it.
if (block == NULL)
return GImGuiFreeTypeAllocFunc((size_t)new_size, GImGuiFreeTypeAllocatorUserData);
if (new_size == 0)
{
GImGuiFreeTypeFreeFunc(block, GImGuiFreeTypeAllocatorUserData);
return NULL;
}
if (new_size > cur_size)
{
void* new_block = GImGuiFreeTypeAllocFunc((size_t)new_size, GImGuiFreeTypeAllocatorUserData);
memcpy(new_block, block, (size_t)cur_size);
GImGuiFreeTypeFreeFunc(block, GImGuiFreeTypeAllocatorUserData);
return new_block;
}
return block;
}
static bool ImFontAtlasBuildWithFreeType(ImFontAtlas* atlas)
{
// FreeType memory management: https://www.freetype.org/freetype2/docs/design/design-4.html
FT_MemoryRec_ memory_rec = {};
memory_rec.user = NULL;
memory_rec.alloc = &FreeType_Alloc;
memory_rec.free = &FreeType_Free;
memory_rec.realloc = &FreeType_Realloc;
// https://www.freetype.org/freetype2/docs/reference/ft2-module_management.html#FT_New_Library
FT_Library ft_library;
FT_Error error = FT_New_Library(&memory_rec, &ft_library);
if (error != 0)
return false;
// If you don't call FT_Add_Default_Modules() the rest of code may work, but FreeType won't use our custom allocator.
FT_Add_Default_Modules(ft_library);
bool ret = ImFontAtlasBuildWithFreeTypeEx(ft_library, atlas, atlas->FontBuilderFlags);
FT_Done_Library(ft_library);
return ret;
}
const ImFontBuilderIO* ImGuiFreeType::GetBuilderForFreeType()
{
static ImFontBuilderIO io;
io.FontBuilder_Build = ImFontAtlasBuildWithFreeType;
return &io;
}
void ImGuiFreeType::SetAllocatorFunctions(void* (*alloc_func)(size_t sz, void* user_data), void (*free_func)(void* ptr, void* user_data), void* user_data)
{
GImGuiFreeTypeAllocFunc = alloc_func;
GImGuiFreeTypeFreeFunc = free_func;
GImGuiFreeTypeAllocatorUserData = user_data;
}

View File

@ -0,0 +1,50 @@
// dear imgui: FreeType font builder (used as a replacement for the stb_truetype builder)
// (headers)
#pragma once
#include "imgui.h" // IMGUI_API
// Forward declarations
struct ImFontAtlas;
struct ImFontBuilderIO;
// Hinting greatly impacts visuals (and glyph sizes).
// - By default, hinting is enabled and the font's native hinter is preferred over the auto-hinter.
// - When disabled, FreeType generates blurrier glyphs, more or less matches the stb_truetype.h
// - The Default hinting mode usually looks good, but may distort glyphs in an unusual way.
// - The Light hinting mode generates fuzzier glyphs but better matches Microsoft's rasterizer.
// You can set those flags globaly in ImFontAtlas::FontBuilderFlags
// You can set those flags on a per font basis in ImFontConfig::FontBuilderFlags
enum ImGuiFreeTypeBuilderFlags
{
ImGuiFreeTypeBuilderFlags_NoHinting = 1 << 0, // Disable hinting. This generally generates 'blurrier' bitmap glyphs when the glyph are rendered in any of the anti-aliased modes.
ImGuiFreeTypeBuilderFlags_NoAutoHint = 1 << 1, // Disable auto-hinter.
ImGuiFreeTypeBuilderFlags_ForceAutoHint = 1 << 2, // Indicates that the auto-hinter is preferred over the font's native hinter.
ImGuiFreeTypeBuilderFlags_LightHinting = 1 << 3, // A lighter hinting algorithm for gray-level modes. Many generated glyphs are fuzzier but better resemble their original shape. This is achieved by snapping glyphs to the pixel grid only vertically (Y-axis), as is done by Microsoft's ClearType and Adobe's proprietary font renderer. This preserves inter-glyph spacing in horizontal text.
ImGuiFreeTypeBuilderFlags_MonoHinting = 1 << 4, // Strong hinting algorithm that should only be used for monochrome output.
ImGuiFreeTypeBuilderFlags_Bold = 1 << 5, // Styling: Should we artificially embolden the font?
ImGuiFreeTypeBuilderFlags_Oblique = 1 << 6, // Styling: Should we slant the font, emulating italic style?
ImGuiFreeTypeBuilderFlags_Monochrome = 1 << 7, // Disable anti-aliasing. Combine this with MonoHinting for best results!
ImGuiFreeTypeBuilderFlags_LoadColor = 1 << 8, // Enable FreeType color-layered glyphs
ImGuiFreeTypeBuilderFlags_Bitmap = 1 << 9 // Enable FreeType bitmap glyphs
};
namespace ImGuiFreeType
{
// This is automatically assigned when using '#define IMGUI_ENABLE_FREETYPE'.
// If you need to dynamically select between multiple builders:
// - you can manually assign this builder with 'atlas->FontBuilderIO = ImGuiFreeType::GetBuilderForFreeType()'
// - prefer deep-copying this into your own ImFontBuilderIO instance if you use hot-reloading that messes up static data.
IMGUI_API const ImFontBuilderIO* GetBuilderForFreeType();
// Override allocators. By default ImGuiFreeType will use IM_ALLOC()/IM_FREE()
// However, as FreeType does lots of allocations we provide a way for the user to redirect it to a separate memory heap if desired.
IMGUI_API void SetAllocatorFunctions(void* (*alloc_func)(size_t sz, void* user_data), void (*free_func)(void* ptr, void* user_data), void* user_data = NULL);
// Obsolete names (will be removed soon)
// Prefer using '#define IMGUI_ENABLE_FREETYPE'
#ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
static inline bool BuildFontAtlas(ImFontAtlas* atlas, unsigned int flags = 0) { atlas->FontBuilderIO = GetBuilderForFreeType(); atlas->FontBuilderFlags = flags; return atlas->Build(); }
#endif
}

View File

@ -0,0 +1 @@
[]

View File

@ -0,0 +1,3 @@
local defs = {}
return defs

View File

@ -0,0 +1,258 @@
----------------overloadings---------------------------
ImColor_ImColor 5
1 nil ImColor_ImColorNil ()
2 nil ImColor_ImColorInt (int,int,int,int)
3 nil ImColor_ImColorU32 (ImU32)
4 nil ImColor_ImColorFloat (float,float,float,float)
5 nil ImColor_ImColorVec4 (const ImVec4)
ImDrawList_AddText 2
1 void ImDrawList_AddTextVec2 (const ImVec2,ImU32,const char*,const char*)
2 void ImDrawList_AddTextFontPtr (const ImFont*,float,const ImVec2,ImU32,const char*,const char*,float,const ImVec4*)
ImGuiPtrOrIndex_ImGuiPtrOrIndex 2
1 nil ImGuiPtrOrIndex_ImGuiPtrOrIndexPtr (void*)
2 nil ImGuiPtrOrIndex_ImGuiPtrOrIndexInt (int)
ImGuiStoragePair_ImGuiStoragePair 3
1 nil ImGuiStoragePair_ImGuiStoragePairInt (ImGuiID,int)
2 nil ImGuiStoragePair_ImGuiStoragePairFloat (ImGuiID,float)
3 nil ImGuiStoragePair_ImGuiStoragePairPtr (ImGuiID,void*)
ImGuiStyleMod_ImGuiStyleMod 3
1 nil ImGuiStyleMod_ImGuiStyleModInt (ImGuiStyleVar,int)
2 nil ImGuiStyleMod_ImGuiStyleModFloat (ImGuiStyleVar,float)
3 nil ImGuiStyleMod_ImGuiStyleModVec2 (ImGuiStyleVar,ImVec2)
ImGuiTextRange_ImGuiTextRange 2
1 nil ImGuiTextRange_ImGuiTextRangeNil ()
2 nil ImGuiTextRange_ImGuiTextRangeStr (const char*,const char*)
ImGuiWindow_GetID 3
1 ImGuiID ImGuiWindow_GetIDStr (const char*,const char*)
2 ImGuiID ImGuiWindow_GetIDPtr (const void*)
3 ImGuiID ImGuiWindow_GetIDInt (int)
ImGuiWindow_GetIDNoKeepAlive 3
1 ImGuiID ImGuiWindow_GetIDNoKeepAliveStr (const char*,const char*)
2 ImGuiID ImGuiWindow_GetIDNoKeepAlivePtr (const void*)
3 ImGuiID ImGuiWindow_GetIDNoKeepAliveInt (int)
ImPool_Remove 2
1 void ImPool_RemoveTPtr (ImGuiID,const T*)
2 void ImPool_RemovePoolIdx (ImGuiID,ImPoolIdx)
ImRect_Add 2
1 void ImRect_AddVec2 (const ImVec2)
2 void ImRect_AddRect (const ImRect)
ImRect_Contains 2
1 bool ImRect_ContainsVec2 (const ImVec2)const
2 bool ImRect_ContainsRect (const ImRect)const
ImRect_Expand 2
1 void ImRect_ExpandFloat (const float)
2 void ImRect_ExpandVec2 (const ImVec2)
ImRect_ImRect 4
1 nil ImRect_ImRectNil ()
2 nil ImRect_ImRectVec2 (const ImVec2,const ImVec2)
3 nil ImRect_ImRectVec4 (const ImVec4)
4 nil ImRect_ImRectFloat (float,float,float,float)
ImSpan_ImSpan 3
1 nil ImSpan_ImSpanNil ()
2 nil ImSpan_ImSpanTPtrInt (T*,int)
3 nil ImSpan_ImSpanTPtrTPtr (T*,T*)
ImSpan_begin 2
1 T* ImSpan_beginNil ()
2 const T* ImSpan_begin_const ()const
ImSpan_end 2
1 T* ImSpan_endNil ()
2 const T* ImSpan_end_const ()const
ImSpan_set 2
1 void ImSpan_setInt (T*,int)
2 void ImSpan_setTPtr (T*,T*)
ImVec1_ImVec1 2
1 nil ImVec1_ImVec1Nil ()
2 nil ImVec1_ImVec1Float (float)
ImVec2_ImVec2 2
1 nil ImVec2_ImVec2Nil ()
2 nil ImVec2_ImVec2Float (float,float)
ImVec2ih_ImVec2ih 3
1 nil ImVec2ih_ImVec2ihNil ()
2 nil ImVec2ih_ImVec2ihshort (short,short)
3 nil ImVec2ih_ImVec2ihVec2 (const ImVec2)
ImVec4_ImVec4 2
1 nil ImVec4_ImVec4Nil ()
2 nil ImVec4_ImVec4Float (float,float,float,float)
ImVector_ImVector 2
1 nil ImVector_ImVectorNil ()
2 nil ImVector_ImVectorVector (const ImVector)
ImVector_back 2
1 T* ImVector_backNil ()
2 const T* ImVector_back_const ()const
ImVector_begin 2
1 T* ImVector_beginNil ()
2 const T* ImVector_begin_const ()const
ImVector_end 2
1 T* ImVector_endNil ()
2 const T* ImVector_end_const ()const
ImVector_erase 2
1 T* ImVector_eraseNil (const T*)
2 T* ImVector_eraseTPtr (const T*,const T*)
ImVector_find 2
1 T* ImVector_findNil (const T)
2 const T* ImVector_find_const (const T)const
ImVector_front 2
1 T* ImVector_frontNil ()
2 const T* ImVector_front_const ()const
ImVector_resize 2
1 void ImVector_resizeNil (int)
2 void ImVector_resizeT (int,const T)
igBeginChild 2
1 bool igBeginChildStr (const char*,const ImVec2,bool,ImGuiWindowFlags)
2 bool igBeginChildID (ImGuiID,const ImVec2,bool,ImGuiWindowFlags)
igCheckboxFlags 4
1 bool igCheckboxFlagsIntPtr (const char*,int*,int)
2 bool igCheckboxFlagsUintPtr (const char*,unsigned int*,unsigned int)
3 bool igCheckboxFlagsS64Ptr (const char*,ImS64*,ImS64)
4 bool igCheckboxFlagsU64Ptr (const char*,ImU64*,ImU64)
igCollapsingHeader 2
1 bool igCollapsingHeaderTreeNodeFlags (const char*,ImGuiTreeNodeFlags)
2 bool igCollapsingHeaderBoolPtr (const char*,bool*,ImGuiTreeNodeFlags)
igCombo 3
1 bool igComboStr_arr (const char*,int*,const char* const[],int,int)
2 bool igComboStr (const char*,int*,const char*,int)
3 bool igComboFnBoolPtr (const char*,int*,bool(*)(void*,int,const char**),void*,int,int)
igGetBackgroundDrawList 2
1 ImDrawList* igGetBackgroundDrawListNil ()
2 ImDrawList* igGetBackgroundDrawListViewportPtr (ImGuiViewport*)
igGetColorU32 3
1 ImU32 igGetColorU32Col (ImGuiCol,float)
2 ImU32 igGetColorU32Vec4 (const ImVec4)
3 ImU32 igGetColorU32U32 (ImU32)
igGetForegroundDrawList 3
1 ImDrawList* igGetForegroundDrawListNil ()
2 ImDrawList* igGetForegroundDrawListViewportPtr (ImGuiViewport*)
3 ImDrawList* igGetForegroundDrawListWindowPtr (ImGuiWindow*)
igGetID 3
1 ImGuiID igGetIDStr (const char*)
2 ImGuiID igGetIDStrStr (const char*,const char*)
3 ImGuiID igGetIDPtr (const void*)
igImAbs 3
1 int igImAbsInt (int)
2 float igImAbsFloat (float)
3 double igImAbsdouble (double)
igImFloor 2
1 float igImFloorFloat (float)
2 ImVec2 igImFloorVec2 (const ImVec2)
igImIsPowerOfTwo 2
1 bool igImIsPowerOfTwoInt (int)
2 bool igImIsPowerOfTwoU64 (ImU64)
igImLengthSqr 2
1 float igImLengthSqrVec2 (const ImVec2)
2 float igImLengthSqrVec4 (const ImVec4)
igImLerp 3
1 ImVec2 igImLerpVec2Float (const ImVec2,const ImVec2,float)
2 ImVec2 igImLerpVec2Vec2 (const ImVec2,const ImVec2,const ImVec2)
3 ImVec4 igImLerpVec4 (const ImVec4,const ImVec4,float)
igImLog 2
1 float igImLogFloat (float)
2 double igImLogdouble (double)
igImPow 2
1 float igImPowFloat (float,float)
2 double igImPowdouble (double,double)
igImRsqrt 2
1 float igImRsqrtFloat (float)
2 double igImRsqrtdouble (double)
igImSign 2
1 float igImSignFloat (float)
2 double igImSigndouble (double)
igIsPopupOpen 2
1 bool igIsPopupOpenStr (const char*,ImGuiPopupFlags)
2 bool igIsPopupOpenID (ImGuiID,ImGuiPopupFlags)
igIsRectVisible 2
1 bool igIsRectVisibleNil (const ImVec2)
2 bool igIsRectVisibleVec2 (const ImVec2,const ImVec2)
igItemSize 2
1 void igItemSizeVec2 (const ImVec2,float)
2 void igItemSizeRect (const ImRect,float)
igListBox 2
1 bool igListBoxStr_arr (const char*,int*,const char* const[],int,int)
2 bool igListBoxFnBoolPtr (const char*,int*,bool(*)(void*,int,const char**),void*,int,int)
igMarkIniSettingsDirty 2
1 void igMarkIniSettingsDirtyNil ()
2 void igMarkIniSettingsDirtyWindowPtr (ImGuiWindow*)
igMenuItem 2
1 bool igMenuItemBool (const char*,const char*,bool,bool)
2 bool igMenuItemBoolPtr (const char*,const char*,bool*,bool)
igOpenPopup 2
1 void igOpenPopupStr (const char*,ImGuiPopupFlags)
2 void igOpenPopupID (ImGuiID,ImGuiPopupFlags)
igPlotHistogram 2
1 void igPlotHistogramFloatPtr (const char*,const float*,int,int,const char*,float,float,ImVec2,int)
2 void igPlotHistogramFnFloatPtr (const char*,float(*)(void*,int),void*,int,int,const char*,float,float,ImVec2)
igPlotLines 2
1 void igPlotLinesFloatPtr (const char*,const float*,int,int,const char*,float,float,ImVec2,int)
2 void igPlotLinesFnFloatPtr (const char*,float(*)(void*,int),void*,int,int,const char*,float,float,ImVec2)
igPushID 4
1 void igPushIDStr (const char*)
2 void igPushIDStrStr (const char*,const char*)
3 void igPushIDPtr (const void*)
4 void igPushIDInt (int)
igPushStyleColor 2
1 void igPushStyleColorU32 (ImGuiCol,ImU32)
2 void igPushStyleColorVec4 (ImGuiCol,const ImVec4)
igPushStyleVar 2
1 void igPushStyleVarFloat (ImGuiStyleVar,float)
2 void igPushStyleVarVec2 (ImGuiStyleVar,const ImVec2)
igRadioButton 2
1 bool igRadioButtonBool (const char*,bool)
2 bool igRadioButtonIntPtr (const char*,int*,int)
igSelectable 2
1 bool igSelectableBool (const char*,bool,ImGuiSelectableFlags,const ImVec2)
2 bool igSelectableBoolPtr (const char*,bool*,ImGuiSelectableFlags,const ImVec2)
igSetScrollFromPosX 2
1 void igSetScrollFromPosXFloat (float,float)
2 void igSetScrollFromPosXWindowPtr (ImGuiWindow*,float,float)
igSetScrollFromPosY 2
1 void igSetScrollFromPosYFloat (float,float)
2 void igSetScrollFromPosYWindowPtr (ImGuiWindow*,float,float)
igSetScrollX 2
1 void igSetScrollXFloat (float)
2 void igSetScrollXWindowPtr (ImGuiWindow*,float)
igSetScrollY 2
1 void igSetScrollYFloat (float)
2 void igSetScrollYWindowPtr (ImGuiWindow*,float)
igSetWindowCollapsed 3
1 void igSetWindowCollapsedBool (bool,ImGuiCond)
2 void igSetWindowCollapsedStr (const char*,bool,ImGuiCond)
3 void igSetWindowCollapsedWindowPtr (ImGuiWindow*,bool,ImGuiCond)
igSetWindowFocus 2
1 void igSetWindowFocusNil ()
2 void igSetWindowFocusStr (const char*)
igSetWindowPos 3
1 void igSetWindowPosVec2 (const ImVec2,ImGuiCond)
2 void igSetWindowPosStr (const char*,const ImVec2,ImGuiCond)
3 void igSetWindowPosWindowPtr (ImGuiWindow*,const ImVec2,ImGuiCond)
igSetWindowSize 3
1 void igSetWindowSizeVec2 (const ImVec2,ImGuiCond)
2 void igSetWindowSizeStr (const char*,const ImVec2,ImGuiCond)
3 void igSetWindowSizeWindowPtr (ImGuiWindow*,const ImVec2,ImGuiCond)
igTableGcCompactTransientBuffers 2
1 void igTableGcCompactTransientBuffersTablePtr (ImGuiTable*)
2 void igTableGcCompactTransientBuffersTableTempDataPtr (ImGuiTableTempData*)
igTableGetColumnName 2
1 const char* igTableGetColumnNameInt (int)
2 const char* igTableGetColumnNameTablePtr (const ImGuiTable*,int)
igTreeNode 3
1 bool igTreeNodeStr (const char*)
2 bool igTreeNodeStrStr (const char*,const char*,...)
3 bool igTreeNodePtr (const void*,const char*,...)
igTreeNodeEx 3
1 bool igTreeNodeExStr (const char*,ImGuiTreeNodeFlags)
2 bool igTreeNodeExStrStr (const char*,ImGuiTreeNodeFlags,const char*,...)
3 bool igTreeNodeExPtr (const void*,ImGuiTreeNodeFlags,const char*,...)
igTreeNodeExV 2
1 bool igTreeNodeExVStr (const char*,ImGuiTreeNodeFlags,const char*,va_list)
2 bool igTreeNodeExVPtr (const void*,ImGuiTreeNodeFlags,const char*,va_list)
igTreeNodeV 2
1 bool igTreeNodeVStr (const char*,const char*,va_list)
2 bool igTreeNodeVPtr (const void*,const char*,va_list)
igTreePush 2
1 void igTreePushStr (const char*)
2 void igTreePushPtr (const void*)
igValue 4
1 void igValueBool (const char*,bool)
2 void igValueInt (const char*,int)
3 void igValueUint (const char*,unsigned int)
4 void igValueFloat (const char*,float,const char*)
180 overloaded

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,166 @@
{
"ImBitVector": "struct ImBitVector",
"ImColor": "struct ImColor",
"ImDrawCallback": "void(*)(const ImDrawList* parent_list,const ImDrawCmd* cmd);",
"ImDrawChannel": "struct ImDrawChannel",
"ImDrawCmd": "struct ImDrawCmd",
"ImDrawCmdHeader": "struct ImDrawCmdHeader",
"ImDrawData": "struct ImDrawData",
"ImDrawDataBuilder": "struct ImDrawDataBuilder",
"ImDrawFlags": "int",
"ImDrawIdx": "unsigned short",
"ImDrawList": "struct ImDrawList",
"ImDrawListFlags": "int",
"ImDrawListSharedData": "struct ImDrawListSharedData",
"ImDrawListSplitter": "struct ImDrawListSplitter",
"ImDrawVert": "struct ImDrawVert",
"ImFileHandle": "FILE*",
"ImFont": "struct ImFont",
"ImFontAtlas": "struct ImFontAtlas",
"ImFontAtlasCustomRect": "struct ImFontAtlasCustomRect",
"ImFontAtlasFlags": "int",
"ImFontBuilderIO": "struct ImFontBuilderIO",
"ImFontConfig": "struct ImFontConfig",
"ImFontGlyph": "struct ImFontGlyph",
"ImFontGlyphRangesBuilder": "struct ImFontGlyphRangesBuilder",
"ImGuiBackendFlags": "int",
"ImGuiButtonFlags": "int",
"ImGuiCol": "int",
"ImGuiColorEditFlags": "int",
"ImGuiColorMod": "struct ImGuiColorMod",
"ImGuiComboFlags": "int",
"ImGuiComboPreviewData": "struct ImGuiComboPreviewData",
"ImGuiCond": "int",
"ImGuiConfigFlags": "int",
"ImGuiContext": "struct ImGuiContext",
"ImGuiContextHook": "struct ImGuiContextHook",
"ImGuiContextHookCallback": "void(*)(ImGuiContext* ctx,ImGuiContextHook* hook);",
"ImGuiDataAuthority": "int",
"ImGuiDataType": "int",
"ImGuiDataTypeInfo": "struct ImGuiDataTypeInfo",
"ImGuiDataTypeTempStorage": "struct ImGuiDataTypeTempStorage",
"ImGuiDir": "int",
"ImGuiDockContext": "struct ImGuiDockContext",
"ImGuiDockNode": "struct ImGuiDockNode",
"ImGuiDockNodeFlags": "int",
"ImGuiDockNodeSettings": "struct ImGuiDockNodeSettings",
"ImGuiDockRequest": "struct ImGuiDockRequest",
"ImGuiDragDropFlags": "int",
"ImGuiErrorLogCallback": "void(*)(void* user_data,const char* fmt,...);",
"ImGuiFocusedFlags": "int",
"ImGuiGroupData": "struct ImGuiGroupData",
"ImGuiHoveredFlags": "int",
"ImGuiID": "unsigned int",
"ImGuiIO": "struct ImGuiIO",
"ImGuiInputTextCallback": "int(*)(ImGuiInputTextCallbackData* data);",
"ImGuiInputTextCallbackData": "struct ImGuiInputTextCallbackData",
"ImGuiInputTextFlags": "int",
"ImGuiInputTextState": "struct ImGuiInputTextState",
"ImGuiItemAddFlags": "int",
"ImGuiItemFlags": "int",
"ImGuiItemStatusFlags": "int",
"ImGuiKey": "int",
"ImGuiKeyModFlags": "int",
"ImGuiLastItemData": "struct ImGuiLastItemData",
"ImGuiLayoutType": "int",
"ImGuiListClipper": "struct ImGuiListClipper",
"ImGuiMemAllocFunc": "void*(*)(size_t sz,void* user_data);",
"ImGuiMemFreeFunc": "void(*)(void* ptr,void* user_data);",
"ImGuiMenuColumns": "struct ImGuiMenuColumns",
"ImGuiMetricsConfig": "struct ImGuiMetricsConfig",
"ImGuiMouseButton": "int",
"ImGuiMouseCursor": "int",
"ImGuiNavDirSourceFlags": "int",
"ImGuiNavHighlightFlags": "int",
"ImGuiNavInput": "int",
"ImGuiNavItemData": "struct ImGuiNavItemData",
"ImGuiNavMoveFlags": "int",
"ImGuiNextItemData": "struct ImGuiNextItemData",
"ImGuiNextItemDataFlags": "int",
"ImGuiNextWindowData": "struct ImGuiNextWindowData",
"ImGuiNextWindowDataFlags": "int",
"ImGuiOldColumnData": "struct ImGuiOldColumnData",
"ImGuiOldColumnFlags": "int",
"ImGuiOldColumns": "struct ImGuiOldColumns",
"ImGuiOnceUponAFrame": "struct ImGuiOnceUponAFrame",
"ImGuiPayload": "struct ImGuiPayload",
"ImGuiPlatformIO": "struct ImGuiPlatformIO",
"ImGuiPlatformMonitor": "struct ImGuiPlatformMonitor",
"ImGuiPopupData": "struct ImGuiPopupData",
"ImGuiPopupFlags": "int",
"ImGuiPtrOrIndex": "struct ImGuiPtrOrIndex",
"ImGuiSelectableFlags": "int",
"ImGuiSeparatorFlags": "int",
"ImGuiSettingsHandler": "struct ImGuiSettingsHandler",
"ImGuiShrinkWidthItem": "struct ImGuiShrinkWidthItem",
"ImGuiSizeCallback": "void(*)(ImGuiSizeCallbackData* data);",
"ImGuiSizeCallbackData": "struct ImGuiSizeCallbackData",
"ImGuiSliderFlags": "int",
"ImGuiSortDirection": "int",
"ImGuiStackSizes": "struct ImGuiStackSizes",
"ImGuiStorage": "struct ImGuiStorage",
"ImGuiStoragePair": "struct ImGuiStoragePair",
"ImGuiStyle": "struct ImGuiStyle",
"ImGuiStyleMod": "struct ImGuiStyleMod",
"ImGuiStyleVar": "int",
"ImGuiTabBar": "struct ImGuiTabBar",
"ImGuiTabBarFlags": "int",
"ImGuiTabItem": "struct ImGuiTabItem",
"ImGuiTabItemFlags": "int",
"ImGuiTable": "struct ImGuiTable",
"ImGuiTableBgTarget": "int",
"ImGuiTableCellData": "struct ImGuiTableCellData",
"ImGuiTableColumn": "struct ImGuiTableColumn",
"ImGuiTableColumnFlags": "int",
"ImGuiTableColumnIdx": "ImS8",
"ImGuiTableColumnSettings": "struct ImGuiTableColumnSettings",
"ImGuiTableColumnSortSpecs": "struct ImGuiTableColumnSortSpecs",
"ImGuiTableColumnsSettings": "struct ImGuiTableColumnsSettings",
"ImGuiTableDrawChannelIdx": "ImU8",
"ImGuiTableFlags": "int",
"ImGuiTableRowFlags": "int",
"ImGuiTableSettings": "struct ImGuiTableSettings",
"ImGuiTableSortSpecs": "struct ImGuiTableSortSpecs",
"ImGuiTableTempData": "struct ImGuiTableTempData",
"ImGuiTextBuffer": "struct ImGuiTextBuffer",
"ImGuiTextFilter": "struct ImGuiTextFilter",
"ImGuiTextFlags": "int",
"ImGuiTextRange": "struct ImGuiTextRange",
"ImGuiTooltipFlags": "int",
"ImGuiTreeNodeFlags": "int",
"ImGuiViewport": "struct ImGuiViewport",
"ImGuiViewportFlags": "int",
"ImGuiViewportP": "struct ImGuiViewportP",
"ImGuiWindow": "struct ImGuiWindow",
"ImGuiWindowClass": "struct ImGuiWindowClass",
"ImGuiWindowDockStyle": "struct ImGuiWindowDockStyle",
"ImGuiWindowFlags": "int",
"ImGuiWindowSettings": "struct ImGuiWindowSettings",
"ImGuiWindowStackData": "struct ImGuiWindowStackData",
"ImGuiWindowTempData": "struct ImGuiWindowTempData",
"ImPoolIdx": "int",
"ImRect": "struct ImRect",
"ImS16": "signed short",
"ImS32": "signed int",
"ImS64": "int64_t",
"ImS8": "signed char",
"ImTextureID": "void*",
"ImU16": "unsigned short",
"ImU32": "unsigned int",
"ImU64": "uint64_t",
"ImU8": "unsigned char",
"ImVec1": "struct ImVec1",
"ImVec2": "struct ImVec2",
"ImVec2ih": "struct ImVec2ih",
"ImVec4": "struct ImVec4",
"ImWchar": "ImWchar32",
"ImWchar16": "unsigned short",
"ImWchar32": "unsigned int",
"STB_TexteditState": "struct STB_TexteditState",
"StbTexteditRow": "struct StbTexteditRow",
"StbUndoRecord": "struct StbUndoRecord",
"StbUndoState": "struct StbUndoState",
"const_iterator": "const value_type*",
"iterator": "value_type*",
"value_type": "T"
}

View File

@ -0,0 +1,167 @@
local defs = {}
defs["ImBitVector"] = "struct ImBitVector"
defs["ImColor"] = "struct ImColor"
defs["ImDrawCallback"] = "void(*)(const ImDrawList* parent_list,const ImDrawCmd* cmd);"
defs["ImDrawChannel"] = "struct ImDrawChannel"
defs["ImDrawCmd"] = "struct ImDrawCmd"
defs["ImDrawCmdHeader"] = "struct ImDrawCmdHeader"
defs["ImDrawData"] = "struct ImDrawData"
defs["ImDrawDataBuilder"] = "struct ImDrawDataBuilder"
defs["ImDrawFlags"] = "int"
defs["ImDrawIdx"] = "unsigned short"
defs["ImDrawList"] = "struct ImDrawList"
defs["ImDrawListFlags"] = "int"
defs["ImDrawListSharedData"] = "struct ImDrawListSharedData"
defs["ImDrawListSplitter"] = "struct ImDrawListSplitter"
defs["ImDrawVert"] = "struct ImDrawVert"
defs["ImFileHandle"] = "FILE*"
defs["ImFont"] = "struct ImFont"
defs["ImFontAtlas"] = "struct ImFontAtlas"
defs["ImFontAtlasCustomRect"] = "struct ImFontAtlasCustomRect"
defs["ImFontAtlasFlags"] = "int"
defs["ImFontBuilderIO"] = "struct ImFontBuilderIO"
defs["ImFontConfig"] = "struct ImFontConfig"
defs["ImFontGlyph"] = "struct ImFontGlyph"
defs["ImFontGlyphRangesBuilder"] = "struct ImFontGlyphRangesBuilder"
defs["ImGuiBackendFlags"] = "int"
defs["ImGuiButtonFlags"] = "int"
defs["ImGuiCol"] = "int"
defs["ImGuiColorEditFlags"] = "int"
defs["ImGuiColorMod"] = "struct ImGuiColorMod"
defs["ImGuiComboFlags"] = "int"
defs["ImGuiComboPreviewData"] = "struct ImGuiComboPreviewData"
defs["ImGuiCond"] = "int"
defs["ImGuiConfigFlags"] = "int"
defs["ImGuiContext"] = "struct ImGuiContext"
defs["ImGuiContextHook"] = "struct ImGuiContextHook"
defs["ImGuiContextHookCallback"] = "void(*)(ImGuiContext* ctx,ImGuiContextHook* hook);"
defs["ImGuiDataAuthority"] = "int"
defs["ImGuiDataType"] = "int"
defs["ImGuiDataTypeInfo"] = "struct ImGuiDataTypeInfo"
defs["ImGuiDataTypeTempStorage"] = "struct ImGuiDataTypeTempStorage"
defs["ImGuiDir"] = "int"
defs["ImGuiDockContext"] = "struct ImGuiDockContext"
defs["ImGuiDockNode"] = "struct ImGuiDockNode"
defs["ImGuiDockNodeFlags"] = "int"
defs["ImGuiDockNodeSettings"] = "struct ImGuiDockNodeSettings"
defs["ImGuiDockRequest"] = "struct ImGuiDockRequest"
defs["ImGuiDragDropFlags"] = "int"
defs["ImGuiErrorLogCallback"] = "void(*)(void* user_data,const char* fmt,...);"
defs["ImGuiFocusedFlags"] = "int"
defs["ImGuiGroupData"] = "struct ImGuiGroupData"
defs["ImGuiHoveredFlags"] = "int"
defs["ImGuiID"] = "unsigned int"
defs["ImGuiIO"] = "struct ImGuiIO"
defs["ImGuiInputTextCallback"] = "int(*)(ImGuiInputTextCallbackData* data);"
defs["ImGuiInputTextCallbackData"] = "struct ImGuiInputTextCallbackData"
defs["ImGuiInputTextFlags"] = "int"
defs["ImGuiInputTextState"] = "struct ImGuiInputTextState"
defs["ImGuiItemAddFlags"] = "int"
defs["ImGuiItemFlags"] = "int"
defs["ImGuiItemStatusFlags"] = "int"
defs["ImGuiKey"] = "int"
defs["ImGuiKeyModFlags"] = "int"
defs["ImGuiLastItemData"] = "struct ImGuiLastItemData"
defs["ImGuiLayoutType"] = "int"
defs["ImGuiListClipper"] = "struct ImGuiListClipper"
defs["ImGuiMemAllocFunc"] = "void*(*)(size_t sz,void* user_data);"
defs["ImGuiMemFreeFunc"] = "void(*)(void* ptr,void* user_data);"
defs["ImGuiMenuColumns"] = "struct ImGuiMenuColumns"
defs["ImGuiMetricsConfig"] = "struct ImGuiMetricsConfig"
defs["ImGuiMouseButton"] = "int"
defs["ImGuiMouseCursor"] = "int"
defs["ImGuiNavDirSourceFlags"] = "int"
defs["ImGuiNavHighlightFlags"] = "int"
defs["ImGuiNavInput"] = "int"
defs["ImGuiNavItemData"] = "struct ImGuiNavItemData"
defs["ImGuiNavMoveFlags"] = "int"
defs["ImGuiNextItemData"] = "struct ImGuiNextItemData"
defs["ImGuiNextItemDataFlags"] = "int"
defs["ImGuiNextWindowData"] = "struct ImGuiNextWindowData"
defs["ImGuiNextWindowDataFlags"] = "int"
defs["ImGuiOldColumnData"] = "struct ImGuiOldColumnData"
defs["ImGuiOldColumnFlags"] = "int"
defs["ImGuiOldColumns"] = "struct ImGuiOldColumns"
defs["ImGuiOnceUponAFrame"] = "struct ImGuiOnceUponAFrame"
defs["ImGuiPayload"] = "struct ImGuiPayload"
defs["ImGuiPlatformIO"] = "struct ImGuiPlatformIO"
defs["ImGuiPlatformMonitor"] = "struct ImGuiPlatformMonitor"
defs["ImGuiPopupData"] = "struct ImGuiPopupData"
defs["ImGuiPopupFlags"] = "int"
defs["ImGuiPtrOrIndex"] = "struct ImGuiPtrOrIndex"
defs["ImGuiSelectableFlags"] = "int"
defs["ImGuiSeparatorFlags"] = "int"
defs["ImGuiSettingsHandler"] = "struct ImGuiSettingsHandler"
defs["ImGuiShrinkWidthItem"] = "struct ImGuiShrinkWidthItem"
defs["ImGuiSizeCallback"] = "void(*)(ImGuiSizeCallbackData* data);"
defs["ImGuiSizeCallbackData"] = "struct ImGuiSizeCallbackData"
defs["ImGuiSliderFlags"] = "int"
defs["ImGuiSortDirection"] = "int"
defs["ImGuiStackSizes"] = "struct ImGuiStackSizes"
defs["ImGuiStorage"] = "struct ImGuiStorage"
defs["ImGuiStoragePair"] = "struct ImGuiStoragePair"
defs["ImGuiStyle"] = "struct ImGuiStyle"
defs["ImGuiStyleMod"] = "struct ImGuiStyleMod"
defs["ImGuiStyleVar"] = "int"
defs["ImGuiTabBar"] = "struct ImGuiTabBar"
defs["ImGuiTabBarFlags"] = "int"
defs["ImGuiTabItem"] = "struct ImGuiTabItem"
defs["ImGuiTabItemFlags"] = "int"
defs["ImGuiTable"] = "struct ImGuiTable"
defs["ImGuiTableBgTarget"] = "int"
defs["ImGuiTableCellData"] = "struct ImGuiTableCellData"
defs["ImGuiTableColumn"] = "struct ImGuiTableColumn"
defs["ImGuiTableColumnFlags"] = "int"
defs["ImGuiTableColumnIdx"] = "ImS8"
defs["ImGuiTableColumnSettings"] = "struct ImGuiTableColumnSettings"
defs["ImGuiTableColumnSortSpecs"] = "struct ImGuiTableColumnSortSpecs"
defs["ImGuiTableColumnsSettings"] = "struct ImGuiTableColumnsSettings"
defs["ImGuiTableDrawChannelIdx"] = "ImU8"
defs["ImGuiTableFlags"] = "int"
defs["ImGuiTableRowFlags"] = "int"
defs["ImGuiTableSettings"] = "struct ImGuiTableSettings"
defs["ImGuiTableSortSpecs"] = "struct ImGuiTableSortSpecs"
defs["ImGuiTableTempData"] = "struct ImGuiTableTempData"
defs["ImGuiTextBuffer"] = "struct ImGuiTextBuffer"
defs["ImGuiTextFilter"] = "struct ImGuiTextFilter"
defs["ImGuiTextFlags"] = "int"
defs["ImGuiTextRange"] = "struct ImGuiTextRange"
defs["ImGuiTooltipFlags"] = "int"
defs["ImGuiTreeNodeFlags"] = "int"
defs["ImGuiViewport"] = "struct ImGuiViewport"
defs["ImGuiViewportFlags"] = "int"
defs["ImGuiViewportP"] = "struct ImGuiViewportP"
defs["ImGuiWindow"] = "struct ImGuiWindow"
defs["ImGuiWindowClass"] = "struct ImGuiWindowClass"
defs["ImGuiWindowDockStyle"] = "struct ImGuiWindowDockStyle"
defs["ImGuiWindowFlags"] = "int"
defs["ImGuiWindowSettings"] = "struct ImGuiWindowSettings"
defs["ImGuiWindowStackData"] = "struct ImGuiWindowStackData"
defs["ImGuiWindowTempData"] = "struct ImGuiWindowTempData"
defs["ImPoolIdx"] = "int"
defs["ImRect"] = "struct ImRect"
defs["ImS16"] = "signed short"
defs["ImS32"] = "signed int"
defs["ImS64"] = "int64_t"
defs["ImS8"] = "signed char"
defs["ImTextureID"] = "void*"
defs["ImU16"] = "unsigned short"
defs["ImU32"] = "unsigned int"
defs["ImU64"] = "uint64_t"
defs["ImU8"] = "unsigned char"
defs["ImVec1"] = "struct ImVec1"
defs["ImVec2"] = "struct ImVec2"
defs["ImVec2ih"] = "struct ImVec2ih"
defs["ImVec4"] = "struct ImVec4"
defs["ImWchar"] = "ImWchar32"
defs["ImWchar16"] = "unsigned short"
defs["ImWchar32"] = "unsigned int"
defs["STB_TexteditState"] = "struct STB_TexteditState"
defs["StbTexteditRow"] = "struct StbTexteditRow"
defs["StbUndoRecord"] = "struct StbUndoRecord"
defs["StbUndoState"] = "struct StbUndoState"
defs["const_iterator"] = "const value_type*"
defs["iterator"] = "value_type*"
defs["value_type"] = "T"
return defs

View File

@ -0,0 +1,34 @@
#!/bin/bash
set -euo pipefail
SCRIPT_DIR=$(dirname ${0} | python3 -c 'import os, sys; print(os.path.abspath(sys.stdin.read().strip()))' )
CIMGUI_DIR=${1:?}
echo "${SCRIPT_DIR}"
pushd "${CIMGUI_DIR}"/generator > /dev/null
# Check if ${CIMGUI_DIR}/link exists as a symlink.
# If so, good, and we can tinker with it.
# Otherwise, ask user to remove it for us.
if [ -e ${CIMGUI_DIR}/imgui ] && [ ! -h ${CIMGUI_DIR}/imgui ]; then
echo "Please remove ${CIMGUI_DIR}/imgui so this script can link it to correct imgui version"
exit 1
fi
# Remove old symlink
rm ${CIMGUI_DIR}/imgui || echo "..."
# Link to C++ code contained in imgui-rs, not whatever if in cimgui's repo
ln -s ${SCRIPT_DIR}/imgui ${CIMGUI_DIR}/imgui
# Run the generator (note addition of "internal" as most docking functionality is in there currently)
luajit generator.lua gcc "internal" -DIMGUI_USE_WCHAR32
# Tidy up
rm ${CIMGUI_DIR}/imgui # Remove symlink (no recursive rm)
popd > /dev/null
cp "${CIMGUI_DIR}"/cimgui.{h,cpp} "${SCRIPT_DIR}"/
cp "${CIMGUI_DIR}"/generator/output/* "${SCRIPT_DIR}"/

View File

@ -0,0 +1 @@
Generated by cimgui version 98e6ff7051df19b76854bc3eb3cea2798f8d3bc5

View File

@ -10,7 +10,7 @@
CIMGUI_API ImVec2* ImVec2_ImVec2_Nil(void)
CIMGUI_API ImVec2* ImVec2_ImVec2Nil(void)
{
return IM_NEW(ImVec2)();
}
@ -18,11 +18,11 @@ CIMGUI_API void ImVec2_destroy(ImVec2* self)
{
IM_DELETE(self);
}
CIMGUI_API ImVec2* ImVec2_ImVec2_Float(float _x,float _y)
CIMGUI_API ImVec2* ImVec2_ImVec2Float(float _x,float _y)
{
return IM_NEW(ImVec2)(_x,_y);
}
CIMGUI_API ImVec4* ImVec4_ImVec4_Nil(void)
CIMGUI_API ImVec4* ImVec4_ImVec4Nil(void)
{
return IM_NEW(ImVec4)();
}
@ -30,7 +30,7 @@ CIMGUI_API void ImVec4_destroy(ImVec4* self)
{
IM_DELETE(self);
}
CIMGUI_API ImVec4* ImVec4_ImVec4_Float(float _x,float _y,float _z,float _w)
CIMGUI_API ImVec4* ImVec4_ImVec4Float(float _x,float _y,float _z,float _w)
{
return IM_NEW(ImVec4)(_x,_y,_z,_w);
}
@ -126,11 +126,11 @@ CIMGUI_API void igEnd()
{
return ImGui::End();
}
CIMGUI_API bool igBeginChild_Str(const char* str_id,const ImVec2 size,bool border,ImGuiWindowFlags flags)
CIMGUI_API bool igBeginChildStr(const char* str_id,const ImVec2 size,bool border,ImGuiWindowFlags flags)
{
return ImGui::BeginChild(str_id,size,border,flags);
}
CIMGUI_API bool igBeginChild_ID(ImGuiID id,const ImVec2 size,bool border,ImGuiWindowFlags flags)
CIMGUI_API bool igBeginChildID(ImGuiID id,const ImVec2 size,bool border,ImGuiWindowFlags flags)
{
return ImGui::BeginChild(id,size,border,flags);
}
@ -202,19 +202,19 @@ CIMGUI_API void igSetNextWindowBgAlpha(float alpha)
{
return ImGui::SetNextWindowBgAlpha(alpha);
}
CIMGUI_API void igSetWindowPos_Vec2(const ImVec2 pos,ImGuiCond cond)
CIMGUI_API void igSetWindowPosVec2(const ImVec2 pos,ImGuiCond cond)
{
return ImGui::SetWindowPos(pos,cond);
}
CIMGUI_API void igSetWindowSize_Vec2(const ImVec2 size,ImGuiCond cond)
CIMGUI_API void igSetWindowSizeVec2(const ImVec2 size,ImGuiCond cond)
{
return ImGui::SetWindowSize(size,cond);
}
CIMGUI_API void igSetWindowCollapsed_Bool(bool collapsed,ImGuiCond cond)
CIMGUI_API void igSetWindowCollapsedBool(bool collapsed,ImGuiCond cond)
{
return ImGui::SetWindowCollapsed(collapsed,cond);
}
CIMGUI_API void igSetWindowFocus_Nil()
CIMGUI_API void igSetWindowFocusNil()
{
return ImGui::SetWindowFocus();
}
@ -222,19 +222,19 @@ CIMGUI_API void igSetWindowFontScale(float scale)
{
return ImGui::SetWindowFontScale(scale);
}
CIMGUI_API void igSetWindowPos_Str(const char* name,const ImVec2 pos,ImGuiCond cond)
CIMGUI_API void igSetWindowPosStr(const char* name,const ImVec2 pos,ImGuiCond cond)
{
return ImGui::SetWindowPos(name,pos,cond);
}
CIMGUI_API void igSetWindowSize_Str(const char* name,const ImVec2 size,ImGuiCond cond)
CIMGUI_API void igSetWindowSizeStr(const char* name,const ImVec2 size,ImGuiCond cond)
{
return ImGui::SetWindowSize(name,size,cond);
}
CIMGUI_API void igSetWindowCollapsed_Str(const char* name,bool collapsed,ImGuiCond cond)
CIMGUI_API void igSetWindowCollapsedStr(const char* name,bool collapsed,ImGuiCond cond)
{
return ImGui::SetWindowCollapsed(name,collapsed,cond);
}
CIMGUI_API void igSetWindowFocus_Str(const char* name)
CIMGUI_API void igSetWindowFocusStr(const char* name)
{
return ImGui::SetWindowFocus(name);
}
@ -306,11 +306,11 @@ CIMGUI_API void igPopFont()
{
return ImGui::PopFont();
}
CIMGUI_API void igPushStyleColor_U32(ImGuiCol idx,ImU32 col)
CIMGUI_API void igPushStyleColorU32(ImGuiCol idx,ImU32 col)
{
return ImGui::PushStyleColor(idx,col);
}
CIMGUI_API void igPushStyleColor_Vec4(ImGuiCol idx,const ImVec4 col)
CIMGUI_API void igPushStyleColorVec4(ImGuiCol idx,const ImVec4 col)
{
return ImGui::PushStyleColor(idx,col);
}
@ -318,11 +318,11 @@ CIMGUI_API void igPopStyleColor(int count)
{
return ImGui::PopStyleColor(count);
}
CIMGUI_API void igPushStyleVar_Float(ImGuiStyleVar idx,float val)
CIMGUI_API void igPushStyleVarFloat(ImGuiStyleVar idx,float val)
{
return ImGui::PushStyleVar(idx,val);
}
CIMGUI_API void igPushStyleVar_Vec2(ImGuiStyleVar idx,const ImVec2 val)
CIMGUI_API void igPushStyleVarVec2(ImGuiStyleVar idx,const ImVec2 val)
{
return ImGui::PushStyleVar(idx,val);
}
@ -382,15 +382,15 @@ CIMGUI_API void igGetFontTexUvWhitePixel(ImVec2 *pOut)
{
*pOut = ImGui::GetFontTexUvWhitePixel();
}
CIMGUI_API ImU32 igGetColorU32_Col(ImGuiCol idx,float alpha_mul)
CIMGUI_API ImU32 igGetColorU32Col(ImGuiCol idx,float alpha_mul)
{
return ImGui::GetColorU32(idx,alpha_mul);
}
CIMGUI_API ImU32 igGetColorU32_Vec4(const ImVec4 col)
CIMGUI_API ImU32 igGetColorU32Vec4(const ImVec4 col)
{
return ImGui::GetColorU32(col);
}
CIMGUI_API ImU32 igGetColorU32_U32(ImU32 col)
CIMGUI_API ImU32 igGetColorU32U32(ImU32 col)
{
return ImGui::GetColorU32(col);
}
@ -490,19 +490,19 @@ CIMGUI_API float igGetFrameHeightWithSpacing()
{
return ImGui::GetFrameHeightWithSpacing();
}
CIMGUI_API void igPushID_Str(const char* str_id)
CIMGUI_API void igPushIDStr(const char* str_id)
{
return ImGui::PushID(str_id);
}
CIMGUI_API void igPushID_StrStr(const char* str_id_begin,const char* str_id_end)
CIMGUI_API void igPushIDStrStr(const char* str_id_begin,const char* str_id_end)
{
return ImGui::PushID(str_id_begin,str_id_end);
}
CIMGUI_API void igPushID_Ptr(const void* ptr_id)
CIMGUI_API void igPushIDPtr(const void* ptr_id)
{
return ImGui::PushID(ptr_id);
}
CIMGUI_API void igPushID_Int(int int_id)
CIMGUI_API void igPushIDInt(int int_id)
{
return ImGui::PushID(int_id);
}
@ -510,15 +510,15 @@ CIMGUI_API void igPopID()
{
return ImGui::PopID();
}
CIMGUI_API ImGuiID igGetID_Str(const char* str_id)
CIMGUI_API ImGuiID igGetIDStr(const char* str_id)
{
return ImGui::GetID(str_id);
}
CIMGUI_API ImGuiID igGetID_StrStr(const char* str_id_begin,const char* str_id_end)
CIMGUI_API ImGuiID igGetIDStrStr(const char* str_id_begin,const char* str_id_end)
{
return ImGui::GetID(str_id_begin,str_id_end);
}
CIMGUI_API ImGuiID igGetID_Ptr(const void* ptr_id)
CIMGUI_API ImGuiID igGetIDPtr(const void* ptr_id)
{
return ImGui::GetID(ptr_id);
}
@ -620,19 +620,19 @@ CIMGUI_API bool igCheckbox(const char* label,bool* v)
{
return ImGui::Checkbox(label,v);
}
CIMGUI_API bool igCheckboxFlags_IntPtr(const char* label,int* flags,int flags_value)
CIMGUI_API bool igCheckboxFlagsIntPtr(const char* label,int* flags,int flags_value)
{
return ImGui::CheckboxFlags(label,flags,flags_value);
}
CIMGUI_API bool igCheckboxFlags_UintPtr(const char* label,unsigned int* flags,unsigned int flags_value)
CIMGUI_API bool igCheckboxFlagsUintPtr(const char* label,unsigned int* flags,unsigned int flags_value)
{
return ImGui::CheckboxFlags(label,flags,flags_value);
}
CIMGUI_API bool igRadioButton_Bool(const char* label,bool active)
CIMGUI_API bool igRadioButtonBool(const char* label,bool active)
{
return ImGui::RadioButton(label,active);
}
CIMGUI_API bool igRadioButton_IntPtr(const char* label,int* v,int v_button)
CIMGUI_API bool igRadioButtonIntPtr(const char* label,int* v,int v_button)
{
return ImGui::RadioButton(label,v,v_button);
}
@ -652,15 +652,15 @@ CIMGUI_API void igEndCombo()
{
return ImGui::EndCombo();
}
CIMGUI_API bool igCombo_Str_arr(const char* label,int* current_item,const char* const items[],int items_count,int popup_max_height_in_items)
CIMGUI_API bool igComboStr_arr(const char* label,int* current_item,const char* const items[],int items_count,int popup_max_height_in_items)
{
return ImGui::Combo(label,current_item,items,items_count,popup_max_height_in_items);
}
CIMGUI_API bool igCombo_Str(const char* label,int* current_item,const char* items_separated_by_zeros,int popup_max_height_in_items)
CIMGUI_API bool igComboStr(const char* label,int* current_item,const char* items_separated_by_zeros,int popup_max_height_in_items)
{
return ImGui::Combo(label,current_item,items_separated_by_zeros,popup_max_height_in_items);
}
CIMGUI_API bool igCombo_FnBoolPtr(const char* label,int* current_item,bool(*items_getter)(void* data,int idx,const char** out_text),void* data,int items_count,int popup_max_height_in_items)
CIMGUI_API bool igComboFnBoolPtr(const char* label,int* current_item,bool(*items_getter)(void* data,int idx,const char** out_text),void* data,int items_count,int popup_max_height_in_items)
{
return ImGui::Combo(label,current_item,items_getter,data,items_count,popup_max_height_in_items);
}
@ -848,11 +848,11 @@ CIMGUI_API void igSetColorEditOptions(ImGuiColorEditFlags flags)
{
return ImGui::SetColorEditOptions(flags);
}
CIMGUI_API bool igTreeNode_Str(const char* label)
CIMGUI_API bool igTreeNodeStr(const char* label)
{
return ImGui::TreeNode(label);
}
CIMGUI_API bool igTreeNode_StrStr(const char* str_id,const char* fmt,...)
CIMGUI_API bool igTreeNodeStrStr(const char* str_id,const char* fmt,...)
{
va_list args;
va_start(args, fmt);
@ -860,7 +860,7 @@ CIMGUI_API bool igTreeNode_StrStr(const char* str_id,const char* fmt,...)
va_end(args);
return ret;
}
CIMGUI_API bool igTreeNode_Ptr(const void* ptr_id,const char* fmt,...)
CIMGUI_API bool igTreeNodePtr(const void* ptr_id,const char* fmt,...)
{
va_list args;
va_start(args, fmt);
@ -868,19 +868,19 @@ CIMGUI_API bool igTreeNode_Ptr(const void* ptr_id,const char* fmt,...)
va_end(args);
return ret;
}
CIMGUI_API bool igTreeNodeV_Str(const char* str_id,const char* fmt,va_list args)
CIMGUI_API bool igTreeNodeVStr(const char* str_id,const char* fmt,va_list args)
{
return ImGui::TreeNodeV(str_id,fmt,args);
}
CIMGUI_API bool igTreeNodeV_Ptr(const void* ptr_id,const char* fmt,va_list args)
CIMGUI_API bool igTreeNodeVPtr(const void* ptr_id,const char* fmt,va_list args)
{
return ImGui::TreeNodeV(ptr_id,fmt,args);
}
CIMGUI_API bool igTreeNodeEx_Str(const char* label,ImGuiTreeNodeFlags flags)
CIMGUI_API bool igTreeNodeExStr(const char* label,ImGuiTreeNodeFlags flags)
{
return ImGui::TreeNodeEx(label,flags);
}
CIMGUI_API bool igTreeNodeEx_StrStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,...)
CIMGUI_API bool igTreeNodeExStrStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,...)
{
va_list args;
va_start(args, fmt);
@ -888,7 +888,7 @@ CIMGUI_API bool igTreeNodeEx_StrStr(const char* str_id,ImGuiTreeNodeFlags flags,
va_end(args);
return ret;
}
CIMGUI_API bool igTreeNodeEx_Ptr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,...)
CIMGUI_API bool igTreeNodeExPtr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,...)
{
va_list args;
va_start(args, fmt);
@ -896,19 +896,19 @@ CIMGUI_API bool igTreeNodeEx_Ptr(const void* ptr_id,ImGuiTreeNodeFlags flags,con
va_end(args);
return ret;
}
CIMGUI_API bool igTreeNodeExV_Str(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args)
CIMGUI_API bool igTreeNodeExVStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args)
{
return ImGui::TreeNodeExV(str_id,flags,fmt,args);
}
CIMGUI_API bool igTreeNodeExV_Ptr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args)
CIMGUI_API bool igTreeNodeExVPtr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args)
{
return ImGui::TreeNodeExV(ptr_id,flags,fmt,args);
}
CIMGUI_API void igTreePush_Str(const char* str_id)
CIMGUI_API void igTreePushStr(const char* str_id)
{
return ImGui::TreePush(str_id);
}
CIMGUI_API void igTreePush_Ptr(const void* ptr_id)
CIMGUI_API void igTreePushPtr(const void* ptr_id)
{
return ImGui::TreePush(ptr_id);
}
@ -920,11 +920,11 @@ CIMGUI_API float igGetTreeNodeToLabelSpacing()
{
return ImGui::GetTreeNodeToLabelSpacing();
}
CIMGUI_API bool igCollapsingHeader_TreeNodeFlags(const char* label,ImGuiTreeNodeFlags flags)
CIMGUI_API bool igCollapsingHeaderTreeNodeFlags(const char* label,ImGuiTreeNodeFlags flags)
{
return ImGui::CollapsingHeader(label,flags);
}
CIMGUI_API bool igCollapsingHeader_BoolPtr(const char* label,bool* p_visible,ImGuiTreeNodeFlags flags)
CIMGUI_API bool igCollapsingHeaderBoolPtr(const char* label,bool* p_visible,ImGuiTreeNodeFlags flags)
{
return ImGui::CollapsingHeader(label,p_visible,flags);
}
@ -932,11 +932,11 @@ CIMGUI_API void igSetNextItemOpen(bool is_open,ImGuiCond cond)
{
return ImGui::SetNextItemOpen(is_open,cond);
}
CIMGUI_API bool igSelectable_Bool(const char* label,bool selected,ImGuiSelectableFlags flags,const ImVec2 size)
CIMGUI_API bool igSelectableBool(const char* label,bool selected,ImGuiSelectableFlags flags,const ImVec2 size)
{
return ImGui::Selectable(label,selected,flags,size);
}
CIMGUI_API bool igSelectable_BoolPtr(const char* label,bool* p_selected,ImGuiSelectableFlags flags,const ImVec2 size)
CIMGUI_API bool igSelectableBoolPtr(const char* label,bool* p_selected,ImGuiSelectableFlags flags,const ImVec2 size)
{
return ImGui::Selectable(label,p_selected,flags,size);
}
@ -948,43 +948,43 @@ CIMGUI_API void igEndListBox()
{
return ImGui::EndListBox();
}
CIMGUI_API bool igListBox_Str_arr(const char* label,int* current_item,const char* const items[],int items_count,int height_in_items)
CIMGUI_API bool igListBoxStr_arr(const char* label,int* current_item,const char* const items[],int items_count,int height_in_items)
{
return ImGui::ListBox(label,current_item,items,items_count,height_in_items);
}
CIMGUI_API bool igListBox_FnBoolPtr(const char* label,int* current_item,bool(*items_getter)(void* data,int idx,const char** out_text),void* data,int items_count,int height_in_items)
CIMGUI_API bool igListBoxFnBoolPtr(const char* label,int* current_item,bool(*items_getter)(void* data,int idx,const char** out_text),void* data,int items_count,int height_in_items)
{
return ImGui::ListBox(label,current_item,items_getter,data,items_count,height_in_items);
}
CIMGUI_API void igPlotLines_FloatPtr(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride)
CIMGUI_API void igPlotLinesFloatPtr(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride)
{
return ImGui::PlotLines(label,values,values_count,values_offset,overlay_text,scale_min,scale_max,graph_size,stride);
}
CIMGUI_API void igPlotLines_FnFloatPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size)
CIMGUI_API void igPlotLinesFnFloatPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size)
{
return ImGui::PlotLines(label,values_getter,data,values_count,values_offset,overlay_text,scale_min,scale_max,graph_size);
}
CIMGUI_API void igPlotHistogram_FloatPtr(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride)
CIMGUI_API void igPlotHistogramFloatPtr(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride)
{
return ImGui::PlotHistogram(label,values,values_count,values_offset,overlay_text,scale_min,scale_max,graph_size,stride);
}
CIMGUI_API void igPlotHistogram_FnFloatPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size)
CIMGUI_API void igPlotHistogramFnFloatPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size)
{
return ImGui::PlotHistogram(label,values_getter,data,values_count,values_offset,overlay_text,scale_min,scale_max,graph_size);
}
CIMGUI_API void igValue_Bool(const char* prefix,bool b)
CIMGUI_API void igValueBool(const char* prefix,bool b)
{
return ImGui::Value(prefix,b);
}
CIMGUI_API void igValue_Int(const char* prefix,int v)
CIMGUI_API void igValueInt(const char* prefix,int v)
{
return ImGui::Value(prefix,v);
}
CIMGUI_API void igValue_Uint(const char* prefix,unsigned int v)
CIMGUI_API void igValueUint(const char* prefix,unsigned int v)
{
return ImGui::Value(prefix,v);
}
CIMGUI_API void igValue_Float(const char* prefix,float v,const char* float_format)
CIMGUI_API void igValueFloat(const char* prefix,float v,const char* float_format)
{
return ImGui::Value(prefix,v,float_format);
}
@ -1012,11 +1012,11 @@ CIMGUI_API void igEndMenu()
{
return ImGui::EndMenu();
}
CIMGUI_API bool igMenuItem_Bool(const char* label,const char* shortcut,bool selected,bool enabled)
CIMGUI_API bool igMenuItemBool(const char* label,const char* shortcut,bool selected,bool enabled)
{
return ImGui::MenuItem(label,shortcut,selected,enabled);
}
CIMGUI_API bool igMenuItem_BoolPtr(const char* label,const char* shortcut,bool* p_selected,bool enabled)
CIMGUI_API bool igMenuItemBoolPtr(const char* label,const char* shortcut,bool* p_selected,bool enabled)
{
return ImGui::MenuItem(label,shortcut,p_selected,enabled);
}
@ -1051,11 +1051,11 @@ CIMGUI_API void igEndPopup()
{
return ImGui::EndPopup();
}
CIMGUI_API void igOpenPopup_Str(const char* str_id,ImGuiPopupFlags popup_flags)
CIMGUI_API void igOpenPopupStr(const char* str_id,ImGuiPopupFlags popup_flags)
{
return ImGui::OpenPopup(str_id,popup_flags);
}
CIMGUI_API void igOpenPopup_ID(ImGuiID id,ImGuiPopupFlags popup_flags)
CIMGUI_API void igOpenPopupID(ImGuiID id,ImGuiPopupFlags popup_flags)
{
return ImGui::OpenPopup(id,popup_flags);
}
@ -1355,11 +1355,11 @@ CIMGUI_API ImGuiViewport* igGetMainViewport()
{
return ImGui::GetMainViewport();
}
CIMGUI_API bool igIsRectVisible_Nil(const ImVec2 size)
CIMGUI_API bool igIsRectVisibleNil(const ImVec2 size)
{
return ImGui::IsRectVisible(size);
}
CIMGUI_API bool igIsRectVisible_Vec2(const ImVec2 rect_min,const ImVec2 rect_max)
CIMGUI_API bool igIsRectVisibleVec2(const ImVec2 rect_min,const ImVec2 rect_max)
{
return ImGui::IsRectVisible(rect_min,rect_max);
}
@ -1699,7 +1699,7 @@ CIMGUI_API bool ImGuiTextFilter_IsActive(ImGuiTextFilter* self)
{
return self->IsActive();
}
CIMGUI_API ImGuiTextRange* ImGuiTextRange_ImGuiTextRange_Nil(void)
CIMGUI_API ImGuiTextRange* ImGuiTextRange_ImGuiTextRangeNil(void)
{
return IM_NEW(ImGuiTextRange)();
}
@ -1707,7 +1707,7 @@ CIMGUI_API void ImGuiTextRange_destroy(ImGuiTextRange* self)
{
IM_DELETE(self);
}
CIMGUI_API ImGuiTextRange* ImGuiTextRange_ImGuiTextRange_Str(const char* _b,const char* _e)
CIMGUI_API ImGuiTextRange* ImGuiTextRange_ImGuiTextRangeStr(const char* _b,const char* _e)
{
return IM_NEW(ImGuiTextRange)(_b,_e);
}
@ -1763,7 +1763,7 @@ CIMGUI_API void ImGuiTextBuffer_appendfv(ImGuiTextBuffer* self,const char* fmt,v
{
return self->appendfv(fmt,args);
}
CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePair_Int(ImGuiID _key,int _val_i)
CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePairInt(ImGuiID _key,int _val_i)
{
return IM_NEW(ImGuiStoragePair)(_key,_val_i);
}
@ -1771,11 +1771,11 @@ CIMGUI_API void ImGuiStoragePair_destroy(ImGuiStoragePair* self)
{
IM_DELETE(self);
}
CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePair_Float(ImGuiID _key,float _val_f)
CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePairFloat(ImGuiID _key,float _val_f)
{
return IM_NEW(ImGuiStoragePair)(_key,_val_f);
}
CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePair_Ptr(ImGuiID _key,void* _val_p)
CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePairPtr(ImGuiID _key,void* _val_p)
{
return IM_NEW(ImGuiStoragePair)(_key,_val_p);
}
@ -1859,7 +1859,7 @@ CIMGUI_API bool ImGuiListClipper_Step(ImGuiListClipper* self)
{
return self->Step();
}
CIMGUI_API ImColor* ImColor_ImColor_Nil(void)
CIMGUI_API ImColor* ImColor_ImColorNil(void)
{
return IM_NEW(ImColor)();
}
@ -1867,19 +1867,19 @@ CIMGUI_API void ImColor_destroy(ImColor* self)
{
IM_DELETE(self);
}
CIMGUI_API ImColor* ImColor_ImColor_Int(int r,int g,int b,int a)
CIMGUI_API ImColor* ImColor_ImColorInt(int r,int g,int b,int a)
{
return IM_NEW(ImColor)(r,g,b,a);
}
CIMGUI_API ImColor* ImColor_ImColor_U32(ImU32 rgba)
CIMGUI_API ImColor* ImColor_ImColorU32(ImU32 rgba)
{
return IM_NEW(ImColor)(rgba);
}
CIMGUI_API ImColor* ImColor_ImColor_Float(float r,float g,float b,float a)
CIMGUI_API ImColor* ImColor_ImColorFloat(float r,float g,float b,float a)
{
return IM_NEW(ImColor)(r,g,b,a);
}
CIMGUI_API ImColor* ImColor_ImColor_Vec4(const ImVec4 col)
CIMGUI_API ImColor* ImColor_ImColorVec4(const ImVec4 col)
{
return IM_NEW(ImColor)(col);
}
@ -2015,11 +2015,11 @@ CIMGUI_API void ImDrawList_AddNgonFilled(ImDrawList* self,const ImVec2 center,fl
{
return self->AddNgonFilled(center,radius,col,num_segments);
}
CIMGUI_API void ImDrawList_AddText_Vec2(ImDrawList* self,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end)
CIMGUI_API void ImDrawList_AddTextVec2(ImDrawList* self,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end)
{
return self->AddText(pos,col,text_begin,text_end);
}
CIMGUI_API void ImDrawList_AddText_FontPtr(ImDrawList* self,const ImFont* font,float font_size,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end,float wrap_width,const ImVec4* cpu_fine_clip_rect)
CIMGUI_API void ImDrawList_AddTextFontPtr(ImDrawList* self,const ImFont* font,float font_size,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end,float wrap_width,const ImVec4* cpu_fine_clip_rect)
{
return self->AddText(font,font_size,pos,col,text_begin,text_end,wrap_width,cpu_fine_clip_rect);
}

View File

@ -10,6 +10,9 @@
#else
#define API __declspec(dllexport)
#endif
#ifndef __GNUC__
#define snprintf sprintf_s
#endif
#else
#ifdef __GNUC__
#define API __attribute__((__visibility__("default")))
@ -1113,12 +1116,12 @@ typedef ImVector<ImWchar> ImVector_ImWchar;
typedef ImVector<char> ImVector_char;
typedef ImVector<float> ImVector_float;
#endif //CIMGUI_DEFINE_ENUMS_AND_STRUCTS
CIMGUI_API ImVec2* ImVec2_ImVec2_Nil(void);
CIMGUI_API ImVec2* ImVec2_ImVec2Nil(void);
CIMGUI_API void ImVec2_destroy(ImVec2* self);
CIMGUI_API ImVec2* ImVec2_ImVec2_Float(float _x,float _y);
CIMGUI_API ImVec4* ImVec4_ImVec4_Nil(void);
CIMGUI_API ImVec2* ImVec2_ImVec2Float(float _x,float _y);
CIMGUI_API ImVec4* ImVec4_ImVec4Nil(void);
CIMGUI_API void ImVec4_destroy(ImVec4* self);
CIMGUI_API ImVec4* ImVec4_ImVec4_Float(float _x,float _y,float _z,float _w);
CIMGUI_API ImVec4* ImVec4_ImVec4Float(float _x,float _y,float _z,float _w);
CIMGUI_API ImGuiContext* igCreateContext(ImFontAtlas* shared_font_atlas);
CIMGUI_API void igDestroyContext(ImGuiContext* ctx);
CIMGUI_API ImGuiContext* igGetCurrentContext(void);
@ -1142,8 +1145,8 @@ CIMGUI_API void igStyleColorsLight(ImGuiStyle* dst);
CIMGUI_API void igStyleColorsClassic(ImGuiStyle* dst);
CIMGUI_API bool igBegin(const char* name,bool* p_open,ImGuiWindowFlags flags);
CIMGUI_API void igEnd(void);
CIMGUI_API bool igBeginChild_Str(const char* str_id,const ImVec2 size,bool border,ImGuiWindowFlags flags);
CIMGUI_API bool igBeginChild_ID(ImGuiID id,const ImVec2 size,bool border,ImGuiWindowFlags flags);
CIMGUI_API bool igBeginChildStr(const char* str_id,const ImVec2 size,bool border,ImGuiWindowFlags flags);
CIMGUI_API bool igBeginChildID(ImGuiID id,const ImVec2 size,bool border,ImGuiWindowFlags flags);
CIMGUI_API void igEndChild(void);
CIMGUI_API bool igIsWindowAppearing(void);
CIMGUI_API bool igIsWindowCollapsed(void);
@ -1161,15 +1164,15 @@ CIMGUI_API void igSetNextWindowContentSize(const ImVec2 size);
CIMGUI_API void igSetNextWindowCollapsed(bool collapsed,ImGuiCond cond);
CIMGUI_API void igSetNextWindowFocus(void);
CIMGUI_API void igSetNextWindowBgAlpha(float alpha);
CIMGUI_API void igSetWindowPos_Vec2(const ImVec2 pos,ImGuiCond cond);
CIMGUI_API void igSetWindowSize_Vec2(const ImVec2 size,ImGuiCond cond);
CIMGUI_API void igSetWindowCollapsed_Bool(bool collapsed,ImGuiCond cond);
CIMGUI_API void igSetWindowFocus_Nil(void);
CIMGUI_API void igSetWindowPosVec2(const ImVec2 pos,ImGuiCond cond);
CIMGUI_API void igSetWindowSizeVec2(const ImVec2 size,ImGuiCond cond);
CIMGUI_API void igSetWindowCollapsedBool(bool collapsed,ImGuiCond cond);
CIMGUI_API void igSetWindowFocusNil(void);
CIMGUI_API void igSetWindowFontScale(float scale);
CIMGUI_API void igSetWindowPos_Str(const char* name,const ImVec2 pos,ImGuiCond cond);
CIMGUI_API void igSetWindowSize_Str(const char* name,const ImVec2 size,ImGuiCond cond);
CIMGUI_API void igSetWindowCollapsed_Str(const char* name,bool collapsed,ImGuiCond cond);
CIMGUI_API void igSetWindowFocus_Str(const char* name);
CIMGUI_API void igSetWindowPosStr(const char* name,const ImVec2 pos,ImGuiCond cond);
CIMGUI_API void igSetWindowSizeStr(const char* name,const ImVec2 size,ImGuiCond cond);
CIMGUI_API void igSetWindowCollapsedStr(const char* name,bool collapsed,ImGuiCond cond);
CIMGUI_API void igSetWindowFocusStr(const char* name);
CIMGUI_API void igGetContentRegionAvail(ImVec2 *pOut);
CIMGUI_API void igGetContentRegionMax(ImVec2 *pOut);
CIMGUI_API void igGetWindowContentRegionMin(ImVec2 *pOut);
@ -1187,11 +1190,11 @@ CIMGUI_API void igSetScrollFromPosX(float local_x,float center_x_ratio);
CIMGUI_API void igSetScrollFromPosY(float local_y,float center_y_ratio);
CIMGUI_API void igPushFont(ImFont* font);
CIMGUI_API void igPopFont(void);
CIMGUI_API void igPushStyleColor_U32(ImGuiCol idx,ImU32 col);
CIMGUI_API void igPushStyleColor_Vec4(ImGuiCol idx,const ImVec4 col);
CIMGUI_API void igPushStyleColorU32(ImGuiCol idx,ImU32 col);
CIMGUI_API void igPushStyleColorVec4(ImGuiCol idx,const ImVec4 col);
CIMGUI_API void igPopStyleColor(int count);
CIMGUI_API void igPushStyleVar_Float(ImGuiStyleVar idx,float val);
CIMGUI_API void igPushStyleVar_Vec2(ImGuiStyleVar idx,const ImVec2 val);
CIMGUI_API void igPushStyleVarFloat(ImGuiStyleVar idx,float val);
CIMGUI_API void igPushStyleVarVec2(ImGuiStyleVar idx,const ImVec2 val);
CIMGUI_API void igPopStyleVar(int count);
CIMGUI_API void igPushAllowKeyboardFocus(bool allow_keyboard_focus);
CIMGUI_API void igPopAllowKeyboardFocus(void);
@ -1206,9 +1209,9 @@ CIMGUI_API void igPopTextWrapPos(void);
CIMGUI_API ImFont* igGetFont(void);
CIMGUI_API float igGetFontSize(void);
CIMGUI_API void igGetFontTexUvWhitePixel(ImVec2 *pOut);
CIMGUI_API ImU32 igGetColorU32_Col(ImGuiCol idx,float alpha_mul);
CIMGUI_API ImU32 igGetColorU32_Vec4(const ImVec4 col);
CIMGUI_API ImU32 igGetColorU32_U32(ImU32 col);
CIMGUI_API ImU32 igGetColorU32Col(ImGuiCol idx,float alpha_mul);
CIMGUI_API ImU32 igGetColorU32Vec4(const ImVec4 col);
CIMGUI_API ImU32 igGetColorU32U32(ImU32 col);
CIMGUI_API const ImVec4* igGetStyleColorVec4(ImGuiCol idx);
CIMGUI_API void igSeparator(void);
CIMGUI_API void igSameLine(float offset_from_start_x,float spacing);
@ -1233,14 +1236,14 @@ CIMGUI_API float igGetTextLineHeight(void);
CIMGUI_API float igGetTextLineHeightWithSpacing(void);
CIMGUI_API float igGetFrameHeight(void);
CIMGUI_API float igGetFrameHeightWithSpacing(void);
CIMGUI_API void igPushID_Str(const char* str_id);
CIMGUI_API void igPushID_StrStr(const char* str_id_begin,const char* str_id_end);
CIMGUI_API void igPushID_Ptr(const void* ptr_id);
CIMGUI_API void igPushID_Int(int int_id);
CIMGUI_API void igPushIDStr(const char* str_id);
CIMGUI_API void igPushIDStrStr(const char* str_id_begin,const char* str_id_end);
CIMGUI_API void igPushIDPtr(const void* ptr_id);
CIMGUI_API void igPushIDInt(int int_id);
CIMGUI_API void igPopID(void);
CIMGUI_API ImGuiID igGetID_Str(const char* str_id);
CIMGUI_API ImGuiID igGetID_StrStr(const char* str_id_begin,const char* str_id_end);
CIMGUI_API ImGuiID igGetID_Ptr(const void* ptr_id);
CIMGUI_API ImGuiID igGetIDStr(const char* str_id);
CIMGUI_API ImGuiID igGetIDStrStr(const char* str_id_begin,const char* str_id_end);
CIMGUI_API ImGuiID igGetIDPtr(const void* ptr_id);
CIMGUI_API void igTextUnformatted(const char* text,const char* text_end);
CIMGUI_API void igText(const char* fmt,...);
CIMGUI_API void igTextV(const char* fmt,va_list args);
@ -1261,17 +1264,17 @@ CIMGUI_API bool igArrowButton(const char* str_id,ImGuiDir dir);
CIMGUI_API void igImage(ImTextureID user_texture_id,const ImVec2 size,const ImVec2 uv0,const ImVec2 uv1,const ImVec4 tint_col,const ImVec4 border_col);
CIMGUI_API bool igImageButton(ImTextureID user_texture_id,const ImVec2 size,const ImVec2 uv0,const ImVec2 uv1,int frame_padding,const ImVec4 bg_col,const ImVec4 tint_col);
CIMGUI_API bool igCheckbox(const char* label,bool* v);
CIMGUI_API bool igCheckboxFlags_IntPtr(const char* label,int* flags,int flags_value);
CIMGUI_API bool igCheckboxFlags_UintPtr(const char* label,unsigned int* flags,unsigned int flags_value);
CIMGUI_API bool igRadioButton_Bool(const char* label,bool active);
CIMGUI_API bool igRadioButton_IntPtr(const char* label,int* v,int v_button);
CIMGUI_API bool igCheckboxFlagsIntPtr(const char* label,int* flags,int flags_value);
CIMGUI_API bool igCheckboxFlagsUintPtr(const char* label,unsigned int* flags,unsigned int flags_value);
CIMGUI_API bool igRadioButtonBool(const char* label,bool active);
CIMGUI_API bool igRadioButtonIntPtr(const char* label,int* v,int v_button);
CIMGUI_API void igProgressBar(float fraction,const ImVec2 size_arg,const char* overlay);
CIMGUI_API void igBullet(void);
CIMGUI_API bool igBeginCombo(const char* label,const char* preview_value,ImGuiComboFlags flags);
CIMGUI_API void igEndCombo(void);
CIMGUI_API bool igCombo_Str_arr(const char* label,int* current_item,const char* const items[],int items_count,int popup_max_height_in_items);
CIMGUI_API bool igCombo_Str(const char* label,int* current_item,const char* items_separated_by_zeros,int popup_max_height_in_items);
CIMGUI_API bool igCombo_FnBoolPtr(const char* label,int* current_item,bool(*items_getter)(void* data,int idx,const char** out_text),void* data,int items_count,int popup_max_height_in_items);
CIMGUI_API bool igComboStr_arr(const char* label,int* current_item,const char* const items[],int items_count,int popup_max_height_in_items);
CIMGUI_API bool igComboStr(const char* label,int* current_item,const char* items_separated_by_zeros,int popup_max_height_in_items);
CIMGUI_API bool igComboFnBoolPtr(const char* label,int* current_item,bool(*items_getter)(void* data,int idx,const char** out_text),void* data,int items_count,int popup_max_height_in_items);
CIMGUI_API bool igDragFloat(const char* label,float* v,float v_speed,float v_min,float v_max,const char* format,ImGuiSliderFlags flags);
CIMGUI_API bool igDragFloat2(const char* label,float v[2],float v_speed,float v_min,float v_max,const char* format,ImGuiSliderFlags flags);
CIMGUI_API bool igDragFloat3(const char* label,float v[3],float v_speed,float v_min,float v_max,const char* format,ImGuiSliderFlags flags);
@ -1318,45 +1321,45 @@ CIMGUI_API bool igColorPicker3(const char* label,float col[3],ImGuiColorEditFlag
CIMGUI_API bool igColorPicker4(const char* label,float col[4],ImGuiColorEditFlags flags,const float* ref_col);
CIMGUI_API bool igColorButton(const char* desc_id,const ImVec4 col,ImGuiColorEditFlags flags,ImVec2 size);
CIMGUI_API void igSetColorEditOptions(ImGuiColorEditFlags flags);
CIMGUI_API bool igTreeNode_Str(const char* label);
CIMGUI_API bool igTreeNode_StrStr(const char* str_id,const char* fmt,...);
CIMGUI_API bool igTreeNode_Ptr(const void* ptr_id,const char* fmt,...);
CIMGUI_API bool igTreeNodeV_Str(const char* str_id,const char* fmt,va_list args);
CIMGUI_API bool igTreeNodeV_Ptr(const void* ptr_id,const char* fmt,va_list args);
CIMGUI_API bool igTreeNodeEx_Str(const char* label,ImGuiTreeNodeFlags flags);
CIMGUI_API bool igTreeNodeEx_StrStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,...);
CIMGUI_API bool igTreeNodeEx_Ptr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,...);
CIMGUI_API bool igTreeNodeExV_Str(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args);
CIMGUI_API bool igTreeNodeExV_Ptr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args);
CIMGUI_API void igTreePush_Str(const char* str_id);
CIMGUI_API void igTreePush_Ptr(const void* ptr_id);
CIMGUI_API bool igTreeNodeStr(const char* label);
CIMGUI_API bool igTreeNodeStrStr(const char* str_id,const char* fmt,...);
CIMGUI_API bool igTreeNodePtr(const void* ptr_id,const char* fmt,...);
CIMGUI_API bool igTreeNodeVStr(const char* str_id,const char* fmt,va_list args);
CIMGUI_API bool igTreeNodeVPtr(const void* ptr_id,const char* fmt,va_list args);
CIMGUI_API bool igTreeNodeExStr(const char* label,ImGuiTreeNodeFlags flags);
CIMGUI_API bool igTreeNodeExStrStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,...);
CIMGUI_API bool igTreeNodeExPtr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,...);
CIMGUI_API bool igTreeNodeExVStr(const char* str_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args);
CIMGUI_API bool igTreeNodeExVPtr(const void* ptr_id,ImGuiTreeNodeFlags flags,const char* fmt,va_list args);
CIMGUI_API void igTreePushStr(const char* str_id);
CIMGUI_API void igTreePushPtr(const void* ptr_id);
CIMGUI_API void igTreePop(void);
CIMGUI_API float igGetTreeNodeToLabelSpacing(void);
CIMGUI_API bool igCollapsingHeader_TreeNodeFlags(const char* label,ImGuiTreeNodeFlags flags);
CIMGUI_API bool igCollapsingHeader_BoolPtr(const char* label,bool* p_visible,ImGuiTreeNodeFlags flags);
CIMGUI_API bool igCollapsingHeaderTreeNodeFlags(const char* label,ImGuiTreeNodeFlags flags);
CIMGUI_API bool igCollapsingHeaderBoolPtr(const char* label,bool* p_visible,ImGuiTreeNodeFlags flags);
CIMGUI_API void igSetNextItemOpen(bool is_open,ImGuiCond cond);
CIMGUI_API bool igSelectable_Bool(const char* label,bool selected,ImGuiSelectableFlags flags,const ImVec2 size);
CIMGUI_API bool igSelectable_BoolPtr(const char* label,bool* p_selected,ImGuiSelectableFlags flags,const ImVec2 size);
CIMGUI_API bool igSelectableBool(const char* label,bool selected,ImGuiSelectableFlags flags,const ImVec2 size);
CIMGUI_API bool igSelectableBoolPtr(const char* label,bool* p_selected,ImGuiSelectableFlags flags,const ImVec2 size);
CIMGUI_API bool igBeginListBox(const char* label,const ImVec2 size);
CIMGUI_API void igEndListBox(void);
CIMGUI_API bool igListBox_Str_arr(const char* label,int* current_item,const char* const items[],int items_count,int height_in_items);
CIMGUI_API bool igListBox_FnBoolPtr(const char* label,int* current_item,bool(*items_getter)(void* data,int idx,const char** out_text),void* data,int items_count,int height_in_items);
CIMGUI_API void igPlotLines_FloatPtr(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride);
CIMGUI_API void igPlotLines_FnFloatPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size);
CIMGUI_API void igPlotHistogram_FloatPtr(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride);
CIMGUI_API void igPlotHistogram_FnFloatPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size);
CIMGUI_API void igValue_Bool(const char* prefix,bool b);
CIMGUI_API void igValue_Int(const char* prefix,int v);
CIMGUI_API void igValue_Uint(const char* prefix,unsigned int v);
CIMGUI_API void igValue_Float(const char* prefix,float v,const char* float_format);
CIMGUI_API bool igListBoxStr_arr(const char* label,int* current_item,const char* const items[],int items_count,int height_in_items);
CIMGUI_API bool igListBoxFnBoolPtr(const char* label,int* current_item,bool(*items_getter)(void* data,int idx,const char** out_text),void* data,int items_count,int height_in_items);
CIMGUI_API void igPlotLinesFloatPtr(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride);
CIMGUI_API void igPlotLinesFnFloatPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size);
CIMGUI_API void igPlotHistogramFloatPtr(const char* label,const float* values,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size,int stride);
CIMGUI_API void igPlotHistogramFnFloatPtr(const char* label,float(*values_getter)(void* data,int idx),void* data,int values_count,int values_offset,const char* overlay_text,float scale_min,float scale_max,ImVec2 graph_size);
CIMGUI_API void igValueBool(const char* prefix,bool b);
CIMGUI_API void igValueInt(const char* prefix,int v);
CIMGUI_API void igValueUint(const char* prefix,unsigned int v);
CIMGUI_API void igValueFloat(const char* prefix,float v,const char* float_format);
CIMGUI_API bool igBeginMenuBar(void);
CIMGUI_API void igEndMenuBar(void);
CIMGUI_API bool igBeginMainMenuBar(void);
CIMGUI_API void igEndMainMenuBar(void);
CIMGUI_API bool igBeginMenu(const char* label,bool enabled);
CIMGUI_API void igEndMenu(void);
CIMGUI_API bool igMenuItem_Bool(const char* label,const char* shortcut,bool selected,bool enabled);
CIMGUI_API bool igMenuItem_BoolPtr(const char* label,const char* shortcut,bool* p_selected,bool enabled);
CIMGUI_API bool igMenuItemBool(const char* label,const char* shortcut,bool selected,bool enabled);
CIMGUI_API bool igMenuItemBoolPtr(const char* label,const char* shortcut,bool* p_selected,bool enabled);
CIMGUI_API void igBeginTooltip(void);
CIMGUI_API void igEndTooltip(void);
CIMGUI_API void igSetTooltip(const char* fmt,...);
@ -1364,8 +1367,8 @@ CIMGUI_API void igSetTooltipV(const char* fmt,va_list args);
CIMGUI_API bool igBeginPopup(const char* str_id,ImGuiWindowFlags flags);
CIMGUI_API bool igBeginPopupModal(const char* name,bool* p_open,ImGuiWindowFlags flags);
CIMGUI_API void igEndPopup(void);
CIMGUI_API void igOpenPopup_Str(const char* str_id,ImGuiPopupFlags popup_flags);
CIMGUI_API void igOpenPopup_ID(ImGuiID id,ImGuiPopupFlags popup_flags);
CIMGUI_API void igOpenPopupStr(const char* str_id,ImGuiPopupFlags popup_flags);
CIMGUI_API void igOpenPopupID(ImGuiID id,ImGuiPopupFlags popup_flags);
CIMGUI_API void igOpenPopupOnItemClick(const char* str_id,ImGuiPopupFlags popup_flags);
CIMGUI_API void igCloseCurrentPopup(void);
CIMGUI_API bool igBeginPopupContextItem(const char* str_id,ImGuiPopupFlags popup_flags);
@ -1440,8 +1443,8 @@ CIMGUI_API void igGetItemRectMax(ImVec2 *pOut);
CIMGUI_API void igGetItemRectSize(ImVec2 *pOut);
CIMGUI_API void igSetItemAllowOverlap(void);
CIMGUI_API ImGuiViewport* igGetMainViewport(void);
CIMGUI_API bool igIsRectVisible_Nil(const ImVec2 size);
CIMGUI_API bool igIsRectVisible_Vec2(const ImVec2 rect_min,const ImVec2 rect_max);
CIMGUI_API bool igIsRectVisibleNil(const ImVec2 size);
CIMGUI_API bool igIsRectVisibleVec2(const ImVec2 rect_min,const ImVec2 rect_max);
CIMGUI_API double igGetTime(void);
CIMGUI_API int igGetFrameCount(void);
CIMGUI_API ImDrawList* igGetBackgroundDrawList(void);
@ -1526,9 +1529,9 @@ CIMGUI_API bool ImGuiTextFilter_PassFilter(ImGuiTextFilter* self,const char* tex
CIMGUI_API void ImGuiTextFilter_Build(ImGuiTextFilter* self);
CIMGUI_API void ImGuiTextFilter_Clear(ImGuiTextFilter* self);
CIMGUI_API bool ImGuiTextFilter_IsActive(ImGuiTextFilter* self);
CIMGUI_API ImGuiTextRange* ImGuiTextRange_ImGuiTextRange_Nil(void);
CIMGUI_API ImGuiTextRange* ImGuiTextRange_ImGuiTextRangeNil(void);
CIMGUI_API void ImGuiTextRange_destroy(ImGuiTextRange* self);
CIMGUI_API ImGuiTextRange* ImGuiTextRange_ImGuiTextRange_Str(const char* _b,const char* _e);
CIMGUI_API ImGuiTextRange* ImGuiTextRange_ImGuiTextRangeStr(const char* _b,const char* _e);
CIMGUI_API bool ImGuiTextRange_empty(ImGuiTextRange* self);
CIMGUI_API void ImGuiTextRange_split(ImGuiTextRange* self,char separator,ImVector_ImGuiTextRange* out);
CIMGUI_API ImGuiTextBuffer* ImGuiTextBuffer_ImGuiTextBuffer(void);
@ -1542,10 +1545,10 @@ CIMGUI_API void ImGuiTextBuffer_reserve(ImGuiTextBuffer* self,int capacity);
CIMGUI_API const char* ImGuiTextBuffer_c_str(ImGuiTextBuffer* self);
CIMGUI_API void ImGuiTextBuffer_append(ImGuiTextBuffer* self,const char* str,const char* str_end);
CIMGUI_API void ImGuiTextBuffer_appendfv(ImGuiTextBuffer* self,const char* fmt,va_list args);
CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePair_Int(ImGuiID _key,int _val_i);
CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePairInt(ImGuiID _key,int _val_i);
CIMGUI_API void ImGuiStoragePair_destroy(ImGuiStoragePair* self);
CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePair_Float(ImGuiID _key,float _val_f);
CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePair_Ptr(ImGuiID _key,void* _val_p);
CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePairFloat(ImGuiID _key,float _val_f);
CIMGUI_API ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePairPtr(ImGuiID _key,void* _val_p);
CIMGUI_API void ImGuiStorage_Clear(ImGuiStorage* self);
CIMGUI_API int ImGuiStorage_GetInt(ImGuiStorage* self,ImGuiID key,int default_val);
CIMGUI_API void ImGuiStorage_SetInt(ImGuiStorage* self,ImGuiID key,int val);
@ -1566,12 +1569,12 @@ CIMGUI_API void ImGuiListClipper_destroy(ImGuiListClipper* self);
CIMGUI_API void ImGuiListClipper_Begin(ImGuiListClipper* self,int items_count,float items_height);
CIMGUI_API void ImGuiListClipper_End(ImGuiListClipper* self);
CIMGUI_API bool ImGuiListClipper_Step(ImGuiListClipper* self);
CIMGUI_API ImColor* ImColor_ImColor_Nil(void);
CIMGUI_API ImColor* ImColor_ImColorNil(void);
CIMGUI_API void ImColor_destroy(ImColor* self);
CIMGUI_API ImColor* ImColor_ImColor_Int(int r,int g,int b,int a);
CIMGUI_API ImColor* ImColor_ImColor_U32(ImU32 rgba);
CIMGUI_API ImColor* ImColor_ImColor_Float(float r,float g,float b,float a);
CIMGUI_API ImColor* ImColor_ImColor_Vec4(const ImVec4 col);
CIMGUI_API ImColor* ImColor_ImColorInt(int r,int g,int b,int a);
CIMGUI_API ImColor* ImColor_ImColorU32(ImU32 rgba);
CIMGUI_API ImColor* ImColor_ImColorFloat(float r,float g,float b,float a);
CIMGUI_API ImColor* ImColor_ImColorVec4(const ImVec4 col);
CIMGUI_API void ImColor_SetHSV(ImColor* self,float h,float s,float v,float a);
CIMGUI_API void ImColor_HSV(ImColor *pOut,float h,float s,float v,float a);
CIMGUI_API ImDrawCmd* ImDrawCmd_ImDrawCmd(void);
@ -1605,8 +1608,8 @@ CIMGUI_API void ImDrawList_AddCircle(ImDrawList* self,const ImVec2 center,float
CIMGUI_API void ImDrawList_AddCircleFilled(ImDrawList* self,const ImVec2 center,float radius,ImU32 col,int num_segments);
CIMGUI_API void ImDrawList_AddNgon(ImDrawList* self,const ImVec2 center,float radius,ImU32 col,int num_segments,float thickness);
CIMGUI_API void ImDrawList_AddNgonFilled(ImDrawList* self,const ImVec2 center,float radius,ImU32 col,int num_segments);
CIMGUI_API void ImDrawList_AddText_Vec2(ImDrawList* self,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end);
CIMGUI_API void ImDrawList_AddText_FontPtr(ImDrawList* self,const ImFont* font,float font_size,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end,float wrap_width,const ImVec4* cpu_fine_clip_rect);
CIMGUI_API void ImDrawList_AddTextVec2(ImDrawList* self,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end);
CIMGUI_API void ImDrawList_AddTextFontPtr(ImDrawList* self,const ImFont* font,float font_size,const ImVec2 pos,ImU32 col,const char* text_begin,const char* text_end,float wrap_width,const ImVec4* cpu_fine_clip_rect);
CIMGUI_API void ImDrawList_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_AddBezierCubic(ImDrawList* self,const ImVec2 p1,const ImVec2 p2,const ImVec2 p3,const ImVec2 p4,ImU32 col,float thickness,int num_segments);

View File

View File

@ -51,7 +51,7 @@
"defaults": {},
"funcname": "ImColor",
"location": "imgui:2230",
"ov_cimguiname": "ImColor_ImColor_Nil",
"ov_cimguiname": "ImColor_ImColorNil",
"signature": "()",
"stname": "ImColor"
},
@ -84,7 +84,7 @@
},
"funcname": "ImColor",
"location": "imgui:2231",
"ov_cimguiname": "ImColor_ImColor_Int",
"ov_cimguiname": "ImColor_ImColorInt",
"signature": "(int,int,int,int)",
"stname": "ImColor"
},
@ -103,7 +103,7 @@
"defaults": {},
"funcname": "ImColor",
"location": "imgui:2232",
"ov_cimguiname": "ImColor_ImColor_U32",
"ov_cimguiname": "ImColor_ImColorU32",
"signature": "(ImU32)",
"stname": "ImColor"
},
@ -136,7 +136,7 @@
},
"funcname": "ImColor",
"location": "imgui:2233",
"ov_cimguiname": "ImColor_ImColor_Float",
"ov_cimguiname": "ImColor_ImColorFloat",
"signature": "(float,float,float,float)",
"stname": "ImColor"
},
@ -155,7 +155,7 @@
"defaults": {},
"funcname": "ImColor",
"location": "imgui:2234",
"ov_cimguiname": "ImColor_ImColor_Vec4",
"ov_cimguiname": "ImColor_ImColorVec4",
"signature": "(const ImVec4)",
"stname": "ImColor"
}
@ -1392,7 +1392,7 @@
},
"funcname": "AddText",
"location": "imgui:2431",
"ov_cimguiname": "ImDrawList_AddText_Vec2",
"ov_cimguiname": "ImDrawList_AddTextVec2",
"ret": "void",
"signature": "(const ImVec2,ImU32,const char*,const char*)",
"stname": "ImDrawList"
@ -1447,7 +1447,7 @@
},
"funcname": "AddText",
"location": "imgui:2432",
"ov_cimguiname": "ImDrawList_AddText_FontPtr",
"ov_cimguiname": "ImDrawList_AddTextFontPtr",
"ret": "void",
"signature": "(const ImFont*,float,const ImVec2,ImU32,const char*,const char*,float,const ImVec4*)",
"stname": "ImDrawList"
@ -5010,7 +5010,7 @@
"defaults": {},
"funcname": "ImGuiStoragePair",
"location": "imgui:2124",
"ov_cimguiname": "ImGuiStoragePair_ImGuiStoragePair_Int",
"ov_cimguiname": "ImGuiStoragePair_ImGuiStoragePairInt",
"signature": "(ImGuiID,int)",
"stname": "ImGuiStoragePair"
},
@ -5033,7 +5033,7 @@
"defaults": {},
"funcname": "ImGuiStoragePair",
"location": "imgui:2125",
"ov_cimguiname": "ImGuiStoragePair_ImGuiStoragePair_Float",
"ov_cimguiname": "ImGuiStoragePair_ImGuiStoragePairFloat",
"signature": "(ImGuiID,float)",
"stname": "ImGuiStoragePair"
},
@ -5056,7 +5056,7 @@
"defaults": {},
"funcname": "ImGuiStoragePair",
"location": "imgui:2126",
"ov_cimguiname": "ImGuiStoragePair_ImGuiStoragePair_Ptr",
"ov_cimguiname": "ImGuiStoragePair_ImGuiStoragePairPtr",
"signature": "(ImGuiID,void*)",
"stname": "ImGuiStoragePair"
}
@ -6091,7 +6091,7 @@
"defaults": {},
"funcname": "ImGuiTextRange",
"location": "imgui:2078",
"ov_cimguiname": "ImGuiTextRange_ImGuiTextRange_Nil",
"ov_cimguiname": "ImGuiTextRange_ImGuiTextRangeNil",
"signature": "()",
"stname": "ImGuiTextRange"
},
@ -6114,7 +6114,7 @@
"defaults": {},
"funcname": "ImGuiTextRange",
"location": "imgui:2079",
"ov_cimguiname": "ImGuiTextRange_ImGuiTextRange_Str",
"ov_cimguiname": "ImGuiTextRange_ImGuiTextRangeStr",
"signature": "(const char*,const char*)",
"stname": "ImGuiTextRange"
}
@ -6286,7 +6286,7 @@
"defaults": {},
"funcname": "ImVec2",
"location": "imgui:259",
"ov_cimguiname": "ImVec2_ImVec2_Nil",
"ov_cimguiname": "ImVec2_ImVec2Nil",
"signature": "()",
"stname": "ImVec2"
},
@ -6309,7 +6309,7 @@
"defaults": {},
"funcname": "ImVec2",
"location": "imgui:260",
"ov_cimguiname": "ImVec2_ImVec2_Float",
"ov_cimguiname": "ImVec2_ImVec2Float",
"signature": "(float,float)",
"stname": "ImVec2"
}
@ -6344,7 +6344,7 @@
"defaults": {},
"funcname": "ImVec4",
"location": "imgui:272",
"ov_cimguiname": "ImVec4_ImVec4_Nil",
"ov_cimguiname": "ImVec4_ImVec4Nil",
"signature": "()",
"stname": "ImVec4"
},
@ -6375,7 +6375,7 @@
"defaults": {},
"funcname": "ImVec4",
"location": "imgui:273",
"ov_cimguiname": "ImVec4_ImVec4_Float",
"ov_cimguiname": "ImVec4_ImVec4Float",
"signature": "(float,float,float,float)",
"stname": "ImVec4"
}
@ -6410,7 +6410,7 @@
"defaults": {},
"funcname": "ImVector",
"location": "imgui:1699",
"ov_cimguiname": "ImVector_ImVector_Nil",
"ov_cimguiname": "ImVector_ImVectorNil",
"signature": "()",
"stname": "ImVector",
"templated": true
@ -6430,7 +6430,7 @@
"defaults": {},
"funcname": "ImVector",
"location": "imgui:1700",
"ov_cimguiname": "ImVector_ImVector_Vector",
"ov_cimguiname": "ImVector_ImVectorVector",
"signature": "(const ImVector)",
"stname": "ImVector",
"templated": true
@ -6477,7 +6477,7 @@
"defaults": {},
"funcname": "back",
"location": "imgui:1722",
"ov_cimguiname": "ImVector_back_Nil",
"ov_cimguiname": "ImVector_backNil",
"ret": "T*",
"retref": "&",
"signature": "()",
@ -6498,7 +6498,7 @@
"defaults": {},
"funcname": "back",
"location": "imgui:1723",
"ov_cimguiname": "ImVector_back__const",
"ov_cimguiname": "ImVector_back_const",
"ret": "const T*",
"retref": "&",
"signature": "()const",
@ -6521,7 +6521,7 @@
"defaults": {},
"funcname": "begin",
"location": "imgui:1716",
"ov_cimguiname": "ImVector_begin_Nil",
"ov_cimguiname": "ImVector_beginNil",
"ret": "T*",
"signature": "()",
"stname": "ImVector",
@ -6541,7 +6541,7 @@
"defaults": {},
"funcname": "begin",
"location": "imgui:1717",
"ov_cimguiname": "ImVector_begin__const",
"ov_cimguiname": "ImVector_begin_const",
"ret": "const T*",
"signature": "()const",
"stname": "ImVector",
@ -6721,7 +6721,7 @@
"defaults": {},
"funcname": "end",
"location": "imgui:1718",
"ov_cimguiname": "ImVector_end_Nil",
"ov_cimguiname": "ImVector_endNil",
"ret": "T*",
"signature": "()",
"stname": "ImVector",
@ -6741,7 +6741,7 @@
"defaults": {},
"funcname": "end",
"location": "imgui:1719",
"ov_cimguiname": "ImVector_end__const",
"ov_cimguiname": "ImVector_end_const",
"ret": "const T*",
"signature": "()const",
"stname": "ImVector",
@ -6767,7 +6767,7 @@
"defaults": {},
"funcname": "erase",
"location": "imgui:1736",
"ov_cimguiname": "ImVector_erase_Nil",
"ov_cimguiname": "ImVector_eraseNil",
"ret": "T*",
"signature": "(const T*)",
"stname": "ImVector",
@ -6795,7 +6795,7 @@
"defaults": {},
"funcname": "erase",
"location": "imgui:1737",
"ov_cimguiname": "ImVector_erase_TPtr",
"ov_cimguiname": "ImVector_eraseTPtr",
"ret": "T*",
"signature": "(const T*,const T*)",
"stname": "ImVector",
@ -6847,7 +6847,7 @@
"defaults": {},
"funcname": "find",
"location": "imgui:1741",
"ov_cimguiname": "ImVector_find_Nil",
"ov_cimguiname": "ImVector_findNil",
"ret": "T*",
"signature": "(const T)",
"stname": "ImVector",
@ -6871,7 +6871,7 @@
"defaults": {},
"funcname": "find",
"location": "imgui:1742",
"ov_cimguiname": "ImVector_find__const",
"ov_cimguiname": "ImVector_find_const",
"ret": "const T*",
"signature": "(const T)const",
"stname": "ImVector",
@ -6945,7 +6945,7 @@
"defaults": {},
"funcname": "front",
"location": "imgui:1720",
"ov_cimguiname": "ImVector_front_Nil",
"ov_cimguiname": "ImVector_frontNil",
"ret": "T*",
"retref": "&",
"signature": "()",
@ -6966,7 +6966,7 @@
"defaults": {},
"funcname": "front",
"location": "imgui:1721",
"ov_cimguiname": "ImVector_front__const",
"ov_cimguiname": "ImVector_front_const",
"ret": "const T*",
"retref": "&",
"signature": "()const",
@ -7171,7 +7171,7 @@
"defaults": {},
"funcname": "resize",
"location": "imgui:1727",
"ov_cimguiname": "ImVector_resize_Nil",
"ov_cimguiname": "ImVector_resizeNil",
"ret": "void",
"signature": "(int)",
"stname": "ImVector",
@ -7199,7 +7199,7 @@
"defaults": {},
"funcname": "resize",
"location": "imgui:1728",
"ov_cimguiname": "ImVector_resize_T",
"ov_cimguiname": "ImVector_resizeT",
"ret": "void",
"signature": "(int,const T)",
"stname": "ImVector",
@ -7439,7 +7439,7 @@
"funcname": "BeginChild",
"location": "imgui:342",
"namespace": "ImGui",
"ov_cimguiname": "igBeginChild_Str",
"ov_cimguiname": "igBeginChildStr",
"ret": "bool",
"signature": "(const char*,const ImVec2,bool,ImGuiWindowFlags)",
"stname": ""
@ -7475,7 +7475,7 @@
"funcname": "BeginChild",
"location": "imgui:343",
"namespace": "ImGui",
"ov_cimguiname": "igBeginChild_ID",
"ov_cimguiname": "igBeginChildID",
"ret": "bool",
"signature": "(ImGuiID,const ImVec2,bool,ImGuiWindowFlags)",
"stname": ""
@ -8275,7 +8275,7 @@
"funcname": "CheckboxFlags",
"location": "imgui:506",
"namespace": "ImGui",
"ov_cimguiname": "igCheckboxFlags_IntPtr",
"ov_cimguiname": "igCheckboxFlagsIntPtr",
"ret": "bool",
"signature": "(const char*,int*,int)",
"stname": ""
@ -8303,7 +8303,7 @@
"funcname": "CheckboxFlags",
"location": "imgui:507",
"namespace": "ImGui",
"ov_cimguiname": "igCheckboxFlags_UintPtr",
"ov_cimguiname": "igCheckboxFlagsUintPtr",
"ret": "bool",
"signature": "(const char*,unsigned int*,unsigned int)",
"stname": ""
@ -8348,7 +8348,7 @@
"funcname": "CollapsingHeader",
"location": "imgui:611",
"namespace": "ImGui",
"ov_cimguiname": "igCollapsingHeader_TreeNodeFlags",
"ov_cimguiname": "igCollapsingHeaderTreeNodeFlags",
"ret": "bool",
"signature": "(const char*,ImGuiTreeNodeFlags)",
"stname": ""
@ -8378,7 +8378,7 @@
"funcname": "CollapsingHeader",
"location": "imgui:612",
"namespace": "ImGui",
"ov_cimguiname": "igCollapsingHeader_BoolPtr",
"ov_cimguiname": "igCollapsingHeaderBoolPtr",
"ret": "bool",
"signature": "(const char*,bool*,ImGuiTreeNodeFlags)",
"stname": ""
@ -8761,7 +8761,7 @@
"funcname": "Combo",
"location": "imgui:518",
"namespace": "ImGui",
"ov_cimguiname": "igCombo_Str_arr",
"ov_cimguiname": "igComboStr_arr",
"ret": "bool",
"signature": "(const char*,int*,const char* const[],int,int)",
"stname": ""
@ -8795,7 +8795,7 @@
"funcname": "Combo",
"location": "imgui:519",
"namespace": "ImGui",
"ov_cimguiname": "igCombo_Str",
"ov_cimguiname": "igComboStr",
"ret": "bool",
"signature": "(const char*,int*,const char*,int)",
"stname": ""
@ -8839,7 +8839,7 @@
"funcname": "Combo",
"location": "imgui:520",
"namespace": "ImGui",
"ov_cimguiname": "igCombo_FnBoolPtr",
"ov_cimguiname": "igComboFnBoolPtr",
"ret": "bool",
"signature": "(const char*,int*,bool(*)(void*,int,const char**),void*,int,int)",
"stname": ""
@ -10007,7 +10007,7 @@
"funcname": "GetColorU32",
"location": "imgui:425",
"namespace": "ImGui",
"ov_cimguiname": "igGetColorU32_Col",
"ov_cimguiname": "igGetColorU32Col",
"ret": "ImU32",
"signature": "(ImGuiCol,float)",
"stname": ""
@ -10027,7 +10027,7 @@
"funcname": "GetColorU32",
"location": "imgui:426",
"namespace": "ImGui",
"ov_cimguiname": "igGetColorU32_Vec4",
"ov_cimguiname": "igGetColorU32Vec4",
"ret": "ImU32",
"signature": "(const ImVec4)",
"stname": ""
@ -10047,7 +10047,7 @@
"funcname": "GetColorU32",
"location": "imgui:427",
"namespace": "ImGui",
"ov_cimguiname": "igGetColorU32_U32",
"ov_cimguiname": "igGetColorU32U32",
"ret": "ImU32",
"signature": "(ImU32)",
"stname": ""
@ -10493,7 +10493,7 @@
"funcname": "GetID",
"location": "imgui:477",
"namespace": "ImGui",
"ov_cimguiname": "igGetID_Str",
"ov_cimguiname": "igGetIDStr",
"ret": "ImGuiID",
"signature": "(const char*)",
"stname": ""
@ -10517,7 +10517,7 @@
"funcname": "GetID",
"location": "imgui:478",
"namespace": "ImGui",
"ov_cimguiname": "igGetID_StrStr",
"ov_cimguiname": "igGetIDStrStr",
"ret": "ImGuiID",
"signature": "(const char*,const char*)",
"stname": ""
@ -10537,7 +10537,7 @@
"funcname": "GetID",
"location": "imgui:479",
"namespace": "ImGui",
"ov_cimguiname": "igGetID_Ptr",
"ov_cimguiname": "igGetIDPtr",
"ret": "ImGuiID",
"signature": "(const void*)",
"stname": ""
@ -12486,7 +12486,7 @@
"funcname": "IsRectVisible",
"location": "imgui:858",
"namespace": "ImGui",
"ov_cimguiname": "igIsRectVisible_Nil",
"ov_cimguiname": "igIsRectVisibleNil",
"ret": "bool",
"signature": "(const ImVec2)",
"stname": ""
@ -12510,7 +12510,7 @@
"funcname": "IsRectVisible",
"location": "imgui:859",
"namespace": "ImGui",
"ov_cimguiname": "igIsRectVisible_Vec2",
"ov_cimguiname": "igIsRectVisibleVec2",
"ret": "bool",
"signature": "(const ImVec2,const ImVec2)",
"stname": ""
@ -12693,7 +12693,7 @@
"funcname": "ListBox",
"location": "imgui:629",
"namespace": "ImGui",
"ov_cimguiname": "igListBox_Str_arr",
"ov_cimguiname": "igListBoxStr_arr",
"ret": "bool",
"signature": "(const char*,int*,const char* const[],int,int)",
"stname": ""
@ -12737,7 +12737,7 @@
"funcname": "ListBox",
"location": "imgui:630",
"namespace": "ImGui",
"ov_cimguiname": "igListBox_FnBoolPtr",
"ov_cimguiname": "igListBoxFnBoolPtr",
"ret": "bool",
"signature": "(const char*,int*,bool(*)(void*,int,const char**),void*,int,int)",
"stname": ""
@ -13034,7 +13034,7 @@
"funcname": "MenuItem",
"location": "imgui:657",
"namespace": "ImGui",
"ov_cimguiname": "igMenuItem_Bool",
"ov_cimguiname": "igMenuItemBool",
"ret": "bool",
"signature": "(const char*,const char*,bool,bool)",
"stname": ""
@ -13068,7 +13068,7 @@
"funcname": "MenuItem",
"location": "imgui:658",
"namespace": "ImGui",
"ov_cimguiname": "igMenuItem_BoolPtr",
"ov_cimguiname": "igMenuItemBoolPtr",
"ret": "bool",
"signature": "(const char*,const char*,bool*,bool)",
"stname": ""
@ -13147,7 +13147,7 @@
"funcname": "OpenPopup",
"location": "imgui:690",
"namespace": "ImGui",
"ov_cimguiname": "igOpenPopup_Str",
"ov_cimguiname": "igOpenPopupStr",
"ret": "void",
"signature": "(const char*,ImGuiPopupFlags)",
"stname": ""
@ -13173,7 +13173,7 @@
"funcname": "OpenPopup",
"location": "imgui:691",
"namespace": "ImGui",
"ov_cimguiname": "igOpenPopup_ID",
"ov_cimguiname": "igOpenPopupID",
"ret": "void",
"signature": "(ImGuiID,ImGuiPopupFlags)",
"stname": ""
@ -13263,7 +13263,7 @@
"funcname": "PlotHistogram",
"location": "imgui:636",
"namespace": "ImGui",
"ov_cimguiname": "igPlotHistogram_FloatPtr",
"ov_cimguiname": "igPlotHistogramFloatPtr",
"ret": "void",
"signature": "(const char*,const float*,int,int,const char*,float,float,ImVec2,int)",
"stname": ""
@ -13323,7 +13323,7 @@
"funcname": "PlotHistogram",
"location": "imgui:637",
"namespace": "ImGui",
"ov_cimguiname": "igPlotHistogram_FnFloatPtr",
"ov_cimguiname": "igPlotHistogramFnFloatPtr",
"ret": "void",
"signature": "(const char*,float(*)(void*,int),void*,int,int,const char*,float,float,ImVec2)",
"stname": ""
@ -13384,7 +13384,7 @@
"funcname": "PlotLines",
"location": "imgui:634",
"namespace": "ImGui",
"ov_cimguiname": "igPlotLines_FloatPtr",
"ov_cimguiname": "igPlotLinesFloatPtr",
"ret": "void",
"signature": "(const char*,const float*,int,int,const char*,float,float,ImVec2,int)",
"stname": ""
@ -13444,7 +13444,7 @@
"funcname": "PlotLines",
"location": "imgui:635",
"namespace": "ImGui",
"ov_cimguiname": "igPlotLines_FnFloatPtr",
"ov_cimguiname": "igPlotLinesFnFloatPtr",
"ret": "void",
"signature": "(const char*,float(*)(void*,int),void*,int,int,const char*,float,float,ImVec2)",
"stname": ""
@ -13762,7 +13762,7 @@
"funcname": "PushID",
"location": "imgui:472",
"namespace": "ImGui",
"ov_cimguiname": "igPushID_Str",
"ov_cimguiname": "igPushIDStr",
"ret": "void",
"signature": "(const char*)",
"stname": ""
@ -13786,7 +13786,7 @@
"funcname": "PushID",
"location": "imgui:473",
"namespace": "ImGui",
"ov_cimguiname": "igPushID_StrStr",
"ov_cimguiname": "igPushIDStrStr",
"ret": "void",
"signature": "(const char*,const char*)",
"stname": ""
@ -13806,7 +13806,7 @@
"funcname": "PushID",
"location": "imgui:474",
"namespace": "ImGui",
"ov_cimguiname": "igPushID_Ptr",
"ov_cimguiname": "igPushIDPtr",
"ret": "void",
"signature": "(const void*)",
"stname": ""
@ -13826,7 +13826,7 @@
"funcname": "PushID",
"location": "imgui:475",
"namespace": "ImGui",
"ov_cimguiname": "igPushID_Int",
"ov_cimguiname": "igPushIDInt",
"ret": "void",
"signature": "(int)",
"stname": ""
@ -13874,7 +13874,7 @@
"funcname": "PushStyleColor",
"location": "imgui:401",
"namespace": "ImGui",
"ov_cimguiname": "igPushStyleColor_U32",
"ov_cimguiname": "igPushStyleColorU32",
"ret": "void",
"signature": "(ImGuiCol,ImU32)",
"stname": ""
@ -13898,7 +13898,7 @@
"funcname": "PushStyleColor",
"location": "imgui:402",
"namespace": "ImGui",
"ov_cimguiname": "igPushStyleColor_Vec4",
"ov_cimguiname": "igPushStyleColorVec4",
"ret": "void",
"signature": "(ImGuiCol,const ImVec4)",
"stname": ""
@ -13924,7 +13924,7 @@
"funcname": "PushStyleVar",
"location": "imgui:404",
"namespace": "ImGui",
"ov_cimguiname": "igPushStyleVar_Float",
"ov_cimguiname": "igPushStyleVarFloat",
"ret": "void",
"signature": "(ImGuiStyleVar,float)",
"stname": ""
@ -13948,7 +13948,7 @@
"funcname": "PushStyleVar",
"location": "imgui:405",
"namespace": "ImGui",
"ov_cimguiname": "igPushStyleVar_Vec2",
"ov_cimguiname": "igPushStyleVarVec2",
"ret": "void",
"signature": "(ImGuiStyleVar,const ImVec2)",
"stname": ""
@ -13998,7 +13998,7 @@
"funcname": "RadioButton",
"location": "imgui:508",
"namespace": "ImGui",
"ov_cimguiname": "igRadioButton_Bool",
"ov_cimguiname": "igRadioButtonBool",
"ret": "bool",
"signature": "(const char*,bool)",
"stname": ""
@ -14026,7 +14026,7 @@
"funcname": "RadioButton",
"location": "imgui:509",
"namespace": "ImGui",
"ov_cimguiname": "igRadioButton_IntPtr",
"ov_cimguiname": "igRadioButtonIntPtr",
"ret": "bool",
"signature": "(const char*,int*,int)",
"stname": ""
@ -14180,7 +14180,7 @@
"funcname": "Selectable",
"location": "imgui:618",
"namespace": "ImGui",
"ov_cimguiname": "igSelectable_Bool",
"ov_cimguiname": "igSelectableBool",
"ret": "bool",
"signature": "(const char*,bool,ImGuiSelectableFlags,const ImVec2)",
"stname": ""
@ -14215,7 +14215,7 @@
"funcname": "Selectable",
"location": "imgui:619",
"namespace": "ImGui",
"ov_cimguiname": "igSelectable_BoolPtr",
"ov_cimguiname": "igSelectableBoolPtr",
"ret": "bool",
"signature": "(const char*,bool*,ImGuiSelectableFlags,const ImVec2)",
"stname": ""
@ -15096,7 +15096,7 @@
"funcname": "SetWindowCollapsed",
"location": "imgui:369",
"namespace": "ImGui",
"ov_cimguiname": "igSetWindowCollapsed_Bool",
"ov_cimguiname": "igSetWindowCollapsedBool",
"ret": "void",
"signature": "(bool,ImGuiCond)",
"stname": ""
@ -15126,7 +15126,7 @@
"funcname": "SetWindowCollapsed",
"location": "imgui:374",
"namespace": "ImGui",
"ov_cimguiname": "igSetWindowCollapsed_Str",
"ov_cimguiname": "igSetWindowCollapsedStr",
"ret": "void",
"signature": "(const char*,bool,ImGuiCond)",
"stname": ""
@ -15143,7 +15143,7 @@
"funcname": "SetWindowFocus",
"location": "imgui:370",
"namespace": "ImGui",
"ov_cimguiname": "igSetWindowFocus_Nil",
"ov_cimguiname": "igSetWindowFocusNil",
"ret": "void",
"signature": "()",
"stname": ""
@ -15163,7 +15163,7 @@
"funcname": "SetWindowFocus",
"location": "imgui:375",
"namespace": "ImGui",
"ov_cimguiname": "igSetWindowFocus_Str",
"ov_cimguiname": "igSetWindowFocusStr",
"ret": "void",
"signature": "(const char*)",
"stname": ""
@ -15213,7 +15213,7 @@
"funcname": "SetWindowPos",
"location": "imgui:367",
"namespace": "ImGui",
"ov_cimguiname": "igSetWindowPos_Vec2",
"ov_cimguiname": "igSetWindowPosVec2",
"ret": "void",
"signature": "(const ImVec2,ImGuiCond)",
"stname": ""
@ -15243,7 +15243,7 @@
"funcname": "SetWindowPos",
"location": "imgui:372",
"namespace": "ImGui",
"ov_cimguiname": "igSetWindowPos_Str",
"ov_cimguiname": "igSetWindowPosStr",
"ret": "void",
"signature": "(const char*,const ImVec2,ImGuiCond)",
"stname": ""
@ -15271,7 +15271,7 @@
"funcname": "SetWindowSize",
"location": "imgui:368",
"namespace": "ImGui",
"ov_cimguiname": "igSetWindowSize_Vec2",
"ov_cimguiname": "igSetWindowSizeVec2",
"ret": "void",
"signature": "(const ImVec2,ImGuiCond)",
"stname": ""
@ -15301,7 +15301,7 @@
"funcname": "SetWindowSize",
"location": "imgui:373",
"namespace": "ImGui",
"ov_cimguiname": "igSetWindowSize_Str",
"ov_cimguiname": "igSetWindowSizeStr",
"ret": "void",
"signature": "(const char*,const ImVec2,ImGuiCond)",
"stname": ""
@ -16721,7 +16721,7 @@
"funcname": "TreeNode",
"location": "imgui:597",
"namespace": "ImGui",
"ov_cimguiname": "igTreeNode_Str",
"ov_cimguiname": "igTreeNodeStr",
"ret": "bool",
"signature": "(const char*)",
"stname": ""
@ -16750,7 +16750,7 @@
"isvararg": "...)",
"location": "imgui:598",
"namespace": "ImGui",
"ov_cimguiname": "igTreeNode_StrStr",
"ov_cimguiname": "igTreeNodeStrStr",
"ret": "bool",
"signature": "(const char*,const char*,...)",
"stname": ""
@ -16779,7 +16779,7 @@
"isvararg": "...)",
"location": "imgui:599",
"namespace": "ImGui",
"ov_cimguiname": "igTreeNode_Ptr",
"ov_cimguiname": "igTreeNodePtr",
"ret": "bool",
"signature": "(const void*,const char*,...)",
"stname": ""
@ -16807,7 +16807,7 @@
"funcname": "TreeNodeEx",
"location": "imgui:602",
"namespace": "ImGui",
"ov_cimguiname": "igTreeNodeEx_Str",
"ov_cimguiname": "igTreeNodeExStr",
"ret": "bool",
"signature": "(const char*,ImGuiTreeNodeFlags)",
"stname": ""
@ -16840,7 +16840,7 @@
"isvararg": "...)",
"location": "imgui:603",
"namespace": "ImGui",
"ov_cimguiname": "igTreeNodeEx_StrStr",
"ov_cimguiname": "igTreeNodeExStrStr",
"ret": "bool",
"signature": "(const char*,ImGuiTreeNodeFlags,const char*,...)",
"stname": ""
@ -16873,7 +16873,7 @@
"isvararg": "...)",
"location": "imgui:604",
"namespace": "ImGui",
"ov_cimguiname": "igTreeNodeEx_Ptr",
"ov_cimguiname": "igTreeNodeExPtr",
"ret": "bool",
"signature": "(const void*,ImGuiTreeNodeFlags,const char*,...)",
"stname": ""
@ -16907,7 +16907,7 @@
"funcname": "TreeNodeExV",
"location": "imgui:605",
"namespace": "ImGui",
"ov_cimguiname": "igTreeNodeExV_Str",
"ov_cimguiname": "igTreeNodeExVStr",
"ret": "bool",
"signature": "(const char*,ImGuiTreeNodeFlags,const char*,va_list)",
"stname": ""
@ -16939,7 +16939,7 @@
"funcname": "TreeNodeExV",
"location": "imgui:606",
"namespace": "ImGui",
"ov_cimguiname": "igTreeNodeExV_Ptr",
"ov_cimguiname": "igTreeNodeExVPtr",
"ret": "bool",
"signature": "(const void*,ImGuiTreeNodeFlags,const char*,va_list)",
"stname": ""
@ -16969,7 +16969,7 @@
"funcname": "TreeNodeV",
"location": "imgui:600",
"namespace": "ImGui",
"ov_cimguiname": "igTreeNodeV_Str",
"ov_cimguiname": "igTreeNodeVStr",
"ret": "bool",
"signature": "(const char*,const char*,va_list)",
"stname": ""
@ -16997,7 +16997,7 @@
"funcname": "TreeNodeV",
"location": "imgui:601",
"namespace": "ImGui",
"ov_cimguiname": "igTreeNodeV_Ptr",
"ov_cimguiname": "igTreeNodeVPtr",
"ret": "bool",
"signature": "(const void*,const char*,va_list)",
"stname": ""
@ -17036,7 +17036,7 @@
"funcname": "TreePush",
"location": "imgui:607",
"namespace": "ImGui",
"ov_cimguiname": "igTreePush_Str",
"ov_cimguiname": "igTreePushStr",
"ret": "void",
"signature": "(const char*)",
"stname": ""
@ -17058,7 +17058,7 @@
"funcname": "TreePush",
"location": "imgui:608",
"namespace": "ImGui",
"ov_cimguiname": "igTreePush_Ptr",
"ov_cimguiname": "igTreePushPtr",
"ret": "void",
"signature": "(const void*)",
"stname": ""
@ -17259,7 +17259,7 @@
"funcname": "Value",
"location": "imgui:641",
"namespace": "ImGui",
"ov_cimguiname": "igValue_Bool",
"ov_cimguiname": "igValueBool",
"ret": "void",
"signature": "(const char*,bool)",
"stname": ""
@ -17283,7 +17283,7 @@
"funcname": "Value",
"location": "imgui:642",
"namespace": "ImGui",
"ov_cimguiname": "igValue_Int",
"ov_cimguiname": "igValueInt",
"ret": "void",
"signature": "(const char*,int)",
"stname": ""
@ -17307,7 +17307,7 @@
"funcname": "Value",
"location": "imgui:643",
"namespace": "ImGui",
"ov_cimguiname": "igValue_Uint",
"ov_cimguiname": "igValueUint",
"ret": "void",
"signature": "(const char*,unsigned int)",
"stname": ""
@ -17337,7 +17337,7 @@
"funcname": "Value",
"location": "imgui:644",
"namespace": "ImGui",
"ov_cimguiname": "igValue_Float",
"ov_cimguiname": "igValueFloat",
"ret": "void",
"signature": "(const char*,float,const char*)",
"stname": ""

View File

@ -43,7 +43,7 @@ defs["ImColor_ImColor"][1]["constructor"] = true
defs["ImColor_ImColor"][1]["defaults"] = {}
defs["ImColor_ImColor"][1]["funcname"] = "ImColor"
defs["ImColor_ImColor"][1]["location"] = "imgui:2230"
defs["ImColor_ImColor"][1]["ov_cimguiname"] = "ImColor_ImColor_Nil"
defs["ImColor_ImColor"][1]["ov_cimguiname"] = "ImColor_ImColorNil"
defs["ImColor_ImColor"][1]["signature"] = "()"
defs["ImColor_ImColor"][1]["stname"] = "ImColor"
defs["ImColor_ImColor"][2] = {}
@ -69,7 +69,7 @@ defs["ImColor_ImColor"][2]["defaults"] = {}
defs["ImColor_ImColor"][2]["defaults"]["a"] = "255"
defs["ImColor_ImColor"][2]["funcname"] = "ImColor"
defs["ImColor_ImColor"][2]["location"] = "imgui:2231"
defs["ImColor_ImColor"][2]["ov_cimguiname"] = "ImColor_ImColor_Int"
defs["ImColor_ImColor"][2]["ov_cimguiname"] = "ImColor_ImColorInt"
defs["ImColor_ImColor"][2]["signature"] = "(int,int,int,int)"
defs["ImColor_ImColor"][2]["stname"] = "ImColor"
defs["ImColor_ImColor"][3] = {}
@ -85,7 +85,7 @@ defs["ImColor_ImColor"][3]["constructor"] = true
defs["ImColor_ImColor"][3]["defaults"] = {}
defs["ImColor_ImColor"][3]["funcname"] = "ImColor"
defs["ImColor_ImColor"][3]["location"] = "imgui:2232"
defs["ImColor_ImColor"][3]["ov_cimguiname"] = "ImColor_ImColor_U32"
defs["ImColor_ImColor"][3]["ov_cimguiname"] = "ImColor_ImColorU32"
defs["ImColor_ImColor"][3]["signature"] = "(ImU32)"
defs["ImColor_ImColor"][3]["stname"] = "ImColor"
defs["ImColor_ImColor"][4] = {}
@ -111,7 +111,7 @@ defs["ImColor_ImColor"][4]["defaults"] = {}
defs["ImColor_ImColor"][4]["defaults"]["a"] = "1.0f"
defs["ImColor_ImColor"][4]["funcname"] = "ImColor"
defs["ImColor_ImColor"][4]["location"] = "imgui:2233"
defs["ImColor_ImColor"][4]["ov_cimguiname"] = "ImColor_ImColor_Float"
defs["ImColor_ImColor"][4]["ov_cimguiname"] = "ImColor_ImColorFloat"
defs["ImColor_ImColor"][4]["signature"] = "(float,float,float,float)"
defs["ImColor_ImColor"][4]["stname"] = "ImColor"
defs["ImColor_ImColor"][5] = {}
@ -127,7 +127,7 @@ defs["ImColor_ImColor"][5]["constructor"] = true
defs["ImColor_ImColor"][5]["defaults"] = {}
defs["ImColor_ImColor"][5]["funcname"] = "ImColor"
defs["ImColor_ImColor"][5]["location"] = "imgui:2234"
defs["ImColor_ImColor"][5]["ov_cimguiname"] = "ImColor_ImColor_Vec4"
defs["ImColor_ImColor"][5]["ov_cimguiname"] = "ImColor_ImColorVec4"
defs["ImColor_ImColor"][5]["signature"] = "(const ImVec4)"
defs["ImColor_ImColor"][5]["stname"] = "ImColor"
defs["ImColor_ImColor"]["()"] = defs["ImColor_ImColor"][1]
@ -1138,7 +1138,7 @@ defs["ImDrawList_AddText"][1]["defaults"] = {}
defs["ImDrawList_AddText"][1]["defaults"]["text_end"] = "NULL"
defs["ImDrawList_AddText"][1]["funcname"] = "AddText"
defs["ImDrawList_AddText"][1]["location"] = "imgui:2431"
defs["ImDrawList_AddText"][1]["ov_cimguiname"] = "ImDrawList_AddText_Vec2"
defs["ImDrawList_AddText"][1]["ov_cimguiname"] = "ImDrawList_AddTextVec2"
defs["ImDrawList_AddText"][1]["ret"] = "void"
defs["ImDrawList_AddText"][1]["signature"] = "(const ImVec2,ImU32,const char*,const char*)"
defs["ImDrawList_AddText"][1]["stname"] = "ImDrawList"
@ -1181,7 +1181,7 @@ defs["ImDrawList_AddText"][2]["defaults"]["text_end"] = "NULL"
defs["ImDrawList_AddText"][2]["defaults"]["wrap_width"] = "0.0f"
defs["ImDrawList_AddText"][2]["funcname"] = "AddText"
defs["ImDrawList_AddText"][2]["location"] = "imgui:2432"
defs["ImDrawList_AddText"][2]["ov_cimguiname"] = "ImDrawList_AddText_FontPtr"
defs["ImDrawList_AddText"][2]["ov_cimguiname"] = "ImDrawList_AddTextFontPtr"
defs["ImDrawList_AddText"][2]["ret"] = "void"
defs["ImDrawList_AddText"][2]["signature"] = "(const ImFont*,float,const ImVec2,ImU32,const char*,const char*,float,const ImVec4*)"
defs["ImDrawList_AddText"][2]["stname"] = "ImDrawList"
@ -4150,7 +4150,7 @@ defs["ImGuiStoragePair_ImGuiStoragePair"][1]["constructor"] = true
defs["ImGuiStoragePair_ImGuiStoragePair"][1]["defaults"] = {}
defs["ImGuiStoragePair_ImGuiStoragePair"][1]["funcname"] = "ImGuiStoragePair"
defs["ImGuiStoragePair_ImGuiStoragePair"][1]["location"] = "imgui:2124"
defs["ImGuiStoragePair_ImGuiStoragePair"][1]["ov_cimguiname"] = "ImGuiStoragePair_ImGuiStoragePair_Int"
defs["ImGuiStoragePair_ImGuiStoragePair"][1]["ov_cimguiname"] = "ImGuiStoragePair_ImGuiStoragePairInt"
defs["ImGuiStoragePair_ImGuiStoragePair"][1]["signature"] = "(ImGuiID,int)"
defs["ImGuiStoragePair_ImGuiStoragePair"][1]["stname"] = "ImGuiStoragePair"
defs["ImGuiStoragePair_ImGuiStoragePair"][2] = {}
@ -4169,7 +4169,7 @@ defs["ImGuiStoragePair_ImGuiStoragePair"][2]["constructor"] = true
defs["ImGuiStoragePair_ImGuiStoragePair"][2]["defaults"] = {}
defs["ImGuiStoragePair_ImGuiStoragePair"][2]["funcname"] = "ImGuiStoragePair"
defs["ImGuiStoragePair_ImGuiStoragePair"][2]["location"] = "imgui:2125"
defs["ImGuiStoragePair_ImGuiStoragePair"][2]["ov_cimguiname"] = "ImGuiStoragePair_ImGuiStoragePair_Float"
defs["ImGuiStoragePair_ImGuiStoragePair"][2]["ov_cimguiname"] = "ImGuiStoragePair_ImGuiStoragePairFloat"
defs["ImGuiStoragePair_ImGuiStoragePair"][2]["signature"] = "(ImGuiID,float)"
defs["ImGuiStoragePair_ImGuiStoragePair"][2]["stname"] = "ImGuiStoragePair"
defs["ImGuiStoragePair_ImGuiStoragePair"][3] = {}
@ -4188,7 +4188,7 @@ defs["ImGuiStoragePair_ImGuiStoragePair"][3]["constructor"] = true
defs["ImGuiStoragePair_ImGuiStoragePair"][3]["defaults"] = {}
defs["ImGuiStoragePair_ImGuiStoragePair"][3]["funcname"] = "ImGuiStoragePair"
defs["ImGuiStoragePair_ImGuiStoragePair"][3]["location"] = "imgui:2126"
defs["ImGuiStoragePair_ImGuiStoragePair"][3]["ov_cimguiname"] = "ImGuiStoragePair_ImGuiStoragePair_Ptr"
defs["ImGuiStoragePair_ImGuiStoragePair"][3]["ov_cimguiname"] = "ImGuiStoragePair_ImGuiStoragePairPtr"
defs["ImGuiStoragePair_ImGuiStoragePair"][3]["signature"] = "(ImGuiID,void*)"
defs["ImGuiStoragePair_ImGuiStoragePair"][3]["stname"] = "ImGuiStoragePair"
defs["ImGuiStoragePair_ImGuiStoragePair"]["(ImGuiID,float)"] = defs["ImGuiStoragePair_ImGuiStoragePair"][2]
@ -5059,7 +5059,7 @@ defs["ImGuiTextRange_ImGuiTextRange"][1]["constructor"] = true
defs["ImGuiTextRange_ImGuiTextRange"][1]["defaults"] = {}
defs["ImGuiTextRange_ImGuiTextRange"][1]["funcname"] = "ImGuiTextRange"
defs["ImGuiTextRange_ImGuiTextRange"][1]["location"] = "imgui:2078"
defs["ImGuiTextRange_ImGuiTextRange"][1]["ov_cimguiname"] = "ImGuiTextRange_ImGuiTextRange_Nil"
defs["ImGuiTextRange_ImGuiTextRange"][1]["ov_cimguiname"] = "ImGuiTextRange_ImGuiTextRangeNil"
defs["ImGuiTextRange_ImGuiTextRange"][1]["signature"] = "()"
defs["ImGuiTextRange_ImGuiTextRange"][1]["stname"] = "ImGuiTextRange"
defs["ImGuiTextRange_ImGuiTextRange"][2] = {}
@ -5078,7 +5078,7 @@ defs["ImGuiTextRange_ImGuiTextRange"][2]["constructor"] = true
defs["ImGuiTextRange_ImGuiTextRange"][2]["defaults"] = {}
defs["ImGuiTextRange_ImGuiTextRange"][2]["funcname"] = "ImGuiTextRange"
defs["ImGuiTextRange_ImGuiTextRange"][2]["location"] = "imgui:2079"
defs["ImGuiTextRange_ImGuiTextRange"][2]["ov_cimguiname"] = "ImGuiTextRange_ImGuiTextRange_Str"
defs["ImGuiTextRange_ImGuiTextRange"][2]["ov_cimguiname"] = "ImGuiTextRange_ImGuiTextRangeStr"
defs["ImGuiTextRange_ImGuiTextRange"][2]["signature"] = "(const char*,const char*)"
defs["ImGuiTextRange_ImGuiTextRange"][2]["stname"] = "ImGuiTextRange"
defs["ImGuiTextRange_ImGuiTextRange"]["()"] = defs["ImGuiTextRange_ImGuiTextRange"][1]
@ -5227,7 +5227,7 @@ defs["ImVec2_ImVec2"][1]["constructor"] = true
defs["ImVec2_ImVec2"][1]["defaults"] = {}
defs["ImVec2_ImVec2"][1]["funcname"] = "ImVec2"
defs["ImVec2_ImVec2"][1]["location"] = "imgui:259"
defs["ImVec2_ImVec2"][1]["ov_cimguiname"] = "ImVec2_ImVec2_Nil"
defs["ImVec2_ImVec2"][1]["ov_cimguiname"] = "ImVec2_ImVec2Nil"
defs["ImVec2_ImVec2"][1]["signature"] = "()"
defs["ImVec2_ImVec2"][1]["stname"] = "ImVec2"
defs["ImVec2_ImVec2"][2] = {}
@ -5246,7 +5246,7 @@ defs["ImVec2_ImVec2"][2]["constructor"] = true
defs["ImVec2_ImVec2"][2]["defaults"] = {}
defs["ImVec2_ImVec2"][2]["funcname"] = "ImVec2"
defs["ImVec2_ImVec2"][2]["location"] = "imgui:260"
defs["ImVec2_ImVec2"][2]["ov_cimguiname"] = "ImVec2_ImVec2_Float"
defs["ImVec2_ImVec2"][2]["ov_cimguiname"] = "ImVec2_ImVec2Float"
defs["ImVec2_ImVec2"][2]["signature"] = "(float,float)"
defs["ImVec2_ImVec2"][2]["stname"] = "ImVec2"
defs["ImVec2_ImVec2"]["()"] = defs["ImVec2_ImVec2"][1]
@ -5278,7 +5278,7 @@ defs["ImVec4_ImVec4"][1]["constructor"] = true
defs["ImVec4_ImVec4"][1]["defaults"] = {}
defs["ImVec4_ImVec4"][1]["funcname"] = "ImVec4"
defs["ImVec4_ImVec4"][1]["location"] = "imgui:272"
defs["ImVec4_ImVec4"][1]["ov_cimguiname"] = "ImVec4_ImVec4_Nil"
defs["ImVec4_ImVec4"][1]["ov_cimguiname"] = "ImVec4_ImVec4Nil"
defs["ImVec4_ImVec4"][1]["signature"] = "()"
defs["ImVec4_ImVec4"][1]["stname"] = "ImVec4"
defs["ImVec4_ImVec4"][2] = {}
@ -5303,7 +5303,7 @@ defs["ImVec4_ImVec4"][2]["constructor"] = true
defs["ImVec4_ImVec4"][2]["defaults"] = {}
defs["ImVec4_ImVec4"][2]["funcname"] = "ImVec4"
defs["ImVec4_ImVec4"][2]["location"] = "imgui:273"
defs["ImVec4_ImVec4"][2]["ov_cimguiname"] = "ImVec4_ImVec4_Float"
defs["ImVec4_ImVec4"][2]["ov_cimguiname"] = "ImVec4_ImVec4Float"
defs["ImVec4_ImVec4"][2]["signature"] = "(float,float,float,float)"
defs["ImVec4_ImVec4"][2]["stname"] = "ImVec4"
defs["ImVec4_ImVec4"]["()"] = defs["ImVec4_ImVec4"][1]
@ -5335,7 +5335,7 @@ defs["ImVector_ImVector"][1]["constructor"] = true
defs["ImVector_ImVector"][1]["defaults"] = {}
defs["ImVector_ImVector"][1]["funcname"] = "ImVector"
defs["ImVector_ImVector"][1]["location"] = "imgui:1699"
defs["ImVector_ImVector"][1]["ov_cimguiname"] = "ImVector_ImVector_Nil"
defs["ImVector_ImVector"][1]["ov_cimguiname"] = "ImVector_ImVectorNil"
defs["ImVector_ImVector"][1]["signature"] = "()"
defs["ImVector_ImVector"][1]["stname"] = "ImVector"
defs["ImVector_ImVector"][1]["templated"] = true
@ -5352,7 +5352,7 @@ defs["ImVector_ImVector"][2]["constructor"] = true
defs["ImVector_ImVector"][2]["defaults"] = {}
defs["ImVector_ImVector"][2]["funcname"] = "ImVector"
defs["ImVector_ImVector"][2]["location"] = "imgui:1700"
defs["ImVector_ImVector"][2]["ov_cimguiname"] = "ImVector_ImVector_Vector"
defs["ImVector_ImVector"][2]["ov_cimguiname"] = "ImVector_ImVectorVector"
defs["ImVector_ImVector"][2]["signature"] = "(const ImVector)"
defs["ImVector_ImVector"][2]["stname"] = "ImVector"
defs["ImVector_ImVector"][2]["templated"] = true
@ -5393,7 +5393,7 @@ defs["ImVector_back"][1]["cimguiname"] = "ImVector_back"
defs["ImVector_back"][1]["defaults"] = {}
defs["ImVector_back"][1]["funcname"] = "back"
defs["ImVector_back"][1]["location"] = "imgui:1722"
defs["ImVector_back"][1]["ov_cimguiname"] = "ImVector_back_Nil"
defs["ImVector_back"][1]["ov_cimguiname"] = "ImVector_backNil"
defs["ImVector_back"][1]["ret"] = "T*"
defs["ImVector_back"][1]["retref"] = "&"
defs["ImVector_back"][1]["signature"] = "()"
@ -5411,7 +5411,7 @@ defs["ImVector_back"][2]["cimguiname"] = "ImVector_back"
defs["ImVector_back"][2]["defaults"] = {}
defs["ImVector_back"][2]["funcname"] = "back"
defs["ImVector_back"][2]["location"] = "imgui:1723"
defs["ImVector_back"][2]["ov_cimguiname"] = "ImVector_back__const"
defs["ImVector_back"][2]["ov_cimguiname"] = "ImVector_back_const"
defs["ImVector_back"][2]["ret"] = "const T*"
defs["ImVector_back"][2]["retref"] = "&"
defs["ImVector_back"][2]["signature"] = "()const"
@ -5432,7 +5432,7 @@ defs["ImVector_begin"][1]["cimguiname"] = "ImVector_begin"
defs["ImVector_begin"][1]["defaults"] = {}
defs["ImVector_begin"][1]["funcname"] = "begin"
defs["ImVector_begin"][1]["location"] = "imgui:1716"
defs["ImVector_begin"][1]["ov_cimguiname"] = "ImVector_begin_Nil"
defs["ImVector_begin"][1]["ov_cimguiname"] = "ImVector_beginNil"
defs["ImVector_begin"][1]["ret"] = "T*"
defs["ImVector_begin"][1]["signature"] = "()"
defs["ImVector_begin"][1]["stname"] = "ImVector"
@ -5449,7 +5449,7 @@ defs["ImVector_begin"][2]["cimguiname"] = "ImVector_begin"
defs["ImVector_begin"][2]["defaults"] = {}
defs["ImVector_begin"][2]["funcname"] = "begin"
defs["ImVector_begin"][2]["location"] = "imgui:1717"
defs["ImVector_begin"][2]["ov_cimguiname"] = "ImVector_begin__const"
defs["ImVector_begin"][2]["ov_cimguiname"] = "ImVector_begin_const"
defs["ImVector_begin"][2]["ret"] = "const T*"
defs["ImVector_begin"][2]["signature"] = "()const"
defs["ImVector_begin"][2]["stname"] = "ImVector"
@ -5605,7 +5605,7 @@ defs["ImVector_end"][1]["cimguiname"] = "ImVector_end"
defs["ImVector_end"][1]["defaults"] = {}
defs["ImVector_end"][1]["funcname"] = "end"
defs["ImVector_end"][1]["location"] = "imgui:1718"
defs["ImVector_end"][1]["ov_cimguiname"] = "ImVector_end_Nil"
defs["ImVector_end"][1]["ov_cimguiname"] = "ImVector_endNil"
defs["ImVector_end"][1]["ret"] = "T*"
defs["ImVector_end"][1]["signature"] = "()"
defs["ImVector_end"][1]["stname"] = "ImVector"
@ -5622,7 +5622,7 @@ defs["ImVector_end"][2]["cimguiname"] = "ImVector_end"
defs["ImVector_end"][2]["defaults"] = {}
defs["ImVector_end"][2]["funcname"] = "end"
defs["ImVector_end"][2]["location"] = "imgui:1719"
defs["ImVector_end"][2]["ov_cimguiname"] = "ImVector_end__const"
defs["ImVector_end"][2]["ov_cimguiname"] = "ImVector_end_const"
defs["ImVector_end"][2]["ret"] = "const T*"
defs["ImVector_end"][2]["signature"] = "()const"
defs["ImVector_end"][2]["stname"] = "ImVector"
@ -5645,7 +5645,7 @@ defs["ImVector_erase"][1]["cimguiname"] = "ImVector_erase"
defs["ImVector_erase"][1]["defaults"] = {}
defs["ImVector_erase"][1]["funcname"] = "erase"
defs["ImVector_erase"][1]["location"] = "imgui:1736"
defs["ImVector_erase"][1]["ov_cimguiname"] = "ImVector_erase_Nil"
defs["ImVector_erase"][1]["ov_cimguiname"] = "ImVector_eraseNil"
defs["ImVector_erase"][1]["ret"] = "T*"
defs["ImVector_erase"][1]["signature"] = "(const T*)"
defs["ImVector_erase"][1]["stname"] = "ImVector"
@ -5668,7 +5668,7 @@ defs["ImVector_erase"][2]["cimguiname"] = "ImVector_erase"
defs["ImVector_erase"][2]["defaults"] = {}
defs["ImVector_erase"][2]["funcname"] = "erase"
defs["ImVector_erase"][2]["location"] = "imgui:1737"
defs["ImVector_erase"][2]["ov_cimguiname"] = "ImVector_erase_TPtr"
defs["ImVector_erase"][2]["ov_cimguiname"] = "ImVector_eraseTPtr"
defs["ImVector_erase"][2]["ret"] = "T*"
defs["ImVector_erase"][2]["signature"] = "(const T*,const T*)"
defs["ImVector_erase"][2]["stname"] = "ImVector"
@ -5713,7 +5713,7 @@ defs["ImVector_find"][1]["cimguiname"] = "ImVector_find"
defs["ImVector_find"][1]["defaults"] = {}
defs["ImVector_find"][1]["funcname"] = "find"
defs["ImVector_find"][1]["location"] = "imgui:1741"
defs["ImVector_find"][1]["ov_cimguiname"] = "ImVector_find_Nil"
defs["ImVector_find"][1]["ov_cimguiname"] = "ImVector_findNil"
defs["ImVector_find"][1]["ret"] = "T*"
defs["ImVector_find"][1]["signature"] = "(const T)"
defs["ImVector_find"][1]["stname"] = "ImVector"
@ -5733,7 +5733,7 @@ defs["ImVector_find"][2]["cimguiname"] = "ImVector_find"
defs["ImVector_find"][2]["defaults"] = {}
defs["ImVector_find"][2]["funcname"] = "find"
defs["ImVector_find"][2]["location"] = "imgui:1742"
defs["ImVector_find"][2]["ov_cimguiname"] = "ImVector_find__const"
defs["ImVector_find"][2]["ov_cimguiname"] = "ImVector_find_const"
defs["ImVector_find"][2]["ret"] = "const T*"
defs["ImVector_find"][2]["signature"] = "(const T)const"
defs["ImVector_find"][2]["stname"] = "ImVector"
@ -5797,7 +5797,7 @@ defs["ImVector_front"][1]["cimguiname"] = "ImVector_front"
defs["ImVector_front"][1]["defaults"] = {}
defs["ImVector_front"][1]["funcname"] = "front"
defs["ImVector_front"][1]["location"] = "imgui:1720"
defs["ImVector_front"][1]["ov_cimguiname"] = "ImVector_front_Nil"
defs["ImVector_front"][1]["ov_cimguiname"] = "ImVector_frontNil"
defs["ImVector_front"][1]["ret"] = "T*"
defs["ImVector_front"][1]["retref"] = "&"
defs["ImVector_front"][1]["signature"] = "()"
@ -5815,7 +5815,7 @@ defs["ImVector_front"][2]["cimguiname"] = "ImVector_front"
defs["ImVector_front"][2]["defaults"] = {}
defs["ImVector_front"][2]["funcname"] = "front"
defs["ImVector_front"][2]["location"] = "imgui:1721"
defs["ImVector_front"][2]["ov_cimguiname"] = "ImVector_front__const"
defs["ImVector_front"][2]["ov_cimguiname"] = "ImVector_front_const"
defs["ImVector_front"][2]["ret"] = "const T*"
defs["ImVector_front"][2]["retref"] = "&"
defs["ImVector_front"][2]["signature"] = "()const"
@ -5990,7 +5990,7 @@ defs["ImVector_resize"][1]["cimguiname"] = "ImVector_resize"
defs["ImVector_resize"][1]["defaults"] = {}
defs["ImVector_resize"][1]["funcname"] = "resize"
defs["ImVector_resize"][1]["location"] = "imgui:1727"
defs["ImVector_resize"][1]["ov_cimguiname"] = "ImVector_resize_Nil"
defs["ImVector_resize"][1]["ov_cimguiname"] = "ImVector_resizeNil"
defs["ImVector_resize"][1]["ret"] = "void"
defs["ImVector_resize"][1]["signature"] = "(int)"
defs["ImVector_resize"][1]["stname"] = "ImVector"
@ -6013,7 +6013,7 @@ defs["ImVector_resize"][2]["cimguiname"] = "ImVector_resize"
defs["ImVector_resize"][2]["defaults"] = {}
defs["ImVector_resize"][2]["funcname"] = "resize"
defs["ImVector_resize"][2]["location"] = "imgui:1728"
defs["ImVector_resize"][2]["ov_cimguiname"] = "ImVector_resize_T"
defs["ImVector_resize"][2]["ov_cimguiname"] = "ImVector_resizeT"
defs["ImVector_resize"][2]["ret"] = "void"
defs["ImVector_resize"][2]["signature"] = "(int,const T)"
defs["ImVector_resize"][2]["stname"] = "ImVector"
@ -6217,7 +6217,7 @@ defs["igBeginChild"][1]["defaults"]["size"] = "ImVec2(0,0)"
defs["igBeginChild"][1]["funcname"] = "BeginChild"
defs["igBeginChild"][1]["location"] = "imgui:342"
defs["igBeginChild"][1]["namespace"] = "ImGui"
defs["igBeginChild"][1]["ov_cimguiname"] = "igBeginChild_Str"
defs["igBeginChild"][1]["ov_cimguiname"] = "igBeginChildStr"
defs["igBeginChild"][1]["ret"] = "bool"
defs["igBeginChild"][1]["signature"] = "(const char*,const ImVec2,bool,ImGuiWindowFlags)"
defs["igBeginChild"][1]["stname"] = ""
@ -6246,7 +6246,7 @@ defs["igBeginChild"][2]["defaults"]["size"] = "ImVec2(0,0)"
defs["igBeginChild"][2]["funcname"] = "BeginChild"
defs["igBeginChild"][2]["location"] = "imgui:343"
defs["igBeginChild"][2]["namespace"] = "ImGui"
defs["igBeginChild"][2]["ov_cimguiname"] = "igBeginChild_ID"
defs["igBeginChild"][2]["ov_cimguiname"] = "igBeginChildID"
defs["igBeginChild"][2]["ret"] = "bool"
defs["igBeginChild"][2]["signature"] = "(ImGuiID,const ImVec2,bool,ImGuiWindowFlags)"
defs["igBeginChild"][2]["stname"] = ""
@ -6921,7 +6921,7 @@ defs["igCheckboxFlags"][1]["defaults"] = {}
defs["igCheckboxFlags"][1]["funcname"] = "CheckboxFlags"
defs["igCheckboxFlags"][1]["location"] = "imgui:506"
defs["igCheckboxFlags"][1]["namespace"] = "ImGui"
defs["igCheckboxFlags"][1]["ov_cimguiname"] = "igCheckboxFlags_IntPtr"
defs["igCheckboxFlags"][1]["ov_cimguiname"] = "igCheckboxFlagsIntPtr"
defs["igCheckboxFlags"][1]["ret"] = "bool"
defs["igCheckboxFlags"][1]["signature"] = "(const char*,int*,int)"
defs["igCheckboxFlags"][1]["stname"] = ""
@ -6944,7 +6944,7 @@ defs["igCheckboxFlags"][2]["defaults"] = {}
defs["igCheckboxFlags"][2]["funcname"] = "CheckboxFlags"
defs["igCheckboxFlags"][2]["location"] = "imgui:507"
defs["igCheckboxFlags"][2]["namespace"] = "ImGui"
defs["igCheckboxFlags"][2]["ov_cimguiname"] = "igCheckboxFlags_UintPtr"
defs["igCheckboxFlags"][2]["ov_cimguiname"] = "igCheckboxFlagsUintPtr"
defs["igCheckboxFlags"][2]["ret"] = "bool"
defs["igCheckboxFlags"][2]["signature"] = "(const char*,unsigned int*,unsigned int)"
defs["igCheckboxFlags"][2]["stname"] = ""
@ -6984,7 +6984,7 @@ defs["igCollapsingHeader"][1]["defaults"]["flags"] = "0"
defs["igCollapsingHeader"][1]["funcname"] = "CollapsingHeader"
defs["igCollapsingHeader"][1]["location"] = "imgui:611"
defs["igCollapsingHeader"][1]["namespace"] = "ImGui"
defs["igCollapsingHeader"][1]["ov_cimguiname"] = "igCollapsingHeader_TreeNodeFlags"
defs["igCollapsingHeader"][1]["ov_cimguiname"] = "igCollapsingHeaderTreeNodeFlags"
defs["igCollapsingHeader"][1]["ret"] = "bool"
defs["igCollapsingHeader"][1]["signature"] = "(const char*,ImGuiTreeNodeFlags)"
defs["igCollapsingHeader"][1]["stname"] = ""
@ -7008,7 +7008,7 @@ defs["igCollapsingHeader"][2]["defaults"]["flags"] = "0"
defs["igCollapsingHeader"][2]["funcname"] = "CollapsingHeader"
defs["igCollapsingHeader"][2]["location"] = "imgui:612"
defs["igCollapsingHeader"][2]["namespace"] = "ImGui"
defs["igCollapsingHeader"][2]["ov_cimguiname"] = "igCollapsingHeader_BoolPtr"
defs["igCollapsingHeader"][2]["ov_cimguiname"] = "igCollapsingHeaderBoolPtr"
defs["igCollapsingHeader"][2]["ret"] = "bool"
defs["igCollapsingHeader"][2]["signature"] = "(const char*,bool*,ImGuiTreeNodeFlags)"
defs["igCollapsingHeader"][2]["stname"] = ""
@ -7323,7 +7323,7 @@ defs["igCombo"][1]["defaults"]["popup_max_height_in_items"] = "-1"
defs["igCombo"][1]["funcname"] = "Combo"
defs["igCombo"][1]["location"] = "imgui:518"
defs["igCombo"][1]["namespace"] = "ImGui"
defs["igCombo"][1]["ov_cimguiname"] = "igCombo_Str_arr"
defs["igCombo"][1]["ov_cimguiname"] = "igComboStr_arr"
defs["igCombo"][1]["ret"] = "bool"
defs["igCombo"][1]["signature"] = "(const char*,int*,const char* const[],int,int)"
defs["igCombo"][1]["stname"] = ""
@ -7350,7 +7350,7 @@ defs["igCombo"][2]["defaults"]["popup_max_height_in_items"] = "-1"
defs["igCombo"][2]["funcname"] = "Combo"
defs["igCombo"][2]["location"] = "imgui:519"
defs["igCombo"][2]["namespace"] = "ImGui"
defs["igCombo"][2]["ov_cimguiname"] = "igCombo_Str"
defs["igCombo"][2]["ov_cimguiname"] = "igComboStr"
defs["igCombo"][2]["ret"] = "bool"
defs["igCombo"][2]["signature"] = "(const char*,int*,const char*,int)"
defs["igCombo"][2]["stname"] = ""
@ -7385,7 +7385,7 @@ defs["igCombo"][3]["defaults"]["popup_max_height_in_items"] = "-1"
defs["igCombo"][3]["funcname"] = "Combo"
defs["igCombo"][3]["location"] = "imgui:520"
defs["igCombo"][3]["namespace"] = "ImGui"
defs["igCombo"][3]["ov_cimguiname"] = "igCombo_FnBoolPtr"
defs["igCombo"][3]["ov_cimguiname"] = "igComboFnBoolPtr"
defs["igCombo"][3]["ret"] = "bool"
defs["igCombo"][3]["signature"] = "(const char*,int*,bool(*)(void*,int,const char**),void*,int,int)"
defs["igCombo"][3]["stname"] = ""
@ -8378,7 +8378,7 @@ defs["igGetColorU32"][1]["defaults"]["alpha_mul"] = "1.0f"
defs["igGetColorU32"][1]["funcname"] = "GetColorU32"
defs["igGetColorU32"][1]["location"] = "imgui:425"
defs["igGetColorU32"][1]["namespace"] = "ImGui"
defs["igGetColorU32"][1]["ov_cimguiname"] = "igGetColorU32_Col"
defs["igGetColorU32"][1]["ov_cimguiname"] = "igGetColorU32Col"
defs["igGetColorU32"][1]["ret"] = "ImU32"
defs["igGetColorU32"][1]["signature"] = "(ImGuiCol,float)"
defs["igGetColorU32"][1]["stname"] = ""
@ -8395,7 +8395,7 @@ defs["igGetColorU32"][2]["defaults"] = {}
defs["igGetColorU32"][2]["funcname"] = "GetColorU32"
defs["igGetColorU32"][2]["location"] = "imgui:426"
defs["igGetColorU32"][2]["namespace"] = "ImGui"
defs["igGetColorU32"][2]["ov_cimguiname"] = "igGetColorU32_Vec4"
defs["igGetColorU32"][2]["ov_cimguiname"] = "igGetColorU32Vec4"
defs["igGetColorU32"][2]["ret"] = "ImU32"
defs["igGetColorU32"][2]["signature"] = "(const ImVec4)"
defs["igGetColorU32"][2]["stname"] = ""
@ -8412,7 +8412,7 @@ defs["igGetColorU32"][3]["defaults"] = {}
defs["igGetColorU32"][3]["funcname"] = "GetColorU32"
defs["igGetColorU32"][3]["location"] = "imgui:427"
defs["igGetColorU32"][3]["namespace"] = "ImGui"
defs["igGetColorU32"][3]["ov_cimguiname"] = "igGetColorU32_U32"
defs["igGetColorU32"][3]["ov_cimguiname"] = "igGetColorU32U32"
defs["igGetColorU32"][3]["ret"] = "ImU32"
defs["igGetColorU32"][3]["signature"] = "(ImU32)"
defs["igGetColorU32"][3]["stname"] = ""
@ -8817,7 +8817,7 @@ defs["igGetID"][1]["defaults"] = {}
defs["igGetID"][1]["funcname"] = "GetID"
defs["igGetID"][1]["location"] = "imgui:477"
defs["igGetID"][1]["namespace"] = "ImGui"
defs["igGetID"][1]["ov_cimguiname"] = "igGetID_Str"
defs["igGetID"][1]["ov_cimguiname"] = "igGetIDStr"
defs["igGetID"][1]["ret"] = "ImGuiID"
defs["igGetID"][1]["signature"] = "(const char*)"
defs["igGetID"][1]["stname"] = ""
@ -8837,7 +8837,7 @@ defs["igGetID"][2]["defaults"] = {}
defs["igGetID"][2]["funcname"] = "GetID"
defs["igGetID"][2]["location"] = "imgui:478"
defs["igGetID"][2]["namespace"] = "ImGui"
defs["igGetID"][2]["ov_cimguiname"] = "igGetID_StrStr"
defs["igGetID"][2]["ov_cimguiname"] = "igGetIDStrStr"
defs["igGetID"][2]["ret"] = "ImGuiID"
defs["igGetID"][2]["signature"] = "(const char*,const char*)"
defs["igGetID"][2]["stname"] = ""
@ -8854,7 +8854,7 @@ defs["igGetID"][3]["defaults"] = {}
defs["igGetID"][3]["funcname"] = "GetID"
defs["igGetID"][3]["location"] = "imgui:479"
defs["igGetID"][3]["namespace"] = "ImGui"
defs["igGetID"][3]["ov_cimguiname"] = "igGetID_Ptr"
defs["igGetID"][3]["ov_cimguiname"] = "igGetIDPtr"
defs["igGetID"][3]["ret"] = "ImGuiID"
defs["igGetID"][3]["signature"] = "(const void*)"
defs["igGetID"][3]["stname"] = ""
@ -10528,7 +10528,7 @@ defs["igIsRectVisible"][1]["defaults"] = {}
defs["igIsRectVisible"][1]["funcname"] = "IsRectVisible"
defs["igIsRectVisible"][1]["location"] = "imgui:858"
defs["igIsRectVisible"][1]["namespace"] = "ImGui"
defs["igIsRectVisible"][1]["ov_cimguiname"] = "igIsRectVisible_Nil"
defs["igIsRectVisible"][1]["ov_cimguiname"] = "igIsRectVisibleNil"
defs["igIsRectVisible"][1]["ret"] = "bool"
defs["igIsRectVisible"][1]["signature"] = "(const ImVec2)"
defs["igIsRectVisible"][1]["stname"] = ""
@ -10548,7 +10548,7 @@ defs["igIsRectVisible"][2]["defaults"] = {}
defs["igIsRectVisible"][2]["funcname"] = "IsRectVisible"
defs["igIsRectVisible"][2]["location"] = "imgui:859"
defs["igIsRectVisible"][2]["namespace"] = "ImGui"
defs["igIsRectVisible"][2]["ov_cimguiname"] = "igIsRectVisible_Vec2"
defs["igIsRectVisible"][2]["ov_cimguiname"] = "igIsRectVisibleVec2"
defs["igIsRectVisible"][2]["ret"] = "bool"
defs["igIsRectVisible"][2]["signature"] = "(const ImVec2,const ImVec2)"
defs["igIsRectVisible"][2]["stname"] = ""
@ -10704,7 +10704,7 @@ defs["igListBox"][1]["defaults"]["height_in_items"] = "-1"
defs["igListBox"][1]["funcname"] = "ListBox"
defs["igListBox"][1]["location"] = "imgui:629"
defs["igListBox"][1]["namespace"] = "ImGui"
defs["igListBox"][1]["ov_cimguiname"] = "igListBox_Str_arr"
defs["igListBox"][1]["ov_cimguiname"] = "igListBoxStr_arr"
defs["igListBox"][1]["ret"] = "bool"
defs["igListBox"][1]["signature"] = "(const char*,int*,const char* const[],int,int)"
defs["igListBox"][1]["stname"] = ""
@ -10739,7 +10739,7 @@ defs["igListBox"][2]["defaults"]["height_in_items"] = "-1"
defs["igListBox"][2]["funcname"] = "ListBox"
defs["igListBox"][2]["location"] = "imgui:630"
defs["igListBox"][2]["namespace"] = "ImGui"
defs["igListBox"][2]["ov_cimguiname"] = "igListBox_FnBoolPtr"
defs["igListBox"][2]["ov_cimguiname"] = "igListBoxFnBoolPtr"
defs["igListBox"][2]["ret"] = "bool"
defs["igListBox"][2]["signature"] = "(const char*,int*,bool(*)(void*,int,const char**),void*,int,int)"
defs["igListBox"][2]["stname"] = ""
@ -10993,7 +10993,7 @@ defs["igMenuItem"][1]["defaults"]["shortcut"] = "NULL"
defs["igMenuItem"][1]["funcname"] = "MenuItem"
defs["igMenuItem"][1]["location"] = "imgui:657"
defs["igMenuItem"][1]["namespace"] = "ImGui"
defs["igMenuItem"][1]["ov_cimguiname"] = "igMenuItem_Bool"
defs["igMenuItem"][1]["ov_cimguiname"] = "igMenuItemBool"
defs["igMenuItem"][1]["ret"] = "bool"
defs["igMenuItem"][1]["signature"] = "(const char*,const char*,bool,bool)"
defs["igMenuItem"][1]["stname"] = ""
@ -11020,7 +11020,7 @@ defs["igMenuItem"][2]["defaults"]["enabled"] = "true"
defs["igMenuItem"][2]["funcname"] = "MenuItem"
defs["igMenuItem"][2]["location"] = "imgui:658"
defs["igMenuItem"][2]["namespace"] = "ImGui"
defs["igMenuItem"][2]["ov_cimguiname"] = "igMenuItem_BoolPtr"
defs["igMenuItem"][2]["ov_cimguiname"] = "igMenuItemBoolPtr"
defs["igMenuItem"][2]["ret"] = "bool"
defs["igMenuItem"][2]["signature"] = "(const char*,const char*,bool*,bool)"
defs["igMenuItem"][2]["stname"] = ""
@ -11092,7 +11092,7 @@ defs["igOpenPopup"][1]["defaults"]["popup_flags"] = "0"
defs["igOpenPopup"][1]["funcname"] = "OpenPopup"
defs["igOpenPopup"][1]["location"] = "imgui:690"
defs["igOpenPopup"][1]["namespace"] = "ImGui"
defs["igOpenPopup"][1]["ov_cimguiname"] = "igOpenPopup_Str"
defs["igOpenPopup"][1]["ov_cimguiname"] = "igOpenPopupStr"
defs["igOpenPopup"][1]["ret"] = "void"
defs["igOpenPopup"][1]["signature"] = "(const char*,ImGuiPopupFlags)"
defs["igOpenPopup"][1]["stname"] = ""
@ -11113,7 +11113,7 @@ defs["igOpenPopup"][2]["defaults"]["popup_flags"] = "0"
defs["igOpenPopup"][2]["funcname"] = "OpenPopup"
defs["igOpenPopup"][2]["location"] = "imgui:691"
defs["igOpenPopup"][2]["namespace"] = "ImGui"
defs["igOpenPopup"][2]["ov_cimguiname"] = "igOpenPopup_ID"
defs["igOpenPopup"][2]["ov_cimguiname"] = "igOpenPopupID"
defs["igOpenPopup"][2]["ret"] = "void"
defs["igOpenPopup"][2]["signature"] = "(ImGuiID,ImGuiPopupFlags)"
defs["igOpenPopup"][2]["stname"] = ""
@ -11187,7 +11187,7 @@ defs["igPlotHistogram"][1]["defaults"]["values_offset"] = "0"
defs["igPlotHistogram"][1]["funcname"] = "PlotHistogram"
defs["igPlotHistogram"][1]["location"] = "imgui:636"
defs["igPlotHistogram"][1]["namespace"] = "ImGui"
defs["igPlotHistogram"][1]["ov_cimguiname"] = "igPlotHistogram_FloatPtr"
defs["igPlotHistogram"][1]["ov_cimguiname"] = "igPlotHistogramFloatPtr"
defs["igPlotHistogram"][1]["ret"] = "void"
defs["igPlotHistogram"][1]["signature"] = "(const char*,const float*,int,int,const char*,float,float,ImVec2,int)"
defs["igPlotHistogram"][1]["stname"] = ""
@ -11235,7 +11235,7 @@ defs["igPlotHistogram"][2]["defaults"]["values_offset"] = "0"
defs["igPlotHistogram"][2]["funcname"] = "PlotHistogram"
defs["igPlotHistogram"][2]["location"] = "imgui:637"
defs["igPlotHistogram"][2]["namespace"] = "ImGui"
defs["igPlotHistogram"][2]["ov_cimguiname"] = "igPlotHistogram_FnFloatPtr"
defs["igPlotHistogram"][2]["ov_cimguiname"] = "igPlotHistogramFnFloatPtr"
defs["igPlotHistogram"][2]["ret"] = "void"
defs["igPlotHistogram"][2]["signature"] = "(const char*,float(*)(void*,int),void*,int,int,const char*,float,float,ImVec2)"
defs["igPlotHistogram"][2]["stname"] = ""
@ -11285,7 +11285,7 @@ defs["igPlotLines"][1]["defaults"]["values_offset"] = "0"
defs["igPlotLines"][1]["funcname"] = "PlotLines"
defs["igPlotLines"][1]["location"] = "imgui:634"
defs["igPlotLines"][1]["namespace"] = "ImGui"
defs["igPlotLines"][1]["ov_cimguiname"] = "igPlotLines_FloatPtr"
defs["igPlotLines"][1]["ov_cimguiname"] = "igPlotLinesFloatPtr"
defs["igPlotLines"][1]["ret"] = "void"
defs["igPlotLines"][1]["signature"] = "(const char*,const float*,int,int,const char*,float,float,ImVec2,int)"
defs["igPlotLines"][1]["stname"] = ""
@ -11333,7 +11333,7 @@ defs["igPlotLines"][2]["defaults"]["values_offset"] = "0"
defs["igPlotLines"][2]["funcname"] = "PlotLines"
defs["igPlotLines"][2]["location"] = "imgui:635"
defs["igPlotLines"][2]["namespace"] = "ImGui"
defs["igPlotLines"][2]["ov_cimguiname"] = "igPlotLines_FnFloatPtr"
defs["igPlotLines"][2]["ov_cimguiname"] = "igPlotLinesFnFloatPtr"
defs["igPlotLines"][2]["ret"] = "void"
defs["igPlotLines"][2]["signature"] = "(const char*,float(*)(void*,int),void*,int,int,const char*,float,float,ImVec2)"
defs["igPlotLines"][2]["stname"] = ""
@ -11614,7 +11614,7 @@ defs["igPushID"][1]["defaults"] = {}
defs["igPushID"][1]["funcname"] = "PushID"
defs["igPushID"][1]["location"] = "imgui:472"
defs["igPushID"][1]["namespace"] = "ImGui"
defs["igPushID"][1]["ov_cimguiname"] = "igPushID_Str"
defs["igPushID"][1]["ov_cimguiname"] = "igPushIDStr"
defs["igPushID"][1]["ret"] = "void"
defs["igPushID"][1]["signature"] = "(const char*)"
defs["igPushID"][1]["stname"] = ""
@ -11634,7 +11634,7 @@ defs["igPushID"][2]["defaults"] = {}
defs["igPushID"][2]["funcname"] = "PushID"
defs["igPushID"][2]["location"] = "imgui:473"
defs["igPushID"][2]["namespace"] = "ImGui"
defs["igPushID"][2]["ov_cimguiname"] = "igPushID_StrStr"
defs["igPushID"][2]["ov_cimguiname"] = "igPushIDStrStr"
defs["igPushID"][2]["ret"] = "void"
defs["igPushID"][2]["signature"] = "(const char*,const char*)"
defs["igPushID"][2]["stname"] = ""
@ -11651,7 +11651,7 @@ defs["igPushID"][3]["defaults"] = {}
defs["igPushID"][3]["funcname"] = "PushID"
defs["igPushID"][3]["location"] = "imgui:474"
defs["igPushID"][3]["namespace"] = "ImGui"
defs["igPushID"][3]["ov_cimguiname"] = "igPushID_Ptr"
defs["igPushID"][3]["ov_cimguiname"] = "igPushIDPtr"
defs["igPushID"][3]["ret"] = "void"
defs["igPushID"][3]["signature"] = "(const void*)"
defs["igPushID"][3]["stname"] = ""
@ -11668,7 +11668,7 @@ defs["igPushID"][4]["defaults"] = {}
defs["igPushID"][4]["funcname"] = "PushID"
defs["igPushID"][4]["location"] = "imgui:475"
defs["igPushID"][4]["namespace"] = "ImGui"
defs["igPushID"][4]["ov_cimguiname"] = "igPushID_Int"
defs["igPushID"][4]["ov_cimguiname"] = "igPushIDInt"
defs["igPushID"][4]["ret"] = "void"
defs["igPushID"][4]["signature"] = "(int)"
defs["igPushID"][4]["stname"] = ""
@ -11712,7 +11712,7 @@ defs["igPushStyleColor"][1]["defaults"] = {}
defs["igPushStyleColor"][1]["funcname"] = "PushStyleColor"
defs["igPushStyleColor"][1]["location"] = "imgui:401"
defs["igPushStyleColor"][1]["namespace"] = "ImGui"
defs["igPushStyleColor"][1]["ov_cimguiname"] = "igPushStyleColor_U32"
defs["igPushStyleColor"][1]["ov_cimguiname"] = "igPushStyleColorU32"
defs["igPushStyleColor"][1]["ret"] = "void"
defs["igPushStyleColor"][1]["signature"] = "(ImGuiCol,ImU32)"
defs["igPushStyleColor"][1]["stname"] = ""
@ -11732,7 +11732,7 @@ defs["igPushStyleColor"][2]["defaults"] = {}
defs["igPushStyleColor"][2]["funcname"] = "PushStyleColor"
defs["igPushStyleColor"][2]["location"] = "imgui:402"
defs["igPushStyleColor"][2]["namespace"] = "ImGui"
defs["igPushStyleColor"][2]["ov_cimguiname"] = "igPushStyleColor_Vec4"
defs["igPushStyleColor"][2]["ov_cimguiname"] = "igPushStyleColorVec4"
defs["igPushStyleColor"][2]["ret"] = "void"
defs["igPushStyleColor"][2]["signature"] = "(ImGuiCol,const ImVec4)"
defs["igPushStyleColor"][2]["stname"] = ""
@ -11755,7 +11755,7 @@ defs["igPushStyleVar"][1]["defaults"] = {}
defs["igPushStyleVar"][1]["funcname"] = "PushStyleVar"
defs["igPushStyleVar"][1]["location"] = "imgui:404"
defs["igPushStyleVar"][1]["namespace"] = "ImGui"
defs["igPushStyleVar"][1]["ov_cimguiname"] = "igPushStyleVar_Float"
defs["igPushStyleVar"][1]["ov_cimguiname"] = "igPushStyleVarFloat"
defs["igPushStyleVar"][1]["ret"] = "void"
defs["igPushStyleVar"][1]["signature"] = "(ImGuiStyleVar,float)"
defs["igPushStyleVar"][1]["stname"] = ""
@ -11775,7 +11775,7 @@ defs["igPushStyleVar"][2]["defaults"] = {}
defs["igPushStyleVar"][2]["funcname"] = "PushStyleVar"
defs["igPushStyleVar"][2]["location"] = "imgui:405"
defs["igPushStyleVar"][2]["namespace"] = "ImGui"
defs["igPushStyleVar"][2]["ov_cimguiname"] = "igPushStyleVar_Vec2"
defs["igPushStyleVar"][2]["ov_cimguiname"] = "igPushStyleVarVec2"
defs["igPushStyleVar"][2]["ret"] = "void"
defs["igPushStyleVar"][2]["signature"] = "(ImGuiStyleVar,const ImVec2)"
defs["igPushStyleVar"][2]["stname"] = ""
@ -11818,7 +11818,7 @@ defs["igRadioButton"][1]["defaults"] = {}
defs["igRadioButton"][1]["funcname"] = "RadioButton"
defs["igRadioButton"][1]["location"] = "imgui:508"
defs["igRadioButton"][1]["namespace"] = "ImGui"
defs["igRadioButton"][1]["ov_cimguiname"] = "igRadioButton_Bool"
defs["igRadioButton"][1]["ov_cimguiname"] = "igRadioButtonBool"
defs["igRadioButton"][1]["ret"] = "bool"
defs["igRadioButton"][1]["signature"] = "(const char*,bool)"
defs["igRadioButton"][1]["stname"] = ""
@ -11841,7 +11841,7 @@ defs["igRadioButton"][2]["defaults"] = {}
defs["igRadioButton"][2]["funcname"] = "RadioButton"
defs["igRadioButton"][2]["location"] = "imgui:509"
defs["igRadioButton"][2]["namespace"] = "ImGui"
defs["igRadioButton"][2]["ov_cimguiname"] = "igRadioButton_IntPtr"
defs["igRadioButton"][2]["ov_cimguiname"] = "igRadioButtonIntPtr"
defs["igRadioButton"][2]["ret"] = "bool"
defs["igRadioButton"][2]["signature"] = "(const char*,int*,int)"
defs["igRadioButton"][2]["stname"] = ""
@ -11972,7 +11972,7 @@ defs["igSelectable"][1]["defaults"]["size"] = "ImVec2(0,0)"
defs["igSelectable"][1]["funcname"] = "Selectable"
defs["igSelectable"][1]["location"] = "imgui:618"
defs["igSelectable"][1]["namespace"] = "ImGui"
defs["igSelectable"][1]["ov_cimguiname"] = "igSelectable_Bool"
defs["igSelectable"][1]["ov_cimguiname"] = "igSelectableBool"
defs["igSelectable"][1]["ret"] = "bool"
defs["igSelectable"][1]["signature"] = "(const char*,bool,ImGuiSelectableFlags,const ImVec2)"
defs["igSelectable"][1]["stname"] = ""
@ -12000,7 +12000,7 @@ defs["igSelectable"][2]["defaults"]["size"] = "ImVec2(0,0)"
defs["igSelectable"][2]["funcname"] = "Selectable"
defs["igSelectable"][2]["location"] = "imgui:619"
defs["igSelectable"][2]["namespace"] = "ImGui"
defs["igSelectable"][2]["ov_cimguiname"] = "igSelectable_BoolPtr"
defs["igSelectable"][2]["ov_cimguiname"] = "igSelectableBoolPtr"
defs["igSelectable"][2]["ret"] = "bool"
defs["igSelectable"][2]["signature"] = "(const char*,bool*,ImGuiSelectableFlags,const ImVec2)"
defs["igSelectable"][2]["stname"] = ""
@ -12749,7 +12749,7 @@ defs["igSetWindowCollapsed"][1]["defaults"]["cond"] = "0"
defs["igSetWindowCollapsed"][1]["funcname"] = "SetWindowCollapsed"
defs["igSetWindowCollapsed"][1]["location"] = "imgui:369"
defs["igSetWindowCollapsed"][1]["namespace"] = "ImGui"
defs["igSetWindowCollapsed"][1]["ov_cimguiname"] = "igSetWindowCollapsed_Bool"
defs["igSetWindowCollapsed"][1]["ov_cimguiname"] = "igSetWindowCollapsedBool"
defs["igSetWindowCollapsed"][1]["ret"] = "void"
defs["igSetWindowCollapsed"][1]["signature"] = "(bool,ImGuiCond)"
defs["igSetWindowCollapsed"][1]["stname"] = ""
@ -12773,7 +12773,7 @@ defs["igSetWindowCollapsed"][2]["defaults"]["cond"] = "0"
defs["igSetWindowCollapsed"][2]["funcname"] = "SetWindowCollapsed"
defs["igSetWindowCollapsed"][2]["location"] = "imgui:374"
defs["igSetWindowCollapsed"][2]["namespace"] = "ImGui"
defs["igSetWindowCollapsed"][2]["ov_cimguiname"] = "igSetWindowCollapsed_Str"
defs["igSetWindowCollapsed"][2]["ov_cimguiname"] = "igSetWindowCollapsedStr"
defs["igSetWindowCollapsed"][2]["ret"] = "void"
defs["igSetWindowCollapsed"][2]["signature"] = "(const char*,bool,ImGuiCond)"
defs["igSetWindowCollapsed"][2]["stname"] = ""
@ -12790,7 +12790,7 @@ defs["igSetWindowFocus"][1]["defaults"] = {}
defs["igSetWindowFocus"][1]["funcname"] = "SetWindowFocus"
defs["igSetWindowFocus"][1]["location"] = "imgui:370"
defs["igSetWindowFocus"][1]["namespace"] = "ImGui"
defs["igSetWindowFocus"][1]["ov_cimguiname"] = "igSetWindowFocus_Nil"
defs["igSetWindowFocus"][1]["ov_cimguiname"] = "igSetWindowFocusNil"
defs["igSetWindowFocus"][1]["ret"] = "void"
defs["igSetWindowFocus"][1]["signature"] = "()"
defs["igSetWindowFocus"][1]["stname"] = ""
@ -12807,7 +12807,7 @@ defs["igSetWindowFocus"][2]["defaults"] = {}
defs["igSetWindowFocus"][2]["funcname"] = "SetWindowFocus"
defs["igSetWindowFocus"][2]["location"] = "imgui:375"
defs["igSetWindowFocus"][2]["namespace"] = "ImGui"
defs["igSetWindowFocus"][2]["ov_cimguiname"] = "igSetWindowFocus_Str"
defs["igSetWindowFocus"][2]["ov_cimguiname"] = "igSetWindowFocusStr"
defs["igSetWindowFocus"][2]["ret"] = "void"
defs["igSetWindowFocus"][2]["signature"] = "(const char*)"
defs["igSetWindowFocus"][2]["stname"] = ""
@ -12850,7 +12850,7 @@ defs["igSetWindowPos"][1]["defaults"]["cond"] = "0"
defs["igSetWindowPos"][1]["funcname"] = "SetWindowPos"
defs["igSetWindowPos"][1]["location"] = "imgui:367"
defs["igSetWindowPos"][1]["namespace"] = "ImGui"
defs["igSetWindowPos"][1]["ov_cimguiname"] = "igSetWindowPos_Vec2"
defs["igSetWindowPos"][1]["ov_cimguiname"] = "igSetWindowPosVec2"
defs["igSetWindowPos"][1]["ret"] = "void"
defs["igSetWindowPos"][1]["signature"] = "(const ImVec2,ImGuiCond)"
defs["igSetWindowPos"][1]["stname"] = ""
@ -12874,7 +12874,7 @@ defs["igSetWindowPos"][2]["defaults"]["cond"] = "0"
defs["igSetWindowPos"][2]["funcname"] = "SetWindowPos"
defs["igSetWindowPos"][2]["location"] = "imgui:372"
defs["igSetWindowPos"][2]["namespace"] = "ImGui"
defs["igSetWindowPos"][2]["ov_cimguiname"] = "igSetWindowPos_Str"
defs["igSetWindowPos"][2]["ov_cimguiname"] = "igSetWindowPosStr"
defs["igSetWindowPos"][2]["ret"] = "void"
defs["igSetWindowPos"][2]["signature"] = "(const char*,const ImVec2,ImGuiCond)"
defs["igSetWindowPos"][2]["stname"] = ""
@ -12898,7 +12898,7 @@ defs["igSetWindowSize"][1]["defaults"]["cond"] = "0"
defs["igSetWindowSize"][1]["funcname"] = "SetWindowSize"
defs["igSetWindowSize"][1]["location"] = "imgui:368"
defs["igSetWindowSize"][1]["namespace"] = "ImGui"
defs["igSetWindowSize"][1]["ov_cimguiname"] = "igSetWindowSize_Vec2"
defs["igSetWindowSize"][1]["ov_cimguiname"] = "igSetWindowSizeVec2"
defs["igSetWindowSize"][1]["ret"] = "void"
defs["igSetWindowSize"][1]["signature"] = "(const ImVec2,ImGuiCond)"
defs["igSetWindowSize"][1]["stname"] = ""
@ -12922,7 +12922,7 @@ defs["igSetWindowSize"][2]["defaults"]["cond"] = "0"
defs["igSetWindowSize"][2]["funcname"] = "SetWindowSize"
defs["igSetWindowSize"][2]["location"] = "imgui:373"
defs["igSetWindowSize"][2]["namespace"] = "ImGui"
defs["igSetWindowSize"][2]["ov_cimguiname"] = "igSetWindowSize_Str"
defs["igSetWindowSize"][2]["ov_cimguiname"] = "igSetWindowSizeStr"
defs["igSetWindowSize"][2]["ret"] = "void"
defs["igSetWindowSize"][2]["signature"] = "(const char*,const ImVec2,ImGuiCond)"
defs["igSetWindowSize"][2]["stname"] = ""
@ -14109,7 +14109,7 @@ defs["igTreeNode"][1]["defaults"] = {}
defs["igTreeNode"][1]["funcname"] = "TreeNode"
defs["igTreeNode"][1]["location"] = "imgui:597"
defs["igTreeNode"][1]["namespace"] = "ImGui"
defs["igTreeNode"][1]["ov_cimguiname"] = "igTreeNode_Str"
defs["igTreeNode"][1]["ov_cimguiname"] = "igTreeNodeStr"
defs["igTreeNode"][1]["ret"] = "bool"
defs["igTreeNode"][1]["signature"] = "(const char*)"
defs["igTreeNode"][1]["stname"] = ""
@ -14133,7 +14133,7 @@ defs["igTreeNode"][2]["funcname"] = "TreeNode"
defs["igTreeNode"][2]["isvararg"] = "...)"
defs["igTreeNode"][2]["location"] = "imgui:598"
defs["igTreeNode"][2]["namespace"] = "ImGui"
defs["igTreeNode"][2]["ov_cimguiname"] = "igTreeNode_StrStr"
defs["igTreeNode"][2]["ov_cimguiname"] = "igTreeNodeStrStr"
defs["igTreeNode"][2]["ret"] = "bool"
defs["igTreeNode"][2]["signature"] = "(const char*,const char*,...)"
defs["igTreeNode"][2]["stname"] = ""
@ -14157,7 +14157,7 @@ defs["igTreeNode"][3]["funcname"] = "TreeNode"
defs["igTreeNode"][3]["isvararg"] = "...)"
defs["igTreeNode"][3]["location"] = "imgui:599"
defs["igTreeNode"][3]["namespace"] = "ImGui"
defs["igTreeNode"][3]["ov_cimguiname"] = "igTreeNode_Ptr"
defs["igTreeNode"][3]["ov_cimguiname"] = "igTreeNodePtr"
defs["igTreeNode"][3]["ret"] = "bool"
defs["igTreeNode"][3]["signature"] = "(const void*,const char*,...)"
defs["igTreeNode"][3]["stname"] = ""
@ -14182,7 +14182,7 @@ defs["igTreeNodeEx"][1]["defaults"]["flags"] = "0"
defs["igTreeNodeEx"][1]["funcname"] = "TreeNodeEx"
defs["igTreeNodeEx"][1]["location"] = "imgui:602"
defs["igTreeNodeEx"][1]["namespace"] = "ImGui"
defs["igTreeNodeEx"][1]["ov_cimguiname"] = "igTreeNodeEx_Str"
defs["igTreeNodeEx"][1]["ov_cimguiname"] = "igTreeNodeExStr"
defs["igTreeNodeEx"][1]["ret"] = "bool"
defs["igTreeNodeEx"][1]["signature"] = "(const char*,ImGuiTreeNodeFlags)"
defs["igTreeNodeEx"][1]["stname"] = ""
@ -14209,7 +14209,7 @@ defs["igTreeNodeEx"][2]["funcname"] = "TreeNodeEx"
defs["igTreeNodeEx"][2]["isvararg"] = "...)"
defs["igTreeNodeEx"][2]["location"] = "imgui:603"
defs["igTreeNodeEx"][2]["namespace"] = "ImGui"
defs["igTreeNodeEx"][2]["ov_cimguiname"] = "igTreeNodeEx_StrStr"
defs["igTreeNodeEx"][2]["ov_cimguiname"] = "igTreeNodeExStrStr"
defs["igTreeNodeEx"][2]["ret"] = "bool"
defs["igTreeNodeEx"][2]["signature"] = "(const char*,ImGuiTreeNodeFlags,const char*,...)"
defs["igTreeNodeEx"][2]["stname"] = ""
@ -14236,7 +14236,7 @@ defs["igTreeNodeEx"][3]["funcname"] = "TreeNodeEx"
defs["igTreeNodeEx"][3]["isvararg"] = "...)"
defs["igTreeNodeEx"][3]["location"] = "imgui:604"
defs["igTreeNodeEx"][3]["namespace"] = "ImGui"
defs["igTreeNodeEx"][3]["ov_cimguiname"] = "igTreeNodeEx_Ptr"
defs["igTreeNodeEx"][3]["ov_cimguiname"] = "igTreeNodeExPtr"
defs["igTreeNodeEx"][3]["ret"] = "bool"
defs["igTreeNodeEx"][3]["signature"] = "(const void*,ImGuiTreeNodeFlags,const char*,...)"
defs["igTreeNodeEx"][3]["stname"] = ""
@ -14266,7 +14266,7 @@ defs["igTreeNodeExV"][1]["defaults"] = {}
defs["igTreeNodeExV"][1]["funcname"] = "TreeNodeExV"
defs["igTreeNodeExV"][1]["location"] = "imgui:605"
defs["igTreeNodeExV"][1]["namespace"] = "ImGui"
defs["igTreeNodeExV"][1]["ov_cimguiname"] = "igTreeNodeExV_Str"
defs["igTreeNodeExV"][1]["ov_cimguiname"] = "igTreeNodeExVStr"
defs["igTreeNodeExV"][1]["ret"] = "bool"
defs["igTreeNodeExV"][1]["signature"] = "(const char*,ImGuiTreeNodeFlags,const char*,va_list)"
defs["igTreeNodeExV"][1]["stname"] = ""
@ -14292,7 +14292,7 @@ defs["igTreeNodeExV"][2]["defaults"] = {}
defs["igTreeNodeExV"][2]["funcname"] = "TreeNodeExV"
defs["igTreeNodeExV"][2]["location"] = "imgui:606"
defs["igTreeNodeExV"][2]["namespace"] = "ImGui"
defs["igTreeNodeExV"][2]["ov_cimguiname"] = "igTreeNodeExV_Ptr"
defs["igTreeNodeExV"][2]["ov_cimguiname"] = "igTreeNodeExVPtr"
defs["igTreeNodeExV"][2]["ret"] = "bool"
defs["igTreeNodeExV"][2]["signature"] = "(const void*,ImGuiTreeNodeFlags,const char*,va_list)"
defs["igTreeNodeExV"][2]["stname"] = ""
@ -14318,7 +14318,7 @@ defs["igTreeNodeV"][1]["defaults"] = {}
defs["igTreeNodeV"][1]["funcname"] = "TreeNodeV"
defs["igTreeNodeV"][1]["location"] = "imgui:600"
defs["igTreeNodeV"][1]["namespace"] = "ImGui"
defs["igTreeNodeV"][1]["ov_cimguiname"] = "igTreeNodeV_Str"
defs["igTreeNodeV"][1]["ov_cimguiname"] = "igTreeNodeVStr"
defs["igTreeNodeV"][1]["ret"] = "bool"
defs["igTreeNodeV"][1]["signature"] = "(const char*,const char*,va_list)"
defs["igTreeNodeV"][1]["stname"] = ""
@ -14341,7 +14341,7 @@ defs["igTreeNodeV"][2]["defaults"] = {}
defs["igTreeNodeV"][2]["funcname"] = "TreeNodeV"
defs["igTreeNodeV"][2]["location"] = "imgui:601"
defs["igTreeNodeV"][2]["namespace"] = "ImGui"
defs["igTreeNodeV"][2]["ov_cimguiname"] = "igTreeNodeV_Ptr"
defs["igTreeNodeV"][2]["ov_cimguiname"] = "igTreeNodeVPtr"
defs["igTreeNodeV"][2]["ret"] = "bool"
defs["igTreeNodeV"][2]["signature"] = "(const void*,const char*,va_list)"
defs["igTreeNodeV"][2]["stname"] = ""
@ -14377,7 +14377,7 @@ defs["igTreePush"][1]["defaults"] = {}
defs["igTreePush"][1]["funcname"] = "TreePush"
defs["igTreePush"][1]["location"] = "imgui:607"
defs["igTreePush"][1]["namespace"] = "ImGui"
defs["igTreePush"][1]["ov_cimguiname"] = "igTreePush_Str"
defs["igTreePush"][1]["ov_cimguiname"] = "igTreePushStr"
defs["igTreePush"][1]["ret"] = "void"
defs["igTreePush"][1]["signature"] = "(const char*)"
defs["igTreePush"][1]["stname"] = ""
@ -14395,7 +14395,7 @@ defs["igTreePush"][2]["defaults"]["ptr_id"] = "NULL"
defs["igTreePush"][2]["funcname"] = "TreePush"
defs["igTreePush"][2]["location"] = "imgui:608"
defs["igTreePush"][2]["namespace"] = "ImGui"
defs["igTreePush"][2]["ov_cimguiname"] = "igTreePush_Ptr"
defs["igTreePush"][2]["ov_cimguiname"] = "igTreePushPtr"
defs["igTreePush"][2]["ret"] = "void"
defs["igTreePush"][2]["signature"] = "(const void*)"
defs["igTreePush"][2]["stname"] = ""
@ -14558,7 +14558,7 @@ defs["igValue"][1]["defaults"] = {}
defs["igValue"][1]["funcname"] = "Value"
defs["igValue"][1]["location"] = "imgui:641"
defs["igValue"][1]["namespace"] = "ImGui"
defs["igValue"][1]["ov_cimguiname"] = "igValue_Bool"
defs["igValue"][1]["ov_cimguiname"] = "igValueBool"
defs["igValue"][1]["ret"] = "void"
defs["igValue"][1]["signature"] = "(const char*,bool)"
defs["igValue"][1]["stname"] = ""
@ -14578,7 +14578,7 @@ defs["igValue"][2]["defaults"] = {}
defs["igValue"][2]["funcname"] = "Value"
defs["igValue"][2]["location"] = "imgui:642"
defs["igValue"][2]["namespace"] = "ImGui"
defs["igValue"][2]["ov_cimguiname"] = "igValue_Int"
defs["igValue"][2]["ov_cimguiname"] = "igValueInt"
defs["igValue"][2]["ret"] = "void"
defs["igValue"][2]["signature"] = "(const char*,int)"
defs["igValue"][2]["stname"] = ""
@ -14598,7 +14598,7 @@ defs["igValue"][3]["defaults"] = {}
defs["igValue"][3]["funcname"] = "Value"
defs["igValue"][3]["location"] = "imgui:643"
defs["igValue"][3]["namespace"] = "ImGui"
defs["igValue"][3]["ov_cimguiname"] = "igValue_Uint"
defs["igValue"][3]["ov_cimguiname"] = "igValueUint"
defs["igValue"][3]["ret"] = "void"
defs["igValue"][3]["signature"] = "(const char*,unsigned int)"
defs["igValue"][3]["stname"] = ""
@ -14622,7 +14622,7 @@ defs["igValue"][4]["defaults"]["float_format"] = "NULL"
defs["igValue"][4]["funcname"] = "Value"
defs["igValue"][4]["location"] = "imgui:644"
defs["igValue"][4]["namespace"] = "ImGui"
defs["igValue"][4]["ov_cimguiname"] = "igValue_Float"
defs["igValue"][4]["ov_cimguiname"] = "igValueFloat"
defs["igValue"][4]["ret"] = "void"
defs["igValue"][4]["signature"] = "(const char*,float,const char*)"
defs["igValue"][4]["stname"] = ""

View File

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2014-2021 Omar Cornut
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,123 @@
//-----------------------------------------------------------------------------
// COMPILE-TIME OPTIONS FOR DEAR IMGUI
// Runtime options (clipboard callbacks, enabling various features, etc.) can generally be set via the ImGuiIO structure.
// You can use ImGui::SetAllocatorFunctions() before calling ImGui::CreateContext() to rewire memory allocation functions.
//-----------------------------------------------------------------------------
// A) You may edit imconfig.h (and not overwrite it when updating Dear ImGui, or maintain a patch/rebased branch with your modifications to it)
// B) or '#define IMGUI_USER_CONFIG "my_imgui_config.h"' in your project and then add directives in your own file without touching this template.
//-----------------------------------------------------------------------------
// You need to make sure that configuration settings are defined consistently _everywhere_ Dear ImGui is used, which include the imgui*.cpp
// files but also _any_ of your code that uses Dear ImGui. This is because some compile-time options have an affect on data structures.
// Defining those options in imconfig.h will ensure every compilation unit gets to see the same data structure layouts.
// Call IMGUI_CHECKVERSION() from your .cpp files to verify that the data structures your files are using are matching the ones imgui.cpp is using.
//-----------------------------------------------------------------------------
#pragma once
//---- Define assertion handler. Defaults to calling assert().
// If your macro uses multiple statements, make sure is enclosed in a 'do { .. } while (0)' block so it can be used as a single statement.
//#define IM_ASSERT(_EXPR) MyAssert(_EXPR)
//#define IM_ASSERT(_EXPR) ((void)(_EXPR)) // Disable asserts
//---- Define attributes of all API symbols declarations, e.g. for DLL under Windows
// Using Dear ImGui via a shared library is not recommended, because of function call overhead and because we don't guarantee backward nor forward ABI compatibility.
// DLL users: heaps and globals are not shared across DLL boundaries! You will need to call SetCurrentContext() + SetAllocatorFunctions()
// for each static/DLL boundary you are calling from. Read "Context and Memory Allocators" section of imgui.cpp for more details.
//#define IMGUI_API __declspec( dllexport )
//#define IMGUI_API __declspec( dllimport )
//---- Don't define obsolete functions/enums/behaviors. Consider enabling from time to time after updating to avoid using soon-to-be obsolete function/names.
//#define IMGUI_DISABLE_OBSOLETE_FUNCTIONS
//---- Disable all of Dear ImGui or don't implement standard windows.
// It is very strongly recommended to NOT disable the demo windows during development. Please read comments in imgui_demo.cpp.
//#define IMGUI_DISABLE // Disable everything: all headers and source files will be empty.
//#define IMGUI_DISABLE_DEMO_WINDOWS // Disable demo windows: ShowDemoWindow()/ShowStyleEditor() will be empty. Not recommended.
//#define IMGUI_DISABLE_METRICS_WINDOW // Disable metrics/debugger window: ShowMetricsWindow() will be empty.
//---- Don't implement some functions to reduce linkage requirements.
//#define IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCTIONS // [Win32] Don't implement default clipboard handler. Won't use and link with OpenClipboard/GetClipboardData/CloseClipboard etc. (user32.lib/.a, kernel32.lib/.a)
//#define IMGUI_ENABLE_WIN32_DEFAULT_IME_FUNCTIONS // [Win32] [Default with Visual Studio] Implement default IME handler (require imm32.lib/.a, auto-link for Visual Studio, -limm32 on command-line for MinGW)
//#define IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS // [Win32] [Default with non-Visual Studio compilers] Don't implement default IME handler (won't require imm32.lib/.a)
//#define IMGUI_DISABLE_WIN32_FUNCTIONS // [Win32] Won't use and link with any Win32 function (clipboard, ime).
//#define IMGUI_ENABLE_OSX_DEFAULT_CLIPBOARD_FUNCTIONS // [OSX] Implement default OSX clipboard handler (need to link with '-framework ApplicationServices', this is why this is not the default).
//#define IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS // Don't implement ImFormatString/ImFormatStringV so you can implement them yourself (e.g. if you don't want to link with vsnprintf)
//#define IMGUI_DISABLE_DEFAULT_MATH_FUNCTIONS // Don't implement ImFabs/ImSqrt/ImPow/ImFmod/ImCos/ImSin/ImAcos/ImAtan2 so you can implement them yourself.
//#define IMGUI_DISABLE_FILE_FUNCTIONS // Don't implement ImFileOpen/ImFileClose/ImFileRead/ImFileWrite and ImFileHandle at all (replace them with dummies)
//#define IMGUI_DISABLE_DEFAULT_FILE_FUNCTIONS // Don't implement ImFileOpen/ImFileClose/ImFileRead/ImFileWrite and ImFileHandle so you can implement them yourself if you don't want to link with fopen/fclose/fread/fwrite. This will also disable the LogToTTY() function.
//#define IMGUI_DISABLE_DEFAULT_ALLOCATORS // Don't implement default allocators calling malloc()/free() to avoid linking with them. You will need to call ImGui::SetAllocatorFunctions().
//#define IMGUI_DISABLE_SSE // Disable use of SSE intrinsics even if available
//---- Include imgui_user.h at the end of imgui.h as a convenience
//#define IMGUI_INCLUDE_IMGUI_USER_H
//---- Pack colors to BGRA8 instead of RGBA8 (to avoid converting from one to another)
//#define IMGUI_USE_BGRA_PACKED_COLOR
//---- Use 32-bit for ImWchar (default is 16-bit) to support unicode planes 1-16. (e.g. point beyond 0xFFFF like emoticons, dingbats, symbols, shapes, ancient languages, etc...)
//#define IMGUI_USE_WCHAR32
//---- Avoid multiple STB libraries implementations, or redefine path/filenames to prioritize another version
// By default the embedded implementations are declared static and not available outside of Dear ImGui sources files.
//#define IMGUI_STB_TRUETYPE_FILENAME "my_folder/stb_truetype.h"
//#define IMGUI_STB_RECT_PACK_FILENAME "my_folder/stb_rect_pack.h"
//#define IMGUI_DISABLE_STB_TRUETYPE_IMPLEMENTATION
//#define IMGUI_DISABLE_STB_RECT_PACK_IMPLEMENTATION
//---- Use stb_printf's faster implementation of vsnprintf instead of the one from libc (unless IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS is defined)
// Requires 'stb_sprintf.h' to be available in the include path. Compatibility checks of arguments and formats done by clang and GCC will be disabled in order to support the extra formats provided by STB sprintf.
// #define IMGUI_USE_STB_SPRINTF
//---- Use FreeType to build and rasterize the font atlas (instead of stb_truetype which is embedded by default in Dear ImGui)
// Requires FreeType headers to be available in the include path. Requires program to be compiled with 'misc/freetype/imgui_freetype.cpp' (in this repository) + the FreeType library (not provided).
// On Windows you may use vcpkg with 'vcpkg install freetype --triplet=x64-windows' + 'vcpkg integrate install'.
//#define IMGUI_ENABLE_FREETYPE
//---- Use stb_truetype to build and rasterize the font atlas (default)
// The only purpose of this define is if you want force compilation of the stb_truetype backend ALONG with the FreeType backend.
//#define IMGUI_ENABLE_STB_TRUETYPE
//---- Define constructor and implicit cast operators to convert back<>forth between your math types and ImVec2/ImVec4.
// This will be inlined as part of ImVec2 and ImVec4 class declarations.
/*
#define IM_VEC2_CLASS_EXTRA \
ImVec2(const MyVec2& f) { x = f.x; y = f.y; } \
operator MyVec2() const { return MyVec2(x,y); }
#define IM_VEC4_CLASS_EXTRA \
ImVec4(const MyVec4& f) { x = f.x; y = f.y; z = f.z; w = f.w; } \
operator MyVec4() const { return MyVec4(x,y,z,w); }
*/
//---- Use 32-bit vertex indices (default is 16-bit) is one way to allow large meshes with more than 64K vertices.
// Your renderer backend will need to support it (most example renderer backends support both 16/32-bit indices).
// Another way to allow large meshes while keeping 16-bit indices is to handle ImDrawCmd::VtxOffset in your renderer.
// Read about ImGuiBackendFlags_RendererHasVtxOffset for details.
//#define ImDrawIdx unsigned int
//---- Override ImDrawCallback signature (will need to modify renderer backends accordingly)
//struct ImDrawList;
//struct ImDrawCmd;
//typedef void (*MyImDrawCallback)(const ImDrawList* draw_list, const ImDrawCmd* cmd, void* my_renderer_user_data);
//#define ImDrawCallback MyImDrawCallback
//---- Debug Tools: Macro to break in Debugger
// (use 'Metrics->Tools->Item Picker' to pick widgets with the mouse and break into them for easy debugging.)
//#define IM_DEBUG_BREAK IM_ASSERT(0)
//#define IM_DEBUG_BREAK __debugbreak()
//---- Debug Tools: Have the Item Picker break in the ItemAdd() function instead of ItemHoverable(),
// (which comes earlier in the code, will catch a few extra items, allow picking items other than Hovered one.)
// This adds a small runtime cost which is why it is not enabled by default.
//#define IMGUI_DEBUG_TOOL_ITEM_PICKER_EX
//---- Debug Tools: Enable slower asserts
//#define IMGUI_DEBUG_PARANOID
//---- Tip: You can add extra functions within the ImGui:: namespace, here or in your own headers files.
/*
namespace ImGui
{
void MyFunction(const char* name, const MyMatrix44& v);
}
*/

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,639 @@
// [DEAR IMGUI]
// This is a slightly modified version of stb_rect_pack.h 1.00.
// Those changes would need to be pushed into nothings/stb:
// - Added STBRP__CDECL
// Grep for [DEAR IMGUI] to find the changes.
// stb_rect_pack.h - v1.00 - public domain - rectangle packing
// Sean Barrett 2014
//
// Useful for e.g. packing rectangular textures into an atlas.
// Does not do rotation.
//
// Not necessarily the awesomest packing method, but better than
// the totally naive one in stb_truetype (which is primarily what
// this is meant to replace).
//
// Has only had a few tests run, may have issues.
//
// More docs to come.
//
// No memory allocations; uses qsort() and assert() from stdlib.
// Can override those by defining STBRP_SORT and STBRP_ASSERT.
//
// This library currently uses the Skyline Bottom-Left algorithm.
//
// Please note: better rectangle packers are welcome! Please
// implement them to the same API, but with a different init
// function.
//
// Credits
//
// Library
// Sean Barrett
// Minor features
// Martins Mozeiko
// github:IntellectualKitty
//
// Bugfixes / warning fixes
// Jeremy Jaussaud
// Fabian Giesen
//
// Version history:
//
// 1.00 (2019-02-25) avoid small space waste; gracefully fail too-wide rectangles
// 0.99 (2019-02-07) warning fixes
// 0.11 (2017-03-03) return packing success/fail result
// 0.10 (2016-10-25) remove cast-away-const to avoid warnings
// 0.09 (2016-08-27) fix compiler warnings
// 0.08 (2015-09-13) really fix bug with empty rects (w=0 or h=0)
// 0.07 (2015-09-13) fix bug with empty rects (w=0 or h=0)
// 0.06 (2015-04-15) added STBRP_SORT to allow replacing qsort
// 0.05: added STBRP_ASSERT to allow replacing assert
// 0.04: fixed minor bug in STBRP_LARGE_RECTS support
// 0.01: initial release
//
// LICENSE
//
// See end of file for license information.
//////////////////////////////////////////////////////////////////////////////
//
// INCLUDE SECTION
//
#ifndef STB_INCLUDE_STB_RECT_PACK_H
#define STB_INCLUDE_STB_RECT_PACK_H
#define STB_RECT_PACK_VERSION 1
#ifdef STBRP_STATIC
#define STBRP_DEF static
#else
#define STBRP_DEF extern
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef struct stbrp_context stbrp_context;
typedef struct stbrp_node stbrp_node;
typedef struct stbrp_rect stbrp_rect;
#ifdef STBRP_LARGE_RECTS
typedef int stbrp_coord;
#else
typedef unsigned short stbrp_coord;
#endif
STBRP_DEF int stbrp_pack_rects (stbrp_context *context, stbrp_rect *rects, int num_rects);
// Assign packed locations to rectangles. The rectangles are of type
// 'stbrp_rect' defined below, stored in the array 'rects', and there
// are 'num_rects' many of them.
//
// Rectangles which are successfully packed have the 'was_packed' flag
// set to a non-zero value and 'x' and 'y' store the minimum location
// on each axis (i.e. bottom-left in cartesian coordinates, top-left
// if you imagine y increasing downwards). Rectangles which do not fit
// have the 'was_packed' flag set to 0.
//
// You should not try to access the 'rects' array from another thread
// while this function is running, as the function temporarily reorders
// the array while it executes.
//
// To pack into another rectangle, you need to call stbrp_init_target
// again. To continue packing into the same rectangle, you can call
// this function again. Calling this multiple times with multiple rect
// arrays will probably produce worse packing results than calling it
// a single time with the full rectangle array, but the option is
// available.
//
// The function returns 1 if all of the rectangles were successfully
// packed and 0 otherwise.
struct stbrp_rect
{
// reserved for your use:
int id;
// input:
stbrp_coord w, h;
// output:
stbrp_coord x, y;
int was_packed; // non-zero if valid packing
}; // 16 bytes, nominally
STBRP_DEF void stbrp_init_target (stbrp_context *context, int width, int height, stbrp_node *nodes, int num_nodes);
// Initialize a rectangle packer to:
// pack a rectangle that is 'width' by 'height' in dimensions
// using temporary storage provided by the array 'nodes', which is 'num_nodes' long
//
// You must call this function every time you start packing into a new target.
//
// There is no "shutdown" function. The 'nodes' memory must stay valid for
// the following stbrp_pack_rects() call (or calls), but can be freed after
// the call (or calls) finish.
//
// Note: to guarantee best results, either:
// 1. make sure 'num_nodes' >= 'width'
// or 2. call stbrp_allow_out_of_mem() defined below with 'allow_out_of_mem = 1'
//
// If you don't do either of the above things, widths will be quantized to multiples
// of small integers to guarantee the algorithm doesn't run out of temporary storage.
//
// If you do #2, then the non-quantized algorithm will be used, but the algorithm
// may run out of temporary storage and be unable to pack some rectangles.
STBRP_DEF void stbrp_setup_allow_out_of_mem (stbrp_context *context, int allow_out_of_mem);
// Optionally call this function after init but before doing any packing to
// change the handling of the out-of-temp-memory scenario, described above.
// If you call init again, this will be reset to the default (false).
STBRP_DEF void stbrp_setup_heuristic (stbrp_context *context, int heuristic);
// Optionally select which packing heuristic the library should use. Different
// heuristics will produce better/worse results for different data sets.
// If you call init again, this will be reset to the default.
enum
{
STBRP_HEURISTIC_Skyline_default=0,
STBRP_HEURISTIC_Skyline_BL_sortHeight = STBRP_HEURISTIC_Skyline_default,
STBRP_HEURISTIC_Skyline_BF_sortHeight
};
//////////////////////////////////////////////////////////////////////////////
//
// the details of the following structures don't matter to you, but they must
// be visible so you can handle the memory allocations for them
struct stbrp_node
{
stbrp_coord x,y;
stbrp_node *next;
};
struct stbrp_context
{
int width;
int height;
int align;
int init_mode;
int heuristic;
int num_nodes;
stbrp_node *active_head;
stbrp_node *free_head;
stbrp_node extra[2]; // we allocate two extra nodes so optimal user-node-count is 'width' not 'width+2'
};
#ifdef __cplusplus
}
#endif
#endif
//////////////////////////////////////////////////////////////////////////////
//
// IMPLEMENTATION SECTION
//
#ifdef STB_RECT_PACK_IMPLEMENTATION
#ifndef STBRP_SORT
#include <stdlib.h>
#define STBRP_SORT qsort
#endif
#ifndef STBRP_ASSERT
#include <assert.h>
#define STBRP_ASSERT assert
#endif
// [DEAR IMGUI] Added STBRP__CDECL
#ifdef _MSC_VER
#define STBRP__NOTUSED(v) (void)(v)
#define STBRP__CDECL __cdecl
#else
#define STBRP__NOTUSED(v) (void)sizeof(v)
#define STBRP__CDECL
#endif
enum
{
STBRP__INIT_skyline = 1
};
STBRP_DEF void stbrp_setup_heuristic(stbrp_context *context, int heuristic)
{
switch (context->init_mode) {
case STBRP__INIT_skyline:
STBRP_ASSERT(heuristic == STBRP_HEURISTIC_Skyline_BL_sortHeight || heuristic == STBRP_HEURISTIC_Skyline_BF_sortHeight);
context->heuristic = heuristic;
break;
default:
STBRP_ASSERT(0);
}
}
STBRP_DEF void stbrp_setup_allow_out_of_mem(stbrp_context *context, int allow_out_of_mem)
{
if (allow_out_of_mem)
// if it's ok to run out of memory, then don't bother aligning them;
// this gives better packing, but may fail due to OOM (even though
// the rectangles easily fit). @TODO a smarter approach would be to only
// quantize once we've hit OOM, then we could get rid of this parameter.
context->align = 1;
else {
// if it's not ok to run out of memory, then quantize the widths
// so that num_nodes is always enough nodes.
//
// I.e. num_nodes * align >= width
// align >= width / num_nodes
// align = ceil(width/num_nodes)
context->align = (context->width + context->num_nodes-1) / context->num_nodes;
}
}
STBRP_DEF void stbrp_init_target(stbrp_context *context, int width, int height, stbrp_node *nodes, int num_nodes)
{
int i;
#ifndef STBRP_LARGE_RECTS
STBRP_ASSERT(width <= 0xffff && height <= 0xffff);
#endif
for (i=0; i < num_nodes-1; ++i)
nodes[i].next = &nodes[i+1];
nodes[i].next = NULL;
context->init_mode = STBRP__INIT_skyline;
context->heuristic = STBRP_HEURISTIC_Skyline_default;
context->free_head = &nodes[0];
context->active_head = &context->extra[0];
context->width = width;
context->height = height;
context->num_nodes = num_nodes;
stbrp_setup_allow_out_of_mem(context, 0);
// node 0 is the full width, node 1 is the sentinel (lets us not store width explicitly)
context->extra[0].x = 0;
context->extra[0].y = 0;
context->extra[0].next = &context->extra[1];
context->extra[1].x = (stbrp_coord) width;
#ifdef STBRP_LARGE_RECTS
context->extra[1].y = (1<<30);
#else
context->extra[1].y = 65535;
#endif
context->extra[1].next = NULL;
}
// find minimum y position if it starts at x1
static int stbrp__skyline_find_min_y(stbrp_context *c, stbrp_node *first, int x0, int width, int *pwaste)
{
stbrp_node *node = first;
int x1 = x0 + width;
int min_y, visited_width, waste_area;
STBRP__NOTUSED(c);
STBRP_ASSERT(first->x <= x0);
#if 0
// skip in case we're past the node
while (node->next->x <= x0)
++node;
#else
STBRP_ASSERT(node->next->x > x0); // we ended up handling this in the caller for efficiency
#endif
STBRP_ASSERT(node->x <= x0);
min_y = 0;
waste_area = 0;
visited_width = 0;
while (node->x < x1) {
if (node->y > min_y) {
// raise min_y higher.
// we've accounted for all waste up to min_y,
// but we'll now add more waste for everything we've visted
waste_area += visited_width * (node->y - min_y);
min_y = node->y;
// the first time through, visited_width might be reduced
if (node->x < x0)
visited_width += node->next->x - x0;
else
visited_width += node->next->x - node->x;
} else {
// add waste area
int under_width = node->next->x - node->x;
if (under_width + visited_width > width)
under_width = width - visited_width;
waste_area += under_width * (min_y - node->y);
visited_width += under_width;
}
node = node->next;
}
*pwaste = waste_area;
return min_y;
}
typedef struct
{
int x,y;
stbrp_node **prev_link;
} stbrp__findresult;
static stbrp__findresult stbrp__skyline_find_best_pos(stbrp_context *c, int width, int height)
{
int best_waste = (1<<30), best_x, best_y = (1 << 30);
stbrp__findresult fr;
stbrp_node **prev, *node, *tail, **best = NULL;
// align to multiple of c->align
width = (width + c->align - 1);
width -= width % c->align;
STBRP_ASSERT(width % c->align == 0);
// if it can't possibly fit, bail immediately
if (width > c->width || height > c->height) {
fr.prev_link = NULL;
fr.x = fr.y = 0;
return fr;
}
node = c->active_head;
prev = &c->active_head;
while (node->x + width <= c->width) {
int y,waste;
y = stbrp__skyline_find_min_y(c, node, node->x, width, &waste);
if (c->heuristic == STBRP_HEURISTIC_Skyline_BL_sortHeight) { // actually just want to test BL
// bottom left
if (y < best_y) {
best_y = y;
best = prev;
}
} else {
// best-fit
if (y + height <= c->height) {
// can only use it if it first vertically
if (y < best_y || (y == best_y && waste < best_waste)) {
best_y = y;
best_waste = waste;
best = prev;
}
}
}
prev = &node->next;
node = node->next;
}
best_x = (best == NULL) ? 0 : (*best)->x;
// if doing best-fit (BF), we also have to try aligning right edge to each node position
//
// e.g, if fitting
//
// ____________________
// |____________________|
//
// into
//
// | |
// | ____________|
// |____________|
//
// then right-aligned reduces waste, but bottom-left BL is always chooses left-aligned
//
// This makes BF take about 2x the time
if (c->heuristic == STBRP_HEURISTIC_Skyline_BF_sortHeight) {
tail = c->active_head;
node = c->active_head;
prev = &c->active_head;
// find first node that's admissible
while (tail->x < width)
tail = tail->next;
while (tail) {
int xpos = tail->x - width;
int y,waste;
STBRP_ASSERT(xpos >= 0);
// find the left position that matches this
while (node->next->x <= xpos) {
prev = &node->next;
node = node->next;
}
STBRP_ASSERT(node->next->x > xpos && node->x <= xpos);
y = stbrp__skyline_find_min_y(c, node, xpos, width, &waste);
if (y + height <= c->height) {
if (y <= best_y) {
if (y < best_y || waste < best_waste || (waste==best_waste && xpos < best_x)) {
best_x = xpos;
STBRP_ASSERT(y <= best_y);
best_y = y;
best_waste = waste;
best = prev;
}
}
}
tail = tail->next;
}
}
fr.prev_link = best;
fr.x = best_x;
fr.y = best_y;
return fr;
}
static stbrp__findresult stbrp__skyline_pack_rectangle(stbrp_context *context, int width, int height)
{
// find best position according to heuristic
stbrp__findresult res = stbrp__skyline_find_best_pos(context, width, height);
stbrp_node *node, *cur;
// bail if:
// 1. it failed
// 2. the best node doesn't fit (we don't always check this)
// 3. we're out of memory
if (res.prev_link == NULL || res.y + height > context->height || context->free_head == NULL) {
res.prev_link = NULL;
return res;
}
// on success, create new node
node = context->free_head;
node->x = (stbrp_coord) res.x;
node->y = (stbrp_coord) (res.y + height);
context->free_head = node->next;
// insert the new node into the right starting point, and
// let 'cur' point to the remaining nodes needing to be
// stiched back in
cur = *res.prev_link;
if (cur->x < res.x) {
// preserve the existing one, so start testing with the next one
stbrp_node *next = cur->next;
cur->next = node;
cur = next;
} else {
*res.prev_link = node;
}
// from here, traverse cur and free the nodes, until we get to one
// that shouldn't be freed
while (cur->next && cur->next->x <= res.x + width) {
stbrp_node *next = cur->next;
// move the current node to the free list
cur->next = context->free_head;
context->free_head = cur;
cur = next;
}
// stitch the list back in
node->next = cur;
if (cur->x < res.x + width)
cur->x = (stbrp_coord) (res.x + width);
#ifdef _DEBUG
cur = context->active_head;
while (cur->x < context->width) {
STBRP_ASSERT(cur->x < cur->next->x);
cur = cur->next;
}
STBRP_ASSERT(cur->next == NULL);
{
int count=0;
cur = context->active_head;
while (cur) {
cur = cur->next;
++count;
}
cur = context->free_head;
while (cur) {
cur = cur->next;
++count;
}
STBRP_ASSERT(count == context->num_nodes+2);
}
#endif
return res;
}
// [DEAR IMGUI] Added STBRP__CDECL
static int STBRP__CDECL rect_height_compare(const void *a, const void *b)
{
const stbrp_rect *p = (const stbrp_rect *) a;
const stbrp_rect *q = (const stbrp_rect *) b;
if (p->h > q->h)
return -1;
if (p->h < q->h)
return 1;
return (p->w > q->w) ? -1 : (p->w < q->w);
}
// [DEAR IMGUI] Added STBRP__CDECL
static int STBRP__CDECL rect_original_order(const void *a, const void *b)
{
const stbrp_rect *p = (const stbrp_rect *) a;
const stbrp_rect *q = (const stbrp_rect *) b;
return (p->was_packed < q->was_packed) ? -1 : (p->was_packed > q->was_packed);
}
#ifdef STBRP_LARGE_RECTS
#define STBRP__MAXVAL 0xffffffff
#else
#define STBRP__MAXVAL 0xffff
#endif
STBRP_DEF int stbrp_pack_rects(stbrp_context *context, stbrp_rect *rects, int num_rects)
{
int i, all_rects_packed = 1;
// we use the 'was_packed' field internally to allow sorting/unsorting
for (i=0; i < num_rects; ++i) {
rects[i].was_packed = i;
}
// sort according to heuristic
STBRP_SORT(rects, num_rects, sizeof(rects[0]), rect_height_compare);
for (i=0; i < num_rects; ++i) {
if (rects[i].w == 0 || rects[i].h == 0) {
rects[i].x = rects[i].y = 0; // empty rect needs no space
} else {
stbrp__findresult fr = stbrp__skyline_pack_rectangle(context, rects[i].w, rects[i].h);
if (fr.prev_link) {
rects[i].x = (stbrp_coord) fr.x;
rects[i].y = (stbrp_coord) fr.y;
} else {
rects[i].x = rects[i].y = STBRP__MAXVAL;
}
}
}
// unsort
STBRP_SORT(rects, num_rects, sizeof(rects[0]), rect_original_order);
// set was_packed flags and all_rects_packed status
for (i=0; i < num_rects; ++i) {
rects[i].was_packed = !(rects[i].x == STBRP__MAXVAL && rects[i].y == STBRP__MAXVAL);
if (!rects[i].was_packed)
all_rects_packed = 0;
}
// return the all_rects_packed status
return all_rects_packed;
}
#endif
/*
------------------------------------------------------------------------------
This software is available under 2 licenses -- choose whichever you prefer.
------------------------------------------------------------------------------
ALTERNATIVE A - MIT License
Copyright (c) 2017 Sean Barrett
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
------------------------------------------------------------------------------
ALTERNATIVE B - Public Domain (www.unlicense.org)
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
software, either in source code form or as a compiled binary, for any purpose,
commercial or non-commercial, and by any means.
In jurisdictions that recognize copyright laws, the author or authors of this
software dedicate any and all copyright interest in the software to the public
domain. We make this dedication for the benefit of the public at large and to
the detriment of our heirs and successors. We intend this dedication to be an
overt act of relinquishment in perpetuity of all present and future rights to
this software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------------------------------------------------------------------------------
*/

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,37 @@
# imgui_freetype
Build font atlases using FreeType instead of stb_truetype (which is the default font rasterizer).
<br>by @vuhdo, @mikesart, @ocornut.
### Usage
1. Get latest FreeType binaries or build yourself (under Windows you may use vcpkg with `vcpkg install freetype --triplet=x64-windows`, `vcpkg integrate install`).
2. Add imgui_freetype.h/cpp alongside your project files.
3. Add `#define IMGUI_ENABLE_FREETYPE` in your [imconfig.h](https://github.com/ocornut/imgui/blob/master/imconfig.h) file
### About Gamma Correct Blending
FreeType assumes blending in linear space rather than gamma space.
See FreeType note for [FT_Render_Glyph](https://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#FT_Render_Glyph).
For correct results you need to be using sRGB and convert to linear space in the pixel shader output.
The default Dear ImGui styles will be impacted by this change (alpha values will need tweaking).
### Testbed for toying with settings (for developers)
See https://gist.github.com/ocornut/b3a9ecf13502fd818799a452969649ad
### Known issues
- Oversampling settins are ignored but also not so much necessary with the higher quality rendering.
### Comparaison
Small, thin anti-aliased fonts are typically benefiting a lots from Freetype's hinting:
![comparing_font_rasterizers](https://user-images.githubusercontent.com/8225057/107550178-fef87f00-6bd0-11eb-8d09-e2edb2f0ccfc.gif)
### Colorful glyphs/emojis
You can use the `ImGuiFreeTypeBuilderFlags_LoadColor` flag to load certain colorful glyphs. See
["Using Colorful Glyphs/Emojis"](https://github.com/ocornut/imgui/edit/master/docs/FONTS.md#using-colorful-glyphsemojis) section of FONTS.md.
![colored glyphs](https://user-images.githubusercontent.com/8225057/106171241-9dc4ba80-6191-11eb-8a69-ca1467b206d1.png)

View File

@ -0,0 +1,771 @@
// dear imgui: FreeType font builder (used as a replacement for the stb_truetype builder)
// (code)
// Get the latest version at https://github.com/ocornut/imgui/tree/master/misc/freetype
// Original code by @vuhdo (Aleksei Skriabin). Improvements by @mikesart. Maintained since 2019 by @ocornut.
// CHANGELOG
// (minor and older changes stripped away, please see git history for details)
// 2021/03/05: added ImGuiFreeTypeBuilderFlags_Bitmap to load bitmap glyphs.
// 2021/03/02: set 'atlas->TexPixelsUseColors = true' to help some backends with deciding of a prefered texture format.
// 2021/01/28: added support for color-layered glyphs via ImGuiFreeTypeBuilderFlags_LoadColor (require Freetype 2.10+).
// 2021/01/26: simplified integration by using '#define IMGUI_ENABLE_FREETYPE'.
// renamed ImGuiFreeType::XXX flags to ImGuiFreeTypeBuilderFlags_XXX for consistency with other API. removed ImGuiFreeType::BuildFontAtlas().
// 2020/06/04: fix for rare case where FT_Get_Char_Index() succeed but FT_Load_Glyph() fails.
// 2019/02/09: added RasterizerFlags::Monochrome flag to disable font anti-aliasing (combine with ::MonoHinting for best results!)
// 2019/01/15: added support for imgui allocators + added FreeType only override function SetAllocatorFunctions().
// 2019/01/10: re-factored to match big update in STB builder. fixed texture height waste. fixed redundant glyphs when merging. support for glyph padding.
// 2018/06/08: added support for ImFontConfig::GlyphMinAdvanceX, GlyphMaxAdvanceX.
// 2018/02/04: moved to main imgui repository (away from http://www.github.com/ocornut/imgui_club)
// 2018/01/22: fix for addition of ImFontAtlas::TexUvscale member.
// 2017/10/22: minor inconsequential change to match change in master (removed an unnecessary statement).
// 2017/09/26: fixes for imgui internal changes.
// 2017/08/26: cleanup, optimizations, support for ImFontConfig::RasterizerFlags, ImFontConfig::RasterizerMultiply.
// 2017/08/16: imported from https://github.com/Vuhdo/imgui_freetype into http://www.github.com/ocornut/imgui_club, updated for latest changes in ImFontAtlas, minor tweaks.
// About Gamma Correct Blending:
// - FreeType assumes blending in linear space rather than gamma space.
// - See https://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#FT_Render_Glyph
// - For correct results you need to be using sRGB and convert to linear space in the pixel shader output.
// - The default dear imgui styles will be impacted by this change (alpha values will need tweaking).
// FIXME: cfg.OversampleH, OversampleV are not supported (but perhaps not so necessary with this rasterizer).
#include "imgui_freetype.h"
#include "imgui_internal.h" // ImMin,ImMax,ImFontAtlasBuild*,
#include <stdint.h>
#include <ft2build.h>
#include FT_FREETYPE_H // <freetype/freetype.h>
#include FT_MODULE_H // <freetype/ftmodapi.h>
#include FT_GLYPH_H // <freetype/ftglyph.h>
#include FT_SYNTHESIS_H // <freetype/ftsynth.h>
#ifdef _MSC_VER
#pragma warning (disable: 4505) // unreferenced local function has been removed (stb stuff)
#pragma warning (disable: 26812) // [Static Analyzer] The enum type 'xxx' is unscoped. Prefer 'enum class' over 'enum' (Enum.3).
#endif
#if defined(__GNUC__)
#pragma GCC diagnostic ignored "-Wpragmas" // warning: unknown option after '#pragma GCC diagnostic' kind
#pragma GCC diagnostic ignored "-Wunused-function" // warning: 'xxxx' defined but not used
#endif
//-------------------------------------------------------------------------
// Data
//-------------------------------------------------------------------------
// Default memory allocators
static void* ImGuiFreeTypeDefaultAllocFunc(size_t size, void* user_data) { IM_UNUSED(user_data); return IM_ALLOC(size); }
static void ImGuiFreeTypeDefaultFreeFunc(void* ptr, void* user_data) { IM_UNUSED(user_data); IM_FREE(ptr); }
// Current memory allocators
static void* (*GImGuiFreeTypeAllocFunc)(size_t size, void* user_data) = ImGuiFreeTypeDefaultAllocFunc;
static void (*GImGuiFreeTypeFreeFunc)(void* ptr, void* user_data) = ImGuiFreeTypeDefaultFreeFunc;
static void* GImGuiFreeTypeAllocatorUserData = NULL;
//-------------------------------------------------------------------------
// Code
//-------------------------------------------------------------------------
namespace
{
// Glyph metrics:
// --------------
//
// xmin xmax
// | |
// |<-------- width -------->|
// | |
// | +-------------------------+----------------- ymax
// | | ggggggggg ggggg | ^ ^
// | | g:::::::::ggg::::g | | |
// | | g:::::::::::::::::g | | |
// | | g::::::ggggg::::::gg | | |
// | | g:::::g g:::::g | | |
// offsetX -|-------->| g:::::g g:::::g | offsetY |
// | | g:::::g g:::::g | | |
// | | g::::::g g:::::g | | |
// | | g:::::::ggggg:::::g | | |
// | | g::::::::::::::::g | | height
// | | gg::::::::::::::g | | |
// baseline ---*---------|---- gggggggg::::::g-----*-------- |
// / | | g:::::g | |
// origin | | gggggg g:::::g | |
// | | g:::::gg gg:::::g | |
// | | g::::::ggg:::::::g | |
// | | gg:::::::::::::g | |
// | | ggg::::::ggg | |
// | | gggggg | v
// | +-------------------------+----------------- ymin
// | |
// |------------- advanceX ----------->|
// A structure that describe a glyph.
struct GlyphInfo
{
int Width; // Glyph's width in pixels.
int Height; // Glyph's height in pixels.
FT_Int OffsetX; // The distance from the origin ("pen position") to the left of the glyph.
FT_Int OffsetY; // The distance from the origin to the top of the glyph. This is usually a value < 0.
float AdvanceX; // The distance from the origin to the origin of the next glyph. This is usually a value > 0.
bool IsColored; // The glyph is colored
};
// Font parameters and metrics.
struct FontInfo
{
uint32_t PixelHeight; // Size this font was generated with.
float Ascender; // The pixel extents above the baseline in pixels (typically positive).
float Descender; // The extents below the baseline in pixels (typically negative).
float LineSpacing; // The baseline-to-baseline distance. Note that it usually is larger than the sum of the ascender and descender taken as absolute values. There is also no guarantee that no glyphs extend above or below subsequent baselines when using this distance. Think of it as a value the designer of the font finds appropriate.
float LineGap; // The spacing in pixels between one row's descent and the next row's ascent.
float MaxAdvanceWidth; // This field gives the maximum horizontal cursor advance for all glyphs in the font.
};
// FreeType glyph rasterizer.
// NB: No ctor/dtor, explicitly call Init()/Shutdown()
struct FreeTypeFont
{
bool InitFont(FT_Library ft_library, const ImFontConfig& cfg, unsigned int extra_user_flags); // Initialize from an external data buffer. Doesn't copy data, and you must ensure it stays valid up to this object lifetime.
void CloseFont();
void SetPixelHeight(int pixel_height); // Change font pixel size. All following calls to RasterizeGlyph() will use this size
const FT_Glyph_Metrics* LoadGlyph(uint32_t in_codepoint);
const FT_Bitmap* RenderGlyphAndGetInfo(GlyphInfo* out_glyph_info);
void BlitGlyph(const FT_Bitmap* ft_bitmap, uint32_t* dst, uint32_t dst_pitch, unsigned char* multiply_table = NULL);
~FreeTypeFont() { CloseFont(); }
// [Internals]
FontInfo Info; // Font descriptor of the current font.
FT_Face Face;
unsigned int UserFlags; // = ImFontConfig::RasterizerFlags
FT_Int32 LoadFlags;
FT_Render_Mode RenderMode;
};
// From SDL_ttf: Handy routines for converting from fixed point
#define FT_CEIL(X) (((X + 63) & -64) / 64)
bool FreeTypeFont::InitFont(FT_Library ft_library, const ImFontConfig& cfg, unsigned int extra_font_builder_flags)
{
FT_Error error = FT_New_Memory_Face(ft_library, (uint8_t*)cfg.FontData, (uint32_t)cfg.FontDataSize, (uint32_t)cfg.FontNo, &Face);
if (error != 0)
return false;
error = FT_Select_Charmap(Face, FT_ENCODING_UNICODE);
if (error != 0)
return false;
// Convert to FreeType flags (NB: Bold and Oblique are processed separately)
UserFlags = cfg.FontBuilderFlags | extra_font_builder_flags;
LoadFlags = 0;
if ((UserFlags & ImGuiFreeTypeBuilderFlags_Bitmap) == 0)
LoadFlags |= FT_LOAD_NO_BITMAP;
if (UserFlags & ImGuiFreeTypeBuilderFlags_NoHinting)
LoadFlags |= FT_LOAD_NO_HINTING;
if (UserFlags & ImGuiFreeTypeBuilderFlags_NoAutoHint)
LoadFlags |= FT_LOAD_NO_AUTOHINT;
if (UserFlags & ImGuiFreeTypeBuilderFlags_ForceAutoHint)
LoadFlags |= FT_LOAD_FORCE_AUTOHINT;
if (UserFlags & ImGuiFreeTypeBuilderFlags_LightHinting)
LoadFlags |= FT_LOAD_TARGET_LIGHT;
else if (UserFlags & ImGuiFreeTypeBuilderFlags_MonoHinting)
LoadFlags |= FT_LOAD_TARGET_MONO;
else
LoadFlags |= FT_LOAD_TARGET_NORMAL;
if (UserFlags & ImGuiFreeTypeBuilderFlags_Monochrome)
RenderMode = FT_RENDER_MODE_MONO;
else
RenderMode = FT_RENDER_MODE_NORMAL;
if (UserFlags & ImGuiFreeTypeBuilderFlags_LoadColor)
LoadFlags |= FT_LOAD_COLOR;
memset(&Info, 0, sizeof(Info));
SetPixelHeight((uint32_t)cfg.SizePixels);
return true;
}
void FreeTypeFont::CloseFont()
{
if (Face)
{
FT_Done_Face(Face);
Face = NULL;
}
}
void FreeTypeFont::SetPixelHeight(int pixel_height)
{
// Vuhdo: I'm not sure how to deal with font sizes properly. As far as I understand, currently ImGui assumes that the 'pixel_height'
// is a maximum height of an any given glyph, i.e. it's the sum of font's ascender and descender. Seems strange to me.
// NB: FT_Set_Pixel_Sizes() doesn't seem to get us the same result.
FT_Size_RequestRec req;
req.type = (UserFlags & ImGuiFreeTypeBuilderFlags_Bitmap) ? FT_SIZE_REQUEST_TYPE_NOMINAL : FT_SIZE_REQUEST_TYPE_REAL_DIM;
req.width = 0;
req.height = (uint32_t)pixel_height * 64;
req.horiResolution = 0;
req.vertResolution = 0;
FT_Request_Size(Face, &req);
// Update font info
FT_Size_Metrics metrics = Face->size->metrics;
Info.PixelHeight = (uint32_t)pixel_height;
Info.Ascender = (float)FT_CEIL(metrics.ascender);
Info.Descender = (float)FT_CEIL(metrics.descender);
Info.LineSpacing = (float)FT_CEIL(metrics.height);
Info.LineGap = (float)FT_CEIL(metrics.height - metrics.ascender + metrics.descender);
Info.MaxAdvanceWidth = (float)FT_CEIL(metrics.max_advance);
}
const FT_Glyph_Metrics* FreeTypeFont::LoadGlyph(uint32_t codepoint)
{
uint32_t glyph_index = FT_Get_Char_Index(Face, codepoint);
if (glyph_index == 0)
return NULL;
FT_Error error = FT_Load_Glyph(Face, glyph_index, LoadFlags);
if (error)
return NULL;
// Need an outline for this to work
FT_GlyphSlot slot = Face->glyph;
IM_ASSERT(slot->format == FT_GLYPH_FORMAT_OUTLINE || slot->format == FT_GLYPH_FORMAT_BITMAP);
// Apply convenience transform (this is not picking from real "Bold"/"Italic" fonts! Merely applying FreeType helper transform. Oblique == Slanting)
if (UserFlags & ImGuiFreeTypeBuilderFlags_Bold)
FT_GlyphSlot_Embolden(slot);
if (UserFlags & ImGuiFreeTypeBuilderFlags_Oblique)
{
FT_GlyphSlot_Oblique(slot);
//FT_BBox bbox;
//FT_Outline_Get_BBox(&slot->outline, &bbox);
//slot->metrics.width = bbox.xMax - bbox.xMin;
//slot->metrics.height = bbox.yMax - bbox.yMin;
}
return &slot->metrics;
}
const FT_Bitmap* FreeTypeFont::RenderGlyphAndGetInfo(GlyphInfo* out_glyph_info)
{
FT_GlyphSlot slot = Face->glyph;
FT_Error error = FT_Render_Glyph(slot, RenderMode);
if (error != 0)
return NULL;
FT_Bitmap* ft_bitmap = &Face->glyph->bitmap;
out_glyph_info->Width = (int)ft_bitmap->width;
out_glyph_info->Height = (int)ft_bitmap->rows;
out_glyph_info->OffsetX = Face->glyph->bitmap_left;
out_glyph_info->OffsetY = -Face->glyph->bitmap_top;
out_glyph_info->AdvanceX = (float)FT_CEIL(slot->advance.x);
out_glyph_info->IsColored = (ft_bitmap->pixel_mode == FT_PIXEL_MODE_BGRA);
return ft_bitmap;
}
void FreeTypeFont::BlitGlyph(const FT_Bitmap* ft_bitmap, uint32_t* dst, uint32_t dst_pitch, unsigned char* multiply_table)
{
IM_ASSERT(ft_bitmap != NULL);
const uint32_t w = ft_bitmap->width;
const uint32_t h = ft_bitmap->rows;
const uint8_t* src = ft_bitmap->buffer;
const uint32_t src_pitch = ft_bitmap->pitch;
switch (ft_bitmap->pixel_mode)
{
case FT_PIXEL_MODE_GRAY: // Grayscale image, 1 byte per pixel.
{
if (multiply_table == NULL)
{
for (uint32_t y = 0; y < h; y++, src += src_pitch, dst += dst_pitch)
for (uint32_t x = 0; x < w; x++)
dst[x] = IM_COL32(255, 255, 255, src[x]);
}
else
{
for (uint32_t y = 0; y < h; y++, src += src_pitch, dst += dst_pitch)
for (uint32_t x = 0; x < w; x++)
dst[x] = IM_COL32(255, 255, 255, multiply_table[src[x]]);
}
break;
}
case FT_PIXEL_MODE_MONO: // Monochrome image, 1 bit per pixel. The bits in each byte are ordered from MSB to LSB.
{
uint8_t color0 = multiply_table ? multiply_table[0] : 0;
uint8_t color1 = multiply_table ? multiply_table[255] : 255;
for (uint32_t y = 0; y < h; y++, src += src_pitch, dst += dst_pitch)
{
uint8_t bits = 0;
const uint8_t* bits_ptr = src;
for (uint32_t x = 0; x < w; x++, bits <<= 1)
{
if ((x & 7) == 0)
bits = *bits_ptr++;
dst[x] = IM_COL32(255, 255, 255, (bits & 0x80) ? color1 : color0);
}
}
break;
}
case FT_PIXEL_MODE_BGRA:
{
// FIXME: Converting pre-multiplied alpha to straight. Doesn't smell good.
#define DE_MULTIPLY(color, alpha) (ImU32)(255.0f * (float)color / (float)alpha + 0.5f)
if (multiply_table == NULL)
{
for (uint32_t y = 0; y < h; y++, src += src_pitch, dst += dst_pitch)
for (uint32_t x = 0; x < w; x++)
{
uint8_t r = src[x * 4 + 2], g = src[x * 4 + 1], b = src[x * 4], a = src[x * 4 + 3];
dst[x] = IM_COL32(DE_MULTIPLY(r, a), DE_MULTIPLY(g, a), DE_MULTIPLY(b, a), a);
}
}
else
{
for (uint32_t y = 0; y < h; y++, src += src_pitch, dst += dst_pitch)
{
for (uint32_t x = 0; x < w; x++)
{
uint8_t r = src[x * 4 + 2], g = src[x * 4 + 1], b = src[x * 4], a = src[x * 4 + 3];
dst[x] = IM_COL32(multiply_table[DE_MULTIPLY(r, a)], multiply_table[DE_MULTIPLY(g, a)], multiply_table[DE_MULTIPLY(b, a)], multiply_table[a]);
}
}
}
#undef DE_MULTIPLY
break;
}
default:
IM_ASSERT(0 && "FreeTypeFont::BlitGlyph(): Unknown bitmap pixel mode!");
}
}
}
#ifndef STB_RECT_PACK_IMPLEMENTATION // in case the user already have an implementation in the _same_ compilation unit (e.g. unity builds)
#ifndef IMGUI_DISABLE_STB_RECT_PACK_IMPLEMENTATION
#define STBRP_ASSERT(x) do { IM_ASSERT(x); } while (0)
#define STBRP_STATIC
#define STB_RECT_PACK_IMPLEMENTATION
#endif
#ifdef IMGUI_STB_RECT_PACK_FILENAME
#include IMGUI_STB_RECT_PACK_FILENAME
#else
#include "imstb_rectpack.h"
#endif
#endif
struct ImFontBuildSrcGlyphFT
{
GlyphInfo Info;
uint32_t Codepoint;
unsigned int* BitmapData; // Point within one of the dst_tmp_bitmap_buffers[] array
ImFontBuildSrcGlyphFT() { memset(this, 0, sizeof(*this)); }
};
struct ImFontBuildSrcDataFT
{
FreeTypeFont Font;
stbrp_rect* Rects; // Rectangle to pack. We first fill in their size and the packer will give us their position.
const ImWchar* SrcRanges; // Ranges as requested by user (user is allowed to request too much, e.g. 0x0020..0xFFFF)
int DstIndex; // Index into atlas->Fonts[] and dst_tmp_array[]
int GlyphsHighest; // Highest requested codepoint
int GlyphsCount; // Glyph count (excluding missing glyphs and glyphs already set by an earlier source font)
ImBitVector GlyphsSet; // Glyph bit map (random access, 1-bit per codepoint. This will be a maximum of 8KB)
ImVector<ImFontBuildSrcGlyphFT> GlyphsList;
};
// Temporary data for one destination ImFont* (multiple source fonts can be merged into one destination ImFont)
struct ImFontBuildDstDataFT
{
int SrcCount; // Number of source fonts targeting this destination font.
int GlyphsHighest;
int GlyphsCount;
ImBitVector GlyphsSet; // This is used to resolve collision when multiple sources are merged into a same destination font.
};
bool ImFontAtlasBuildWithFreeTypeEx(FT_Library ft_library, ImFontAtlas* atlas, unsigned int extra_flags)
{
IM_ASSERT(atlas->ConfigData.Size > 0);
ImFontAtlasBuildInit(atlas);
// Clear atlas
atlas->TexID = (ImTextureID)NULL;
atlas->TexWidth = atlas->TexHeight = 0;
atlas->TexUvScale = ImVec2(0.0f, 0.0f);
atlas->TexUvWhitePixel = ImVec2(0.0f, 0.0f);
atlas->ClearTexData();
// Temporary storage for building
bool src_load_color = false;
ImVector<ImFontBuildSrcDataFT> src_tmp_array;
ImVector<ImFontBuildDstDataFT> dst_tmp_array;
src_tmp_array.resize(atlas->ConfigData.Size);
dst_tmp_array.resize(atlas->Fonts.Size);
memset((void*)src_tmp_array.Data, 0, (size_t)src_tmp_array.size_in_bytes());
memset((void*)dst_tmp_array.Data, 0, (size_t)dst_tmp_array.size_in_bytes());
// 1. Initialize font loading structure, check font data validity
for (int src_i = 0; src_i < atlas->ConfigData.Size; src_i++)
{
ImFontBuildSrcDataFT& src_tmp = src_tmp_array[src_i];
ImFontConfig& cfg = atlas->ConfigData[src_i];
FreeTypeFont& font_face = src_tmp.Font;
IM_ASSERT(cfg.DstFont && (!cfg.DstFont->IsLoaded() || cfg.DstFont->ContainerAtlas == atlas));
// Find index from cfg.DstFont (we allow the user to set cfg.DstFont. Also it makes casual debugging nicer than when storing indices)
src_tmp.DstIndex = -1;
for (int output_i = 0; output_i < atlas->Fonts.Size && src_tmp.DstIndex == -1; output_i++)
if (cfg.DstFont == atlas->Fonts[output_i])
src_tmp.DstIndex = output_i;
IM_ASSERT(src_tmp.DstIndex != -1); // cfg.DstFont not pointing within atlas->Fonts[] array?
if (src_tmp.DstIndex == -1)
return false;
// Load font
if (!font_face.InitFont(ft_library, cfg, extra_flags))
return false;
// Measure highest codepoints
src_load_color |= (cfg.FontBuilderFlags & ImGuiFreeTypeBuilderFlags_LoadColor) != 0;
ImFontBuildDstDataFT& dst_tmp = dst_tmp_array[src_tmp.DstIndex];
src_tmp.SrcRanges = cfg.GlyphRanges ? cfg.GlyphRanges : atlas->GetGlyphRangesDefault();
for (const ImWchar* src_range = src_tmp.SrcRanges; src_range[0] && src_range[1]; src_range += 2)
src_tmp.GlyphsHighest = ImMax(src_tmp.GlyphsHighest, (int)src_range[1]);
dst_tmp.SrcCount++;
dst_tmp.GlyphsHighest = ImMax(dst_tmp.GlyphsHighest, src_tmp.GlyphsHighest);
}
// 2. For every requested codepoint, check for their presence in the font data, and handle redundancy or overlaps between source fonts to avoid unused glyphs.
int total_glyphs_count = 0;
for (int src_i = 0; src_i < src_tmp_array.Size; src_i++)
{
ImFontBuildSrcDataFT& src_tmp = src_tmp_array[src_i];
ImFontBuildDstDataFT& dst_tmp = dst_tmp_array[src_tmp.DstIndex];
src_tmp.GlyphsSet.Create(src_tmp.GlyphsHighest + 1);
if (dst_tmp.GlyphsSet.Storage.empty())
dst_tmp.GlyphsSet.Create(dst_tmp.GlyphsHighest + 1);
for (const ImWchar* src_range = src_tmp.SrcRanges; src_range[0] && src_range[1]; src_range += 2)
for (int codepoint = src_range[0]; codepoint <= (int)src_range[1]; codepoint++)
{
if (dst_tmp.GlyphsSet.TestBit(codepoint)) // Don't overwrite existing glyphs. We could make this an option (e.g. MergeOverwrite)
continue;
uint32_t glyph_index = FT_Get_Char_Index(src_tmp.Font.Face, codepoint); // It is actually in the font? (FIXME-OPT: We are not storing the glyph_index..)
if (glyph_index == 0)
continue;
// Add to avail set/counters
src_tmp.GlyphsCount++;
dst_tmp.GlyphsCount++;
src_tmp.GlyphsSet.SetBit(codepoint);
dst_tmp.GlyphsSet.SetBit(codepoint);
total_glyphs_count++;
}
}
// 3. Unpack our bit map into a flat list (we now have all the Unicode points that we know are requested _and_ available _and_ not overlapping another)
for (int src_i = 0; src_i < src_tmp_array.Size; src_i++)
{
ImFontBuildSrcDataFT& src_tmp = src_tmp_array[src_i];
src_tmp.GlyphsList.reserve(src_tmp.GlyphsCount);
IM_ASSERT(sizeof(src_tmp.GlyphsSet.Storage.Data[0]) == sizeof(ImU32));
const ImU32* it_begin = src_tmp.GlyphsSet.Storage.begin();
const ImU32* it_end = src_tmp.GlyphsSet.Storage.end();
for (const ImU32* it = it_begin; it < it_end; it++)
if (ImU32 entries_32 = *it)
for (ImU32 bit_n = 0; bit_n < 32; bit_n++)
if (entries_32 & ((ImU32)1 << bit_n))
{
ImFontBuildSrcGlyphFT src_glyph;
src_glyph.Codepoint = (ImWchar)(((it - it_begin) << 5) + bit_n);
//src_glyph.GlyphIndex = 0; // FIXME-OPT: We had this info in the previous step and lost it..
src_tmp.GlyphsList.push_back(src_glyph);
}
src_tmp.GlyphsSet.Clear();
IM_ASSERT(src_tmp.GlyphsList.Size == src_tmp.GlyphsCount);
}
for (int dst_i = 0; dst_i < dst_tmp_array.Size; dst_i++)
dst_tmp_array[dst_i].GlyphsSet.Clear();
dst_tmp_array.clear();
// Allocate packing character data and flag packed characters buffer as non-packed (x0=y0=x1=y1=0)
// (We technically don't need to zero-clear buf_rects, but let's do it for the sake of sanity)
ImVector<stbrp_rect> buf_rects;
buf_rects.resize(total_glyphs_count);
memset(buf_rects.Data, 0, (size_t)buf_rects.size_in_bytes());
// Allocate temporary rasterization data buffers.
// We could not find a way to retrieve accurate glyph size without rendering them.
// (e.g. slot->metrics->width not always matching bitmap->width, especially considering the Oblique transform)
// We allocate in chunks of 256 KB to not waste too much extra memory ahead. Hopefully users of FreeType won't find the temporary allocations.
const int BITMAP_BUFFERS_CHUNK_SIZE = 256 * 1024;
int buf_bitmap_current_used_bytes = 0;
ImVector<unsigned char*> buf_bitmap_buffers;
buf_bitmap_buffers.push_back((unsigned char*)IM_ALLOC(BITMAP_BUFFERS_CHUNK_SIZE));
// 4. Gather glyphs sizes so we can pack them in our virtual canvas.
// 8. Render/rasterize font characters into the texture
int total_surface = 0;
int buf_rects_out_n = 0;
for (int src_i = 0; src_i < src_tmp_array.Size; src_i++)
{
ImFontBuildSrcDataFT& src_tmp = src_tmp_array[src_i];
ImFontConfig& cfg = atlas->ConfigData[src_i];
if (src_tmp.GlyphsCount == 0)
continue;
src_tmp.Rects = &buf_rects[buf_rects_out_n];
buf_rects_out_n += src_tmp.GlyphsCount;
// Compute multiply table if requested
const bool multiply_enabled = (cfg.RasterizerMultiply != 1.0f);
unsigned char multiply_table[256];
if (multiply_enabled)
ImFontAtlasBuildMultiplyCalcLookupTable(multiply_table, cfg.RasterizerMultiply);
// Gather the sizes of all rectangles we will need to pack
const int padding = atlas->TexGlyphPadding;
for (int glyph_i = 0; glyph_i < src_tmp.GlyphsList.Size; glyph_i++)
{
ImFontBuildSrcGlyphFT& src_glyph = src_tmp.GlyphsList[glyph_i];
const FT_Glyph_Metrics* metrics = src_tmp.Font.LoadGlyph(src_glyph.Codepoint);
if (metrics == NULL)
continue;
// Render glyph into a bitmap (currently held by FreeType)
const FT_Bitmap* ft_bitmap = src_tmp.Font.RenderGlyphAndGetInfo(&src_glyph.Info);
IM_ASSERT(ft_bitmap);
// Allocate new temporary chunk if needed
const int bitmap_size_in_bytes = src_glyph.Info.Width * src_glyph.Info.Height * 4;
if (buf_bitmap_current_used_bytes + bitmap_size_in_bytes > BITMAP_BUFFERS_CHUNK_SIZE)
{
buf_bitmap_current_used_bytes = 0;
buf_bitmap_buffers.push_back((unsigned char*)IM_ALLOC(BITMAP_BUFFERS_CHUNK_SIZE));
}
// Blit rasterized pixels to our temporary buffer and keep a pointer to it.
src_glyph.BitmapData = (unsigned int*)(buf_bitmap_buffers.back() + buf_bitmap_current_used_bytes);
buf_bitmap_current_used_bytes += bitmap_size_in_bytes;
src_tmp.Font.BlitGlyph(ft_bitmap, src_glyph.BitmapData, src_glyph.Info.Width, multiply_enabled ? multiply_table : NULL);
src_tmp.Rects[glyph_i].w = (stbrp_coord)(src_glyph.Info.Width + padding);
src_tmp.Rects[glyph_i].h = (stbrp_coord)(src_glyph.Info.Height + padding);
total_surface += src_tmp.Rects[glyph_i].w * src_tmp.Rects[glyph_i].h;
}
}
// We need a width for the skyline algorithm, any width!
// The exact width doesn't really matter much, but some API/GPU have texture size limitations and increasing width can decrease height.
// User can override TexDesiredWidth and TexGlyphPadding if they wish, otherwise we use a simple heuristic to select the width based on expected surface.
const int surface_sqrt = (int)ImSqrt((float)total_surface) + 1;
atlas->TexHeight = 0;
if (atlas->TexDesiredWidth > 0)
atlas->TexWidth = atlas->TexDesiredWidth;
else
atlas->TexWidth = (surface_sqrt >= 4096 * 0.7f) ? 4096 : (surface_sqrt >= 2048 * 0.7f) ? 2048 : (surface_sqrt >= 1024 * 0.7f) ? 1024 : 512;
// 5. Start packing
// Pack our extra data rectangles first, so it will be on the upper-left corner of our texture (UV will have small values).
const int TEX_HEIGHT_MAX = 1024 * 32;
const int num_nodes_for_packing_algorithm = atlas->TexWidth - atlas->TexGlyphPadding;
ImVector<stbrp_node> pack_nodes;
pack_nodes.resize(num_nodes_for_packing_algorithm);
stbrp_context pack_context;
stbrp_init_target(&pack_context, atlas->TexWidth, TEX_HEIGHT_MAX, pack_nodes.Data, pack_nodes.Size);
ImFontAtlasBuildPackCustomRects(atlas, &pack_context);
// 6. Pack each source font. No rendering yet, we are working with rectangles in an infinitely tall texture at this point.
for (int src_i = 0; src_i < src_tmp_array.Size; src_i++)
{
ImFontBuildSrcDataFT& src_tmp = src_tmp_array[src_i];
if (src_tmp.GlyphsCount == 0)
continue;
stbrp_pack_rects(&pack_context, src_tmp.Rects, src_tmp.GlyphsCount);
// Extend texture height and mark missing glyphs as non-packed so we won't render them.
// FIXME: We are not handling packing failure here (would happen if we got off TEX_HEIGHT_MAX or if a single if larger than TexWidth?)
for (int glyph_i = 0; glyph_i < src_tmp.GlyphsCount; glyph_i++)
if (src_tmp.Rects[glyph_i].was_packed)
atlas->TexHeight = ImMax(atlas->TexHeight, src_tmp.Rects[glyph_i].y + src_tmp.Rects[glyph_i].h);
}
// 7. Allocate texture
atlas->TexHeight = (atlas->Flags & ImFontAtlasFlags_NoPowerOfTwoHeight) ? (atlas->TexHeight + 1) : ImUpperPowerOfTwo(atlas->TexHeight);
atlas->TexUvScale = ImVec2(1.0f / atlas->TexWidth, 1.0f / atlas->TexHeight);
if (src_load_color)
{
size_t tex_size = (size_t)atlas->TexWidth * atlas->TexHeight * 4;
atlas->TexPixelsRGBA32 = (unsigned int*)IM_ALLOC(tex_size);
memset(atlas->TexPixelsRGBA32, 0, tex_size);
}
else
{
size_t tex_size = (size_t)atlas->TexWidth * atlas->TexHeight * 1;
atlas->TexPixelsAlpha8 = (unsigned char*)IM_ALLOC(tex_size);
memset(atlas->TexPixelsAlpha8, 0, tex_size);
}
// 8. Copy rasterized font characters back into the main texture
// 9. Setup ImFont and glyphs for runtime
bool tex_use_colors = false;
for (int src_i = 0; src_i < src_tmp_array.Size; src_i++)
{
ImFontBuildSrcDataFT& src_tmp = src_tmp_array[src_i];
if (src_tmp.GlyphsCount == 0)
continue;
// When merging fonts with MergeMode=true:
// - We can have multiple input fonts writing into a same destination font.
// - dst_font->ConfigData is != from cfg which is our source configuration.
ImFontConfig& cfg = atlas->ConfigData[src_i];
ImFont* dst_font = cfg.DstFont;
const float ascent = src_tmp.Font.Info.Ascender;
const float descent = src_tmp.Font.Info.Descender;
ImFontAtlasBuildSetupFont(atlas, dst_font, &cfg, ascent, descent);
const float font_off_x = cfg.GlyphOffset.x;
const float font_off_y = cfg.GlyphOffset.y + IM_ROUND(dst_font->Ascent);
const int padding = atlas->TexGlyphPadding;
for (int glyph_i = 0; glyph_i < src_tmp.GlyphsCount; glyph_i++)
{
ImFontBuildSrcGlyphFT& src_glyph = src_tmp.GlyphsList[glyph_i];
stbrp_rect& pack_rect = src_tmp.Rects[glyph_i];
IM_ASSERT(pack_rect.was_packed);
if (pack_rect.w == 0 && pack_rect.h == 0)
continue;
GlyphInfo& info = src_glyph.Info;
IM_ASSERT(info.Width + padding <= pack_rect.w);
IM_ASSERT(info.Height + padding <= pack_rect.h);
const int tx = pack_rect.x + padding;
const int ty = pack_rect.y + padding;
// Register glyph
float x0 = info.OffsetX + font_off_x;
float y0 = info.OffsetY + font_off_y;
float x1 = x0 + info.Width;
float y1 = y0 + info.Height;
float u0 = (tx) / (float)atlas->TexWidth;
float v0 = (ty) / (float)atlas->TexHeight;
float u1 = (tx + info.Width) / (float)atlas->TexWidth;
float v1 = (ty + info.Height) / (float)atlas->TexHeight;
dst_font->AddGlyph(&cfg, (ImWchar)src_glyph.Codepoint, x0, y0, x1, y1, u0, v0, u1, v1, info.AdvanceX);
ImFontGlyph* dst_glyph = &dst_font->Glyphs.back();
IM_ASSERT(dst_glyph->Codepoint == src_glyph.Codepoint);
if (src_glyph.Info.IsColored)
dst_glyph->Colored = tex_use_colors = true;
// Blit from temporary buffer to final texture
size_t blit_src_stride = (size_t)src_glyph.Info.Width;
size_t blit_dst_stride = (size_t)atlas->TexWidth;
unsigned int* blit_src = src_glyph.BitmapData;
if (atlas->TexPixelsAlpha8 != NULL)
{
unsigned char* blit_dst = atlas->TexPixelsAlpha8 + (ty * blit_dst_stride) + tx;
for (int y = 0; y < info.Height; y++, blit_dst += blit_dst_stride, blit_src += blit_src_stride)
for (int x = 0; x < info.Width; x++)
blit_dst[x] = (unsigned char)((blit_src[x] >> IM_COL32_A_SHIFT) & 0xFF);
}
else
{
unsigned int* blit_dst = atlas->TexPixelsRGBA32 + (ty * blit_dst_stride) + tx;
for (int y = 0; y < info.Height; y++, blit_dst += blit_dst_stride, blit_src += blit_src_stride)
for (int x = 0; x < info.Width; x++)
blit_dst[x] = blit_src[x];
}
}
src_tmp.Rects = NULL;
}
atlas->TexPixelsUseColors = tex_use_colors;
// Cleanup
for (int buf_i = 0; buf_i < buf_bitmap_buffers.Size; buf_i++)
IM_FREE(buf_bitmap_buffers[buf_i]);
src_tmp_array.clear_destruct();
ImFontAtlasBuildFinish(atlas);
return true;
}
// FreeType memory allocation callbacks
static void* FreeType_Alloc(FT_Memory /*memory*/, long size)
{
return GImGuiFreeTypeAllocFunc((size_t)size, GImGuiFreeTypeAllocatorUserData);
}
static void FreeType_Free(FT_Memory /*memory*/, void* block)
{
GImGuiFreeTypeFreeFunc(block, GImGuiFreeTypeAllocatorUserData);
}
static void* FreeType_Realloc(FT_Memory /*memory*/, long cur_size, long new_size, void* block)
{
// Implement realloc() as we don't ask user to provide it.
if (block == NULL)
return GImGuiFreeTypeAllocFunc((size_t)new_size, GImGuiFreeTypeAllocatorUserData);
if (new_size == 0)
{
GImGuiFreeTypeFreeFunc(block, GImGuiFreeTypeAllocatorUserData);
return NULL;
}
if (new_size > cur_size)
{
void* new_block = GImGuiFreeTypeAllocFunc((size_t)new_size, GImGuiFreeTypeAllocatorUserData);
memcpy(new_block, block, (size_t)cur_size);
GImGuiFreeTypeFreeFunc(block, GImGuiFreeTypeAllocatorUserData);
return new_block;
}
return block;
}
static bool ImFontAtlasBuildWithFreeType(ImFontAtlas* atlas)
{
// FreeType memory management: https://www.freetype.org/freetype2/docs/design/design-4.html
FT_MemoryRec_ memory_rec = {};
memory_rec.user = NULL;
memory_rec.alloc = &FreeType_Alloc;
memory_rec.free = &FreeType_Free;
memory_rec.realloc = &FreeType_Realloc;
// https://www.freetype.org/freetype2/docs/reference/ft2-module_management.html#FT_New_Library
FT_Library ft_library;
FT_Error error = FT_New_Library(&memory_rec, &ft_library);
if (error != 0)
return false;
// If you don't call FT_Add_Default_Modules() the rest of code may work, but FreeType won't use our custom allocator.
FT_Add_Default_Modules(ft_library);
bool ret = ImFontAtlasBuildWithFreeTypeEx(ft_library, atlas, atlas->FontBuilderFlags);
FT_Done_Library(ft_library);
return ret;
}
const ImFontBuilderIO* ImGuiFreeType::GetBuilderForFreeType()
{
static ImFontBuilderIO io;
io.FontBuilder_Build = ImFontAtlasBuildWithFreeType;
return &io;
}
void ImGuiFreeType::SetAllocatorFunctions(void* (*alloc_func)(size_t sz, void* user_data), void (*free_func)(void* ptr, void* user_data), void* user_data)
{
GImGuiFreeTypeAllocFunc = alloc_func;
GImGuiFreeTypeFreeFunc = free_func;
GImGuiFreeTypeAllocatorUserData = user_data;
}

View File

@ -0,0 +1,50 @@
// dear imgui: FreeType font builder (used as a replacement for the stb_truetype builder)
// (headers)
#pragma once
#include "imgui.h" // IMGUI_API
// Forward declarations
struct ImFontAtlas;
struct ImFontBuilderIO;
// Hinting greatly impacts visuals (and glyph sizes).
// - By default, hinting is enabled and the font's native hinter is preferred over the auto-hinter.
// - When disabled, FreeType generates blurrier glyphs, more or less matches the stb_truetype.h
// - The Default hinting mode usually looks good, but may distort glyphs in an unusual way.
// - The Light hinting mode generates fuzzier glyphs but better matches Microsoft's rasterizer.
// You can set those flags globaly in ImFontAtlas::FontBuilderFlags
// You can set those flags on a per font basis in ImFontConfig::FontBuilderFlags
enum ImGuiFreeTypeBuilderFlags
{
ImGuiFreeTypeBuilderFlags_NoHinting = 1 << 0, // Disable hinting. This generally generates 'blurrier' bitmap glyphs when the glyph are rendered in any of the anti-aliased modes.
ImGuiFreeTypeBuilderFlags_NoAutoHint = 1 << 1, // Disable auto-hinter.
ImGuiFreeTypeBuilderFlags_ForceAutoHint = 1 << 2, // Indicates that the auto-hinter is preferred over the font's native hinter.
ImGuiFreeTypeBuilderFlags_LightHinting = 1 << 3, // A lighter hinting algorithm for gray-level modes. Many generated glyphs are fuzzier but better resemble their original shape. This is achieved by snapping glyphs to the pixel grid only vertically (Y-axis), as is done by Microsoft's ClearType and Adobe's proprietary font renderer. This preserves inter-glyph spacing in horizontal text.
ImGuiFreeTypeBuilderFlags_MonoHinting = 1 << 4, // Strong hinting algorithm that should only be used for monochrome output.
ImGuiFreeTypeBuilderFlags_Bold = 1 << 5, // Styling: Should we artificially embolden the font?
ImGuiFreeTypeBuilderFlags_Oblique = 1 << 6, // Styling: Should we slant the font, emulating italic style?
ImGuiFreeTypeBuilderFlags_Monochrome = 1 << 7, // Disable anti-aliasing. Combine this with MonoHinting for best results!
ImGuiFreeTypeBuilderFlags_LoadColor = 1 << 8, // Enable FreeType color-layered glyphs
ImGuiFreeTypeBuilderFlags_Bitmap = 1 << 9 // Enable FreeType bitmap glyphs
};
namespace ImGuiFreeType
{
// This is automatically assigned when using '#define IMGUI_ENABLE_FREETYPE'.
// If you need to dynamically select between multiple builders:
// - you can manually assign this builder with 'atlas->FontBuilderIO = ImGuiFreeType::GetBuilderForFreeType()'
// - prefer deep-copying this into your own ImFontBuilderIO instance if you use hot-reloading that messes up static data.
IMGUI_API const ImFontBuilderIO* GetBuilderForFreeType();
// Override allocators. By default ImGuiFreeType will use IM_ALLOC()/IM_FREE()
// However, as FreeType does lots of allocations we provide a way for the user to redirect it to a separate memory heap if desired.
IMGUI_API void SetAllocatorFunctions(void* (*alloc_func)(size_t sz, void* user_data), void (*free_func)(void* ptr, void* user_data), void* user_data = NULL);
// Obsolete names (will be removed soon)
// Prefer using '#define IMGUI_ENABLE_FREETYPE'
#ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
static inline bool BuildFontAtlas(ImFontAtlas* atlas, unsigned int flags = 0) { atlas->FontBuilderIO = GetBuilderForFreeType(); atlas->FontBuilderFlags = flags; return atlas->Build(); }
#endif
}

View File

@ -0,0 +1 @@
[]

View File

@ -0,0 +1,3 @@
local defs = {}
return defs

View File

@ -0,0 +1,138 @@
----------------overloadings---------------------------
ImColor_ImColor 5
1 nil ImColor_ImColorNil ()
2 nil ImColor_ImColorInt (int,int,int,int)
3 nil ImColor_ImColorU32 (ImU32)
4 nil ImColor_ImColorFloat (float,float,float,float)
5 nil ImColor_ImColorVec4 (const ImVec4)
ImDrawList_AddText 2
1 void ImDrawList_AddTextVec2 (const ImVec2,ImU32,const char*,const char*)
2 void ImDrawList_AddTextFontPtr (const ImFont*,float,const ImVec2,ImU32,const char*,const char*,float,const ImVec4*)
ImGuiStoragePair_ImGuiStoragePair 3
1 nil ImGuiStoragePair_ImGuiStoragePairInt (ImGuiID,int)
2 nil ImGuiStoragePair_ImGuiStoragePairFloat (ImGuiID,float)
3 nil ImGuiStoragePair_ImGuiStoragePairPtr (ImGuiID,void*)
ImGuiTextRange_ImGuiTextRange 2
1 nil ImGuiTextRange_ImGuiTextRangeNil ()
2 nil ImGuiTextRange_ImGuiTextRangeStr (const char*,const char*)
ImVec2_ImVec2 2
1 nil ImVec2_ImVec2Nil ()
2 nil ImVec2_ImVec2Float (float,float)
ImVec4_ImVec4 2
1 nil ImVec4_ImVec4Nil ()
2 nil ImVec4_ImVec4Float (float,float,float,float)
ImVector_ImVector 2
1 nil ImVector_ImVectorNil ()
2 nil ImVector_ImVectorVector (const ImVector)
ImVector_back 2
1 T* ImVector_backNil ()
2 const T* ImVector_back_const ()const
ImVector_begin 2
1 T* ImVector_beginNil ()
2 const T* ImVector_begin_const ()const
ImVector_end 2
1 T* ImVector_endNil ()
2 const T* ImVector_end_const ()const
ImVector_erase 2
1 T* ImVector_eraseNil (const T*)
2 T* ImVector_eraseTPtr (const T*,const T*)
ImVector_find 2
1 T* ImVector_findNil (const T)
2 const T* ImVector_find_const (const T)const
ImVector_front 2
1 T* ImVector_frontNil ()
2 const T* ImVector_front_const ()const
ImVector_resize 2
1 void ImVector_resizeNil (int)
2 void ImVector_resizeT (int,const T)
igBeginChild 2
1 bool igBeginChildStr (const char*,const ImVec2,bool,ImGuiWindowFlags)
2 bool igBeginChildID (ImGuiID,const ImVec2,bool,ImGuiWindowFlags)
igCheckboxFlags 2
1 bool igCheckboxFlagsIntPtr (const char*,int*,int)
2 bool igCheckboxFlagsUintPtr (const char*,unsigned int*,unsigned int)
igCollapsingHeader 2
1 bool igCollapsingHeaderTreeNodeFlags (const char*,ImGuiTreeNodeFlags)
2 bool igCollapsingHeaderBoolPtr (const char*,bool*,ImGuiTreeNodeFlags)
igCombo 3
1 bool igComboStr_arr (const char*,int*,const char* const[],int,int)
2 bool igComboStr (const char*,int*,const char*,int)
3 bool igComboFnBoolPtr (const char*,int*,bool(*)(void*,int,const char**),void*,int,int)
igGetColorU32 3
1 ImU32 igGetColorU32Col (ImGuiCol,float)
2 ImU32 igGetColorU32Vec4 (const ImVec4)
3 ImU32 igGetColorU32U32 (ImU32)
igGetID 3
1 ImGuiID igGetIDStr (const char*)
2 ImGuiID igGetIDStrStr (const char*,const char*)
3 ImGuiID igGetIDPtr (const void*)
igIsRectVisible 2
1 bool igIsRectVisibleNil (const ImVec2)
2 bool igIsRectVisibleVec2 (const ImVec2,const ImVec2)
igListBox 2
1 bool igListBoxStr_arr (const char*,int*,const char* const[],int,int)
2 bool igListBoxFnBoolPtr (const char*,int*,bool(*)(void*,int,const char**),void*,int,int)
igMenuItem 2
1 bool igMenuItemBool (const char*,const char*,bool,bool)
2 bool igMenuItemBoolPtr (const char*,const char*,bool*,bool)
igOpenPopup 2
1 void igOpenPopupStr (const char*,ImGuiPopupFlags)
2 void igOpenPopupID (ImGuiID,ImGuiPopupFlags)
igPlotHistogram 2
1 void igPlotHistogramFloatPtr (const char*,const float*,int,int,const char*,float,float,ImVec2,int)
2 void igPlotHistogramFnFloatPtr (const char*,float(*)(void*,int),void*,int,int,const char*,float,float,ImVec2)
igPlotLines 2
1 void igPlotLinesFloatPtr (const char*,const float*,int,int,const char*,float,float,ImVec2,int)
2 void igPlotLinesFnFloatPtr (const char*,float(*)(void*,int),void*,int,int,const char*,float,float,ImVec2)
igPushID 4
1 void igPushIDStr (const char*)
2 void igPushIDStrStr (const char*,const char*)
3 void igPushIDPtr (const void*)
4 void igPushIDInt (int)
igPushStyleColor 2
1 void igPushStyleColorU32 (ImGuiCol,ImU32)
2 void igPushStyleColorVec4 (ImGuiCol,const ImVec4)
igPushStyleVar 2
1 void igPushStyleVarFloat (ImGuiStyleVar,float)
2 void igPushStyleVarVec2 (ImGuiStyleVar,const ImVec2)
igRadioButton 2
1 bool igRadioButtonBool (const char*,bool)
2 bool igRadioButtonIntPtr (const char*,int*,int)
igSelectable 2
1 bool igSelectableBool (const char*,bool,ImGuiSelectableFlags,const ImVec2)
2 bool igSelectableBoolPtr (const char*,bool*,ImGuiSelectableFlags,const ImVec2)
igSetWindowCollapsed 2
1 void igSetWindowCollapsedBool (bool,ImGuiCond)
2 void igSetWindowCollapsedStr (const char*,bool,ImGuiCond)
igSetWindowFocus 2
1 void igSetWindowFocusNil ()
2 void igSetWindowFocusStr (const char*)
igSetWindowPos 2
1 void igSetWindowPosVec2 (const ImVec2,ImGuiCond)
2 void igSetWindowPosStr (const char*,const ImVec2,ImGuiCond)
igSetWindowSize 2
1 void igSetWindowSizeVec2 (const ImVec2,ImGuiCond)
2 void igSetWindowSizeStr (const char*,const ImVec2,ImGuiCond)
igTreeNode 3
1 bool igTreeNodeStr (const char*)
2 bool igTreeNodeStrStr (const char*,const char*,...)
3 bool igTreeNodePtr (const void*,const char*,...)
igTreeNodeEx 3
1 bool igTreeNodeExStr (const char*,ImGuiTreeNodeFlags)
2 bool igTreeNodeExStrStr (const char*,ImGuiTreeNodeFlags,const char*,...)
3 bool igTreeNodeExPtr (const void*,ImGuiTreeNodeFlags,const char*,...)
igTreeNodeExV 2
1 bool igTreeNodeExVStr (const char*,ImGuiTreeNodeFlags,const char*,va_list)
2 bool igTreeNodeExVPtr (const void*,ImGuiTreeNodeFlags,const char*,va_list)
igTreeNodeV 2
1 bool igTreeNodeVStr (const char*,const char*,va_list)
2 bool igTreeNodeVPtr (const void*,const char*,va_list)
igTreePush 2
1 void igTreePushStr (const char*)
2 void igTreePushPtr (const void*)
igValue 4
1 void igValueBool (const char*,bool)
2 void igValueInt (const char*,int)
3 void igValueUint (const char*,unsigned int)
4 void igValueFloat (const char*,float,const char*)
95 overloaded

View File

@ -0,0 +1,35 @@
#!/bin/bash
set -euo pipefail
# No good cross-platform 'readlink -f', so I apologise
SCRIPT_DIR=$(dirname ${0} | python3 -c 'import os, sys; print(os.path.abspath(sys.stdin.read().strip()))' )
CIMGUI_DIR=${1:?}
echo "${SCRIPT_DIR}"
pushd "${CIMGUI_DIR}"/generator > /dev/null
# Check if ${CIMGUI_DIR}/link exists as a symlink.
# If so, good, and we can tinker with it.
# Otherwise, ask user to remove it for us.
if [ -e ${CIMGUI_DIR}/imgui ] && [ ! -h ${CIMGUI_DIR}/imgui ]; then
echo "Please remove ${CIMGUI_DIR}/imgui so this script can link it to correct imgui version"
exit 1
fi
# Remove old symlink
rm ${CIMGUI_DIR}/imgui || :
# Link to C++ code contained in imgui-rs, not whatever if in cimgui's repo
ln -s ${SCRIPT_DIR}/imgui ${CIMGUI_DIR}/imgui
# Run the generator
luajit generator.lua gcc false -DIMGUI_USE_WCHAR32
# Tidy up
rm ${CIMGUI_DIR}/imgui # Remove symlink (no recursive rm)
popd > /dev/null
cp "${CIMGUI_DIR}"/cimgui.{h,cpp} "${SCRIPT_DIR}"/
cp "${CIMGUI_DIR}"/generator/output/* "${SCRIPT_DIR}"/

View File

@ -1,722 +0,0 @@
{
"ImGui_ImplGlfw_CharCallback": [
{
"args": "(GLFWwindow* window,unsigned int c)",
"argsT": [
{
"name": "window",
"type": "GLFWwindow*"
},
{
"name": "c",
"type": "unsigned int"
}
],
"argsoriginal": "(GLFWwindow* window,unsigned int c)",
"call_args": "(window,c)",
"cimguiname": "ImGui_ImplGlfw_CharCallback",
"defaults": {},
"funcname": "ImGui_ImplGlfw_CharCallback",
"location": "imgui_impl_glfw:40",
"ov_cimguiname": "ImGui_ImplGlfw_CharCallback",
"ret": "void",
"signature": "(GLFWwindow*,unsigned int)",
"stname": ""
}
],
"ImGui_ImplGlfw_CursorEnterCallback": [
{
"args": "(GLFWwindow* window,int entered)",
"argsT": [
{
"name": "window",
"type": "GLFWwindow*"
},
{
"name": "entered",
"type": "int"
}
],
"argsoriginal": "(GLFWwindow* window,int entered)",
"call_args": "(window,entered)",
"cimguiname": "ImGui_ImplGlfw_CursorEnterCallback",
"defaults": {},
"funcname": "ImGui_ImplGlfw_CursorEnterCallback",
"location": "imgui_impl_glfw:36",
"ov_cimguiname": "ImGui_ImplGlfw_CursorEnterCallback",
"ret": "void",
"signature": "(GLFWwindow*,int)",
"stname": ""
}
],
"ImGui_ImplGlfw_InitForOpenGL": [
{
"args": "(GLFWwindow* window,bool install_callbacks)",
"argsT": [
{
"name": "window",
"type": "GLFWwindow*"
},
{
"name": "install_callbacks",
"type": "bool"
}
],
"argsoriginal": "(GLFWwindow* window,bool install_callbacks)",
"call_args": "(window,install_callbacks)",
"cimguiname": "ImGui_ImplGlfw_InitForOpenGL",
"defaults": {},
"funcname": "ImGui_ImplGlfw_InitForOpenGL",
"location": "imgui_impl_glfw:26",
"ov_cimguiname": "ImGui_ImplGlfw_InitForOpenGL",
"ret": "bool",
"signature": "(GLFWwindow*,bool)",
"stname": ""
}
],
"ImGui_ImplGlfw_InitForOther": [
{
"args": "(GLFWwindow* window,bool install_callbacks)",
"argsT": [
{
"name": "window",
"type": "GLFWwindow*"
},
{
"name": "install_callbacks",
"type": "bool"
}
],
"argsoriginal": "(GLFWwindow* window,bool install_callbacks)",
"call_args": "(window,install_callbacks)",
"cimguiname": "ImGui_ImplGlfw_InitForOther",
"defaults": {},
"funcname": "ImGui_ImplGlfw_InitForOther",
"location": "imgui_impl_glfw:28",
"ov_cimguiname": "ImGui_ImplGlfw_InitForOther",
"ret": "bool",
"signature": "(GLFWwindow*,bool)",
"stname": ""
}
],
"ImGui_ImplGlfw_InitForVulkan": [
{
"args": "(GLFWwindow* window,bool install_callbacks)",
"argsT": [
{
"name": "window",
"type": "GLFWwindow*"
},
{
"name": "install_callbacks",
"type": "bool"
}
],
"argsoriginal": "(GLFWwindow* window,bool install_callbacks)",
"call_args": "(window,install_callbacks)",
"cimguiname": "ImGui_ImplGlfw_InitForVulkan",
"defaults": {},
"funcname": "ImGui_ImplGlfw_InitForVulkan",
"location": "imgui_impl_glfw:27",
"ov_cimguiname": "ImGui_ImplGlfw_InitForVulkan",
"ret": "bool",
"signature": "(GLFWwindow*,bool)",
"stname": ""
}
],
"ImGui_ImplGlfw_KeyCallback": [
{
"args": "(GLFWwindow* window,int key,int scancode,int action,int mods)",
"argsT": [
{
"name": "window",
"type": "GLFWwindow*"
},
{
"name": "key",
"type": "int"
},
{
"name": "scancode",
"type": "int"
},
{
"name": "action",
"type": "int"
},
{
"name": "mods",
"type": "int"
}
],
"argsoriginal": "(GLFWwindow* window,int key,int scancode,int action,int mods)",
"call_args": "(window,key,scancode,action,mods)",
"cimguiname": "ImGui_ImplGlfw_KeyCallback",
"defaults": {},
"funcname": "ImGui_ImplGlfw_KeyCallback",
"location": "imgui_impl_glfw:39",
"ov_cimguiname": "ImGui_ImplGlfw_KeyCallback",
"ret": "void",
"signature": "(GLFWwindow*,int,int,int,int)",
"stname": ""
}
],
"ImGui_ImplGlfw_MonitorCallback": [
{
"args": "(GLFWmonitor* monitor,int event)",
"argsT": [
{
"name": "monitor",
"type": "GLFWmonitor*"
},
{
"name": "event",
"type": "int"
}
],
"argsoriginal": "(GLFWmonitor* monitor,int event)",
"call_args": "(monitor,event)",
"cimguiname": "ImGui_ImplGlfw_MonitorCallback",
"defaults": {},
"funcname": "ImGui_ImplGlfw_MonitorCallback",
"location": "imgui_impl_glfw:41",
"ov_cimguiname": "ImGui_ImplGlfw_MonitorCallback",
"ret": "void",
"signature": "(GLFWmonitor*,int)",
"stname": ""
}
],
"ImGui_ImplGlfw_MouseButtonCallback": [
{
"args": "(GLFWwindow* window,int button,int action,int mods)",
"argsT": [
{
"name": "window",
"type": "GLFWwindow*"
},
{
"name": "button",
"type": "int"
},
{
"name": "action",
"type": "int"
},
{
"name": "mods",
"type": "int"
}
],
"argsoriginal": "(GLFWwindow* window,int button,int action,int mods)",
"call_args": "(window,button,action,mods)",
"cimguiname": "ImGui_ImplGlfw_MouseButtonCallback",
"defaults": {},
"funcname": "ImGui_ImplGlfw_MouseButtonCallback",
"location": "imgui_impl_glfw:37",
"ov_cimguiname": "ImGui_ImplGlfw_MouseButtonCallback",
"ret": "void",
"signature": "(GLFWwindow*,int,int,int)",
"stname": ""
}
],
"ImGui_ImplGlfw_NewFrame": [
{
"args": "()",
"argsT": [],
"argsoriginal": "()",
"call_args": "()",
"cimguiname": "ImGui_ImplGlfw_NewFrame",
"defaults": {},
"funcname": "ImGui_ImplGlfw_NewFrame",
"location": "imgui_impl_glfw:30",
"ov_cimguiname": "ImGui_ImplGlfw_NewFrame",
"ret": "void",
"signature": "()",
"stname": ""
}
],
"ImGui_ImplGlfw_ScrollCallback": [
{
"args": "(GLFWwindow* window,double xoffset,double yoffset)",
"argsT": [
{
"name": "window",
"type": "GLFWwindow*"
},
{
"name": "xoffset",
"type": "double"
},
{
"name": "yoffset",
"type": "double"
}
],
"argsoriginal": "(GLFWwindow* window,double xoffset,double yoffset)",
"call_args": "(window,xoffset,yoffset)",
"cimguiname": "ImGui_ImplGlfw_ScrollCallback",
"defaults": {},
"funcname": "ImGui_ImplGlfw_ScrollCallback",
"location": "imgui_impl_glfw:38",
"ov_cimguiname": "ImGui_ImplGlfw_ScrollCallback",
"ret": "void",
"signature": "(GLFWwindow*,double,double)",
"stname": ""
}
],
"ImGui_ImplGlfw_Shutdown": [
{
"args": "()",
"argsT": [],
"argsoriginal": "()",
"call_args": "()",
"cimguiname": "ImGui_ImplGlfw_Shutdown",
"defaults": {},
"funcname": "ImGui_ImplGlfw_Shutdown",
"location": "imgui_impl_glfw:29",
"ov_cimguiname": "ImGui_ImplGlfw_Shutdown",
"ret": "void",
"signature": "()",
"stname": ""
}
],
"ImGui_ImplGlfw_WindowFocusCallback": [
{
"args": "(GLFWwindow* window,int focused)",
"argsT": [
{
"name": "window",
"type": "GLFWwindow*"
},
{
"name": "focused",
"type": "int"
}
],
"argsoriginal": "(GLFWwindow* window,int focused)",
"call_args": "(window,focused)",
"cimguiname": "ImGui_ImplGlfw_WindowFocusCallback",
"defaults": {},
"funcname": "ImGui_ImplGlfw_WindowFocusCallback",
"location": "imgui_impl_glfw:35",
"ov_cimguiname": "ImGui_ImplGlfw_WindowFocusCallback",
"ret": "void",
"signature": "(GLFWwindow*,int)",
"stname": ""
}
],
"ImGui_ImplOpenGL2_CreateDeviceObjects": [
{
"args": "()",
"argsT": [],
"argsoriginal": "()",
"call_args": "()",
"cimguiname": "ImGui_ImplOpenGL2_CreateDeviceObjects",
"defaults": {},
"funcname": "ImGui_ImplOpenGL2_CreateDeviceObjects",
"location": "imgui_impl_opengl2:31",
"ov_cimguiname": "ImGui_ImplOpenGL2_CreateDeviceObjects",
"ret": "bool",
"signature": "()",
"stname": ""
}
],
"ImGui_ImplOpenGL2_CreateFontsTexture": [
{
"args": "()",
"argsT": [],
"argsoriginal": "()",
"call_args": "()",
"cimguiname": "ImGui_ImplOpenGL2_CreateFontsTexture",
"defaults": {},
"funcname": "ImGui_ImplOpenGL2_CreateFontsTexture",
"location": "imgui_impl_opengl2:29",
"ov_cimguiname": "ImGui_ImplOpenGL2_CreateFontsTexture",
"ret": "bool",
"signature": "()",
"stname": ""
}
],
"ImGui_ImplOpenGL2_DestroyDeviceObjects": [
{
"args": "()",
"argsT": [],
"argsoriginal": "()",
"call_args": "()",
"cimguiname": "ImGui_ImplOpenGL2_DestroyDeviceObjects",
"defaults": {},
"funcname": "ImGui_ImplOpenGL2_DestroyDeviceObjects",
"location": "imgui_impl_opengl2:32",
"ov_cimguiname": "ImGui_ImplOpenGL2_DestroyDeviceObjects",
"ret": "void",
"signature": "()",
"stname": ""
}
],
"ImGui_ImplOpenGL2_DestroyFontsTexture": [
{
"args": "()",
"argsT": [],
"argsoriginal": "()",
"call_args": "()",
"cimguiname": "ImGui_ImplOpenGL2_DestroyFontsTexture",
"defaults": {},
"funcname": "ImGui_ImplOpenGL2_DestroyFontsTexture",
"location": "imgui_impl_opengl2:30",
"ov_cimguiname": "ImGui_ImplOpenGL2_DestroyFontsTexture",
"ret": "void",
"signature": "()",
"stname": ""
}
],
"ImGui_ImplOpenGL2_Init": [
{
"args": "()",
"argsT": [],
"argsoriginal": "()",
"call_args": "()",
"cimguiname": "ImGui_ImplOpenGL2_Init",
"defaults": {},
"funcname": "ImGui_ImplOpenGL2_Init",
"location": "imgui_impl_opengl2:23",
"ov_cimguiname": "ImGui_ImplOpenGL2_Init",
"ret": "bool",
"signature": "()",
"stname": ""
}
],
"ImGui_ImplOpenGL2_NewFrame": [
{
"args": "()",
"argsT": [],
"argsoriginal": "()",
"call_args": "()",
"cimguiname": "ImGui_ImplOpenGL2_NewFrame",
"defaults": {},
"funcname": "ImGui_ImplOpenGL2_NewFrame",
"location": "imgui_impl_opengl2:25",
"ov_cimguiname": "ImGui_ImplOpenGL2_NewFrame",
"ret": "void",
"signature": "()",
"stname": ""
}
],
"ImGui_ImplOpenGL2_RenderDrawData": [
{
"args": "(ImDrawData* draw_data)",
"argsT": [
{
"name": "draw_data",
"type": "ImDrawData*"
}
],
"argsoriginal": "(ImDrawData* draw_data)",
"call_args": "(draw_data)",
"cimguiname": "ImGui_ImplOpenGL2_RenderDrawData",
"defaults": {},
"funcname": "ImGui_ImplOpenGL2_RenderDrawData",
"location": "imgui_impl_opengl2:26",
"ov_cimguiname": "ImGui_ImplOpenGL2_RenderDrawData",
"ret": "void",
"signature": "(ImDrawData*)",
"stname": ""
}
],
"ImGui_ImplOpenGL2_Shutdown": [
{
"args": "()",
"argsT": [],
"argsoriginal": "()",
"call_args": "()",
"cimguiname": "ImGui_ImplOpenGL2_Shutdown",
"defaults": {},
"funcname": "ImGui_ImplOpenGL2_Shutdown",
"location": "imgui_impl_opengl2:24",
"ov_cimguiname": "ImGui_ImplOpenGL2_Shutdown",
"ret": "void",
"signature": "()",
"stname": ""
}
],
"ImGui_ImplOpenGL3_CreateDeviceObjects": [
{
"args": "()",
"argsT": [],
"argsoriginal": "()",
"call_args": "()",
"cimguiname": "ImGui_ImplOpenGL3_CreateDeviceObjects",
"defaults": {},
"funcname": "ImGui_ImplOpenGL3_CreateDeviceObjects",
"location": "imgui_impl_opengl3:32",
"ov_cimguiname": "ImGui_ImplOpenGL3_CreateDeviceObjects",
"ret": "bool",
"signature": "()",
"stname": ""
}
],
"ImGui_ImplOpenGL3_CreateFontsTexture": [
{
"args": "()",
"argsT": [],
"argsoriginal": "()",
"call_args": "()",
"cimguiname": "ImGui_ImplOpenGL3_CreateFontsTexture",
"defaults": {},
"funcname": "ImGui_ImplOpenGL3_CreateFontsTexture",
"location": "imgui_impl_opengl3:30",
"ov_cimguiname": "ImGui_ImplOpenGL3_CreateFontsTexture",
"ret": "bool",
"signature": "()",
"stname": ""
}
],
"ImGui_ImplOpenGL3_DestroyDeviceObjects": [
{
"args": "()",
"argsT": [],
"argsoriginal": "()",
"call_args": "()",
"cimguiname": "ImGui_ImplOpenGL3_DestroyDeviceObjects",
"defaults": {},
"funcname": "ImGui_ImplOpenGL3_DestroyDeviceObjects",
"location": "imgui_impl_opengl3:33",
"ov_cimguiname": "ImGui_ImplOpenGL3_DestroyDeviceObjects",
"ret": "void",
"signature": "()",
"stname": ""
}
],
"ImGui_ImplOpenGL3_DestroyFontsTexture": [
{
"args": "()",
"argsT": [],
"argsoriginal": "()",
"call_args": "()",
"cimguiname": "ImGui_ImplOpenGL3_DestroyFontsTexture",
"defaults": {},
"funcname": "ImGui_ImplOpenGL3_DestroyFontsTexture",
"location": "imgui_impl_opengl3:31",
"ov_cimguiname": "ImGui_ImplOpenGL3_DestroyFontsTexture",
"ret": "void",
"signature": "()",
"stname": ""
}
],
"ImGui_ImplOpenGL3_Init": [
{
"args": "(const char* glsl_version)",
"argsT": [
{
"name": "glsl_version",
"type": "const char*"
}
],
"argsoriginal": "(const char* glsl_version=((void*)0))",
"call_args": "(glsl_version)",
"cimguiname": "ImGui_ImplOpenGL3_Init",
"defaults": {
"glsl_version": "((void*)0)"
},
"funcname": "ImGui_ImplOpenGL3_Init",
"location": "imgui_impl_opengl3:24",
"ov_cimguiname": "ImGui_ImplOpenGL3_Init",
"ret": "bool",
"signature": "(const char*)",
"stname": ""
}
],
"ImGui_ImplOpenGL3_NewFrame": [
{
"args": "()",
"argsT": [],
"argsoriginal": "()",
"call_args": "()",
"cimguiname": "ImGui_ImplOpenGL3_NewFrame",
"defaults": {},
"funcname": "ImGui_ImplOpenGL3_NewFrame",
"location": "imgui_impl_opengl3:26",
"ov_cimguiname": "ImGui_ImplOpenGL3_NewFrame",
"ret": "void",
"signature": "()",
"stname": ""
}
],
"ImGui_ImplOpenGL3_RenderDrawData": [
{
"args": "(ImDrawData* draw_data)",
"argsT": [
{
"name": "draw_data",
"type": "ImDrawData*"
}
],
"argsoriginal": "(ImDrawData* draw_data)",
"call_args": "(draw_data)",
"cimguiname": "ImGui_ImplOpenGL3_RenderDrawData",
"defaults": {},
"funcname": "ImGui_ImplOpenGL3_RenderDrawData",
"location": "imgui_impl_opengl3:27",
"ov_cimguiname": "ImGui_ImplOpenGL3_RenderDrawData",
"ret": "void",
"signature": "(ImDrawData*)",
"stname": ""
}
],
"ImGui_ImplOpenGL3_Shutdown": [
{
"args": "()",
"argsT": [],
"argsoriginal": "()",
"call_args": "()",
"cimguiname": "ImGui_ImplOpenGL3_Shutdown",
"defaults": {},
"funcname": "ImGui_ImplOpenGL3_Shutdown",
"location": "imgui_impl_opengl3:25",
"ov_cimguiname": "ImGui_ImplOpenGL3_Shutdown",
"ret": "void",
"signature": "()",
"stname": ""
}
],
"ImGui_ImplSDL2_InitForD3D": [
{
"args": "(SDL_Window* window)",
"argsT": [
{
"name": "window",
"type": "SDL_Window*"
}
],
"argsoriginal": "(SDL_Window* window)",
"call_args": "(window)",
"cimguiname": "ImGui_ImplSDL2_InitForD3D",
"defaults": {},
"funcname": "ImGui_ImplSDL2_InitForD3D",
"location": "imgui_impl_sdl:26",
"ov_cimguiname": "ImGui_ImplSDL2_InitForD3D",
"ret": "bool",
"signature": "(SDL_Window*)",
"stname": ""
}
],
"ImGui_ImplSDL2_InitForMetal": [
{
"args": "(SDL_Window* window)",
"argsT": [
{
"name": "window",
"type": "SDL_Window*"
}
],
"argsoriginal": "(SDL_Window* window)",
"call_args": "(window)",
"cimguiname": "ImGui_ImplSDL2_InitForMetal",
"defaults": {},
"funcname": "ImGui_ImplSDL2_InitForMetal",
"location": "imgui_impl_sdl:27",
"ov_cimguiname": "ImGui_ImplSDL2_InitForMetal",
"ret": "bool",
"signature": "(SDL_Window*)",
"stname": ""
}
],
"ImGui_ImplSDL2_InitForOpenGL": [
{
"args": "(SDL_Window* window,void* sdl_gl_context)",
"argsT": [
{
"name": "window",
"type": "SDL_Window*"
},
{
"name": "sdl_gl_context",
"type": "void*"
}
],
"argsoriginal": "(SDL_Window* window,void* sdl_gl_context)",
"call_args": "(window,sdl_gl_context)",
"cimguiname": "ImGui_ImplSDL2_InitForOpenGL",
"defaults": {},
"funcname": "ImGui_ImplSDL2_InitForOpenGL",
"location": "imgui_impl_sdl:24",
"ov_cimguiname": "ImGui_ImplSDL2_InitForOpenGL",
"ret": "bool",
"signature": "(SDL_Window*,void*)",
"stname": ""
}
],
"ImGui_ImplSDL2_InitForVulkan": [
{
"args": "(SDL_Window* window)",
"argsT": [
{
"name": "window",
"type": "SDL_Window*"
}
],
"argsoriginal": "(SDL_Window* window)",
"call_args": "(window)",
"cimguiname": "ImGui_ImplSDL2_InitForVulkan",
"defaults": {},
"funcname": "ImGui_ImplSDL2_InitForVulkan",
"location": "imgui_impl_sdl:25",
"ov_cimguiname": "ImGui_ImplSDL2_InitForVulkan",
"ret": "bool",
"signature": "(SDL_Window*)",
"stname": ""
}
],
"ImGui_ImplSDL2_NewFrame": [
{
"args": "()",
"argsT": [],
"argsoriginal": "()",
"call_args": "()",
"cimguiname": "ImGui_ImplSDL2_NewFrame",
"defaults": {},
"funcname": "ImGui_ImplSDL2_NewFrame",
"location": "imgui_impl_sdl:29",
"ov_cimguiname": "ImGui_ImplSDL2_NewFrame",
"ret": "void",
"signature": "()",
"stname": ""
}
],
"ImGui_ImplSDL2_ProcessEvent": [
{
"args": "(const SDL_Event* event)",
"argsT": [
{
"name": "event",
"type": "const SDL_Event*"
}
],
"argsoriginal": "(const SDL_Event* event)",
"call_args": "(event)",
"cimguiname": "ImGui_ImplSDL2_ProcessEvent",
"defaults": {},
"funcname": "ImGui_ImplSDL2_ProcessEvent",
"location": "imgui_impl_sdl:30",
"ov_cimguiname": "ImGui_ImplSDL2_ProcessEvent",
"ret": "bool",
"signature": "(const SDL_Event*)",
"stname": ""
}
],
"ImGui_ImplSDL2_Shutdown": [
{
"args": "()",
"argsT": [],
"argsoriginal": "()",
"call_args": "()",
"cimguiname": "ImGui_ImplSDL2_Shutdown",
"defaults": {},
"funcname": "ImGui_ImplSDL2_Shutdown",
"location": "imgui_impl_sdl:28",
"ov_cimguiname": "ImGui_ImplSDL2_Shutdown",
"ret": "void",
"signature": "()",
"stname": ""
}
]
}

View File

@ -1,634 +0,0 @@
local defs = {}
defs["ImGui_ImplGlfw_CharCallback"] = {}
defs["ImGui_ImplGlfw_CharCallback"][1] = {}
defs["ImGui_ImplGlfw_CharCallback"][1]["args"] = "(GLFWwindow* window,unsigned int c)"
defs["ImGui_ImplGlfw_CharCallback"][1]["argsT"] = {}
defs["ImGui_ImplGlfw_CharCallback"][1]["argsT"][1] = {}
defs["ImGui_ImplGlfw_CharCallback"][1]["argsT"][1]["name"] = "window"
defs["ImGui_ImplGlfw_CharCallback"][1]["argsT"][1]["type"] = "GLFWwindow*"
defs["ImGui_ImplGlfw_CharCallback"][1]["argsT"][2] = {}
defs["ImGui_ImplGlfw_CharCallback"][1]["argsT"][2]["name"] = "c"
defs["ImGui_ImplGlfw_CharCallback"][1]["argsT"][2]["type"] = "unsigned int"
defs["ImGui_ImplGlfw_CharCallback"][1]["argsoriginal"] = "(GLFWwindow* window,unsigned int c)"
defs["ImGui_ImplGlfw_CharCallback"][1]["call_args"] = "(window,c)"
defs["ImGui_ImplGlfw_CharCallback"][1]["cimguiname"] = "ImGui_ImplGlfw_CharCallback"
defs["ImGui_ImplGlfw_CharCallback"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_CharCallback"][1]["funcname"] = "ImGui_ImplGlfw_CharCallback"
defs["ImGui_ImplGlfw_CharCallback"][1]["location"] = "imgui_impl_glfw:40"
defs["ImGui_ImplGlfw_CharCallback"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_CharCallback"
defs["ImGui_ImplGlfw_CharCallback"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_CharCallback"][1]["signature"] = "(GLFWwindow*,unsigned int)"
defs["ImGui_ImplGlfw_CharCallback"][1]["stname"] = ""
defs["ImGui_ImplGlfw_CharCallback"]["(GLFWwindow*,unsigned int)"] = defs["ImGui_ImplGlfw_CharCallback"][1]
defs["ImGui_ImplGlfw_CursorEnterCallback"] = {}
defs["ImGui_ImplGlfw_CursorEnterCallback"][1] = {}
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["args"] = "(GLFWwindow* window,int entered)"
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["argsT"] = {}
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["argsT"][1] = {}
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["argsT"][1]["name"] = "window"
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["argsT"][1]["type"] = "GLFWwindow*"
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["argsT"][2] = {}
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["argsT"][2]["name"] = "entered"
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["argsT"][2]["type"] = "int"
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["argsoriginal"] = "(GLFWwindow* window,int entered)"
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["call_args"] = "(window,entered)"
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["cimguiname"] = "ImGui_ImplGlfw_CursorEnterCallback"
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["funcname"] = "ImGui_ImplGlfw_CursorEnterCallback"
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["location"] = "imgui_impl_glfw:36"
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_CursorEnterCallback"
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["signature"] = "(GLFWwindow*,int)"
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["stname"] = ""
defs["ImGui_ImplGlfw_CursorEnterCallback"]["(GLFWwindow*,int)"] = defs["ImGui_ImplGlfw_CursorEnterCallback"][1]
defs["ImGui_ImplGlfw_InitForOpenGL"] = {}
defs["ImGui_ImplGlfw_InitForOpenGL"][1] = {}
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["args"] = "(GLFWwindow* window,bool install_callbacks)"
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["argsT"] = {}
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["argsT"][1] = {}
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["argsT"][1]["name"] = "window"
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["argsT"][1]["type"] = "GLFWwindow*"
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["argsT"][2] = {}
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["argsT"][2]["name"] = "install_callbacks"
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["argsT"][2]["type"] = "bool"
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["argsoriginal"] = "(GLFWwindow* window,bool install_callbacks)"
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["call_args"] = "(window,install_callbacks)"
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["cimguiname"] = "ImGui_ImplGlfw_InitForOpenGL"
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["funcname"] = "ImGui_ImplGlfw_InitForOpenGL"
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["location"] = "imgui_impl_glfw:26"
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_InitForOpenGL"
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["ret"] = "bool"
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["signature"] = "(GLFWwindow*,bool)"
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["stname"] = ""
defs["ImGui_ImplGlfw_InitForOpenGL"]["(GLFWwindow*,bool)"] = defs["ImGui_ImplGlfw_InitForOpenGL"][1]
defs["ImGui_ImplGlfw_InitForOther"] = {}
defs["ImGui_ImplGlfw_InitForOther"][1] = {}
defs["ImGui_ImplGlfw_InitForOther"][1]["args"] = "(GLFWwindow* window,bool install_callbacks)"
defs["ImGui_ImplGlfw_InitForOther"][1]["argsT"] = {}
defs["ImGui_ImplGlfw_InitForOther"][1]["argsT"][1] = {}
defs["ImGui_ImplGlfw_InitForOther"][1]["argsT"][1]["name"] = "window"
defs["ImGui_ImplGlfw_InitForOther"][1]["argsT"][1]["type"] = "GLFWwindow*"
defs["ImGui_ImplGlfw_InitForOther"][1]["argsT"][2] = {}
defs["ImGui_ImplGlfw_InitForOther"][1]["argsT"][2]["name"] = "install_callbacks"
defs["ImGui_ImplGlfw_InitForOther"][1]["argsT"][2]["type"] = "bool"
defs["ImGui_ImplGlfw_InitForOther"][1]["argsoriginal"] = "(GLFWwindow* window,bool install_callbacks)"
defs["ImGui_ImplGlfw_InitForOther"][1]["call_args"] = "(window,install_callbacks)"
defs["ImGui_ImplGlfw_InitForOther"][1]["cimguiname"] = "ImGui_ImplGlfw_InitForOther"
defs["ImGui_ImplGlfw_InitForOther"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_InitForOther"][1]["funcname"] = "ImGui_ImplGlfw_InitForOther"
defs["ImGui_ImplGlfw_InitForOther"][1]["location"] = "imgui_impl_glfw:28"
defs["ImGui_ImplGlfw_InitForOther"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_InitForOther"
defs["ImGui_ImplGlfw_InitForOther"][1]["ret"] = "bool"
defs["ImGui_ImplGlfw_InitForOther"][1]["signature"] = "(GLFWwindow*,bool)"
defs["ImGui_ImplGlfw_InitForOther"][1]["stname"] = ""
defs["ImGui_ImplGlfw_InitForOther"]["(GLFWwindow*,bool)"] = defs["ImGui_ImplGlfw_InitForOther"][1]
defs["ImGui_ImplGlfw_InitForVulkan"] = {}
defs["ImGui_ImplGlfw_InitForVulkan"][1] = {}
defs["ImGui_ImplGlfw_InitForVulkan"][1]["args"] = "(GLFWwindow* window,bool install_callbacks)"
defs["ImGui_ImplGlfw_InitForVulkan"][1]["argsT"] = {}
defs["ImGui_ImplGlfw_InitForVulkan"][1]["argsT"][1] = {}
defs["ImGui_ImplGlfw_InitForVulkan"][1]["argsT"][1]["name"] = "window"
defs["ImGui_ImplGlfw_InitForVulkan"][1]["argsT"][1]["type"] = "GLFWwindow*"
defs["ImGui_ImplGlfw_InitForVulkan"][1]["argsT"][2] = {}
defs["ImGui_ImplGlfw_InitForVulkan"][1]["argsT"][2]["name"] = "install_callbacks"
defs["ImGui_ImplGlfw_InitForVulkan"][1]["argsT"][2]["type"] = "bool"
defs["ImGui_ImplGlfw_InitForVulkan"][1]["argsoriginal"] = "(GLFWwindow* window,bool install_callbacks)"
defs["ImGui_ImplGlfw_InitForVulkan"][1]["call_args"] = "(window,install_callbacks)"
defs["ImGui_ImplGlfw_InitForVulkan"][1]["cimguiname"] = "ImGui_ImplGlfw_InitForVulkan"
defs["ImGui_ImplGlfw_InitForVulkan"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_InitForVulkan"][1]["funcname"] = "ImGui_ImplGlfw_InitForVulkan"
defs["ImGui_ImplGlfw_InitForVulkan"][1]["location"] = "imgui_impl_glfw:27"
defs["ImGui_ImplGlfw_InitForVulkan"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_InitForVulkan"
defs["ImGui_ImplGlfw_InitForVulkan"][1]["ret"] = "bool"
defs["ImGui_ImplGlfw_InitForVulkan"][1]["signature"] = "(GLFWwindow*,bool)"
defs["ImGui_ImplGlfw_InitForVulkan"][1]["stname"] = ""
defs["ImGui_ImplGlfw_InitForVulkan"]["(GLFWwindow*,bool)"] = defs["ImGui_ImplGlfw_InitForVulkan"][1]
defs["ImGui_ImplGlfw_KeyCallback"] = {}
defs["ImGui_ImplGlfw_KeyCallback"][1] = {}
defs["ImGui_ImplGlfw_KeyCallback"][1]["args"] = "(GLFWwindow* window,int key,int scancode,int action,int mods)"
defs["ImGui_ImplGlfw_KeyCallback"][1]["argsT"] = {}
defs["ImGui_ImplGlfw_KeyCallback"][1]["argsT"][1] = {}
defs["ImGui_ImplGlfw_KeyCallback"][1]["argsT"][1]["name"] = "window"
defs["ImGui_ImplGlfw_KeyCallback"][1]["argsT"][1]["type"] = "GLFWwindow*"
defs["ImGui_ImplGlfw_KeyCallback"][1]["argsT"][2] = {}
defs["ImGui_ImplGlfw_KeyCallback"][1]["argsT"][2]["name"] = "key"
defs["ImGui_ImplGlfw_KeyCallback"][1]["argsT"][2]["type"] = "int"
defs["ImGui_ImplGlfw_KeyCallback"][1]["argsT"][3] = {}
defs["ImGui_ImplGlfw_KeyCallback"][1]["argsT"][3]["name"] = "scancode"
defs["ImGui_ImplGlfw_KeyCallback"][1]["argsT"][3]["type"] = "int"
defs["ImGui_ImplGlfw_KeyCallback"][1]["argsT"][4] = {}
defs["ImGui_ImplGlfw_KeyCallback"][1]["argsT"][4]["name"] = "action"
defs["ImGui_ImplGlfw_KeyCallback"][1]["argsT"][4]["type"] = "int"
defs["ImGui_ImplGlfw_KeyCallback"][1]["argsT"][5] = {}
defs["ImGui_ImplGlfw_KeyCallback"][1]["argsT"][5]["name"] = "mods"
defs["ImGui_ImplGlfw_KeyCallback"][1]["argsT"][5]["type"] = "int"
defs["ImGui_ImplGlfw_KeyCallback"][1]["argsoriginal"] = "(GLFWwindow* window,int key,int scancode,int action,int mods)"
defs["ImGui_ImplGlfw_KeyCallback"][1]["call_args"] = "(window,key,scancode,action,mods)"
defs["ImGui_ImplGlfw_KeyCallback"][1]["cimguiname"] = "ImGui_ImplGlfw_KeyCallback"
defs["ImGui_ImplGlfw_KeyCallback"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_KeyCallback"][1]["funcname"] = "ImGui_ImplGlfw_KeyCallback"
defs["ImGui_ImplGlfw_KeyCallback"][1]["location"] = "imgui_impl_glfw:39"
defs["ImGui_ImplGlfw_KeyCallback"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_KeyCallback"
defs["ImGui_ImplGlfw_KeyCallback"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_KeyCallback"][1]["signature"] = "(GLFWwindow*,int,int,int,int)"
defs["ImGui_ImplGlfw_KeyCallback"][1]["stname"] = ""
defs["ImGui_ImplGlfw_KeyCallback"]["(GLFWwindow*,int,int,int,int)"] = defs["ImGui_ImplGlfw_KeyCallback"][1]
defs["ImGui_ImplGlfw_MonitorCallback"] = {}
defs["ImGui_ImplGlfw_MonitorCallback"][1] = {}
defs["ImGui_ImplGlfw_MonitorCallback"][1]["args"] = "(GLFWmonitor* monitor,int event)"
defs["ImGui_ImplGlfw_MonitorCallback"][1]["argsT"] = {}
defs["ImGui_ImplGlfw_MonitorCallback"][1]["argsT"][1] = {}
defs["ImGui_ImplGlfw_MonitorCallback"][1]["argsT"][1]["name"] = "monitor"
defs["ImGui_ImplGlfw_MonitorCallback"][1]["argsT"][1]["type"] = "GLFWmonitor*"
defs["ImGui_ImplGlfw_MonitorCallback"][1]["argsT"][2] = {}
defs["ImGui_ImplGlfw_MonitorCallback"][1]["argsT"][2]["name"] = "event"
defs["ImGui_ImplGlfw_MonitorCallback"][1]["argsT"][2]["type"] = "int"
defs["ImGui_ImplGlfw_MonitorCallback"][1]["argsoriginal"] = "(GLFWmonitor* monitor,int event)"
defs["ImGui_ImplGlfw_MonitorCallback"][1]["call_args"] = "(monitor,event)"
defs["ImGui_ImplGlfw_MonitorCallback"][1]["cimguiname"] = "ImGui_ImplGlfw_MonitorCallback"
defs["ImGui_ImplGlfw_MonitorCallback"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_MonitorCallback"][1]["funcname"] = "ImGui_ImplGlfw_MonitorCallback"
defs["ImGui_ImplGlfw_MonitorCallback"][1]["location"] = "imgui_impl_glfw:41"
defs["ImGui_ImplGlfw_MonitorCallback"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_MonitorCallback"
defs["ImGui_ImplGlfw_MonitorCallback"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_MonitorCallback"][1]["signature"] = "(GLFWmonitor*,int)"
defs["ImGui_ImplGlfw_MonitorCallback"][1]["stname"] = ""
defs["ImGui_ImplGlfw_MonitorCallback"]["(GLFWmonitor*,int)"] = defs["ImGui_ImplGlfw_MonitorCallback"][1]
defs["ImGui_ImplGlfw_MouseButtonCallback"] = {}
defs["ImGui_ImplGlfw_MouseButtonCallback"][1] = {}
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["args"] = "(GLFWwindow* window,int button,int action,int mods)"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["argsT"] = {}
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["argsT"][1] = {}
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["argsT"][1]["name"] = "window"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["argsT"][1]["type"] = "GLFWwindow*"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["argsT"][2] = {}
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["argsT"][2]["name"] = "button"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["argsT"][2]["type"] = "int"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["argsT"][3] = {}
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["argsT"][3]["name"] = "action"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["argsT"][3]["type"] = "int"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["argsT"][4] = {}
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["argsT"][4]["name"] = "mods"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["argsT"][4]["type"] = "int"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["argsoriginal"] = "(GLFWwindow* window,int button,int action,int mods)"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["call_args"] = "(window,button,action,mods)"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["cimguiname"] = "ImGui_ImplGlfw_MouseButtonCallback"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["funcname"] = "ImGui_ImplGlfw_MouseButtonCallback"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["location"] = "imgui_impl_glfw:37"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_MouseButtonCallback"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["signature"] = "(GLFWwindow*,int,int,int)"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["stname"] = ""
defs["ImGui_ImplGlfw_MouseButtonCallback"]["(GLFWwindow*,int,int,int)"] = defs["ImGui_ImplGlfw_MouseButtonCallback"][1]
defs["ImGui_ImplGlfw_NewFrame"] = {}
defs["ImGui_ImplGlfw_NewFrame"][1] = {}
defs["ImGui_ImplGlfw_NewFrame"][1]["args"] = "()"
defs["ImGui_ImplGlfw_NewFrame"][1]["argsT"] = {}
defs["ImGui_ImplGlfw_NewFrame"][1]["argsoriginal"] = "()"
defs["ImGui_ImplGlfw_NewFrame"][1]["call_args"] = "()"
defs["ImGui_ImplGlfw_NewFrame"][1]["cimguiname"] = "ImGui_ImplGlfw_NewFrame"
defs["ImGui_ImplGlfw_NewFrame"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_NewFrame"][1]["funcname"] = "ImGui_ImplGlfw_NewFrame"
defs["ImGui_ImplGlfw_NewFrame"][1]["location"] = "imgui_impl_glfw:30"
defs["ImGui_ImplGlfw_NewFrame"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_NewFrame"
defs["ImGui_ImplGlfw_NewFrame"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_NewFrame"][1]["signature"] = "()"
defs["ImGui_ImplGlfw_NewFrame"][1]["stname"] = ""
defs["ImGui_ImplGlfw_NewFrame"]["()"] = defs["ImGui_ImplGlfw_NewFrame"][1]
defs["ImGui_ImplGlfw_ScrollCallback"] = {}
defs["ImGui_ImplGlfw_ScrollCallback"][1] = {}
defs["ImGui_ImplGlfw_ScrollCallback"][1]["args"] = "(GLFWwindow* window,double xoffset,double yoffset)"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["argsT"] = {}
defs["ImGui_ImplGlfw_ScrollCallback"][1]["argsT"][1] = {}
defs["ImGui_ImplGlfw_ScrollCallback"][1]["argsT"][1]["name"] = "window"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["argsT"][1]["type"] = "GLFWwindow*"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["argsT"][2] = {}
defs["ImGui_ImplGlfw_ScrollCallback"][1]["argsT"][2]["name"] = "xoffset"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["argsT"][2]["type"] = "double"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["argsT"][3] = {}
defs["ImGui_ImplGlfw_ScrollCallback"][1]["argsT"][3]["name"] = "yoffset"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["argsT"][3]["type"] = "double"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["argsoriginal"] = "(GLFWwindow* window,double xoffset,double yoffset)"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["call_args"] = "(window,xoffset,yoffset)"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["cimguiname"] = "ImGui_ImplGlfw_ScrollCallback"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_ScrollCallback"][1]["funcname"] = "ImGui_ImplGlfw_ScrollCallback"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["location"] = "imgui_impl_glfw:38"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_ScrollCallback"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["signature"] = "(GLFWwindow*,double,double)"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["stname"] = ""
defs["ImGui_ImplGlfw_ScrollCallback"]["(GLFWwindow*,double,double)"] = defs["ImGui_ImplGlfw_ScrollCallback"][1]
defs["ImGui_ImplGlfw_Shutdown"] = {}
defs["ImGui_ImplGlfw_Shutdown"][1] = {}
defs["ImGui_ImplGlfw_Shutdown"][1]["args"] = "()"
defs["ImGui_ImplGlfw_Shutdown"][1]["argsT"] = {}
defs["ImGui_ImplGlfw_Shutdown"][1]["argsoriginal"] = "()"
defs["ImGui_ImplGlfw_Shutdown"][1]["call_args"] = "()"
defs["ImGui_ImplGlfw_Shutdown"][1]["cimguiname"] = "ImGui_ImplGlfw_Shutdown"
defs["ImGui_ImplGlfw_Shutdown"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_Shutdown"][1]["funcname"] = "ImGui_ImplGlfw_Shutdown"
defs["ImGui_ImplGlfw_Shutdown"][1]["location"] = "imgui_impl_glfw:29"
defs["ImGui_ImplGlfw_Shutdown"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_Shutdown"
defs["ImGui_ImplGlfw_Shutdown"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_Shutdown"][1]["signature"] = "()"
defs["ImGui_ImplGlfw_Shutdown"][1]["stname"] = ""
defs["ImGui_ImplGlfw_Shutdown"]["()"] = defs["ImGui_ImplGlfw_Shutdown"][1]
defs["ImGui_ImplGlfw_WindowFocusCallback"] = {}
defs["ImGui_ImplGlfw_WindowFocusCallback"][1] = {}
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["args"] = "(GLFWwindow* window,int focused)"
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["argsT"] = {}
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["argsT"][1] = {}
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["argsT"][1]["name"] = "window"
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["argsT"][1]["type"] = "GLFWwindow*"
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["argsT"][2] = {}
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["argsT"][2]["name"] = "focused"
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["argsT"][2]["type"] = "int"
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["argsoriginal"] = "(GLFWwindow* window,int focused)"
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["call_args"] = "(window,focused)"
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["cimguiname"] = "ImGui_ImplGlfw_WindowFocusCallback"
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["funcname"] = "ImGui_ImplGlfw_WindowFocusCallback"
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["location"] = "imgui_impl_glfw:35"
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_WindowFocusCallback"
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["signature"] = "(GLFWwindow*,int)"
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["stname"] = ""
defs["ImGui_ImplGlfw_WindowFocusCallback"]["(GLFWwindow*,int)"] = defs["ImGui_ImplGlfw_WindowFocusCallback"][1]
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"] = {}
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1] = {}
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["args"] = "()"
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["argsT"] = {}
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["argsoriginal"] = "()"
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["cimguiname"] = "ImGui_ImplOpenGL2_CreateDeviceObjects"
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["funcname"] = "ImGui_ImplOpenGL2_CreateDeviceObjects"
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["location"] = "imgui_impl_opengl2:31"
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL2_CreateDeviceObjects"
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["ret"] = "bool"
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["signature"] = "()"
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["stname"] = ""
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"]["()"] = defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]
defs["ImGui_ImplOpenGL2_CreateFontsTexture"] = {}
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1] = {}
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["args"] = "()"
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["argsT"] = {}
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["argsoriginal"] = "()"
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["cimguiname"] = "ImGui_ImplOpenGL2_CreateFontsTexture"
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["funcname"] = "ImGui_ImplOpenGL2_CreateFontsTexture"
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["location"] = "imgui_impl_opengl2:29"
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL2_CreateFontsTexture"
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["ret"] = "bool"
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["signature"] = "()"
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["stname"] = ""
defs["ImGui_ImplOpenGL2_CreateFontsTexture"]["()"] = defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"] = {}
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1] = {}
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["args"] = "()"
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["argsT"] = {}
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["argsoriginal"] = "()"
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["cimguiname"] = "ImGui_ImplOpenGL2_DestroyDeviceObjects"
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["funcname"] = "ImGui_ImplOpenGL2_DestroyDeviceObjects"
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["location"] = "imgui_impl_opengl2:32"
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL2_DestroyDeviceObjects"
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["ret"] = "void"
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["signature"] = "()"
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["stname"] = ""
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"]["()"] = defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"] = {}
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1] = {}
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["args"] = "()"
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["argsT"] = {}
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["argsoriginal"] = "()"
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["cimguiname"] = "ImGui_ImplOpenGL2_DestroyFontsTexture"
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["funcname"] = "ImGui_ImplOpenGL2_DestroyFontsTexture"
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["location"] = "imgui_impl_opengl2:30"
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL2_DestroyFontsTexture"
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["ret"] = "void"
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["signature"] = "()"
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["stname"] = ""
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"]["()"] = defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]
defs["ImGui_ImplOpenGL2_Init"] = {}
defs["ImGui_ImplOpenGL2_Init"][1] = {}
defs["ImGui_ImplOpenGL2_Init"][1]["args"] = "()"
defs["ImGui_ImplOpenGL2_Init"][1]["argsT"] = {}
defs["ImGui_ImplOpenGL2_Init"][1]["argsoriginal"] = "()"
defs["ImGui_ImplOpenGL2_Init"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL2_Init"][1]["cimguiname"] = "ImGui_ImplOpenGL2_Init"
defs["ImGui_ImplOpenGL2_Init"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL2_Init"][1]["funcname"] = "ImGui_ImplOpenGL2_Init"
defs["ImGui_ImplOpenGL2_Init"][1]["location"] = "imgui_impl_opengl2:23"
defs["ImGui_ImplOpenGL2_Init"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL2_Init"
defs["ImGui_ImplOpenGL2_Init"][1]["ret"] = "bool"
defs["ImGui_ImplOpenGL2_Init"][1]["signature"] = "()"
defs["ImGui_ImplOpenGL2_Init"][1]["stname"] = ""
defs["ImGui_ImplOpenGL2_Init"]["()"] = defs["ImGui_ImplOpenGL2_Init"][1]
defs["ImGui_ImplOpenGL2_NewFrame"] = {}
defs["ImGui_ImplOpenGL2_NewFrame"][1] = {}
defs["ImGui_ImplOpenGL2_NewFrame"][1]["args"] = "()"
defs["ImGui_ImplOpenGL2_NewFrame"][1]["argsT"] = {}
defs["ImGui_ImplOpenGL2_NewFrame"][1]["argsoriginal"] = "()"
defs["ImGui_ImplOpenGL2_NewFrame"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL2_NewFrame"][1]["cimguiname"] = "ImGui_ImplOpenGL2_NewFrame"
defs["ImGui_ImplOpenGL2_NewFrame"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL2_NewFrame"][1]["funcname"] = "ImGui_ImplOpenGL2_NewFrame"
defs["ImGui_ImplOpenGL2_NewFrame"][1]["location"] = "imgui_impl_opengl2:25"
defs["ImGui_ImplOpenGL2_NewFrame"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL2_NewFrame"
defs["ImGui_ImplOpenGL2_NewFrame"][1]["ret"] = "void"
defs["ImGui_ImplOpenGL2_NewFrame"][1]["signature"] = "()"
defs["ImGui_ImplOpenGL2_NewFrame"][1]["stname"] = ""
defs["ImGui_ImplOpenGL2_NewFrame"]["()"] = defs["ImGui_ImplOpenGL2_NewFrame"][1]
defs["ImGui_ImplOpenGL2_RenderDrawData"] = {}
defs["ImGui_ImplOpenGL2_RenderDrawData"][1] = {}
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["args"] = "(ImDrawData* draw_data)"
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["argsT"] = {}
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["argsT"][1] = {}
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["argsT"][1]["name"] = "draw_data"
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["argsT"][1]["type"] = "ImDrawData*"
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["argsoriginal"] = "(ImDrawData* draw_data)"
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["call_args"] = "(draw_data)"
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["cimguiname"] = "ImGui_ImplOpenGL2_RenderDrawData"
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["funcname"] = "ImGui_ImplOpenGL2_RenderDrawData"
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["location"] = "imgui_impl_opengl2:26"
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL2_RenderDrawData"
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["ret"] = "void"
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["signature"] = "(ImDrawData*)"
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["stname"] = ""
defs["ImGui_ImplOpenGL2_RenderDrawData"]["(ImDrawData*)"] = defs["ImGui_ImplOpenGL2_RenderDrawData"][1]
defs["ImGui_ImplOpenGL2_Shutdown"] = {}
defs["ImGui_ImplOpenGL2_Shutdown"][1] = {}
defs["ImGui_ImplOpenGL2_Shutdown"][1]["args"] = "()"
defs["ImGui_ImplOpenGL2_Shutdown"][1]["argsT"] = {}
defs["ImGui_ImplOpenGL2_Shutdown"][1]["argsoriginal"] = "()"
defs["ImGui_ImplOpenGL2_Shutdown"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL2_Shutdown"][1]["cimguiname"] = "ImGui_ImplOpenGL2_Shutdown"
defs["ImGui_ImplOpenGL2_Shutdown"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL2_Shutdown"][1]["funcname"] = "ImGui_ImplOpenGL2_Shutdown"
defs["ImGui_ImplOpenGL2_Shutdown"][1]["location"] = "imgui_impl_opengl2:24"
defs["ImGui_ImplOpenGL2_Shutdown"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL2_Shutdown"
defs["ImGui_ImplOpenGL2_Shutdown"][1]["ret"] = "void"
defs["ImGui_ImplOpenGL2_Shutdown"][1]["signature"] = "()"
defs["ImGui_ImplOpenGL2_Shutdown"][1]["stname"] = ""
defs["ImGui_ImplOpenGL2_Shutdown"]["()"] = defs["ImGui_ImplOpenGL2_Shutdown"][1]
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"] = {}
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1] = {}
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["args"] = "()"
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["argsT"] = {}
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["argsoriginal"] = "()"
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["cimguiname"] = "ImGui_ImplOpenGL3_CreateDeviceObjects"
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["funcname"] = "ImGui_ImplOpenGL3_CreateDeviceObjects"
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["location"] = "imgui_impl_opengl3:32"
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL3_CreateDeviceObjects"
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["ret"] = "bool"
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["signature"] = "()"
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["stname"] = ""
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"]["()"] = defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]
defs["ImGui_ImplOpenGL3_CreateFontsTexture"] = {}
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1] = {}
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["args"] = "()"
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["argsT"] = {}
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["argsoriginal"] = "()"
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["cimguiname"] = "ImGui_ImplOpenGL3_CreateFontsTexture"
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["funcname"] = "ImGui_ImplOpenGL3_CreateFontsTexture"
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["location"] = "imgui_impl_opengl3:30"
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL3_CreateFontsTexture"
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["ret"] = "bool"
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["signature"] = "()"
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["stname"] = ""
defs["ImGui_ImplOpenGL3_CreateFontsTexture"]["()"] = defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"] = {}
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1] = {}
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["args"] = "()"
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["argsT"] = {}
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["argsoriginal"] = "()"
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["cimguiname"] = "ImGui_ImplOpenGL3_DestroyDeviceObjects"
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["funcname"] = "ImGui_ImplOpenGL3_DestroyDeviceObjects"
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["location"] = "imgui_impl_opengl3:33"
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL3_DestroyDeviceObjects"
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["ret"] = "void"
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["signature"] = "()"
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["stname"] = ""
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"]["()"] = defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"] = {}
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1] = {}
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["args"] = "()"
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["argsT"] = {}
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["argsoriginal"] = "()"
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["cimguiname"] = "ImGui_ImplOpenGL3_DestroyFontsTexture"
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["funcname"] = "ImGui_ImplOpenGL3_DestroyFontsTexture"
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["location"] = "imgui_impl_opengl3:31"
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL3_DestroyFontsTexture"
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["ret"] = "void"
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["signature"] = "()"
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["stname"] = ""
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"]["()"] = defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]
defs["ImGui_ImplOpenGL3_Init"] = {}
defs["ImGui_ImplOpenGL3_Init"][1] = {}
defs["ImGui_ImplOpenGL3_Init"][1]["args"] = "(const char* glsl_version)"
defs["ImGui_ImplOpenGL3_Init"][1]["argsT"] = {}
defs["ImGui_ImplOpenGL3_Init"][1]["argsT"][1] = {}
defs["ImGui_ImplOpenGL3_Init"][1]["argsT"][1]["name"] = "glsl_version"
defs["ImGui_ImplOpenGL3_Init"][1]["argsT"][1]["type"] = "const char*"
defs["ImGui_ImplOpenGL3_Init"][1]["argsoriginal"] = "(const char* glsl_version=((void*)0))"
defs["ImGui_ImplOpenGL3_Init"][1]["call_args"] = "(glsl_version)"
defs["ImGui_ImplOpenGL3_Init"][1]["cimguiname"] = "ImGui_ImplOpenGL3_Init"
defs["ImGui_ImplOpenGL3_Init"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL3_Init"][1]["defaults"]["glsl_version"] = "((void*)0)"
defs["ImGui_ImplOpenGL3_Init"][1]["funcname"] = "ImGui_ImplOpenGL3_Init"
defs["ImGui_ImplOpenGL3_Init"][1]["location"] = "imgui_impl_opengl3:24"
defs["ImGui_ImplOpenGL3_Init"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL3_Init"
defs["ImGui_ImplOpenGL3_Init"][1]["ret"] = "bool"
defs["ImGui_ImplOpenGL3_Init"][1]["signature"] = "(const char*)"
defs["ImGui_ImplOpenGL3_Init"][1]["stname"] = ""
defs["ImGui_ImplOpenGL3_Init"]["(const char*)"] = defs["ImGui_ImplOpenGL3_Init"][1]
defs["ImGui_ImplOpenGL3_NewFrame"] = {}
defs["ImGui_ImplOpenGL3_NewFrame"][1] = {}
defs["ImGui_ImplOpenGL3_NewFrame"][1]["args"] = "()"
defs["ImGui_ImplOpenGL3_NewFrame"][1]["argsT"] = {}
defs["ImGui_ImplOpenGL3_NewFrame"][1]["argsoriginal"] = "()"
defs["ImGui_ImplOpenGL3_NewFrame"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL3_NewFrame"][1]["cimguiname"] = "ImGui_ImplOpenGL3_NewFrame"
defs["ImGui_ImplOpenGL3_NewFrame"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL3_NewFrame"][1]["funcname"] = "ImGui_ImplOpenGL3_NewFrame"
defs["ImGui_ImplOpenGL3_NewFrame"][1]["location"] = "imgui_impl_opengl3:26"
defs["ImGui_ImplOpenGL3_NewFrame"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL3_NewFrame"
defs["ImGui_ImplOpenGL3_NewFrame"][1]["ret"] = "void"
defs["ImGui_ImplOpenGL3_NewFrame"][1]["signature"] = "()"
defs["ImGui_ImplOpenGL3_NewFrame"][1]["stname"] = ""
defs["ImGui_ImplOpenGL3_NewFrame"]["()"] = defs["ImGui_ImplOpenGL3_NewFrame"][1]
defs["ImGui_ImplOpenGL3_RenderDrawData"] = {}
defs["ImGui_ImplOpenGL3_RenderDrawData"][1] = {}
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["args"] = "(ImDrawData* draw_data)"
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["argsT"] = {}
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["argsT"][1] = {}
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["argsT"][1]["name"] = "draw_data"
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["argsT"][1]["type"] = "ImDrawData*"
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["argsoriginal"] = "(ImDrawData* draw_data)"
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["call_args"] = "(draw_data)"
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["cimguiname"] = "ImGui_ImplOpenGL3_RenderDrawData"
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["funcname"] = "ImGui_ImplOpenGL3_RenderDrawData"
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["location"] = "imgui_impl_opengl3:27"
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL3_RenderDrawData"
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["ret"] = "void"
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["signature"] = "(ImDrawData*)"
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["stname"] = ""
defs["ImGui_ImplOpenGL3_RenderDrawData"]["(ImDrawData*)"] = defs["ImGui_ImplOpenGL3_RenderDrawData"][1]
defs["ImGui_ImplOpenGL3_Shutdown"] = {}
defs["ImGui_ImplOpenGL3_Shutdown"][1] = {}
defs["ImGui_ImplOpenGL3_Shutdown"][1]["args"] = "()"
defs["ImGui_ImplOpenGL3_Shutdown"][1]["argsT"] = {}
defs["ImGui_ImplOpenGL3_Shutdown"][1]["argsoriginal"] = "()"
defs["ImGui_ImplOpenGL3_Shutdown"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL3_Shutdown"][1]["cimguiname"] = "ImGui_ImplOpenGL3_Shutdown"
defs["ImGui_ImplOpenGL3_Shutdown"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL3_Shutdown"][1]["funcname"] = "ImGui_ImplOpenGL3_Shutdown"
defs["ImGui_ImplOpenGL3_Shutdown"][1]["location"] = "imgui_impl_opengl3:25"
defs["ImGui_ImplOpenGL3_Shutdown"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL3_Shutdown"
defs["ImGui_ImplOpenGL3_Shutdown"][1]["ret"] = "void"
defs["ImGui_ImplOpenGL3_Shutdown"][1]["signature"] = "()"
defs["ImGui_ImplOpenGL3_Shutdown"][1]["stname"] = ""
defs["ImGui_ImplOpenGL3_Shutdown"]["()"] = defs["ImGui_ImplOpenGL3_Shutdown"][1]
defs["ImGui_ImplSDL2_InitForD3D"] = {}
defs["ImGui_ImplSDL2_InitForD3D"][1] = {}
defs["ImGui_ImplSDL2_InitForD3D"][1]["args"] = "(SDL_Window* window)"
defs["ImGui_ImplSDL2_InitForD3D"][1]["argsT"] = {}
defs["ImGui_ImplSDL2_InitForD3D"][1]["argsT"][1] = {}
defs["ImGui_ImplSDL2_InitForD3D"][1]["argsT"][1]["name"] = "window"
defs["ImGui_ImplSDL2_InitForD3D"][1]["argsT"][1]["type"] = "SDL_Window*"
defs["ImGui_ImplSDL2_InitForD3D"][1]["argsoriginal"] = "(SDL_Window* window)"
defs["ImGui_ImplSDL2_InitForD3D"][1]["call_args"] = "(window)"
defs["ImGui_ImplSDL2_InitForD3D"][1]["cimguiname"] = "ImGui_ImplSDL2_InitForD3D"
defs["ImGui_ImplSDL2_InitForD3D"][1]["defaults"] = {}
defs["ImGui_ImplSDL2_InitForD3D"][1]["funcname"] = "ImGui_ImplSDL2_InitForD3D"
defs["ImGui_ImplSDL2_InitForD3D"][1]["location"] = "imgui_impl_sdl:26"
defs["ImGui_ImplSDL2_InitForD3D"][1]["ov_cimguiname"] = "ImGui_ImplSDL2_InitForD3D"
defs["ImGui_ImplSDL2_InitForD3D"][1]["ret"] = "bool"
defs["ImGui_ImplSDL2_InitForD3D"][1]["signature"] = "(SDL_Window*)"
defs["ImGui_ImplSDL2_InitForD3D"][1]["stname"] = ""
defs["ImGui_ImplSDL2_InitForD3D"]["(SDL_Window*)"] = defs["ImGui_ImplSDL2_InitForD3D"][1]
defs["ImGui_ImplSDL2_InitForMetal"] = {}
defs["ImGui_ImplSDL2_InitForMetal"][1] = {}
defs["ImGui_ImplSDL2_InitForMetal"][1]["args"] = "(SDL_Window* window)"
defs["ImGui_ImplSDL2_InitForMetal"][1]["argsT"] = {}
defs["ImGui_ImplSDL2_InitForMetal"][1]["argsT"][1] = {}
defs["ImGui_ImplSDL2_InitForMetal"][1]["argsT"][1]["name"] = "window"
defs["ImGui_ImplSDL2_InitForMetal"][1]["argsT"][1]["type"] = "SDL_Window*"
defs["ImGui_ImplSDL2_InitForMetal"][1]["argsoriginal"] = "(SDL_Window* window)"
defs["ImGui_ImplSDL2_InitForMetal"][1]["call_args"] = "(window)"
defs["ImGui_ImplSDL2_InitForMetal"][1]["cimguiname"] = "ImGui_ImplSDL2_InitForMetal"
defs["ImGui_ImplSDL2_InitForMetal"][1]["defaults"] = {}
defs["ImGui_ImplSDL2_InitForMetal"][1]["funcname"] = "ImGui_ImplSDL2_InitForMetal"
defs["ImGui_ImplSDL2_InitForMetal"][1]["location"] = "imgui_impl_sdl:27"
defs["ImGui_ImplSDL2_InitForMetal"][1]["ov_cimguiname"] = "ImGui_ImplSDL2_InitForMetal"
defs["ImGui_ImplSDL2_InitForMetal"][1]["ret"] = "bool"
defs["ImGui_ImplSDL2_InitForMetal"][1]["signature"] = "(SDL_Window*)"
defs["ImGui_ImplSDL2_InitForMetal"][1]["stname"] = ""
defs["ImGui_ImplSDL2_InitForMetal"]["(SDL_Window*)"] = defs["ImGui_ImplSDL2_InitForMetal"][1]
defs["ImGui_ImplSDL2_InitForOpenGL"] = {}
defs["ImGui_ImplSDL2_InitForOpenGL"][1] = {}
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["args"] = "(SDL_Window* window,void* sdl_gl_context)"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["argsT"] = {}
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["argsT"][1] = {}
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["argsT"][1]["name"] = "window"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["argsT"][1]["type"] = "SDL_Window*"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["argsT"][2] = {}
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["argsT"][2]["name"] = "sdl_gl_context"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["argsT"][2]["type"] = "void*"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["argsoriginal"] = "(SDL_Window* window,void* sdl_gl_context)"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["call_args"] = "(window,sdl_gl_context)"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["cimguiname"] = "ImGui_ImplSDL2_InitForOpenGL"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["defaults"] = {}
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["funcname"] = "ImGui_ImplSDL2_InitForOpenGL"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["location"] = "imgui_impl_sdl:24"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["ov_cimguiname"] = "ImGui_ImplSDL2_InitForOpenGL"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["ret"] = "bool"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["signature"] = "(SDL_Window*,void*)"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["stname"] = ""
defs["ImGui_ImplSDL2_InitForOpenGL"]["(SDL_Window*,void*)"] = defs["ImGui_ImplSDL2_InitForOpenGL"][1]
defs["ImGui_ImplSDL2_InitForVulkan"] = {}
defs["ImGui_ImplSDL2_InitForVulkan"][1] = {}
defs["ImGui_ImplSDL2_InitForVulkan"][1]["args"] = "(SDL_Window* window)"
defs["ImGui_ImplSDL2_InitForVulkan"][1]["argsT"] = {}
defs["ImGui_ImplSDL2_InitForVulkan"][1]["argsT"][1] = {}
defs["ImGui_ImplSDL2_InitForVulkan"][1]["argsT"][1]["name"] = "window"
defs["ImGui_ImplSDL2_InitForVulkan"][1]["argsT"][1]["type"] = "SDL_Window*"
defs["ImGui_ImplSDL2_InitForVulkan"][1]["argsoriginal"] = "(SDL_Window* window)"
defs["ImGui_ImplSDL2_InitForVulkan"][1]["call_args"] = "(window)"
defs["ImGui_ImplSDL2_InitForVulkan"][1]["cimguiname"] = "ImGui_ImplSDL2_InitForVulkan"
defs["ImGui_ImplSDL2_InitForVulkan"][1]["defaults"] = {}
defs["ImGui_ImplSDL2_InitForVulkan"][1]["funcname"] = "ImGui_ImplSDL2_InitForVulkan"
defs["ImGui_ImplSDL2_InitForVulkan"][1]["location"] = "imgui_impl_sdl:25"
defs["ImGui_ImplSDL2_InitForVulkan"][1]["ov_cimguiname"] = "ImGui_ImplSDL2_InitForVulkan"
defs["ImGui_ImplSDL2_InitForVulkan"][1]["ret"] = "bool"
defs["ImGui_ImplSDL2_InitForVulkan"][1]["signature"] = "(SDL_Window*)"
defs["ImGui_ImplSDL2_InitForVulkan"][1]["stname"] = ""
defs["ImGui_ImplSDL2_InitForVulkan"]["(SDL_Window*)"] = defs["ImGui_ImplSDL2_InitForVulkan"][1]
defs["ImGui_ImplSDL2_NewFrame"] = {}
defs["ImGui_ImplSDL2_NewFrame"][1] = {}
defs["ImGui_ImplSDL2_NewFrame"][1]["args"] = "()"
defs["ImGui_ImplSDL2_NewFrame"][1]["argsT"] = {}
defs["ImGui_ImplSDL2_NewFrame"][1]["argsoriginal"] = "()"
defs["ImGui_ImplSDL2_NewFrame"][1]["call_args"] = "()"
defs["ImGui_ImplSDL2_NewFrame"][1]["cimguiname"] = "ImGui_ImplSDL2_NewFrame"
defs["ImGui_ImplSDL2_NewFrame"][1]["defaults"] = {}
defs["ImGui_ImplSDL2_NewFrame"][1]["funcname"] = "ImGui_ImplSDL2_NewFrame"
defs["ImGui_ImplSDL2_NewFrame"][1]["location"] = "imgui_impl_sdl:29"
defs["ImGui_ImplSDL2_NewFrame"][1]["ov_cimguiname"] = "ImGui_ImplSDL2_NewFrame"
defs["ImGui_ImplSDL2_NewFrame"][1]["ret"] = "void"
defs["ImGui_ImplSDL2_NewFrame"][1]["signature"] = "()"
defs["ImGui_ImplSDL2_NewFrame"][1]["stname"] = ""
defs["ImGui_ImplSDL2_NewFrame"]["()"] = defs["ImGui_ImplSDL2_NewFrame"][1]
defs["ImGui_ImplSDL2_ProcessEvent"] = {}
defs["ImGui_ImplSDL2_ProcessEvent"][1] = {}
defs["ImGui_ImplSDL2_ProcessEvent"][1]["args"] = "(const SDL_Event* event)"
defs["ImGui_ImplSDL2_ProcessEvent"][1]["argsT"] = {}
defs["ImGui_ImplSDL2_ProcessEvent"][1]["argsT"][1] = {}
defs["ImGui_ImplSDL2_ProcessEvent"][1]["argsT"][1]["name"] = "event"
defs["ImGui_ImplSDL2_ProcessEvent"][1]["argsT"][1]["type"] = "const SDL_Event*"
defs["ImGui_ImplSDL2_ProcessEvent"][1]["argsoriginal"] = "(const SDL_Event* event)"
defs["ImGui_ImplSDL2_ProcessEvent"][1]["call_args"] = "(event)"
defs["ImGui_ImplSDL2_ProcessEvent"][1]["cimguiname"] = "ImGui_ImplSDL2_ProcessEvent"
defs["ImGui_ImplSDL2_ProcessEvent"][1]["defaults"] = {}
defs["ImGui_ImplSDL2_ProcessEvent"][1]["funcname"] = "ImGui_ImplSDL2_ProcessEvent"
defs["ImGui_ImplSDL2_ProcessEvent"][1]["location"] = "imgui_impl_sdl:30"
defs["ImGui_ImplSDL2_ProcessEvent"][1]["ov_cimguiname"] = "ImGui_ImplSDL2_ProcessEvent"
defs["ImGui_ImplSDL2_ProcessEvent"][1]["ret"] = "bool"
defs["ImGui_ImplSDL2_ProcessEvent"][1]["signature"] = "(const SDL_Event*)"
defs["ImGui_ImplSDL2_ProcessEvent"][1]["stname"] = ""
defs["ImGui_ImplSDL2_ProcessEvent"]["(const SDL_Event*)"] = defs["ImGui_ImplSDL2_ProcessEvent"][1]
defs["ImGui_ImplSDL2_Shutdown"] = {}
defs["ImGui_ImplSDL2_Shutdown"][1] = {}
defs["ImGui_ImplSDL2_Shutdown"][1]["args"] = "()"
defs["ImGui_ImplSDL2_Shutdown"][1]["argsT"] = {}
defs["ImGui_ImplSDL2_Shutdown"][1]["argsoriginal"] = "()"
defs["ImGui_ImplSDL2_Shutdown"][1]["call_args"] = "()"
defs["ImGui_ImplSDL2_Shutdown"][1]["cimguiname"] = "ImGui_ImplSDL2_Shutdown"
defs["ImGui_ImplSDL2_Shutdown"][1]["defaults"] = {}
defs["ImGui_ImplSDL2_Shutdown"][1]["funcname"] = "ImGui_ImplSDL2_Shutdown"
defs["ImGui_ImplSDL2_Shutdown"][1]["location"] = "imgui_impl_sdl:28"
defs["ImGui_ImplSDL2_Shutdown"][1]["ov_cimguiname"] = "ImGui_ImplSDL2_Shutdown"
defs["ImGui_ImplSDL2_Shutdown"][1]["ret"] = "void"
defs["ImGui_ImplSDL2_Shutdown"][1]["signature"] = "()"
defs["ImGui_ImplSDL2_Shutdown"][1]["stname"] = ""
defs["ImGui_ImplSDL2_Shutdown"]["()"] = defs["ImGui_ImplSDL2_Shutdown"][1]
return defs

View File

@ -1,138 +0,0 @@
----------------overloadings---------------------------
ImColor_ImColor 5
1 nil ImColor_ImColor_Nil ()
2 nil ImColor_ImColor_Int (int,int,int,int)
3 nil ImColor_ImColor_U32 (ImU32)
4 nil ImColor_ImColor_Float (float,float,float,float)
5 nil ImColor_ImColor_Vec4 (const ImVec4)
ImDrawList_AddText 2
1 void ImDrawList_AddText_Vec2 (const ImVec2,ImU32,const char*,const char*)
2 void ImDrawList_AddText_FontPtr (const ImFont*,float,const ImVec2,ImU32,const char*,const char*,float,const ImVec4*)
ImGuiStoragePair_ImGuiStoragePair 3
1 nil ImGuiStoragePair_ImGuiStoragePair_Int (ImGuiID,int)
2 nil ImGuiStoragePair_ImGuiStoragePair_Float (ImGuiID,float)
3 nil ImGuiStoragePair_ImGuiStoragePair_Ptr (ImGuiID,void*)
ImGuiTextRange_ImGuiTextRange 2
1 nil ImGuiTextRange_ImGuiTextRange_Nil ()
2 nil ImGuiTextRange_ImGuiTextRange_Str (const char*,const char*)
ImVec2_ImVec2 2
1 nil ImVec2_ImVec2_Nil ()
2 nil ImVec2_ImVec2_Float (float,float)
ImVec4_ImVec4 2
1 nil ImVec4_ImVec4_Nil ()
2 nil ImVec4_ImVec4_Float (float,float,float,float)
ImVector_ImVector 2
1 nil ImVector_ImVector_Nil ()
2 nil ImVector_ImVector_Vector (const ImVector)
ImVector_back 2
1 T* ImVector_back_Nil ()
2 const T* ImVector_back__const ()const
ImVector_begin 2
1 T* ImVector_begin_Nil ()
2 const T* ImVector_begin__const ()const
ImVector_end 2
1 T* ImVector_end_Nil ()
2 const T* ImVector_end__const ()const
ImVector_erase 2
1 T* ImVector_erase_Nil (const T*)
2 T* ImVector_erase_TPtr (const T*,const T*)
ImVector_find 2
1 T* ImVector_find_Nil (const T)
2 const T* ImVector_find__const (const T)const
ImVector_front 2
1 T* ImVector_front_Nil ()
2 const T* ImVector_front__const ()const
ImVector_resize 2
1 void ImVector_resize_Nil (int)
2 void ImVector_resize_T (int,const T)
igBeginChild 2
1 bool igBeginChild_Str (const char*,const ImVec2,bool,ImGuiWindowFlags)
2 bool igBeginChild_ID (ImGuiID,const ImVec2,bool,ImGuiWindowFlags)
igCheckboxFlags 2
1 bool igCheckboxFlags_IntPtr (const char*,int*,int)
2 bool igCheckboxFlags_UintPtr (const char*,unsigned int*,unsigned int)
igCollapsingHeader 2
1 bool igCollapsingHeader_TreeNodeFlags (const char*,ImGuiTreeNodeFlags)
2 bool igCollapsingHeader_BoolPtr (const char*,bool*,ImGuiTreeNodeFlags)
igCombo 3
1 bool igCombo_Str_arr (const char*,int*,const char* const[],int,int)
2 bool igCombo_Str (const char*,int*,const char*,int)
3 bool igCombo_FnBoolPtr (const char*,int*,bool(*)(void*,int,const char**),void*,int,int)
igGetColorU32 3
1 ImU32 igGetColorU32_Col (ImGuiCol,float)
2 ImU32 igGetColorU32_Vec4 (const ImVec4)
3 ImU32 igGetColorU32_U32 (ImU32)
igGetID 3
1 ImGuiID igGetID_Str (const char*)
2 ImGuiID igGetID_StrStr (const char*,const char*)
3 ImGuiID igGetID_Ptr (const void*)
igIsRectVisible 2
1 bool igIsRectVisible_Nil (const ImVec2)
2 bool igIsRectVisible_Vec2 (const ImVec2,const ImVec2)
igListBox 2
1 bool igListBox_Str_arr (const char*,int*,const char* const[],int,int)
2 bool igListBox_FnBoolPtr (const char*,int*,bool(*)(void*,int,const char**),void*,int,int)
igMenuItem 2
1 bool igMenuItem_Bool (const char*,const char*,bool,bool)
2 bool igMenuItem_BoolPtr (const char*,const char*,bool*,bool)
igOpenPopup 2
1 void igOpenPopup_Str (const char*,ImGuiPopupFlags)
2 void igOpenPopup_ID (ImGuiID,ImGuiPopupFlags)
igPlotHistogram 2
1 void igPlotHistogram_FloatPtr (const char*,const float*,int,int,const char*,float,float,ImVec2,int)
2 void igPlotHistogram_FnFloatPtr (const char*,float(*)(void*,int),void*,int,int,const char*,float,float,ImVec2)
igPlotLines 2
1 void igPlotLines_FloatPtr (const char*,const float*,int,int,const char*,float,float,ImVec2,int)
2 void igPlotLines_FnFloatPtr (const char*,float(*)(void*,int),void*,int,int,const char*,float,float,ImVec2)
igPushID 4
1 void igPushID_Str (const char*)
2 void igPushID_StrStr (const char*,const char*)
3 void igPushID_Ptr (const void*)
4 void igPushID_Int (int)
igPushStyleColor 2
1 void igPushStyleColor_U32 (ImGuiCol,ImU32)
2 void igPushStyleColor_Vec4 (ImGuiCol,const ImVec4)
igPushStyleVar 2
1 void igPushStyleVar_Float (ImGuiStyleVar,float)
2 void igPushStyleVar_Vec2 (ImGuiStyleVar,const ImVec2)
igRadioButton 2
1 bool igRadioButton_Bool (const char*,bool)
2 bool igRadioButton_IntPtr (const char*,int*,int)
igSelectable 2
1 bool igSelectable_Bool (const char*,bool,ImGuiSelectableFlags,const ImVec2)
2 bool igSelectable_BoolPtr (const char*,bool*,ImGuiSelectableFlags,const ImVec2)
igSetWindowCollapsed 2
1 void igSetWindowCollapsed_Bool (bool,ImGuiCond)
2 void igSetWindowCollapsed_Str (const char*,bool,ImGuiCond)
igSetWindowFocus 2
1 void igSetWindowFocus_Nil ()
2 void igSetWindowFocus_Str (const char*)
igSetWindowPos 2
1 void igSetWindowPos_Vec2 (const ImVec2,ImGuiCond)
2 void igSetWindowPos_Str (const char*,const ImVec2,ImGuiCond)
igSetWindowSize 2
1 void igSetWindowSize_Vec2 (const ImVec2,ImGuiCond)
2 void igSetWindowSize_Str (const char*,const ImVec2,ImGuiCond)
igTreeNode 3
1 bool igTreeNode_Str (const char*)
2 bool igTreeNode_StrStr (const char*,const char*,...)
3 bool igTreeNode_Ptr (const void*,const char*,...)
igTreeNodeEx 3
1 bool igTreeNodeEx_Str (const char*,ImGuiTreeNodeFlags)
2 bool igTreeNodeEx_StrStr (const char*,ImGuiTreeNodeFlags,const char*,...)
3 bool igTreeNodeEx_Ptr (const void*,ImGuiTreeNodeFlags,const char*,...)
igTreeNodeExV 2
1 bool igTreeNodeExV_Str (const char*,ImGuiTreeNodeFlags,const char*,va_list)
2 bool igTreeNodeExV_Ptr (const void*,ImGuiTreeNodeFlags,const char*,va_list)
igTreeNodeV 2
1 bool igTreeNodeV_Str (const char*,const char*,va_list)
2 bool igTreeNodeV_Ptr (const void*,const char*,va_list)
igTreePush 2
1 void igTreePush_Str (const char*)
2 void igTreePush_Ptr (const void*)
igValue 4
1 void igValue_Bool (const char*,bool)
2 void igValue_Int (const char*,int)
3 void igValue_Uint (const char*,unsigned int)
4 void igValue_Float (const char*,float,const char*)
95 overloaded

View File

@ -1,14 +0,0 @@
#!/bin/bash
set -euo pipefail
SCRIPT_DIR=$(dirname ${0})
CIMGUI_DIR=${1:?}
echo "${SCRIPT_DIR}"
pushd "${CIMGUI_DIR}"/generator > /dev/null
luajit generator.lua gcc false -DIMGUI_USE_WCHAR32
popd > /dev/null
cp "${CIMGUI_DIR}"/cimgui.{h,cpp} "${SCRIPT_DIR}"/
cp "${CIMGUI_DIR}"/generator/output/* "${SCRIPT_DIR}"/