25 #define IMGUI_VERSION               "1.89.2" 
   26 #define IMGUI_VERSION_NUM           18920 
   27 #define IMGUI_HAS_TABLE 
   53 #ifdef IMGUI_USER_CONFIG 
   54 #include IMGUI_USER_CONFIG 
   76 #ifndef IMGUI_IMPL_API 
   77 #define IMGUI_IMPL_API              IMGUI_API 
   83 #define IM_ASSERT(_EXPR)            assert(_EXPR)                                
   85 #define IM_ARRAYSIZE(_ARR)          ((int)(sizeof(_ARR) / sizeof(*(_ARR))))      
   86 #define IM_UNUSED(_VAR)             ((void)(_VAR))                               
   87 #define IM_OFFSETOF(_TYPE,_MEMBER)  offsetof(_TYPE, _MEMBER)                     
   88 #define IMGUI_CHECKVERSION()        ImGui::DebugCheckVersionAndDataLayout(IMGUI_VERSION, sizeof(ImGuiIO), sizeof(ImGuiStyle), sizeof(ImVec2), sizeof(ImVec4), sizeof(ImDrawVert), sizeof(ImDrawIdx)) 
   91 #if !defined(IMGUI_USE_STB_SPRINTF) && defined(__MINGW32__) && !defined(__clang__) 
   92 #define IM_FMTARGS(FMT)             __attribute__((format(gnu_printf, FMT, FMT+1))) 
   93 #define IM_FMTLIST(FMT)             __attribute__((format(gnu_printf, FMT, 0))) 
   94 #elif !defined(IMGUI_USE_STB_SPRINTF) && (defined(__clang__) || defined(__GNUC__)) 
   95 #define IM_FMTARGS(FMT)             __attribute__((format(printf, FMT, FMT+1))) 
   96 #define IM_FMTLIST(FMT)             __attribute__((format(printf, FMT, 0))) 
   98 #define IM_FMTARGS(FMT) 
   99 #define IM_FMTLIST(FMT) 
  103 #if defined(_MSC_VER) && !defined(__clang__)  && !defined(__INTEL_COMPILER) && !defined(IMGUI_DEBUG_PARANOID) 
  104 #define IM_MSVC_RUNTIME_CHECKS_OFF      __pragma(runtime_checks("",off))     __pragma(check_stack(off)) __pragma(strict_gs_check(push,off))
 
  105 #define IM_MSVC_RUNTIME_CHECKS_RESTORE  __pragma(runtime_checks("",restore)) __pragma(check_stack())    __pragma(strict_gs_check(pop))
 
  107 #define IM_MSVC_RUNTIME_CHECKS_OFF 
  108 #define IM_MSVC_RUNTIME_CHECKS_RESTORE 
  113 #pragma warning (push) 
  114 #pragma warning (disable: 26495)     
  116 #if defined(__clang__) 
  117 #pragma clang diagnostic push 
  118 #pragma clang diagnostic ignored "-Wold-style-cast" 
  119 #if __has_warning("-Wzero-as-null-pointer-constant")
 
  120 #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" 
  122 #elif defined(__GNUC__) 
  123 #pragma GCC diagnostic push 
  124 #pragma GCC diagnostic ignored "-Wpragmas"           
  125 #pragma GCC diagnostic ignored "-Wclass-memaccess"   
  170 typedef int ImGuiCol;               
 
  171 typedef int ImGuiCond;              
 
  172 typedef int ImGuiDataType;          
 
  173 typedef int ImGuiDir;               
 
  174 typedef int ImGuiMouseButton;       
 
  175 typedef int ImGuiMouseCursor;       
 
  176 typedef int ImGuiSortDirection;     
 
  177 typedef int ImGuiStyleVar;          
 
  178 typedef int ImGuiTableBgTarget;     
 
  184 typedef int ImDrawFlags;            
 
  185 typedef int ImDrawListFlags;        
 
  186 typedef int ImFontAtlasFlags;       
 
  187 typedef int ImGuiBackendFlags;      
 
  188 typedef int ImGuiButtonFlags;       
 
  189 typedef int ImGuiColorEditFlags;    
 
  190 typedef int ImGuiConfigFlags;       
 
  191 typedef int ImGuiComboFlags;        
 
  192 typedef int ImGuiDragDropFlags;     
 
  193 typedef int ImGuiFocusedFlags;      
 
  194 typedef int ImGuiHoveredFlags;      
 
  195 typedef int ImGuiInputTextFlags;    
 
  196 typedef int ImGuiKeyChord;          
 
  197 typedef int ImGuiPopupFlags;        
 
  198 typedef int ImGuiSelectableFlags;   
 
  199 typedef int ImGuiSliderFlags;       
 
  200 typedef int ImGuiTabBarFlags;       
 
  201 typedef int ImGuiTabItemFlags;      
 
  202 typedef int ImGuiTableFlags;        
 
  203 typedef int ImGuiTableColumnFlags;  
 
  204 typedef int ImGuiTableRowFlags;     
 
  205 typedef int ImGuiTreeNodeFlags;     
 
  206 typedef int ImGuiViewportFlags;     
 
  207 typedef int ImGuiWindowFlags;       
 
  213 typedef void* ImTextureID;          
 
  220 typedef unsigned short ImDrawIdx;   
 
  224 typedef unsigned int        ImGuiID;
 
  225 typedef signed char         ImS8;   
 
  226 typedef unsigned char       ImU8;   
 
  227 typedef signed short        ImS16;  
 
  228 typedef unsigned short      ImU16;  
 
  229 typedef signed int          ImS32;  
 
  230 typedef unsigned int        ImU32;  
 
  231 typedef signed   long long  ImS64;  
 
  232 typedef unsigned long long  ImU64;  
 
  236 typedef unsigned short ImWchar16;   
 
  237 typedef unsigned int ImWchar32;     
 
  238 #ifdef IMGUI_USE_WCHAR32             
  239 typedef ImWchar32 ImWchar;
 
  241 typedef ImWchar16 ImWchar;
 
  247 typedef void*   (*ImGuiMemAllocFunc)(
size_t sz, 
void* user_data);               
 
  248 typedef void    (*ImGuiMemFreeFunc)(
void* ptr, 
void* user_data);                
 
  252 IM_MSVC_RUNTIME_CHECKS_OFF
 
  256     constexpr 
ImVec2()                      : x(0.0f), y(0.0f) { }
 
  257     constexpr 
ImVec2(
float _x, 
float _y)    : x(_x), y(_y) { }
 
  258     float  operator[] (
size_t idx)
 const    { IM_ASSERT(idx == 0 || idx == 1); 
return (&x)[idx]; }  
 
  259     float& operator[] (
size_t idx)          { IM_ASSERT(idx == 0 || idx == 1); 
return (&x)[idx]; }  
 
  260 #ifdef IM_VEC2_CLASS_EXTRA 
  269     constexpr 
ImVec4()                                        : x(0.0f), y(0.0f), z(0.0f), w(0.0f) { }
 
  270     constexpr 
ImVec4(
float _x, 
float _y, 
float _z, 
float _w)  : x(_x), y(_y), z(_z), w(_w) { }
 
  271 #ifdef IM_VEC4_CLASS_EXTRA 
  275 IM_MSVC_RUNTIME_CHECKS_RESTORE
 
  289     IMGUI_API 
void          DestroyContext(
ImGuiContext* ctx = NULL);   
 
  296     IMGUI_API 
void          NewFrame();                                 
 
  297     IMGUI_API 
void          EndFrame();                                 
 
  298     IMGUI_API 
void          Render();                                   
 
  302     IMGUI_API 
void          ShowDemoWindow(
bool* p_open = NULL);        
 
  303     IMGUI_API 
void          ShowMetricsWindow(
bool* p_open = NULL);     
 
  304     IMGUI_API 
void          ShowDebugLogWindow(
bool* p_open = NULL);    
 
  305     IMGUI_API 
void          ShowStackToolWindow(
bool* p_open = NULL);   
 
  306     IMGUI_API 
void          ShowAboutWindow(
bool* p_open = NULL);       
 
  307     IMGUI_API 
void          ShowStyleEditor(
ImGuiStyle* ref = NULL);    
 
  308     IMGUI_API 
bool          ShowStyleSelector(
const char* label);       
 
  309     IMGUI_API 
void          ShowFontSelector(
const char* label);        
 
  310     IMGUI_API 
void          ShowUserGuide();                            
 
  311     IMGUI_API 
const char*   GetVersion();                               
 
  314     IMGUI_API 
void          StyleColorsDark(
ImGuiStyle* dst = NULL);    
 
  315     IMGUI_API 
void          StyleColorsLight(
ImGuiStyle* dst = NULL);   
 
  316     IMGUI_API 
void          StyleColorsClassic(
ImGuiStyle* dst = NULL); 
 
  330     IMGUI_API 
bool          Begin(
const char* name, 
bool* p_open = NULL, ImGuiWindowFlags flags = 0);
 
  331     IMGUI_API 
void          End();
 
  341     IMGUI_API 
bool          BeginChild(
const char* str_id, 
const ImVec2& size = 
ImVec2(0, 0), 
bool border = 
false, ImGuiWindowFlags flags = 0);
 
  342     IMGUI_API 
bool          BeginChild(ImGuiID 
id, 
const ImVec2& size = 
ImVec2(0, 0), 
bool border = 
false, ImGuiWindowFlags flags = 0);
 
  343     IMGUI_API 
void          EndChild();
 
  347     IMGUI_API 
bool          IsWindowAppearing();
 
  348     IMGUI_API 
bool          IsWindowCollapsed();
 
  349     IMGUI_API 
bool          IsWindowFocused(ImGuiFocusedFlags flags=0); 
 
  350     IMGUI_API 
bool          IsWindowHovered(ImGuiHoveredFlags flags=0); 
 
  352     IMGUI_API 
ImVec2        GetWindowPos();                             
 
  353     IMGUI_API 
ImVec2        GetWindowSize();                            
 
  354     IMGUI_API 
float         GetWindowWidth();                           
 
  355     IMGUI_API 
float         GetWindowHeight();                          
 
  359     IMGUI_API 
void          SetNextWindowPos(
const ImVec2& pos, ImGuiCond cond = 0, 
const ImVec2& pivot = 
ImVec2(0, 0)); 
 
  360     IMGUI_API 
void          SetNextWindowSize(
const ImVec2& size, ImGuiCond cond = 0);                  
 
  361     IMGUI_API 
void          SetNextWindowSizeConstraints(
const ImVec2& size_min, 
const ImVec2& size_max, ImGuiSizeCallback custom_callback = NULL, 
void* custom_callback_data = NULL); 
 
  362     IMGUI_API 
void          SetNextWindowContentSize(
const ImVec2& size);                               
 
  363     IMGUI_API 
void          SetNextWindowCollapsed(
bool collapsed, ImGuiCond cond = 0);                 
 
  364     IMGUI_API 
void          SetNextWindowFocus();                                                       
 
  365     IMGUI_API 
void          SetNextWindowScroll(
const ImVec2& scroll);                                  
 
  366     IMGUI_API 
void          SetNextWindowBgAlpha(
float alpha);                                          
 
  367     IMGUI_API 
void          SetWindowPos(
const ImVec2& pos, ImGuiCond cond = 0);                        
 
  368     IMGUI_API 
void          SetWindowSize(
const ImVec2& size, ImGuiCond cond = 0);                      
 
  369     IMGUI_API 
void          SetWindowCollapsed(
bool collapsed, ImGuiCond cond = 0);                     
 
  370     IMGUI_API 
void          SetWindowFocus();                                                           
 
  371     IMGUI_API 
void          SetWindowFontScale(
float scale);                                            
 
  372     IMGUI_API 
void          SetWindowPos(
const char* name, 
const ImVec2& pos, ImGuiCond cond = 0);      
 
  373     IMGUI_API 
void          SetWindowSize(
const char* name, 
const ImVec2& size, ImGuiCond cond = 0);    
 
  374     IMGUI_API 
void          SetWindowCollapsed(
const char* name, 
bool collapsed, ImGuiCond cond = 0);   
 
  375     IMGUI_API 
void          SetWindowFocus(
const char* name);                                           
 
  380     IMGUI_API 
ImVec2        GetContentRegionAvail();                                        
 
  381     IMGUI_API 
ImVec2        GetContentRegionMax();                                          
 
  382     IMGUI_API 
ImVec2        GetWindowContentRegionMin();                                    
 
  383     IMGUI_API 
ImVec2        GetWindowContentRegionMax();                                    
 
  388     IMGUI_API 
float         GetScrollX();                                                   
 
  389     IMGUI_API 
float         GetScrollY();                                                   
 
  390     IMGUI_API 
void          SetScrollX(
float scroll_x);                                     
 
  391     IMGUI_API 
void          SetScrollY(
float scroll_y);                                     
 
  392     IMGUI_API 
float         GetScrollMaxX();                                                
 
  393     IMGUI_API 
float         GetScrollMaxY();                                                
 
  394     IMGUI_API 
void          SetScrollHereX(
float center_x_ratio = 0.5f);                    
 
  395     IMGUI_API 
void          SetScrollHereY(
float center_y_ratio = 0.5f);                    
 
  396     IMGUI_API 
void          SetScrollFromPosX(
float local_x, 
float center_x_ratio = 0.5f);  
 
  397     IMGUI_API 
void          SetScrollFromPosY(
float local_y, 
float center_y_ratio = 0.5f);  
 
  400     IMGUI_API 
void          PushFont(
ImFont* font);                                         
 
  401     IMGUI_API 
void          PopFont();
 
  402     IMGUI_API 
void          PushStyleColor(ImGuiCol idx, ImU32 col);                        
 
  403     IMGUI_API 
void          PushStyleColor(ImGuiCol idx, 
const ImVec4& col);
 
  404     IMGUI_API 
void          PopStyleColor(
int count = 1);
 
  405     IMGUI_API 
void          PushStyleVar(ImGuiStyleVar idx, 
float val);                     
 
  406     IMGUI_API 
void          PushStyleVar(ImGuiStyleVar idx, 
const ImVec2& val);             
 
  407     IMGUI_API 
void          PopStyleVar(
int count = 1);
 
  408     IMGUI_API 
void          PushAllowKeyboardFocus(
bool allow_keyboard_focus);              
 
  409     IMGUI_API 
void          PopAllowKeyboardFocus();
 
  410     IMGUI_API 
void          PushButtonRepeat(
bool repeat);                                  
 
  411     IMGUI_API 
void          PopButtonRepeat();
 
  414     IMGUI_API 
void          PushItemWidth(
float item_width);                                
 
  415     IMGUI_API 
void          PopItemWidth();
 
  416     IMGUI_API 
void          SetNextItemWidth(
float item_width);                             
 
  417     IMGUI_API 
float         CalcItemWidth();                                                
 
  418     IMGUI_API 
void          PushTextWrapPos(
float wrap_local_pos_x = 0.0f);                 
 
  419     IMGUI_API 
void          PopTextWrapPos();
 
  423     IMGUI_API 
ImFont*       GetFont();                                                      
 
  424     IMGUI_API 
float         GetFontSize();                                                  
 
  425     IMGUI_API 
ImVec2        GetFontTexUvWhitePixel();                                       
 
  426     IMGUI_API ImU32         GetColorU32(ImGuiCol idx, 
float alpha_mul = 1.0f);              
 
  427     IMGUI_API ImU32         GetColorU32(
const ImVec4& col);                                 
 
  428     IMGUI_API ImU32         GetColorU32(ImU32 col);                                         
 
  429     IMGUI_API 
const ImVec4& GetStyleColorVec4(ImGuiCol idx);                                
 
  438     IMGUI_API 
void          Separator();                                                    
 
  439     IMGUI_API 
void          SameLine(
float offset_from_start_x=0.0f, 
float spacing=-1.0f);  
 
  440     IMGUI_API 
void          NewLine();                                                      
 
  441     IMGUI_API 
void          Spacing();                                                      
 
  442     IMGUI_API 
void          Dummy(
const ImVec2& size);                                      
 
  443     IMGUI_API 
void          Indent(
float indent_w = 0.0f);                                  
 
  444     IMGUI_API 
void          Unindent(
float indent_w = 0.0f);                                
 
  445     IMGUI_API 
void          BeginGroup();                                                   
 
  446     IMGUI_API 
void          EndGroup();                                                     
 
  447     IMGUI_API 
ImVec2        GetCursorPos();                                                 
 
  448     IMGUI_API 
float         GetCursorPosX();                                                
 
  449     IMGUI_API 
float         GetCursorPosY();                                                
 
  450     IMGUI_API 
void          SetCursorPos(
const ImVec2& local_pos);                          
 
  451     IMGUI_API 
void          SetCursorPosX(
float local_x);                                   
 
  452     IMGUI_API 
void          SetCursorPosY(
float local_y);                                   
 
  453     IMGUI_API 
ImVec2        GetCursorStartPos();                                            
 
  454     IMGUI_API 
ImVec2        GetCursorScreenPos();                                           
 
  455     IMGUI_API 
void          SetCursorScreenPos(
const ImVec2& pos);                          
 
  456     IMGUI_API 
void          AlignTextToFramePadding();                                      
 
  457     IMGUI_API 
float         GetTextLineHeight();                                            
 
  458     IMGUI_API 
float         GetTextLineHeightWithSpacing();                                 
 
  459     IMGUI_API 
float         GetFrameHeight();                                               
 
  460     IMGUI_API 
float         GetFrameHeightWithSpacing();                                    
 
  473     IMGUI_API 
void          PushID(
const char* str_id);                                     
 
  474     IMGUI_API 
void          PushID(
const char* str_id_begin, 
const char* str_id_end);       
 
  475     IMGUI_API 
void          PushID(
const void* ptr_id);                                     
 
  476     IMGUI_API 
void          PushID(
int int_id);                                             
 
  477     IMGUI_API 
void          PopID();                                                        
 
  478     IMGUI_API ImGuiID       GetID(
const char* str_id);                                      
 
  479     IMGUI_API ImGuiID       GetID(
const char* str_id_begin, 
const char* str_id_end);
 
  480     IMGUI_API ImGuiID       GetID(
const void* ptr_id);
 
  483     IMGUI_API 
void          TextUnformatted(
const char* text, 
const char* text_end = NULL); 
 
  484     IMGUI_API 
void          Text(
const char* fmt, ...)                                      IM_FMTARGS(1); 
 
  485     IMGUI_API 
void          TextV(const 
char* fmt, va_list args)                            IM_FMTLIST(1);
 
  486     IMGUI_API 
void          TextColored(const 
ImVec4& col, const 
char* fmt, ...)            IM_FMTARGS(2); 
 
  487     IMGUI_API 
void          TextColoredV(const 
ImVec4& col, const 
char* fmt, va_list args)  IM_FMTLIST(2);
 
  488     IMGUI_API 
void          TextDisabled(const 
char* fmt, ...)                              IM_FMTARGS(1); 
 
  489     IMGUI_API 
void          TextDisabledV(const 
char* fmt, va_list args)                    IM_FMTLIST(1);
 
  490     IMGUI_API 
void          TextWrapped(const 
char* fmt, ...)                               IM_FMTARGS(1); 
 
  491     IMGUI_API 
void          TextWrappedV(const 
char* fmt, va_list args)                     IM_FMTLIST(1);
 
  492     IMGUI_API 
void          LabelText(const 
char* label, const 
char* fmt, ...)              IM_FMTARGS(2); 
 
  493     IMGUI_API 
void          LabelTextV(const 
char* label, const 
char* fmt, va_list args)    IM_FMTLIST(2);
 
  494     IMGUI_API 
void          BulletText(const 
char* fmt, ...)                                IM_FMTARGS(1); 
 
  495     IMGUI_API 
void          BulletTextV(const 
char* fmt, va_list args)                      IM_FMTLIST(1);
 
  500     IMGUI_API 
bool          Button(const 
char* label, const 
ImVec2& size = 
ImVec2(0, 0));   
 
  501     IMGUI_API 
bool          SmallButton(const 
char* label);                                 
 
  502     IMGUI_API 
bool          InvisibleButton(const 
char* str_id, const 
ImVec2& size, ImGuiButtonFlags flags = 0); 
 
  503     IMGUI_API 
bool          ArrowButton(const 
char* str_id, ImGuiDir dir);                  
 
  504     IMGUI_API 
bool          Checkbox(const 
char* label, 
bool* v);
 
  505     IMGUI_API 
bool          CheckboxFlags(const 
char* label, 
int* flags, 
int flags_value);
 
  506     IMGUI_API 
bool          CheckboxFlags(const 
char* label, 
unsigned int* flags, 
unsigned int flags_value);
 
  507     IMGUI_API 
bool          RadioButton(const 
char* label, 
bool active);                    
 
  508     IMGUI_API 
bool          RadioButton(const 
char* label, 
int* v, 
int v_button);           
 
  509     IMGUI_API 
void          ProgressBar(
float fraction, const 
ImVec2& size_arg = 
ImVec2(-FLT_MIN, 0), const 
char* overlay = NULL);
 
  510     IMGUI_API 
void          Bullet();                                                       
 
  514     IMGUI_API 
void          Image(ImTextureID user_texture_id, const 
ImVec2& size, const 
ImVec2& uv0 = 
ImVec2(0, 0), const 
ImVec2& uv1 = 
ImVec2(1, 1), const 
ImVec4& tint_col = 
ImVec4(1, 1, 1, 1), const 
ImVec4& border_col = 
ImVec4(0, 0, 0, 0));
 
  515     IMGUI_API 
bool          ImageButton(const 
char* str_id, ImTextureID user_texture_id, const 
ImVec2& size, const 
ImVec2& uv0 = 
ImVec2(0, 0), const 
ImVec2& uv1 = 
ImVec2(1, 1), const 
ImVec4& bg_col = 
ImVec4(0, 0, 0, 0), const 
ImVec4& tint_col = 
ImVec4(1, 1, 1, 1));
 
  520     IMGUI_API 
bool          BeginCombo(const 
char* label, const 
char* preview_value, ImGuiComboFlags flags = 0);
 
  521     IMGUI_API 
void          EndCombo(); 
 
  522     IMGUI_API 
bool          Combo(const 
char* label, 
int* current_item, const 
char* const items[], 
int items_count, 
int popup_max_height_in_items = -1);
 
  523     IMGUI_API 
bool          Combo(const 
char* label, 
int* current_item, const 
char* items_separated_by_zeros, 
int popup_max_height_in_items = -1);      
 
  524     IMGUI_API 
bool          Combo(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 = -1);
 
  538     IMGUI_API 
bool          DragFloat(const 
char* label, 
float* v, 
float v_speed = 1.0f, 
float v_min = 0.0f, 
float v_max = 0.0f, const 
char* format = "%.3f", ImGuiSliderFlags flags = 0);     
 
  539     IMGUI_API 
bool          DragFloat2(const 
char* label, 
float v[2], 
float v_speed = 1.0f, 
float v_min = 0.0f, 
float v_max = 0.0f, const 
char* format = "%.3f", ImGuiSliderFlags flags = 0);
 
  540     IMGUI_API 
bool          DragFloat3(const 
char* label, 
float v[3], 
float v_speed = 1.0f, 
float v_min = 0.0f, 
float v_max = 0.0f, const 
char* format = "%.3f", ImGuiSliderFlags flags = 0);
 
  541     IMGUI_API 
bool          DragFloat4(const 
char* label, 
float v[4], 
float v_speed = 1.0f, 
float v_min = 0.0f, 
float v_max = 0.0f, const 
char* format = "%.3f", ImGuiSliderFlags flags = 0);
 
  542     IMGUI_API 
bool          DragFloatRange2(const 
char* label, 
float* v_current_min, 
float* v_current_max, 
float v_speed = 1.0f, 
float v_min = 0.0f, 
float v_max = 0.0f, const 
char* format = "%.3f", const 
char* format_max = NULL, ImGuiSliderFlags flags = 0);
 
  543     IMGUI_API 
bool          DragInt(const 
char* label, 
int* v, 
float v_speed = 1.0f, 
int v_min = 0, 
int v_max = 0, const 
char* format = "%d", ImGuiSliderFlags flags = 0);  
 
  544     IMGUI_API 
bool          DragInt2(const 
char* label, 
int v[2], 
float v_speed = 1.0f, 
int v_min = 0, 
int v_max = 0, const 
char* format = "%d", ImGuiSliderFlags flags = 0);
 
  545     IMGUI_API 
bool          DragInt3(const 
char* label, 
int v[3], 
float v_speed = 1.0f, 
int v_min = 0, 
int v_max = 0, const 
char* format = "%d", ImGuiSliderFlags flags = 0);
 
  546     IMGUI_API 
bool          DragInt4(const 
char* label, 
int v[4], 
float v_speed = 1.0f, 
int v_min = 0, 
int v_max = 0, const 
char* format = "%d", ImGuiSliderFlags flags = 0);
 
  547     IMGUI_API 
bool          DragIntRange2(const 
char* label, 
int* v_current_min, 
int* v_current_max, 
float v_speed = 1.0f, 
int v_min = 0, 
int v_max = 0, const 
char* format = "%d", const 
char* format_max = NULL, ImGuiSliderFlags flags = 0);
 
  548     IMGUI_API 
bool          DragScalar(const 
char* label, ImGuiDataType data_type, 
void* p_data, 
float v_speed = 1.0f, const 
void* p_min = NULL, const 
void* p_max = NULL, const 
char* format = NULL, ImGuiSliderFlags flags = 0);
 
  549     IMGUI_API 
bool          DragScalarN(const 
char* label, ImGuiDataType data_type, 
void* p_data, 
int components, 
float v_speed = 1.0f, const 
void* p_min = NULL, const 
void* p_max = NULL, const 
char* format = NULL, ImGuiSliderFlags flags = 0);
 
  557     IMGUI_API 
bool          SliderFloat(const 
char* label, 
float* v, 
float v_min, 
float v_max, const 
char* format = "%.3f", ImGuiSliderFlags flags = 0);     
 
  558     IMGUI_API 
bool          SliderFloat2(const 
char* label, 
float v[2], 
float v_min, 
float v_max, const 
char* format = "%.3f", ImGuiSliderFlags flags = 0);
 
  559     IMGUI_API 
bool          SliderFloat3(const 
char* label, 
float v[3], 
float v_min, 
float v_max, const 
char* format = "%.3f", ImGuiSliderFlags flags = 0);
 
  560     IMGUI_API 
bool          SliderFloat4(const 
char* label, 
float v[4], 
float v_min, 
float v_max, const 
char* format = "%.3f", ImGuiSliderFlags flags = 0);
 
  561     IMGUI_API 
bool          SliderAngle(const 
char* label, 
float* v_rad, 
float v_degrees_min = -360.0f, 
float v_degrees_max = +360.0f, const 
char* format = "%.0f deg", ImGuiSliderFlags flags = 0);
 
  562     IMGUI_API 
bool          SliderInt(const 
char* label, 
int* v, 
int v_min, 
int v_max, const 
char* format = "%d", ImGuiSliderFlags flags = 0);
 
  563     IMGUI_API 
bool          SliderInt2(const 
char* label, 
int v[2], 
int v_min, 
int v_max, const 
char* format = "%d", ImGuiSliderFlags flags = 0);
 
  564     IMGUI_API 
bool          SliderInt3(const 
char* label, 
int v[3], 
int v_min, 
int v_max, const 
char* format = "%d", ImGuiSliderFlags flags = 0);
 
  565     IMGUI_API 
bool          SliderInt4(const 
char* label, 
int v[4], 
int v_min, 
int v_max, const 
char* format = "%d", ImGuiSliderFlags flags = 0);
 
  566     IMGUI_API 
bool          SliderScalar(const 
char* label, ImGuiDataType data_type, 
void* p_data, const 
void* p_min, const 
void* p_max, const 
char* format = NULL, ImGuiSliderFlags flags = 0);
 
  567     IMGUI_API 
bool          SliderScalarN(const 
char* label, ImGuiDataType data_type, 
void* p_data, 
int components, const 
void* p_min, const 
void* p_max, const 
char* format = NULL, ImGuiSliderFlags flags = 0);
 
  568     IMGUI_API 
bool          VSliderFloat(const 
char* label, const 
ImVec2& size, 
float* v, 
float v_min, 
float v_max, const 
char* format = "%.3f", ImGuiSliderFlags flags = 0);
 
  569     IMGUI_API 
bool          VSliderInt(const 
char* label, const 
ImVec2& size, 
int* v, 
int v_min, 
int v_max, const 
char* format = "%d", ImGuiSliderFlags flags = 0);
 
  570     IMGUI_API 
bool          VSliderScalar(const 
char* label, const 
ImVec2& size, ImGuiDataType data_type, 
void* p_data, const 
void* p_min, const 
void* p_max, const 
char* format = NULL, ImGuiSliderFlags flags = 0);
 
  575     IMGUI_API 
bool          InputText(const 
char* label, 
char* buf, 
size_t buf_size, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL, 
void* user_data = NULL);
 
  576     IMGUI_API 
bool          InputTextMultiline(const 
char* label, 
char* buf, 
size_t buf_size, const 
ImVec2& size = 
ImVec2(0, 0), ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL, 
void* user_data = NULL);
 
  577     IMGUI_API 
bool          InputTextWithHint(const 
char* label, const 
char* hint, 
char* buf, 
size_t buf_size, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL, 
void* user_data = NULL);
 
  578     IMGUI_API 
bool          InputFloat(const 
char* label, 
float* v, 
float step = 0.0f, 
float step_fast = 0.0f, const 
char* format = "%.3f", ImGuiInputTextFlags flags = 0);
 
  579     IMGUI_API 
bool          InputFloat2(const 
char* label, 
float v[2], const 
char* format = "%.3f", ImGuiInputTextFlags flags = 0);
 
  580     IMGUI_API 
bool          InputFloat3(const 
char* label, 
float v[3], const 
char* format = "%.3f", ImGuiInputTextFlags flags = 0);
 
  581     IMGUI_API 
bool          InputFloat4(const 
char* label, 
float v[4], const 
char* format = "%.3f", ImGuiInputTextFlags flags = 0);
 
  582     IMGUI_API 
bool          InputInt(const 
char* label, 
int* v, 
int step = 1, 
int step_fast = 100, ImGuiInputTextFlags flags = 0);
 
  583     IMGUI_API 
bool          InputInt2(const 
char* label, 
int v[2], ImGuiInputTextFlags flags = 0);
 
  584     IMGUI_API 
bool          InputInt3(const 
char* label, 
int v[3], ImGuiInputTextFlags flags = 0);
 
  585     IMGUI_API 
bool          InputInt4(const 
char* label, 
int v[4], ImGuiInputTextFlags flags = 0);
 
  586     IMGUI_API 
bool          InputDouble(const 
char* label, 
double* v, 
double step = 0.0, 
double step_fast = 0.0, const 
char* format = "%.6f", ImGuiInputTextFlags flags = 0);
 
  587     IMGUI_API 
bool          InputScalar(const 
char* label, ImGuiDataType data_type, 
void* p_data, const 
void* p_step = NULL, const 
void* p_step_fast = NULL, const 
char* format = NULL, ImGuiInputTextFlags flags = 0);
 
  588     IMGUI_API 
bool          InputScalarN(const 
char* label, ImGuiDataType data_type, 
void* p_data, 
int components, const 
void* p_step = NULL, const 
void* p_step_fast = NULL, const 
char* format = NULL, ImGuiInputTextFlags flags = 0);
 
  593     IMGUI_API 
bool          ColorEdit3(const 
char* label, 
float col[3], ImGuiColorEditFlags flags = 0);
 
  594     IMGUI_API 
bool          ColorEdit4(const 
char* label, 
float col[4], ImGuiColorEditFlags flags = 0);
 
  595     IMGUI_API 
bool          ColorPicker3(const 
char* label, 
float col[3], ImGuiColorEditFlags flags = 0);
 
  596     IMGUI_API 
bool          ColorPicker4(const 
char* label, 
float col[4], ImGuiColorEditFlags flags = 0, const 
float* ref_col = NULL);
 
  597     IMGUI_API 
bool          ColorButton(const 
char* desc_id, const 
ImVec4& col, ImGuiColorEditFlags flags = 0, const 
ImVec2& size = 
ImVec2(0, 0)); 
 
  598     IMGUI_API 
void          SetColorEditOptions(ImGuiColorEditFlags flags);                     
 
  602     IMGUI_API 
bool          TreeNode(const 
char* label);
 
  603     IMGUI_API 
bool          TreeNode(const 
char* str_id, const 
char* fmt, ...) IM_FMTARGS(2);   
 
  604     IMGUI_API 
bool          TreeNode(const 
void* ptr_id, const 
char* fmt, ...) IM_FMTARGS(2);   
 
  605     IMGUI_API 
bool          TreeNodeV(const 
char* str_id, const 
char* fmt, va_list args) IM_FMTLIST(2);
 
  606     IMGUI_API 
bool          TreeNodeV(const 
void* ptr_id, const 
char* fmt, va_list args) IM_FMTLIST(2);
 
  607     IMGUI_API 
bool          TreeNodeEx(const 
char* label, ImGuiTreeNodeFlags flags = 0);
 
  608     IMGUI_API 
bool          TreeNodeEx(const 
char* str_id, ImGuiTreeNodeFlags flags, const 
char* fmt, ...) IM_FMTARGS(3);
 
  609     IMGUI_API 
bool          TreeNodeEx(const 
void* ptr_id, ImGuiTreeNodeFlags flags, const 
char* fmt, ...) IM_FMTARGS(3);
 
  610     IMGUI_API 
bool          TreeNodeExV(const 
char* str_id, ImGuiTreeNodeFlags flags, const 
char* fmt, va_list args) IM_FMTLIST(3);
 
  611     IMGUI_API 
bool          TreeNodeExV(const 
void* ptr_id, ImGuiTreeNodeFlags flags, const 
char* fmt, va_list args) IM_FMTLIST(3);
 
  612     IMGUI_API 
void          TreePush(const 
char* str_id);                                       
 
  613     IMGUI_API 
void          TreePush(const 
void* ptr_id);                                       
 
  614     IMGUI_API 
void          TreePop();                                                          
 
  615     IMGUI_API 
float         GetTreeNodeToLabelSpacing();                                        
 
  616     IMGUI_API 
bool          CollapsingHeader(const 
char* label, ImGuiTreeNodeFlags flags = 0);  
 
  617     IMGUI_API 
bool          CollapsingHeader(const 
char* label, 
bool* p_visible, ImGuiTreeNodeFlags flags = 0); 
 
  618     IMGUI_API 
void          SetNextItemOpen(
bool is_open, ImGuiCond cond = 0);                  
 
  623     IMGUI_API 
bool          Selectable(const 
char* label, 
bool selected = false, ImGuiSelectableFlags flags = 0, const 
ImVec2& size = 
ImVec2(0, 0)); 
 
  624     IMGUI_API 
bool          Selectable(const 
char* label, 
bool* p_selected, ImGuiSelectableFlags flags = 0, const 
ImVec2& size = 
ImVec2(0, 0));      
 
  632     IMGUI_API 
bool          BeginListBox(const 
char* label, const 
ImVec2& size = 
ImVec2(0, 0)); 
 
  633     IMGUI_API 
void          EndListBox();                                                       
 
  634     IMGUI_API 
bool          ListBox(const 
char* label, 
int* current_item, const 
char* const items[], 
int items_count, 
int height_in_items = -1);
 
  635     IMGUI_API 
bool          ListBox(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 = -1);
 
  639     IMGUI_API 
void          PlotLines(const 
char* label, const 
float* values, 
int values_count, 
int values_offset = 0, const 
char* overlay_text = NULL, 
float scale_min = FLT_MAX, 
float scale_max = FLT_MAX, 
ImVec2 graph_size = 
ImVec2(0, 0), 
int stride = sizeof(
float));
 
  640     IMGUI_API 
void          PlotLines(const 
char* label, 
float(*values_getter)(
void* data, 
int idx), 
void* data, 
int values_count, 
int values_offset = 0, const 
char* overlay_text = NULL, 
float scale_min = FLT_MAX, 
float scale_max = FLT_MAX, 
ImVec2 graph_size = 
ImVec2(0, 0));
 
  641     IMGUI_API 
void          PlotHistogram(const 
char* label, const 
float* values, 
int values_count, 
int values_offset = 0, const 
char* overlay_text = NULL, 
float scale_min = FLT_MAX, 
float scale_max = FLT_MAX, 
ImVec2 graph_size = 
ImVec2(0, 0), 
int stride = sizeof(
float));
 
  642     IMGUI_API 
void          PlotHistogram(const 
char* label, 
float(*values_getter)(
void* data, 
int idx), 
void* data, 
int values_count, 
int values_offset = 0, const 
char* overlay_text = NULL, 
float scale_min = FLT_MAX, 
float scale_max = FLT_MAX, 
ImVec2 graph_size = 
ImVec2(0, 0));
 
  646     IMGUI_API 
void          Value(const 
char* prefix, 
bool b);
 
  647     IMGUI_API 
void          Value(const 
char* prefix, 
int v);
 
  648     IMGUI_API 
void          Value(const 
char* prefix, 
unsigned int v);
 
  649     IMGUI_API 
void          Value(const 
char* prefix, 
float v, const 
char* float_format = NULL);
 
  656     IMGUI_API 
bool          BeginMenuBar();                                                     
 
  657     IMGUI_API 
void          EndMenuBar();                                                       
 
  658     IMGUI_API 
bool          BeginMainMenuBar();                                                 
 
  659     IMGUI_API 
void          EndMainMenuBar();                                                   
 
  660     IMGUI_API 
bool          BeginMenu(const 
char* label, 
bool enabled = true);                  
 
  661     IMGUI_API 
void          EndMenu();                                                          
 
  662     IMGUI_API 
bool          MenuItem(const 
char* label, const 
char* shortcut = NULL, 
bool selected = false, 
bool enabled = true);  
 
  663     IMGUI_API 
bool          MenuItem(const 
char* label, const 
char* shortcut, 
bool* p_selected, 
bool enabled = true);              
 
  667     IMGUI_API 
void          BeginTooltip();                                                     
 
  668     IMGUI_API 
void          EndTooltip();
 
  669     IMGUI_API 
void          SetTooltip(const 
char* fmt, ...) IM_FMTARGS(1);                     
 
  670     IMGUI_API 
void          SetTooltipV(const 
char* fmt, va_list args) IM_FMTLIST(1);
 
  684     IMGUI_API 
bool          BeginPopup(const 
char* str_id, ImGuiWindowFlags flags = 0);                         
 
  685     IMGUI_API 
bool          BeginPopupModal(const 
char* name, 
bool* p_open = NULL, ImGuiWindowFlags flags = 0); 
 
  686     IMGUI_API 
void          EndPopup();                                                                         
 
  696     IMGUI_API 
void          OpenPopup(const 
char* str_id, ImGuiPopupFlags popup_flags = 0);                     
 
  697     IMGUI_API 
void          OpenPopup(ImGuiID 
id, ImGuiPopupFlags popup_flags = 0);                             
 
  698     IMGUI_API 
void          OpenPopupOnItemClick(const 
char* str_id = NULL, ImGuiPopupFlags popup_flags = 1);   
 
  699     IMGUI_API 
void          CloseCurrentPopup();                                                                
 
  706     IMGUI_API 
bool          BeginPopupContextItem(const 
char* str_id = NULL, ImGuiPopupFlags popup_flags = 1);  
 
  707     IMGUI_API 
bool          BeginPopupContextWindow(const 
char* str_id = NULL, ImGuiPopupFlags popup_flags = 1);
 
  708     IMGUI_API 
bool          BeginPopupContextVoid(const 
char* str_id = NULL, ImGuiPopupFlags popup_flags = 1);  
 
  714     IMGUI_API 
bool          IsPopupOpen(const 
char* str_id, ImGuiPopupFlags flags = 0);                         
 
  739     IMGUI_API 
bool          BeginTable(const 
char* str_id, 
int column, ImGuiTableFlags flags = 0, const 
ImVec2& outer_size = 
ImVec2(0.0f, 0.0f), 
float inner_width = 0.0f);
 
  740     IMGUI_API 
void          EndTable();                                         
 
  741     IMGUI_API 
void          TableNextRow(ImGuiTableRowFlags row_flags = 0, 
float min_row_height = 0.0f); 
 
  742     IMGUI_API 
bool          TableNextColumn();                                  
 
  743     IMGUI_API 
bool          TableSetColumnIndex(
int column_n);                  
 
  753     IMGUI_API 
void          TableSetupColumn(const 
char* label, ImGuiTableColumnFlags flags = 0, 
float init_width_or_weight = 0.0f, ImGuiID user_id = 0);
 
  754     IMGUI_API 
void          TableSetupScrollFreeze(
int cols, 
int rows);         
 
  755     IMGUI_API 
void          TableHeadersRow();                                  
 
  756     IMGUI_API 
void          TableHeader(const 
char* label);                     
 
  765     IMGUI_API 
int                   TableGetColumnCount();                      
 
  766     IMGUI_API 
int                   TableGetColumnIndex();                      
 
  767     IMGUI_API 
int                   TableGetRowIndex();                         
 
  768     IMGUI_API const 
char*           TableGetColumnName(
int column_n = -1);      
 
  769     IMGUI_API ImGuiTableColumnFlags TableGetColumnFlags(
int column_n = -1);     
 
  770     IMGUI_API 
void                  TableSetColumnEnabled(
int column_n, 
bool v);
 
  771     IMGUI_API 
void                  TableSetBgColor(ImGuiTableBgTarget target, ImU32 color, 
int column_n = -1);  
 
  775     IMGUI_API 
void          Columns(
int count = 1, const 
char* 
id = NULL, 
bool border = true);
 
  776     IMGUI_API 
void          NextColumn();                                                       
 
  777     IMGUI_API 
int           GetColumnIndex();                                                   
 
  778     IMGUI_API 
float         GetColumnWidth(
int column_index = -1);                              
 
  779     IMGUI_API 
void          SetColumnWidth(
int column_index, 
float width);                      
 
  780     IMGUI_API 
float         GetColumnOffset(
int column_index = -1);                             
 
  781     IMGUI_API 
void          SetColumnOffset(
int column_index, 
float offset_x);                  
 
  782     IMGUI_API 
int           GetColumnsCount();
 
  786     IMGUI_API 
bool          BeginTabBar(const 
char* str_id, ImGuiTabBarFlags flags = 0);        
 
  787     IMGUI_API 
void          EndTabBar();                                                        
 
  788     IMGUI_API 
bool          BeginTabItem(const 
char* label, 
bool* p_open = NULL, ImGuiTabItemFlags flags = 0); 
 
  789     IMGUI_API 
void          EndTabItem();                                                       
 
  790     IMGUI_API 
bool          TabItemButton(const 
char* label, ImGuiTabItemFlags flags = 0);      
 
  791     IMGUI_API 
void          SetTabItemClosed(const 
char* tab_or_docked_window_label);           
 
  795     IMGUI_API 
void          LogToTTY(
int auto_open_depth = -1);                                 
 
  796     IMGUI_API 
void          LogToFile(
int auto_open_depth = -1, const 
char* filename = NULL);   
 
  797     IMGUI_API 
void          LogToClipboard(
int auto_open_depth = -1);                           
 
  798     IMGUI_API 
void          LogFinish();                                                        
 
  799     IMGUI_API 
void          LogButtons();                                                       
 
  800     IMGUI_API 
void          LogText(const 
char* fmt, ...) IM_FMTARGS(1);                        
 
  801     IMGUI_API 
void          LogTextV(const 
char* fmt, va_list args) IM_FMTLIST(1);
 
  808     IMGUI_API 
bool          BeginDragDropSource(ImGuiDragDropFlags flags = 0);                                      
 
  809     IMGUI_API 
bool          SetDragDropPayload(const 
char* type, const 
void* data, 
size_t sz, ImGuiCond cond = 0);  
 
  810     IMGUI_API 
void          EndDragDropSource();                                                                    
 
  811     IMGUI_API 
bool                  BeginDragDropTarget();                                                          
 
  812     IMGUI_API const 
ImGuiPayload*   AcceptDragDropPayload(const 
char* type, ImGuiDragDropFlags flags = 0);          
 
  813     IMGUI_API 
void                  EndDragDropTarget();                                                            
 
  820     IMGUI_API 
void          BeginDisabled(
bool disabled = true);
 
  821     IMGUI_API 
void          EndDisabled();
 
  825     IMGUI_API 
void          PushClipRect(const 
ImVec2& clip_rect_min, const 
ImVec2& clip_rect_max, 
bool intersect_with_current_clip_rect);
 
  826     IMGUI_API 
void          PopClipRect();
 
  830     IMGUI_API 
void          SetItemDefaultFocus();                                              
 
  831     IMGUI_API 
void          SetKeyboardFocusHere(
int offset = 0);                               
 
  836     IMGUI_API 
bool          IsItemHovered(ImGuiHoveredFlags flags = 0);                         
 
  837     IMGUI_API 
bool          IsItemActive();                                                     
 
  838     IMGUI_API 
bool          IsItemFocused();                                                    
 
  839     IMGUI_API 
bool          IsItemClicked(ImGuiMouseButton mouse_button = 0);                   
 
  840     IMGUI_API 
bool          IsItemVisible();                                                    
 
  841     IMGUI_API 
bool          IsItemEdited();                                                     
 
  842     IMGUI_API 
bool          IsItemActivated();                                                  
 
  843     IMGUI_API 
bool          IsItemDeactivated();                                                
 
  844     IMGUI_API 
bool          IsItemDeactivatedAfterEdit();                                       
 
  845     IMGUI_API 
bool          IsItemToggledOpen();                                                
 
  846     IMGUI_API 
bool          IsAnyItemHovered();                                                 
 
  847     IMGUI_API 
bool          IsAnyItemActive();                                                  
 
  848     IMGUI_API 
bool          IsAnyItemFocused();                                                 
 
  849     IMGUI_API ImGuiID       GetItemID();                                                        
 
  850     IMGUI_API 
ImVec2        GetItemRectMin();                                                   
 
  851     IMGUI_API 
ImVec2        GetItemRectMax();                                                   
 
  852     IMGUI_API 
ImVec2        GetItemRectSize();                                                  
 
  853     IMGUI_API 
void          SetItemAllowOverlap();                                              
 
  862     IMGUI_API 
ImDrawList*   GetBackgroundDrawList();                                            
 
  863     IMGUI_API 
ImDrawList*   GetForegroundDrawList();                                            
 
  866     IMGUI_API 
bool          IsRectVisible(const 
ImVec2& size);                                  
 
  867     IMGUI_API 
bool          IsRectVisible(const 
ImVec2& rect_min, const 
ImVec2& rect_max);      
 
  868     IMGUI_API 
double        GetTime();                                                          
 
  869     IMGUI_API 
int           GetFrameCount();                                                    
 
  871     IMGUI_API const 
char*   GetStyleColorName(ImGuiCol idx);                                    
 
  874     IMGUI_API 
bool          BeginChildFrame(ImGuiID 
id, const 
ImVec2& size, ImGuiWindowFlags flags = 0); 
 
  875     IMGUI_API 
void          EndChildFrame();                                                    
 
  878     IMGUI_API 
ImVec2        CalcTextSize(const 
char* text, const 
char* text_end = NULL, 
bool hide_text_after_double_hash = false, 
float wrap_width = -1.0f);
 
  881     IMGUI_API 
ImVec4        ColorConvertU32ToFloat4(ImU32 in);
 
  882     IMGUI_API ImU32         ColorConvertFloat4ToU32(const 
ImVec4& in);
 
  883     IMGUI_API 
void          ColorConvertRGBtoHSV(
float r, 
float g, 
float b, 
float& out_h, 
float& out_s, 
float& out_v);
 
  884     IMGUI_API 
void          ColorConvertHSVtoRGB(
float h, 
float s, 
float v, 
float& out_r, 
float& out_g, 
float& out_b);
 
  891     IMGUI_API 
bool          IsKeyDown(ImGuiKey key);                                            
 
  892     IMGUI_API 
bool          IsKeyPressed(ImGuiKey key, 
bool repeat = true);                     
 
  893     IMGUI_API 
bool          IsKeyReleased(ImGuiKey key);                                        
 
  894     IMGUI_API 
int           GetKeyPressedAmount(ImGuiKey key, 
float repeat_delay, 
float rate);  
 
  895     IMGUI_API const 
char*   GetKeyName(ImGuiKey key);                                           
 
  896     IMGUI_API 
void          SetNextFrameWantCaptureKeyboard(
bool want_capture_keyboard);        
 
  902     IMGUI_API 
bool          IsMouseDown(ImGuiMouseButton button);                               
 
  903     IMGUI_API 
bool          IsMouseClicked(ImGuiMouseButton button, 
bool repeat = false);       
 
  904     IMGUI_API 
bool          IsMouseReleased(ImGuiMouseButton button);                           
 
  905     IMGUI_API 
bool          IsMouseDoubleClicked(ImGuiMouseButton button);                      
 
  906     IMGUI_API 
int           GetMouseClickedCount(ImGuiMouseButton button);                      
 
  907     IMGUI_API 
bool          IsMouseHoveringRect(const 
ImVec2& r_min, const 
ImVec2& r_max, 
bool clip = true);
 
  908     IMGUI_API 
bool          IsMousePosValid(const 
ImVec2* mouse_pos = NULL);                    
 
  909     IMGUI_API 
bool          IsAnyMouseDown();                                                   
 
  910     IMGUI_API 
ImVec2        GetMousePos();                                                      
 
  911     IMGUI_API 
ImVec2        GetMousePosOnOpeningCurrentPopup();                                 
 
  912     IMGUI_API 
bool          IsMouseDragging(ImGuiMouseButton button, 
float lock_threshold = -1.0f);         
 
  913     IMGUI_API 
ImVec2        GetMouseDragDelta(ImGuiMouseButton button = 0, 
float lock_threshold = -1.0f);   
 
  914     IMGUI_API 
void          ResetMouseDragDelta(ImGuiMouseButton button = 0);                   
 
  915     IMGUI_API ImGuiMouseCursor GetMouseCursor();                                                
 
  916     IMGUI_API 
void          SetMouseCursor(ImGuiMouseCursor cursor_type);                       
 
  917     IMGUI_API 
void          SetNextFrameWantCaptureMouse(
bool want_capture_mouse);              
 
  921     IMGUI_API const 
char*   GetClipboardText();
 
  922     IMGUI_API 
void          SetClipboardText(const 
char* text);
 
  928     IMGUI_API 
void          LoadIniSettingsFromDisk(const 
char* ini_filename);                  
 
  929     IMGUI_API 
void          LoadIniSettingsFromMemory(const 
char* ini_data, 
size_t ini_size=0); 
 
  930     IMGUI_API 
void          SaveIniSettingsToDisk(const 
char* ini_filename);                    
 
  931     IMGUI_API const 
char*   SaveIniSettingsToMemory(
size_t* out_ini_size = NULL);               
 
  934     IMGUI_API 
void          DebugTextEncoding(const 
char* text);
 
  935     IMGUI_API 
bool          DebugCheckVersionAndDataLayout(const 
char* version_str, 
size_t sz_io, 
size_t sz_style, 
size_t sz_vec2, 
size_t sz_vec4, 
size_t sz_drawvert, 
size_t sz_drawidx); 
 
  941     IMGUI_API 
void          SetAllocatorFunctions(ImGuiMemAllocFunc alloc_func, ImGuiMemFreeFunc free_func, 
void* user_data = NULL);
 
  942     IMGUI_API 
void          GetAllocatorFunctions(ImGuiMemAllocFunc* p_alloc_func, ImGuiMemFreeFunc* p_free_func, 
void** p_user_data);
 
  943     IMGUI_API 
void*         MemAlloc(
size_t size);
 
  944     IMGUI_API 
void          MemFree(
void* ptr);
 
  954 enum ImGuiWindowFlags_
 
  956     ImGuiWindowFlags_None                   = 0,
 
  957     ImGuiWindowFlags_NoTitleBar             = 1 << 0,   
 
  958     ImGuiWindowFlags_NoResize               = 1 << 1,   
 
  959     ImGuiWindowFlags_NoMove                 = 1 << 2,   
 
  960     ImGuiWindowFlags_NoScrollbar            = 1 << 3,   
 
  961     ImGuiWindowFlags_NoScrollWithMouse      = 1 << 4,   
 
  962     ImGuiWindowFlags_NoCollapse             = 1 << 5,   
 
  963     ImGuiWindowFlags_AlwaysAutoResize       = 1 << 6,   
 
  964     ImGuiWindowFlags_NoBackground           = 1 << 7,   
 
  965     ImGuiWindowFlags_NoSavedSettings        = 1 << 8,   
 
  966     ImGuiWindowFlags_NoMouseInputs          = 1 << 9,   
 
  967     ImGuiWindowFlags_MenuBar                = 1 << 10,  
 
  968     ImGuiWindowFlags_HorizontalScrollbar    = 1 << 11,  
 
  969     ImGuiWindowFlags_NoFocusOnAppearing     = 1 << 12,  
 
  970     ImGuiWindowFlags_NoBringToFrontOnFocus  = 1 << 13,  
 
  971     ImGuiWindowFlags_AlwaysVerticalScrollbar= 1 << 14,  
 
  972     ImGuiWindowFlags_AlwaysHorizontalScrollbar=1<< 15,  
 
  973     ImGuiWindowFlags_AlwaysUseWindowPadding = 1 << 16,  
 
  974     ImGuiWindowFlags_NoNavInputs            = 1 << 18,  
 
  975     ImGuiWindowFlags_NoNavFocus             = 1 << 19,  
 
  976     ImGuiWindowFlags_UnsavedDocument        = 1 << 20,  
 
  977     ImGuiWindowFlags_NoNav                  = ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus,
 
  978     ImGuiWindowFlags_NoDecoration           = ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoCollapse,
 
  979     ImGuiWindowFlags_NoInputs               = ImGuiWindowFlags_NoMouseInputs | ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus,
 
  982     ImGuiWindowFlags_NavFlattened           = 1 << 23,  
 
  983     ImGuiWindowFlags_ChildWindow            = 1 << 24,  
 
  984     ImGuiWindowFlags_Tooltip                = 1 << 25,  
 
  985     ImGuiWindowFlags_Popup                  = 1 << 26,  
 
  986     ImGuiWindowFlags_Modal                  = 1 << 27,  
 
  987     ImGuiWindowFlags_ChildMenu              = 1 << 28,  
 
  992 enum ImGuiInputTextFlags_
 
  994     ImGuiInputTextFlags_None                = 0,
 
  995     ImGuiInputTextFlags_CharsDecimal        = 1 << 0,   
 
  996     ImGuiInputTextFlags_CharsHexadecimal    = 1 << 1,   
 
  997     ImGuiInputTextFlags_CharsUppercase      = 1 << 2,   
 
  998     ImGuiInputTextFlags_CharsNoBlank        = 1 << 3,   
 
  999     ImGuiInputTextFlags_AutoSelectAll       = 1 << 4,   
 
 1000     ImGuiInputTextFlags_EnterReturnsTrue    = 1 << 5,   
 
 1001     ImGuiInputTextFlags_CallbackCompletion  = 1 << 6,   
 
 1002     ImGuiInputTextFlags_CallbackHistory     = 1 << 7,   
 
 1003     ImGuiInputTextFlags_CallbackAlways      = 1 << 8,   
 
 1004     ImGuiInputTextFlags_CallbackCharFilter  = 1 << 9,   
 
 1005     ImGuiInputTextFlags_AllowTabInput       = 1 << 10,  
 
 1006     ImGuiInputTextFlags_CtrlEnterForNewLine = 1 << 11,  
 
 1007     ImGuiInputTextFlags_NoHorizontalScroll  = 1 << 12,  
 
 1008     ImGuiInputTextFlags_AlwaysOverwrite     = 1 << 13,  
 
 1009     ImGuiInputTextFlags_ReadOnly            = 1 << 14,  
 
 1010     ImGuiInputTextFlags_Password            = 1 << 15,  
 
 1011     ImGuiInputTextFlags_NoUndoRedo          = 1 << 16,  
 
 1012     ImGuiInputTextFlags_CharsScientific     = 1 << 17,  
 
 1013     ImGuiInputTextFlags_CallbackResize      = 1 << 18,  
 
 1014     ImGuiInputTextFlags_CallbackEdit        = 1 << 19,  
 
 1015     ImGuiInputTextFlags_EscapeClearsAll     = 1 << 20,  
 
 1018 #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS 
 1019     ImGuiInputTextFlags_AlwaysInsertMode    = ImGuiInputTextFlags_AlwaysOverwrite   
 
 1024 enum ImGuiTreeNodeFlags_
 
 1026     ImGuiTreeNodeFlags_None                 = 0,
 
 1027     ImGuiTreeNodeFlags_Selected             = 1 << 0,   
 
 1028     ImGuiTreeNodeFlags_Framed               = 1 << 1,   
 
 1029     ImGuiTreeNodeFlags_AllowItemOverlap     = 1 << 2,   
 
 1030     ImGuiTreeNodeFlags_NoTreePushOnOpen     = 1 << 3,   
 
 1031     ImGuiTreeNodeFlags_NoAutoOpenOnLog      = 1 << 4,   
 
 1032     ImGuiTreeNodeFlags_DefaultOpen          = 1 << 5,   
 
 1033     ImGuiTreeNodeFlags_OpenOnDoubleClick    = 1 << 6,   
 
 1034     ImGuiTreeNodeFlags_OpenOnArrow          = 1 << 7,   
 
 1035     ImGuiTreeNodeFlags_Leaf                 = 1 << 8,   
 
 1036     ImGuiTreeNodeFlags_Bullet               = 1 << 9,   
 
 1037     ImGuiTreeNodeFlags_FramePadding         = 1 << 10,  
 
 1038     ImGuiTreeNodeFlags_SpanAvailWidth       = 1 << 11,  
 
 1039     ImGuiTreeNodeFlags_SpanFullWidth        = 1 << 12,  
 
 1040     ImGuiTreeNodeFlags_NavLeftJumpsBackHere = 1 << 13,  
 
 1042     ImGuiTreeNodeFlags_CollapsingHeader     = ImGuiTreeNodeFlags_Framed | ImGuiTreeNodeFlags_NoTreePushOnOpen | ImGuiTreeNodeFlags_NoAutoOpenOnLog,
 
 1053 enum ImGuiPopupFlags_
 
 1055     ImGuiPopupFlags_None                    = 0,
 
 1056     ImGuiPopupFlags_MouseButtonLeft         = 0,        
 
 1057     ImGuiPopupFlags_MouseButtonRight        = 1,        
 
 1058     ImGuiPopupFlags_MouseButtonMiddle       = 2,        
 
 1059     ImGuiPopupFlags_MouseButtonMask_        = 0x1F,
 
 1060     ImGuiPopupFlags_MouseButtonDefault_     = 1,
 
 1061     ImGuiPopupFlags_NoOpenOverExistingPopup = 1 << 5,   
 
 1062     ImGuiPopupFlags_NoOpenOverItems         = 1 << 6,   
 
 1063     ImGuiPopupFlags_AnyPopupId              = 1 << 7,   
 
 1064     ImGuiPopupFlags_AnyPopupLevel           = 1 << 8,   
 
 1065     ImGuiPopupFlags_AnyPopup                = ImGuiPopupFlags_AnyPopupId | ImGuiPopupFlags_AnyPopupLevel,
 
 1069 enum ImGuiSelectableFlags_
 
 1071     ImGuiSelectableFlags_None               = 0,
 
 1072     ImGuiSelectableFlags_DontClosePopups    = 1 << 0,   
 
 1073     ImGuiSelectableFlags_SpanAllColumns     = 1 << 1,   
 
 1074     ImGuiSelectableFlags_AllowDoubleClick   = 1 << 2,   
 
 1075     ImGuiSelectableFlags_Disabled           = 1 << 3,   
 
 1076     ImGuiSelectableFlags_AllowItemOverlap   = 1 << 4,   
 
 1080 enum ImGuiComboFlags_
 
 1082     ImGuiComboFlags_None                    = 0,
 
 1083     ImGuiComboFlags_PopupAlignLeft          = 1 << 0,   
 
 1084     ImGuiComboFlags_HeightSmall             = 1 << 1,   
 
 1085     ImGuiComboFlags_HeightRegular           = 1 << 2,   
 
 1086     ImGuiComboFlags_HeightLarge             = 1 << 3,   
 
 1087     ImGuiComboFlags_HeightLargest           = 1 << 4,   
 
 1088     ImGuiComboFlags_NoArrowButton           = 1 << 5,   
 
 1089     ImGuiComboFlags_NoPreview               = 1 << 6,   
 
 1090     ImGuiComboFlags_HeightMask_             = ImGuiComboFlags_HeightSmall | ImGuiComboFlags_HeightRegular | ImGuiComboFlags_HeightLarge | ImGuiComboFlags_HeightLargest,
 
 1094 enum ImGuiTabBarFlags_
 
 1096     ImGuiTabBarFlags_None                           = 0,
 
 1097     ImGuiTabBarFlags_Reorderable                    = 1 << 0,   
 
 1098     ImGuiTabBarFlags_AutoSelectNewTabs              = 1 << 1,   
 
 1099     ImGuiTabBarFlags_TabListPopupButton             = 1 << 2,   
 
 1100     ImGuiTabBarFlags_NoCloseWithMiddleMouseButton   = 1 << 3,   
 
 1101     ImGuiTabBarFlags_NoTabListScrollingButtons      = 1 << 4,   
 
 1102     ImGuiTabBarFlags_NoTooltip                      = 1 << 5,   
 
 1103     ImGuiTabBarFlags_FittingPolicyResizeDown        = 1 << 6,   
 
 1104     ImGuiTabBarFlags_FittingPolicyScroll            = 1 << 7,   
 
 1105     ImGuiTabBarFlags_FittingPolicyMask_             = ImGuiTabBarFlags_FittingPolicyResizeDown | ImGuiTabBarFlags_FittingPolicyScroll,
 
 1106     ImGuiTabBarFlags_FittingPolicyDefault_          = ImGuiTabBarFlags_FittingPolicyResizeDown,
 
 1110 enum ImGuiTabItemFlags_
 
 1112     ImGuiTabItemFlags_None                          = 0,
 
 1113     ImGuiTabItemFlags_UnsavedDocument               = 1 << 0,   
 
 1114     ImGuiTabItemFlags_SetSelected                   = 1 << 1,   
 
 1115     ImGuiTabItemFlags_NoCloseWithMiddleMouseButton  = 1 << 2,   
 
 1116     ImGuiTabItemFlags_NoPushId                      = 1 << 3,   
 
 1117     ImGuiTabItemFlags_NoTooltip                     = 1 << 4,   
 
 1118     ImGuiTabItemFlags_NoReorder                     = 1 << 5,   
 
 1119     ImGuiTabItemFlags_Leading                       = 1 << 6,   
 
 1120     ImGuiTabItemFlags_Trailing                      = 1 << 7,   
 
 1145 enum ImGuiTableFlags_
 
 1148     ImGuiTableFlags_None                       = 0,
 
 1149     ImGuiTableFlags_Resizable                  = 1 << 0,   
 
 1150     ImGuiTableFlags_Reorderable                = 1 << 1,   
 
 1151     ImGuiTableFlags_Hideable                   = 1 << 2,   
 
 1152     ImGuiTableFlags_Sortable                   = 1 << 3,   
 
 1153     ImGuiTableFlags_NoSavedSettings            = 1 << 4,   
 
 1154     ImGuiTableFlags_ContextMenuInBody          = 1 << 5,   
 
 1156     ImGuiTableFlags_RowBg                      = 1 << 6,   
 
 1157     ImGuiTableFlags_BordersInnerH              = 1 << 7,   
 
 1158     ImGuiTableFlags_BordersOuterH              = 1 << 8,   
 
 1159     ImGuiTableFlags_BordersInnerV              = 1 << 9,   
 
 1160     ImGuiTableFlags_BordersOuterV              = 1 << 10,  
 
 1161     ImGuiTableFlags_BordersH                   = ImGuiTableFlags_BordersInnerH | ImGuiTableFlags_BordersOuterH, 
 
 1162     ImGuiTableFlags_BordersV                   = ImGuiTableFlags_BordersInnerV | ImGuiTableFlags_BordersOuterV, 
 
 1163     ImGuiTableFlags_BordersInner               = ImGuiTableFlags_BordersInnerV | ImGuiTableFlags_BordersInnerH, 
 
 1164     ImGuiTableFlags_BordersOuter               = ImGuiTableFlags_BordersOuterV | ImGuiTableFlags_BordersOuterH, 
 
 1165     ImGuiTableFlags_Borders                    = ImGuiTableFlags_BordersInner | ImGuiTableFlags_BordersOuter,   
 
 1166     ImGuiTableFlags_NoBordersInBody            = 1 << 11,  
 
 1167     ImGuiTableFlags_NoBordersInBodyUntilResize = 1 << 12,  
 
 1169     ImGuiTableFlags_SizingFixedFit             = 1 << 13,  
 
 1170     ImGuiTableFlags_SizingFixedSame            = 2 << 13,  
 
 1171     ImGuiTableFlags_SizingStretchProp          = 3 << 13,  
 
 1172     ImGuiTableFlags_SizingStretchSame          = 4 << 13,  
 
 1174     ImGuiTableFlags_NoHostExtendX              = 1 << 16,  
 
 1175     ImGuiTableFlags_NoHostExtendY              = 1 << 17,  
 
 1176     ImGuiTableFlags_NoKeepColumnsVisible       = 1 << 18,  
 
 1177     ImGuiTableFlags_PreciseWidths              = 1 << 19,  
 
 1179     ImGuiTableFlags_NoClip                     = 1 << 20,  
 
 1181     ImGuiTableFlags_PadOuterX                  = 1 << 21,  
 
 1182     ImGuiTableFlags_NoPadOuterX                = 1 << 22,  
 
 1183     ImGuiTableFlags_NoPadInnerX                = 1 << 23,  
 
 1185     ImGuiTableFlags_ScrollX                    = 1 << 24,  
 
 1186     ImGuiTableFlags_ScrollY                    = 1 << 25,  
 
 1188     ImGuiTableFlags_SortMulti                  = 1 << 26,  
 
 1189     ImGuiTableFlags_SortTristate               = 1 << 27,  
 
 1192     ImGuiTableFlags_SizingMask_                = ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_SizingFixedSame | ImGuiTableFlags_SizingStretchProp | ImGuiTableFlags_SizingStretchSame,
 
 1196 enum ImGuiTableColumnFlags_
 
 1199     ImGuiTableColumnFlags_None                  = 0,
 
 1200     ImGuiTableColumnFlags_Disabled              = 1 << 0,   
 
 1201     ImGuiTableColumnFlags_DefaultHide           = 1 << 1,   
 
 1202     ImGuiTableColumnFlags_DefaultSort           = 1 << 2,   
 
 1203     ImGuiTableColumnFlags_WidthStretch          = 1 << 3,   
 
 1204     ImGuiTableColumnFlags_WidthFixed            = 1 << 4,   
 
 1205     ImGuiTableColumnFlags_NoResize              = 1 << 5,   
 
 1206     ImGuiTableColumnFlags_NoReorder             = 1 << 6,   
 
 1207     ImGuiTableColumnFlags_NoHide                = 1 << 7,   
 
 1208     ImGuiTableColumnFlags_NoClip                = 1 << 8,   
 
 1209     ImGuiTableColumnFlags_NoSort                = 1 << 9,   
 
 1210     ImGuiTableColumnFlags_NoSortAscending       = 1 << 10,  
 
 1211     ImGuiTableColumnFlags_NoSortDescending      = 1 << 11,  
 
 1212     ImGuiTableColumnFlags_NoHeaderLabel         = 1 << 12,  
 
 1213     ImGuiTableColumnFlags_NoHeaderWidth         = 1 << 13,  
 
 1214     ImGuiTableColumnFlags_PreferSortAscending   = 1 << 14,  
 
 1215     ImGuiTableColumnFlags_PreferSortDescending  = 1 << 15,  
 
 1216     ImGuiTableColumnFlags_IndentEnable          = 1 << 16,  
 
 1217     ImGuiTableColumnFlags_IndentDisable         = 1 << 17,  
 
 1220     ImGuiTableColumnFlags_IsEnabled             = 1 << 24,  
 
 1221     ImGuiTableColumnFlags_IsVisible             = 1 << 25,  
 
 1222     ImGuiTableColumnFlags_IsSorted              = 1 << 26,  
 
 1223     ImGuiTableColumnFlags_IsHovered             = 1 << 27,  
 
 1226     ImGuiTableColumnFlags_WidthMask_            = ImGuiTableColumnFlags_WidthStretch | ImGuiTableColumnFlags_WidthFixed,
 
 1227     ImGuiTableColumnFlags_IndentMask_           = ImGuiTableColumnFlags_IndentEnable | ImGuiTableColumnFlags_IndentDisable,
 
 1228     ImGuiTableColumnFlags_StatusMask_           = ImGuiTableColumnFlags_IsEnabled | ImGuiTableColumnFlags_IsVisible | ImGuiTableColumnFlags_IsSorted | ImGuiTableColumnFlags_IsHovered,
 
 1229     ImGuiTableColumnFlags_NoDirectResize_       = 1 << 30,  
 
 1233 enum ImGuiTableRowFlags_
 
 1235     ImGuiTableRowFlags_None                     = 0,
 
 1236     ImGuiTableRowFlags_Headers                  = 1 << 0,   
 
 1248 enum ImGuiTableBgTarget_
 
 1250     ImGuiTableBgTarget_None                     = 0,
 
 1251     ImGuiTableBgTarget_RowBg0                   = 1,        
 
 1252     ImGuiTableBgTarget_RowBg1                   = 2,        
 
 1253     ImGuiTableBgTarget_CellBg                   = 3,        
 
 1257 enum ImGuiFocusedFlags_
 
 1259     ImGuiFocusedFlags_None                          = 0,
 
 1260     ImGuiFocusedFlags_ChildWindows                  = 1 << 0,   
 
 1261     ImGuiFocusedFlags_RootWindow                    = 1 << 1,   
 
 1262     ImGuiFocusedFlags_AnyWindow                     = 1 << 2,   
 
 1263     ImGuiFocusedFlags_NoPopupHierarchy              = 1 << 3,   
 
 1265     ImGuiFocusedFlags_RootAndChildWindows           = ImGuiFocusedFlags_RootWindow | ImGuiFocusedFlags_ChildWindows,
 
 1271 enum ImGuiHoveredFlags_
 
 1273     ImGuiHoveredFlags_None                          = 0,        
 
 1274     ImGuiHoveredFlags_ChildWindows                  = 1 << 0,   
 
 1275     ImGuiHoveredFlags_RootWindow                    = 1 << 1,   
 
 1276     ImGuiHoveredFlags_AnyWindow                     = 1 << 2,   
 
 1277     ImGuiHoveredFlags_NoPopupHierarchy              = 1 << 3,   
 
 1279     ImGuiHoveredFlags_AllowWhenBlockedByPopup       = 1 << 5,   
 
 1281     ImGuiHoveredFlags_AllowWhenBlockedByActiveItem  = 1 << 7,   
 
 1282     ImGuiHoveredFlags_AllowWhenOverlapped           = 1 << 8,   
 
 1283     ImGuiHoveredFlags_AllowWhenDisabled             = 1 << 9,   
 
 1284     ImGuiHoveredFlags_NoNavOverride                 = 1 << 10,  
 
 1285     ImGuiHoveredFlags_RectOnly                      = ImGuiHoveredFlags_AllowWhenBlockedByPopup | ImGuiHoveredFlags_AllowWhenBlockedByActiveItem | ImGuiHoveredFlags_AllowWhenOverlapped,
 
 1286     ImGuiHoveredFlags_RootAndChildWindows           = ImGuiHoveredFlags_RootWindow | ImGuiHoveredFlags_ChildWindows,
 
 1289     ImGuiHoveredFlags_DelayNormal                   = 1 << 11,  
 
 1290     ImGuiHoveredFlags_DelayShort                    = 1 << 12,  
 
 1291     ImGuiHoveredFlags_NoSharedDelay                 = 1 << 13,  
 
 1295 enum ImGuiDragDropFlags_
 
 1297     ImGuiDragDropFlags_None                         = 0,
 
 1299     ImGuiDragDropFlags_SourceNoPreviewTooltip       = 1 << 0,   
 
 1300     ImGuiDragDropFlags_SourceNoDisableHover         = 1 << 1,   
 
 1301     ImGuiDragDropFlags_SourceNoHoldToOpenOthers     = 1 << 2,   
 
 1302     ImGuiDragDropFlags_SourceAllowNullID            = 1 << 3,   
 
 1303     ImGuiDragDropFlags_SourceExtern                 = 1 << 4,   
 
 1304     ImGuiDragDropFlags_SourceAutoExpirePayload      = 1 << 5,   
 
 1306     ImGuiDragDropFlags_AcceptBeforeDelivery         = 1 << 10,  
 
 1307     ImGuiDragDropFlags_AcceptNoDrawDefaultRect      = 1 << 11,  
 
 1308     ImGuiDragDropFlags_AcceptNoPreviewTooltip       = 1 << 12,  
 
 1309     ImGuiDragDropFlags_AcceptPeekOnly               = ImGuiDragDropFlags_AcceptBeforeDelivery | ImGuiDragDropFlags_AcceptNoDrawDefaultRect, 
 
 1313 #define IMGUI_PAYLOAD_TYPE_COLOR_3F     "_COL3F"     
 1314 #define IMGUI_PAYLOAD_TYPE_COLOR_4F     "_COL4F"     
 1327     ImGuiDataType_Float,    
 
 1328     ImGuiDataType_Double,   
 
 1344 enum ImGuiSortDirection_
 
 1346     ImGuiSortDirection_None         = 0,
 
 1347     ImGuiSortDirection_Ascending    = 1,    
 
 1348     ImGuiSortDirection_Descending   = 2     
 
 1361     ImGuiKey_RightArrow,
 
 1374     ImGuiKey_LeftCtrl, ImGuiKey_LeftShift, ImGuiKey_LeftAlt, ImGuiKey_LeftSuper,
 
 1375     ImGuiKey_RightCtrl, ImGuiKey_RightShift, ImGuiKey_RightAlt, ImGuiKey_RightSuper,
 
 1377     ImGuiKey_0, ImGuiKey_1, ImGuiKey_2, ImGuiKey_3, ImGuiKey_4, ImGuiKey_5, ImGuiKey_6, ImGuiKey_7, ImGuiKey_8, ImGuiKey_9,
 
 1378     ImGuiKey_A, ImGuiKey_B, ImGuiKey_C, ImGuiKey_D, ImGuiKey_E, ImGuiKey_F, ImGuiKey_G, ImGuiKey_H, ImGuiKey_I, ImGuiKey_J,
 
 1379     ImGuiKey_K, ImGuiKey_L, ImGuiKey_M, ImGuiKey_N, ImGuiKey_O, ImGuiKey_P, ImGuiKey_Q, ImGuiKey_R, ImGuiKey_S, ImGuiKey_T,
 
 1380     ImGuiKey_U, ImGuiKey_V, ImGuiKey_W, ImGuiKey_X, ImGuiKey_Y, ImGuiKey_Z,
 
 1381     ImGuiKey_F1, ImGuiKey_F2, ImGuiKey_F3, ImGuiKey_F4, ImGuiKey_F5, ImGuiKey_F6,
 
 1382     ImGuiKey_F7, ImGuiKey_F8, ImGuiKey_F9, ImGuiKey_F10, ImGuiKey_F11, ImGuiKey_F12,
 
 1383     ImGuiKey_Apostrophe,        
 
 1390     ImGuiKey_LeftBracket,       
 
 1392     ImGuiKey_RightBracket,      
 
 1393     ImGuiKey_GraveAccent,       
 
 1395     ImGuiKey_ScrollLock,
 
 1397     ImGuiKey_PrintScreen,
 
 1399     ImGuiKey_Keypad0, ImGuiKey_Keypad1, ImGuiKey_Keypad2, ImGuiKey_Keypad3, ImGuiKey_Keypad4,
 
 1400     ImGuiKey_Keypad5, ImGuiKey_Keypad6, ImGuiKey_Keypad7, ImGuiKey_Keypad8, ImGuiKey_Keypad9,
 
 1401     ImGuiKey_KeypadDecimal,
 
 1402     ImGuiKey_KeypadDivide,
 
 1403     ImGuiKey_KeypadMultiply,
 
 1404     ImGuiKey_KeypadSubtract,
 
 1406     ImGuiKey_KeypadEnter,
 
 1407     ImGuiKey_KeypadEqual,
 
 1411     ImGuiKey_GamepadStart,          
 
 1412     ImGuiKey_GamepadBack,           
 
 1413     ImGuiKey_GamepadFaceLeft,       
 
 1414     ImGuiKey_GamepadFaceRight,      
 
 1415     ImGuiKey_GamepadFaceUp,         
 
 1416     ImGuiKey_GamepadFaceDown,       
 
 1417     ImGuiKey_GamepadDpadLeft,       
 
 1418     ImGuiKey_GamepadDpadRight,      
 
 1419     ImGuiKey_GamepadDpadUp,         
 
 1420     ImGuiKey_GamepadDpadDown,       
 
 1427     ImGuiKey_GamepadLStickLeft,     
 
 1428     ImGuiKey_GamepadLStickRight,    
 
 1429     ImGuiKey_GamepadLStickUp,       
 
 1430     ImGuiKey_GamepadLStickDown,     
 
 1431     ImGuiKey_GamepadRStickLeft,     
 
 1432     ImGuiKey_GamepadRStickRight,    
 
 1433     ImGuiKey_GamepadRStickUp,       
 
 1434     ImGuiKey_GamepadRStickDown,     
 
 1438     ImGuiKey_MouseLeft, ImGuiKey_MouseRight, ImGuiKey_MouseMiddle, ImGuiKey_MouseX1, ImGuiKey_MouseX2, ImGuiKey_MouseWheelX, ImGuiKey_MouseWheelY,
 
 1441     ImGuiKey_ReservedForModCtrl, ImGuiKey_ReservedForModShift, ImGuiKey_ReservedForModAlt, ImGuiKey_ReservedForModSuper,
 
 1453     ImGuiMod_Ctrl                   = 1 << 12, 
 
 1454     ImGuiMod_Shift                  = 1 << 13, 
 
 1455     ImGuiMod_Alt                    = 1 << 14, 
 
 1456     ImGuiMod_Super                  = 1 << 15, 
 
 1457     ImGuiMod_Shortcut               = 1 << 11, 
 
 1458     ImGuiMod_Mask_                  = 0xF800,  
 
 1462     ImGuiKey_NamedKey_BEGIN         = 512,
 
 1463     ImGuiKey_NamedKey_END           = ImGuiKey_COUNT,
 
 1464     ImGuiKey_NamedKey_COUNT         = ImGuiKey_NamedKey_END - ImGuiKey_NamedKey_BEGIN,
 
 1465 #ifdef IMGUI_DISABLE_OBSOLETE_KEYIO 
 1466     ImGuiKey_KeysData_SIZE          = ImGuiKey_NamedKey_COUNT,          
 
 1467     ImGuiKey_KeysData_OFFSET        = ImGuiKey_NamedKey_BEGIN,          
 
 1469     ImGuiKey_KeysData_SIZE          = ImGuiKey_COUNT,                   
 
 1470     ImGuiKey_KeysData_OFFSET        = 0,                                
 
 1473 #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS 
 1474     ImGuiKey_ModCtrl = ImGuiMod_Ctrl, ImGuiKey_ModShift = ImGuiMod_Shift, ImGuiKey_ModAlt = ImGuiMod_Alt, ImGuiKey_ModSuper = ImGuiMod_Super, 
 
 1475     ImGuiKey_KeyPadEnter = ImGuiKey_KeypadEnter,    
 
 1479 #ifndef IMGUI_DISABLE_OBSOLETE_KEYIO 
 1485     ImGuiNavInput_Activate, ImGuiNavInput_Cancel, ImGuiNavInput_Input, ImGuiNavInput_Menu, ImGuiNavInput_DpadLeft, ImGuiNavInput_DpadRight, ImGuiNavInput_DpadUp, ImGuiNavInput_DpadDown,
 
 1486     ImGuiNavInput_LStickLeft, ImGuiNavInput_LStickRight, ImGuiNavInput_LStickUp, ImGuiNavInput_LStickDown, ImGuiNavInput_FocusPrev, ImGuiNavInput_FocusNext, ImGuiNavInput_TweakSlow, ImGuiNavInput_TweakFast,
 
 1487     ImGuiNavInput_COUNT,
 
 1492 enum ImGuiConfigFlags_
 
 1494     ImGuiConfigFlags_None                   = 0,
 
 1495     ImGuiConfigFlags_NavEnableKeyboard      = 1 << 0,   
 
 1496     ImGuiConfigFlags_NavEnableGamepad       = 1 << 1,   
 
 1497     ImGuiConfigFlags_NavEnableSetMousePos   = 1 << 2,   
 
 1498     ImGuiConfigFlags_NavNoCaptureKeyboard   = 1 << 3,   
 
 1499     ImGuiConfigFlags_NoMouse                = 1 << 4,   
 
 1500     ImGuiConfigFlags_NoMouseCursorChange    = 1 << 5,   
 
 1503     ImGuiConfigFlags_IsSRGB                 = 1 << 20,  
 
 1504     ImGuiConfigFlags_IsTouchScreen          = 1 << 21,  
 
 1508 enum ImGuiBackendFlags_
 
 1510     ImGuiBackendFlags_None                  = 0,
 
 1511     ImGuiBackendFlags_HasGamepad            = 1 << 0,   
 
 1512     ImGuiBackendFlags_HasMouseCursors       = 1 << 1,   
 
 1513     ImGuiBackendFlags_HasSetMousePos        = 1 << 2,   
 
 1514     ImGuiBackendFlags_RendererHasVtxOffset  = 1 << 3,   
 
 1521     ImGuiCol_TextDisabled,
 
 1526     ImGuiCol_BorderShadow,
 
 1528     ImGuiCol_FrameBgHovered,
 
 1529     ImGuiCol_FrameBgActive,
 
 1531     ImGuiCol_TitleBgActive,
 
 1532     ImGuiCol_TitleBgCollapsed,
 
 1534     ImGuiCol_ScrollbarBg,
 
 1535     ImGuiCol_ScrollbarGrab,
 
 1536     ImGuiCol_ScrollbarGrabHovered,
 
 1537     ImGuiCol_ScrollbarGrabActive,
 
 1539     ImGuiCol_SliderGrab,
 
 1540     ImGuiCol_SliderGrabActive,
 
 1542     ImGuiCol_ButtonHovered,
 
 1543     ImGuiCol_ButtonActive,
 
 1545     ImGuiCol_HeaderHovered,
 
 1546     ImGuiCol_HeaderActive,
 
 1548     ImGuiCol_SeparatorHovered,
 
 1549     ImGuiCol_SeparatorActive,
 
 1550     ImGuiCol_ResizeGrip,            
 
 1551     ImGuiCol_ResizeGripHovered,
 
 1552     ImGuiCol_ResizeGripActive,
 
 1554     ImGuiCol_TabHovered,
 
 1556     ImGuiCol_TabUnfocused,
 
 1557     ImGuiCol_TabUnfocusedActive,
 
 1559     ImGuiCol_PlotLinesHovered,
 
 1560     ImGuiCol_PlotHistogram,
 
 1561     ImGuiCol_PlotHistogramHovered,
 
 1562     ImGuiCol_TableHeaderBg,         
 
 1563     ImGuiCol_TableBorderStrong,     
 
 1564     ImGuiCol_TableBorderLight,      
 
 1565     ImGuiCol_TableRowBg,            
 
 1566     ImGuiCol_TableRowBgAlt,         
 
 1567     ImGuiCol_TextSelectedBg,
 
 1568     ImGuiCol_DragDropTarget,        
 
 1569     ImGuiCol_NavHighlight,          
 
 1570     ImGuiCol_NavWindowingHighlight, 
 
 1571     ImGuiCol_NavWindowingDimBg,     
 
 1572     ImGuiCol_ModalWindowDimBg,      
 
 1586     ImGuiStyleVar_Alpha,               
 
 1587     ImGuiStyleVar_DisabledAlpha,       
 
 1588     ImGuiStyleVar_WindowPadding,       
 
 1589     ImGuiStyleVar_WindowRounding,      
 
 1590     ImGuiStyleVar_WindowBorderSize,    
 
 1591     ImGuiStyleVar_WindowMinSize,       
 
 1592     ImGuiStyleVar_WindowTitleAlign,    
 
 1593     ImGuiStyleVar_ChildRounding,       
 
 1594     ImGuiStyleVar_ChildBorderSize,     
 
 1595     ImGuiStyleVar_PopupRounding,       
 
 1596     ImGuiStyleVar_PopupBorderSize,     
 
 1597     ImGuiStyleVar_FramePadding,        
 
 1598     ImGuiStyleVar_FrameRounding,       
 
 1599     ImGuiStyleVar_FrameBorderSize,     
 
 1600     ImGuiStyleVar_ItemSpacing,         
 
 1601     ImGuiStyleVar_ItemInnerSpacing,    
 
 1602     ImGuiStyleVar_IndentSpacing,       
 
 1603     ImGuiStyleVar_CellPadding,         
 
 1604     ImGuiStyleVar_ScrollbarSize,       
 
 1605     ImGuiStyleVar_ScrollbarRounding,   
 
 1606     ImGuiStyleVar_GrabMinSize,         
 
 1607     ImGuiStyleVar_GrabRounding,        
 
 1608     ImGuiStyleVar_TabRounding,         
 
 1609     ImGuiStyleVar_ButtonTextAlign,     
 
 1610     ImGuiStyleVar_SelectableTextAlign, 
 
 1615 enum ImGuiButtonFlags_
 
 1617     ImGuiButtonFlags_None                   = 0,
 
 1618     ImGuiButtonFlags_MouseButtonLeft        = 1 << 0,   
 
 1619     ImGuiButtonFlags_MouseButtonRight       = 1 << 1,   
 
 1620     ImGuiButtonFlags_MouseButtonMiddle      = 1 << 2,   
 
 1623     ImGuiButtonFlags_MouseButtonMask_       = ImGuiButtonFlags_MouseButtonLeft | ImGuiButtonFlags_MouseButtonRight | ImGuiButtonFlags_MouseButtonMiddle,
 
 1624     ImGuiButtonFlags_MouseButtonDefault_    = ImGuiButtonFlags_MouseButtonLeft,
 
 1628 enum ImGuiColorEditFlags_
 
 1630     ImGuiColorEditFlags_None            = 0,
 
 1631     ImGuiColorEditFlags_NoAlpha         = 1 << 1,   
 
 1632     ImGuiColorEditFlags_NoPicker        = 1 << 2,   
 
 1633     ImGuiColorEditFlags_NoOptions       = 1 << 3,   
 
 1634     ImGuiColorEditFlags_NoSmallPreview  = 1 << 4,   
 
 1635     ImGuiColorEditFlags_NoInputs        = 1 << 5,   
 
 1636     ImGuiColorEditFlags_NoTooltip       = 1 << 6,   
 
 1637     ImGuiColorEditFlags_NoLabel         = 1 << 7,   
 
 1638     ImGuiColorEditFlags_NoSidePreview   = 1 << 8,   
 
 1639     ImGuiColorEditFlags_NoDragDrop      = 1 << 9,   
 
 1640     ImGuiColorEditFlags_NoBorder        = 1 << 10,  
 
 1643     ImGuiColorEditFlags_AlphaBar        = 1 << 16,  
 
 1644     ImGuiColorEditFlags_AlphaPreview    = 1 << 17,  
 
 1645     ImGuiColorEditFlags_AlphaPreviewHalf= 1 << 18,  
 
 1646     ImGuiColorEditFlags_HDR             = 1 << 19,  
 
 1647     ImGuiColorEditFlags_DisplayRGB      = 1 << 20,  
 
 1648     ImGuiColorEditFlags_DisplayHSV      = 1 << 21,  
 
 1649     ImGuiColorEditFlags_DisplayHex      = 1 << 22,  
 
 1650     ImGuiColorEditFlags_Uint8           = 1 << 23,  
 
 1651     ImGuiColorEditFlags_Float           = 1 << 24,  
 
 1652     ImGuiColorEditFlags_PickerHueBar    = 1 << 25,  
 
 1653     ImGuiColorEditFlags_PickerHueWheel  = 1 << 26,  
 
 1654     ImGuiColorEditFlags_InputRGB        = 1 << 27,  
 
 1655     ImGuiColorEditFlags_InputHSV        = 1 << 28,  
 
 1659     ImGuiColorEditFlags_DefaultOptions_ = ImGuiColorEditFlags_Uint8 | ImGuiColorEditFlags_DisplayRGB | ImGuiColorEditFlags_InputRGB | ImGuiColorEditFlags_PickerHueBar,
 
 1662     ImGuiColorEditFlags_DisplayMask_    = ImGuiColorEditFlags_DisplayRGB | ImGuiColorEditFlags_DisplayHSV | ImGuiColorEditFlags_DisplayHex,
 
 1663     ImGuiColorEditFlags_DataTypeMask_   = ImGuiColorEditFlags_Uint8 | ImGuiColorEditFlags_Float,
 
 1664     ImGuiColorEditFlags_PickerMask_     = ImGuiColorEditFlags_PickerHueWheel | ImGuiColorEditFlags_PickerHueBar,
 
 1665     ImGuiColorEditFlags_InputMask_      = ImGuiColorEditFlags_InputRGB | ImGuiColorEditFlags_InputHSV,
 
 1674 enum ImGuiSliderFlags_
 
 1676     ImGuiSliderFlags_None                   = 0,
 
 1677     ImGuiSliderFlags_AlwaysClamp            = 1 << 4,       
 
 1678     ImGuiSliderFlags_Logarithmic            = 1 << 5,       
 
 1679     ImGuiSliderFlags_NoRoundToFormat        = 1 << 6,       
 
 1680     ImGuiSliderFlags_NoInput                = 1 << 7,       
 
 1681     ImGuiSliderFlags_InvalidMask_           = 0x7000000F,   
 
 1684 #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS 
 1685     ImGuiSliderFlags_ClampOnInput = ImGuiSliderFlags_AlwaysClamp, 
 
 1691 enum ImGuiMouseButton_
 
 1693     ImGuiMouseButton_Left = 0,
 
 1694     ImGuiMouseButton_Right = 1,
 
 1695     ImGuiMouseButton_Middle = 2,
 
 1696     ImGuiMouseButton_COUNT = 5
 
 1701 enum ImGuiMouseCursor_
 
 1703     ImGuiMouseCursor_None = -1,
 
 1704     ImGuiMouseCursor_Arrow = 0,
 
 1705     ImGuiMouseCursor_TextInput,         
 
 1706     ImGuiMouseCursor_ResizeAll,         
 
 1707     ImGuiMouseCursor_ResizeNS,          
 
 1708     ImGuiMouseCursor_ResizeEW,          
 
 1709     ImGuiMouseCursor_ResizeNESW,        
 
 1710     ImGuiMouseCursor_ResizeNWSE,        
 
 1711     ImGuiMouseCursor_Hand,              
 
 1712     ImGuiMouseCursor_NotAllowed,        
 
 1713     ImGuiMouseCursor_COUNT
 
 1722     ImGuiCond_Always        = 1 << 0,   
 
 1723     ImGuiCond_Once          = 1 << 1,   
 
 1724     ImGuiCond_FirstUseEver  = 1 << 2,   
 
 1725     ImGuiCond_Appearing     = 1 << 3,   
 
 1739 inline void* 
operator new(size_t, 
ImNewWrapper, 
void* ptr) { 
return ptr; }
 
 1740 inline void  operator delete(
void*, 
ImNewWrapper, 
void*)   {} 
 
 1741 #define IM_ALLOC(_SIZE)                     ImGui::MemAlloc(_SIZE) 
 1742 #define IM_FREE(_PTR)                       ImGui::MemFree(_PTR) 
 1743 #define IM_PLACEMENT_NEW(_PTR)              new(ImNewWrapper(), _PTR) 
 1744 #define IM_NEW(_TYPE)                       new(ImNewWrapper(), ImGui::MemAlloc(sizeof(_TYPE))) _TYPE 
 1745 template<
typename T> 
void IM_DELETE(T* p)   { 
if (p) { p->~T(); ImGui::MemFree(p); } }
 
 1758 IM_MSVC_RUNTIME_CHECKS_OFF
 
 1759 template<
typename T>
 
 1767     typedef T                   value_type;
 
 1768     typedef value_type*         iterator;
 
 1769     typedef const value_type*   const_iterator;
 
 1772     inline ImVector()                                       { Size = Capacity = 0; Data = NULL; }
 
 1773     inline ImVector(
const ImVector<T>& src)                 { Size = Capacity = 0; Data = NULL; operator=(src); }
 
 1774     inline ImVector<T>& operator=(
const ImVector<T>& src)   { clear(); resize(src.Size); 
if (src.Data) memcpy(Data, src.Data, (
size_t)Size * 
sizeof(T)); 
return *
this; }
 
 1775     inline ~
ImVector()                                      { 
if (Data) IM_FREE(Data); } 
 
 1777     inline void         clear()                             { 
if (Data) { Size = Capacity = 0; IM_FREE(Data); Data = NULL; } }  
 
 1778     inline void         clear_delete()                      { 
for (
int n = 0; n < Size; n++) IM_DELETE(Data[n]); clear(); }     
 
 1779     inline void         clear_destruct()                    { 
for (
int n = 0; n < Size; n++) Data[n].~T(); clear(); }           
 
 1781     inline bool         empty()
 const                       { 
return Size == 0; }
 
 1782     inline int          size()
 const                        { 
return Size; }
 
 1783     inline int          size_in_bytes()
 const               { 
return Size * (int)
sizeof(T); }
 
 1784     inline int          max_size()
 const                    { 
return 0x7FFFFFFF / (int)
sizeof(T); }
 
 1785     inline int          capacity()
 const                    { 
return Capacity; }
 
 1786     inline T&           operator[](
int i)                   { IM_ASSERT(i >= 0 && i < Size); 
return Data[i]; }
 
 1787     inline const T&     operator[](
int i)
 const             { IM_ASSERT(i >= 0 && i < Size); 
return Data[i]; }
 
 1789     inline T*           begin()                             { 
return Data; }
 
 1790     inline const T*     begin()
 const                       { 
return Data; }
 
 1791     inline T*           end()                               { 
return Data + Size; }
 
 1792     inline const T*     end()
 const                         { 
return Data + Size; }
 
 1793     inline T&           front()                             { IM_ASSERT(Size > 0); 
return Data[0]; }
 
 1794     inline const T&     front()
 const                       { IM_ASSERT(Size > 0); 
return Data[0]; }
 
 1795     inline T&           back()                              { IM_ASSERT(Size > 0); 
return Data[Size - 1]; }
 
 1796     inline const T&     back()
 const                        { IM_ASSERT(Size > 0); 
return Data[Size - 1]; }
 
 1797     inline void         swap(
ImVector<T>& rhs)              { 
int rhs_size = rhs.Size; rhs.Size = Size; Size = rhs_size; 
int rhs_cap = rhs.Capacity; rhs.Capacity = Capacity; Capacity = rhs_cap; T* rhs_data = rhs.Data; rhs.Data = Data; Data = rhs_data; }
 
 1799     inline int          _grow_capacity(
int sz)
 const        { 
int new_capacity = Capacity ? (Capacity + Capacity / 2) : 8; 
return new_capacity > sz ? new_capacity : sz; }
 
 1800     inline void         resize(
int new_size)                { 
if (new_size > Capacity) reserve(_grow_capacity(new_size)); Size = new_size; }
 
 1801     inline void         resize(
int new_size, 
const T& v)    { 
if (new_size > Capacity) reserve(_grow_capacity(new_size)); 
if (new_size > Size) 
for (
int n = Size; n < new_size; n++) memcpy(&Data[n], &v, 
sizeof(v)); Size = new_size; }
 
 1802     inline void         shrink(
int new_size)                { IM_ASSERT(new_size <= Size); Size = new_size; } 
 
 1803     inline void         reserve(
int new_capacity)           { 
if (new_capacity <= Capacity) 
return; T* new_data = (T*)IM_ALLOC((
size_t)new_capacity * 
sizeof(T)); 
if (Data) { memcpy(new_data, Data, (
size_t)Size * 
sizeof(T)); IM_FREE(Data); } Data = new_data; Capacity = new_capacity; }
 
 1804     inline void         reserve_discard(
int new_capacity)   { 
if (new_capacity <= Capacity) 
return; 
if (Data) IM_FREE(Data); Data = (T*)IM_ALLOC((
size_t)new_capacity * 
sizeof(T)); Capacity = new_capacity; }
 
 1807     inline void         push_back(
const T& v)               { 
if (Size == Capacity) reserve(_grow_capacity(Size + 1)); memcpy(&Data[Size], &v, 
sizeof(v)); Size++; }
 
 1808     inline void         pop_back()                          { IM_ASSERT(Size > 0); Size--; }
 
 1809     inline void         push_front(
const T& v)              { 
if (Size == 0) push_back(v); 
else insert(Data, v); }
 
 1810     inline T*           erase(
const T* it)                  { IM_ASSERT(it >= Data && it < Data + Size); 
const ptrdiff_t off = it - Data; memmove(Data + off, Data + off + 1, ((
size_t)Size - (
size_t)off - 1) * 
sizeof(T)); Size--; 
return Data + off; }
 
 1811     inline T*           erase(
const T* it, 
const T* it_last){ IM_ASSERT(it >= Data && it < Data + Size && it_last >= it && it_last <= Data + Size); 
const ptrdiff_t count = it_last - it; 
const ptrdiff_t off = it - Data; memmove(Data + off, Data + off + count, ((
size_t)Size - (
size_t)off - (
size_t)count) * 
sizeof(T)); Size -= (int)count; 
return Data + off; }
 
 1812     inline T*           erase_unsorted(
const T* it)         { IM_ASSERT(it >= Data && it < Data + Size);  
const ptrdiff_t off = it - Data; 
if (it < Data + Size - 1) memcpy(Data + off, Data + Size - 1, 
sizeof(T)); Size--; 
return Data + off; }
 
 1813     inline T*           insert(
const T* it, 
const T& v)     { IM_ASSERT(it >= Data && it <= Data + Size); 
const ptrdiff_t off = it - Data; 
if (Size == Capacity) reserve(_grow_capacity(Size + 1)); 
if (off < (
int)Size) memmove(Data + off + 1, Data + off, ((
size_t)Size - (
size_t)off) * 
sizeof(T)); memcpy(&Data[off], &v, 
sizeof(v)); Size++; 
return Data + off; }
 
 1814     inline bool         contains(
const T& v)
 const          { 
const T* data = Data;  
const T* data_end = Data + Size; 
while (data < data_end) 
if (*data++ == v) 
return true; 
return false; }
 
 1815     inline T*           find(
const T& v)                    { T* data = Data;  
const T* data_end = Data + Size; 
while (data < data_end) 
if (*data == v) 
break; 
else ++data; 
return data; }
 
 1816     inline const T*     find(
const T& v)
 const              { 
const T* data = Data;  
const T* data_end = Data + Size; 
while (data < data_end) 
if (*data == v) 
break; 
else ++data; 
return data; }
 
 1817     inline bool         find_erase(
const T& v)              { 
const T* it = find(v); 
if (it < Data + Size) { erase(it); 
return true; } 
return false; }
 
 1818     inline bool         find_erase_unsorted(
const T& v)     { 
const T* it = find(v); 
if (it < Data + Size) { erase_unsorted(it); 
return true; } 
return false; }
 
 1819     inline int          index_from_ptr(
const T* it)
 const   { IM_ASSERT(it >= Data && it < Data + Size); 
const ptrdiff_t off = it - Data; 
return (
int)off; }
 
 1821 IM_MSVC_RUNTIME_CHECKS_RESTORE
 
 1834     float       DisabledAlpha;              
 
 1836     float       WindowRounding;             
 
 1837     float       WindowBorderSize;           
 
 1840     ImGuiDir    WindowMenuButtonPosition;   
 
 1841     float       ChildRounding;              
 
 1842     float       ChildBorderSize;            
 
 1843     float       PopupRounding;              
 
 1844     float       PopupBorderSize;            
 
 1846     float       FrameRounding;              
 
 1847     float       FrameBorderSize;            
 
 1851     ImVec2      TouchExtraPadding;          
 
 1852     float       IndentSpacing;              
 
 1853     float       ColumnsMinSpacing;          
 
 1854     float       ScrollbarSize;              
 
 1855     float       ScrollbarRounding;          
 
 1858     float       LogSliderDeadzone;          
 
 1860     float       TabBorderSize;              
 
 1861     float       TabMinWidthForCloseButton;  
 
 1862     ImGuiDir    ColorButtonPosition;        
 
 1864     ImVec2      SelectableTextAlign;        
 
 1865     ImVec2      DisplayWindowPadding;       
 
 1866     ImVec2      DisplaySafeAreaPadding;     
 
 1867     float       MouseCursorScale;           
 
 1868     bool        AntiAliasedLines;           
 
 1869     bool        AntiAliasedLinesUseTex;     
 
 1870     bool        AntiAliasedFill;            
 
 1871     float       CurveTessellationTol;       
 
 1872     float       CircleTessellationMaxError; 
 
 1873     ImVec4      Colors[ImGuiCol_COUNT];
 
 1876     IMGUI_API 
void ScaleAllSizes(
float scale_factor);
 
 1892     float       DownDurationPrev;   
 
 1902     ImGuiConfigFlags   ConfigFlags;             
 
 1903     ImGuiBackendFlags  BackendFlags;            
 
 1906     float       IniSavingRate;                  
 
 1907     const char* IniFilename;                    
 
 1908     const char* LogFilename;                    
 
 1909     float       MouseDoubleClickTime;           
 
 1910     float       MouseDoubleClickMaxDist;        
 
 1911     float       MouseDragThreshold;             
 
 1912     float       KeyRepeatDelay;                 
 
 1913     float       KeyRepeatRate;                  
 
 1914     float       HoverDelayNormal;               
 
 1915     float       HoverDelayShort;                
 
 1919     float       FontGlobalScale;                
 
 1920     bool        FontAllowUserScaling;           
 
 1922     ImVec2      DisplayFramebufferScale;        
 
 1925     bool        MouseDrawCursor;                
 
 1926     bool        ConfigMacOSXBehaviors;          
 
 1927     bool        ConfigInputTrickleEventQueue;   
 
 1928     bool        ConfigInputTextCursorBlink;     
 
 1929     bool        ConfigInputTextEnterKeepActive; 
 
 1930     bool        ConfigDragClickToInputText;     
 
 1931     bool        ConfigWindowsResizeFromEdges;   
 
 1932     bool        ConfigWindowsMoveFromTitleBarOnly; 
 
 1933     float       ConfigMemoryCompactTimer;       
 
 1941     const char* BackendPlatformName;            
 
 1942     const char* BackendRendererName;            
 
 1943     void*       BackendPlatformUserData;        
 
 1944     void*       BackendRendererUserData;        
 
 1945     void*       BackendLanguageUserData;        
 
 1949     const char* (*GetClipboardTextFn)(
void* user_data);
 
 1950     void        (*SetClipboardTextFn)(
void* user_data, 
const char* text);
 
 1951     void*       ClipboardUserData;
 
 1956 #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS 
 1957     void*       ImeWindowHandle;                
 
 1959     void*       _UnusedPadding;                                     
 
 1967     IMGUI_API 
void  AddKeyEvent(ImGuiKey key, 
bool down);                   
 
 1968     IMGUI_API 
void  AddKeyAnalogEvent(ImGuiKey key, 
bool down, 
float v);    
 
 1969     IMGUI_API 
void  AddMousePosEvent(
float x, 
float y);                     
 
 1970     IMGUI_API 
void  AddMouseButtonEvent(
int button, 
bool down);             
 
 1971     IMGUI_API 
void  AddMouseWheelEvent(
float wh_x, 
float wh_y);             
 
 1972     IMGUI_API 
void  AddFocusEvent(
bool focused);                            
 
 1973     IMGUI_API 
void  AddInputCharacter(
unsigned int c);                      
 
 1974     IMGUI_API 
void  AddInputCharacterUTF16(ImWchar16 c);                    
 
 1975     IMGUI_API 
void  AddInputCharactersUTF8(
const char* str);                
 
 1977     IMGUI_API 
void  SetKeyEventNativeData(ImGuiKey key, 
int native_keycode, 
int native_scancode, 
int native_legacy_index = -1); 
 
 1978     IMGUI_API 
void  SetAppAcceptingEvents(
bool accepting_events);           
 
 1979     IMGUI_API 
void  ClearInputCharacters();                                 
 
 1980     IMGUI_API 
void  ClearInputKeys();                                       
 
 1988     bool        WantCaptureMouse;                   
 
 1989     bool        WantCaptureKeyboard;                
 
 1991     bool        WantSetMousePos;                    
 
 1992     bool        WantSaveIniSettings;                
 
 1996     int         MetricsRenderVertices;              
 
 1997     int         MetricsRenderIndices;               
 
 1998     int         MetricsRenderWindows;               
 
 1999     int         MetricsActiveWindows;               
 
 2000     int         MetricsActiveAllocations;           
 
 2006 #ifndef IMGUI_DISABLE_OBSOLETE_KEYIO 
 2007     int         KeyMap[ImGuiKey_COUNT];             
 
 2008     bool        KeysDown[ImGuiKey_COUNT];           
 
 2009     float       NavInputs[ImGuiNavInput_COUNT];     
 
 2029     ImGuiKeyChord KeyMods;                          
 
 2031     bool        WantCaptureMouseUnlessPopupClose;   
 
 2033     ImVec2      MouseClickedPos[5];                 
 
 2034     double      MouseClickedTime[5];                
 
 2035     bool        MouseClicked[5];                    
 
 2036     bool        MouseDoubleClicked[5];              
 
 2037     ImU16       MouseClickedCount[5];               
 
 2038     ImU16       MouseClickedLastCount[5];           
 
 2039     bool        MouseReleased[5];                   
 
 2040     bool        MouseDownOwned[5];                  
 
 2041     bool        MouseDownOwnedUnlessPopupClose[5];  
 
 2042     float       MouseDownDuration[5];               
 
 2043     float       MouseDownDurationPrev[5];           
 
 2044     float       MouseDragMaxDistanceSqr[5];         
 
 2047     bool        AppAcceptingEvents;                 
 
 2048     ImS8        BackendUsingLegacyKeyArrays;        
 
 2049     bool        BackendUsingLegacyNavInputArray;    
 
 2050     ImWchar16   InputQueueSurrogate;                
 
 2071     ImGuiInputTextFlags EventFlag;      
 
 2072     ImGuiInputTextFlags Flags;          
 
 2091     IMGUI_API 
void      DeleteChars(
int pos, 
int bytes_count);
 
 2092     IMGUI_API 
void      InsertChars(
int pos, 
const char* text, 
const char* text_end = NULL);
 
 2093     void                SelectAll()             { SelectionStart = 0; SelectionEnd = BufTextLen; }
 
 2094     void                ClearSelection()        { SelectionStart = SelectionEnd = BufTextLen; }
 
 2095     bool                HasSelection()
 const    { 
return SelectionStart != SelectionEnd; }
 
 2117     ImGuiID         SourceParentId;     
 
 2119     char            DataType[32 + 1];   
 
 2124     void Clear()    { SourceId = SourceParentId = 0; Data = NULL; DataSize = 0; memset(DataType, 0, 
sizeof(DataType)); DataFrameCount = -1; Preview = Delivery = 
false; }
 
 2125     bool IsDataType(
const char* type)
 const { 
return DataFrameCount != -1 && strcmp(type, DataType) == 0; }
 
 2126     bool IsPreview()
 const                  { 
return Preview; }
 
 2127     bool IsDelivery()
 const                 { 
return Delivery; }
 
 2133     ImGuiID                     ColumnUserID;       
 
 2136     ImGuiSortDirection          SortDirection : 8;  
 
 2159 #define IM_UNICODE_CODEPOINT_INVALID 0xFFFD      
 2160 #ifdef IMGUI_USE_WCHAR32 
 2161 #define IM_UNICODE_CODEPOINT_MAX     0x10FFFF    
 2163 #define IM_UNICODE_CODEPOINT_MAX     0xFFFF      
 2171     mutable int RefFrame;
 
 2172     operator bool()
 const { 
int current_frame = ImGui::GetFrameCount(); 
if (RefFrame == current_frame) 
return false; RefFrame = current_frame; 
return true; }
 
 2179     IMGUI_API 
bool      Draw(
const char* label = 
"Filter (inc,-exc)", 
float width = 0.0f);  
 
 2180     IMGUI_API 
bool      PassFilter(
const char* text, 
const char* text_end = NULL) 
const;
 
 2181     IMGUI_API 
void      Build();
 
 2182     void                Clear()          { InputBuf[0] = 0; Build(); }
 
 2183     bool                IsActive()
 const { 
return !Filters.empty(); }
 
 2192         ImGuiTextRange(
const char* _b, 
const char* _e)  { b = _b; e = _e; }
 
 2193         bool            empty()
 const                   { 
return b == e; }
 
 2206     IMGUI_API 
static char EmptyString[1];
 
 2209     inline char         operator[](
int i)
 const { IM_ASSERT(Buf.Data != NULL); 
return Buf.Data[i]; }
 
 2210     const char*         begin()
 const           { 
return Buf.Data ? &Buf.front() : EmptyString; }
 
 2211     const char*         end()
 const             { 
return Buf.Data ? &Buf.back() : EmptyString; }   
 
 2212     int                 size()
 const            { 
return Buf.Size ? Buf.Size - 1 : 0; }
 
 2213     bool                empty()
 const           { 
return Buf.Size <= 1; }
 
 2214     void                clear()                 { Buf.clear(); }
 
 2215     void                reserve(
int capacity)   { Buf.reserve(capacity); }
 
 2216     const char*         c_str()
 const           { 
return Buf.Data ? Buf.Data : EmptyString; }
 
 2217     IMGUI_API 
void      append(
const char* str, 
const char* str_end = NULL);
 
 2218     IMGUI_API 
void      appendf(
const char* fmt, ...) IM_FMTARGS(2);
 
 2219     IMGUI_API 
void      appendfv(
const char* fmt, va_list args) IM_FMTLIST(2);
 
 2236         union { 
int val_i; 
float val_f; 
void* val_p; };
 
 2238         ImGuiStoragePair(ImGuiID _key, 
float _val_f)    { key = _key; val_f = _val_f; }
 
 2239         ImGuiStoragePair(ImGuiID _key, 
void* _val_p)    { key = _key; val_p = _val_p; }
 
 2247     void                Clear() { Data.clear(); }
 
 2248     IMGUI_API 
int       GetInt(ImGuiID key, 
int default_val = 0) 
const;
 
 2249     IMGUI_API 
void      SetInt(ImGuiID key, 
int val);
 
 2250     IMGUI_API 
bool      GetBool(ImGuiID key, 
bool default_val = 
false) 
const;
 
 2251     IMGUI_API 
void      SetBool(ImGuiID key, 
bool val);
 
 2252     IMGUI_API 
float     GetFloat(ImGuiID key, 
float default_val = 0.0f) 
const;
 
 2253     IMGUI_API 
void      SetFloat(ImGuiID key, 
float val);
 
 2254     IMGUI_API 
void*     GetVoidPtr(ImGuiID key) 
const; 
 
 2255     IMGUI_API 
void      SetVoidPtr(ImGuiID key, 
void* val);
 
 2261     IMGUI_API 
int*      GetIntRef(ImGuiID key, 
int default_val = 0);
 
 2262     IMGUI_API 
bool*     GetBoolRef(ImGuiID key, 
bool default_val = 
false);
 
 2263     IMGUI_API 
float*    GetFloatRef(ImGuiID key, 
float default_val = 0.0f);
 
 2264     IMGUI_API 
void**    GetVoidPtrRef(ImGuiID key, 
void* default_val = NULL);
 
 2267     IMGUI_API 
void      SetAllInt(
int val);
 
 2270     IMGUI_API 
void      BuildSortByKey();
 
 2306     IMGUI_API 
void  Begin(
int items_count, 
float items_height = -1.0f);
 
 2307     IMGUI_API 
void  End();             
 
 2308     IMGUI_API 
bool  Step();            
 
 2311     IMGUI_API 
void  ForceDisplayRangeByIndices(
int item_min, 
int item_max); 
 
 2313 #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS 
 2314     inline ImGuiListClipper(
int items_count, 
float items_height = -1.0f) { memset(
this, 0, 
sizeof(*
this)); ItemsCount = -1; Begin(items_count, items_height); } 
 
 2320 #ifndef IM_COL32_R_SHIFT 
 2321 #ifdef IMGUI_USE_BGRA_PACKED_COLOR 
 2322 #define IM_COL32_R_SHIFT    16 
 2323 #define IM_COL32_G_SHIFT    8 
 2324 #define IM_COL32_B_SHIFT    0 
 2325 #define IM_COL32_A_SHIFT    24 
 2326 #define IM_COL32_A_MASK     0xFF000000 
 2328 #define IM_COL32_R_SHIFT    0 
 2329 #define IM_COL32_G_SHIFT    8 
 2330 #define IM_COL32_B_SHIFT    16 
 2331 #define IM_COL32_A_SHIFT    24 
 2332 #define IM_COL32_A_MASK     0xFF000000 
 2335 #define IM_COL32(R,G,B,A)    (((ImU32)(A)<<IM_COL32_A_SHIFT) | ((ImU32)(B)<<IM_COL32_B_SHIFT) | ((ImU32)(G)<<IM_COL32_G_SHIFT) | ((ImU32)(R)<<IM_COL32_R_SHIFT)) 
 2336 #define IM_COL32_WHITE       IM_COL32(255,255,255,255)   
 2337 #define IM_COL32_BLACK       IM_COL32(0,0,0,255)         
 2338 #define IM_COL32_BLACK_TRANS IM_COL32(0,0,0,0)           
 2349     constexpr 
ImColor(
float r, 
float g, 
float b, 
float a = 1.0f)    : Value(r, g, b, a) { }
 
 2351     ImColor(
int r, 
int g, 
int b, 
int a = 255)                       { 
float sc = 1.0f / 255.0f; Value.x = (float)r * sc; Value.y = (float)g * sc; Value.z = (float)b * sc; Value.w = (float)a * sc; }
 
 2352     ImColor(ImU32 rgba)                                             { 
float sc = 1.0f / 255.0f; Value.x = (float)((rgba >> IM_COL32_R_SHIFT) & 0xFF) * sc; Value.y = (float)((rgba >> IM_COL32_G_SHIFT) & 0xFF) * sc; Value.z = (float)((rgba >> IM_COL32_B_SHIFT) & 0xFF) * sc; Value.w = (float)((rgba >> IM_COL32_A_SHIFT) & 0xFF) * sc; }
 
 2353     inline operator ImU32()
 const                                   { 
return ImGui::ColorConvertFloat4ToU32(Value); }
 
 2354     inline operator ImVec4()
 const                                  { 
return Value; }
 
 2357     inline void    SetHSV(
float h, 
float s, 
float v, 
float a = 1.0f){ ImGui::ColorConvertHSVtoRGB(h, s, v, Value.x, Value.y, Value.z); Value.w = a; }
 
 2358     static ImColor HSV(
float h, 
float s, 
float v, 
float a = 1.0f)   { 
float r, g, b; ImGui::ColorConvertHSVtoRGB(h, s, v, r, g, b); 
return ImColor(r, g, b, a); }
 
 2367 #ifndef IM_DRAWLIST_TEX_LINES_WIDTH_MAX 
 2368 #define IM_DRAWLIST_TEX_LINES_WIDTH_MAX     (63) 
 2378 #ifndef ImDrawCallback 
 2386 #define ImDrawCallback_ResetRenderState     (ImDrawCallback)(-1) 
 2396     ImTextureID     TextureId;          
 
 2397     unsigned int    VtxOffset;          
 
 2398     unsigned int    IdxOffset;          
 
 2399     unsigned int    ElemCount;          
 
 2400     ImDrawCallback  UserCallback;       
 
 2401     void*           UserCallbackData;   
 
 2403     ImDrawCmd() { memset(
this, 0, 
sizeof(*
this)); } 
 
 2406     inline ImTextureID GetTexID()
 const { 
return TextureId; }
 
 2410 #ifndef IMGUI_OVERRIDE_DRAWVERT_STRUCT_LAYOUT 
 2422 IMGUI_OVERRIDE_DRAWVERT_STRUCT_LAYOUT;
 
 2429     ImTextureID     TextureId;
 
 2430     unsigned int    VtxOffset;
 
 2451     inline void                 Clear() { _Current = 0; _Count = 1; } 
 
 2452     IMGUI_API 
void              ClearFreeMemory();
 
 2453     IMGUI_API 
void              Split(
ImDrawList* draw_list, 
int count);
 
 2455     IMGUI_API 
void              SetCurrentChannel(
ImDrawList* draw_list, 
int channel_idx);
 
 2462     ImDrawFlags_None                        = 0,
 
 2463     ImDrawFlags_Closed                      = 1 << 0, 
 
 2464     ImDrawFlags_RoundCornersTopLeft         = 1 << 4, 
 
 2465     ImDrawFlags_RoundCornersTopRight        = 1 << 5, 
 
 2466     ImDrawFlags_RoundCornersBottomLeft      = 1 << 6, 
 
 2467     ImDrawFlags_RoundCornersBottomRight     = 1 << 7, 
 
 2468     ImDrawFlags_RoundCornersNone            = 1 << 8, 
 
 2469     ImDrawFlags_RoundCornersTop             = ImDrawFlags_RoundCornersTopLeft | ImDrawFlags_RoundCornersTopRight,
 
 2470     ImDrawFlags_RoundCornersBottom          = ImDrawFlags_RoundCornersBottomLeft | ImDrawFlags_RoundCornersBottomRight,
 
 2471     ImDrawFlags_RoundCornersLeft            = ImDrawFlags_RoundCornersBottomLeft | ImDrawFlags_RoundCornersTopLeft,
 
 2472     ImDrawFlags_RoundCornersRight           = ImDrawFlags_RoundCornersBottomRight | ImDrawFlags_RoundCornersTopRight,
 
 2473     ImDrawFlags_RoundCornersAll             = ImDrawFlags_RoundCornersTopLeft | ImDrawFlags_RoundCornersTopRight | ImDrawFlags_RoundCornersBottomLeft | ImDrawFlags_RoundCornersBottomRight,
 
 2474     ImDrawFlags_RoundCornersDefault_        = ImDrawFlags_RoundCornersAll, 
 
 2475     ImDrawFlags_RoundCornersMask_           = ImDrawFlags_RoundCornersAll | ImDrawFlags_RoundCornersNone,
 
 2480 enum ImDrawListFlags_
 
 2482     ImDrawListFlags_None                    = 0,
 
 2483     ImDrawListFlags_AntiAliasedLines        = 1 << 0,  
 
 2484     ImDrawListFlags_AntiAliasedLinesUseTex  = 1 << 1,  
 
 2485     ImDrawListFlags_AntiAliasedFill         = 1 << 2,  
 
 2486     ImDrawListFlags_AllowVtxOffset          = 1 << 3,  
 
 2504     ImDrawListFlags         Flags;              
 
 2507     unsigned int            _VtxCurrentIdx;     
 
 2509     const char*             _OwnerName;         
 
 2511     ImDrawIdx*              _IdxWritePtr;       
 
 2523     IMGUI_API 
void  PushClipRect(
const ImVec2& clip_rect_min, 
const ImVec2& clip_rect_max, 
bool intersect_with_current_clip_rect = 
false);  
 
 2524     IMGUI_API 
void  PushClipRectFullScreen();
 
 2525     IMGUI_API 
void  PopClipRect();
 
 2526     IMGUI_API 
void  PushTextureID(ImTextureID texture_id);
 
 2527     IMGUI_API 
void  PopTextureID();
 
 2528     inline ImVec2   GetClipRectMin()
 const { 
const ImVec4& cr = _ClipRectStack.back(); 
return ImVec2(cr.x, cr.y); }
 
 2529     inline ImVec2   GetClipRectMax()
 const { 
const ImVec4& cr = _ClipRectStack.back(); 
return ImVec2(cr.z, cr.w); }
 
 2538     IMGUI_API 
void  AddLine(
const ImVec2& p1, 
const ImVec2& p2, ImU32 col, 
float thickness = 1.0f);
 
 2539     IMGUI_API 
void  AddRect(
const ImVec2& p_min, 
const ImVec2& p_max, ImU32 col, 
float rounding = 0.0f, ImDrawFlags flags = 0, 
float thickness = 1.0f);   
 
 2540     IMGUI_API 
void  AddRectFilled(
const ImVec2& p_min, 
const ImVec2& p_max, ImU32 col, 
float rounding = 0.0f, ImDrawFlags flags = 0);                     
 
 2541     IMGUI_API 
void  AddRectFilledMultiColor(
const ImVec2& p_min, 
const ImVec2& p_max, ImU32 col_upr_left, ImU32 col_upr_right, ImU32 col_bot_right, ImU32 col_bot_left);
 
 2542     IMGUI_API 
void  AddQuad(
const ImVec2& p1, 
const ImVec2& p2, 
const ImVec2& p3, 
const ImVec2& p4, ImU32 col, 
float thickness = 1.0f);
 
 2544     IMGUI_API 
void  AddTriangle(
const ImVec2& p1, 
const ImVec2& p2, 
const ImVec2& p3, ImU32 col, 
float thickness = 1.0f);
 
 2545     IMGUI_API 
void  AddTriangleFilled(
const ImVec2& p1, 
const ImVec2& p2, 
const ImVec2& p3, ImU32 col);
 
 2546     IMGUI_API 
void  AddCircle(
const ImVec2& center, 
float radius, ImU32 col, 
int num_segments = 0, 
float thickness = 1.0f);
 
 2547     IMGUI_API 
void  AddCircleFilled(
const ImVec2& center, 
float radius, ImU32 col, 
int num_segments = 0);
 
 2548     IMGUI_API 
void  AddNgon(
const ImVec2& center, 
float radius, ImU32 col, 
int num_segments, 
float thickness = 1.0f);
 
 2549     IMGUI_API 
void  AddNgonFilled(
const ImVec2& center, 
float radius, ImU32 col, 
int num_segments);
 
 2550     IMGUI_API 
void  AddText(
const ImVec2& pos, ImU32 col, 
const char* text_begin, 
const char* text_end = NULL);
 
 2551     IMGUI_API 
void  AddText(
const ImFont* font, 
float font_size, 
const ImVec2& pos, ImU32 col, 
const char* text_begin, 
const char* text_end = NULL, 
float wrap_width = 0.0f, 
const ImVec4* cpu_fine_clip_rect = NULL);
 
 2552     IMGUI_API 
void  AddPolyline(
const ImVec2* points, 
int num_points, ImU32 col, ImDrawFlags flags, 
float thickness);
 
 2553     IMGUI_API 
void  AddConvexPolyFilled(
const ImVec2* points, 
int num_points, ImU32 col);
 
 2554     IMGUI_API 
void  AddBezierCubic(
const ImVec2& p1, 
const ImVec2& p2, 
const ImVec2& p3, 
const ImVec2& p4, ImU32 col, 
float thickness, 
int num_segments = 0); 
 
 2555     IMGUI_API 
void  AddBezierQuadratic(
const ImVec2& p1, 
const ImVec2& p2, 
const ImVec2& p3, ImU32 col, 
float thickness, 
int num_segments = 0);               
 
 2561     IMGUI_API 
void  AddImage(ImTextureID user_texture_id, 
const ImVec2& p_min, 
const ImVec2& p_max, 
const ImVec2& uv_min = 
ImVec2(0, 0), 
const ImVec2& uv_max = 
ImVec2(1, 1), ImU32 col = IM_COL32_WHITE);
 
 2562     IMGUI_API 
void  AddImageQuad(ImTextureID user_texture_id, 
const ImVec2& p1, 
const ImVec2& p2, 
const ImVec2& p3, 
const ImVec2& p4, 
const ImVec2& uv1 = 
ImVec2(0, 0), 
const ImVec2& uv2 = 
ImVec2(1, 0), 
const ImVec2& uv3 = 
ImVec2(1, 1), 
const ImVec2& uv4 = 
ImVec2(0, 1), ImU32 col = IM_COL32_WHITE);
 
 2563     IMGUI_API 
void  AddImageRounded(ImTextureID user_texture_id, 
const ImVec2& p_min, 
const ImVec2& p_max, 
const ImVec2& uv_min, 
const ImVec2& uv_max, ImU32 col, 
float rounding, ImDrawFlags flags = 0);
 
 2567     inline    void  PathClear()                                                 { _Path.Size = 0; }
 
 2568     inline    void  PathLineTo(
const ImVec2& pos)                               { _Path.push_back(pos); }
 
 2569     inline    void  PathLineToMergeDuplicate(
const ImVec2& pos)                 { 
if (_Path.Size == 0 || memcmp(&_Path.Data[_Path.Size - 1], &pos, 8) != 0) _Path.push_back(pos); }
 
 2570     inline    void  PathFillConvex(ImU32 col)                                   { AddConvexPolyFilled(_Path.Data, _Path.Size, col); _Path.Size = 0; }
 
 2571     inline    void  PathStroke(ImU32 col, ImDrawFlags flags = 0, 
float thickness = 1.0f) { AddPolyline(_Path.Data, _Path.Size, col, flags, thickness); _Path.Size = 0; }
 
 2572     IMGUI_API 
void  PathArcTo(
const ImVec2& center, 
float radius, 
float a_min, 
float a_max, 
int num_segments = 0);
 
 2573     IMGUI_API 
void  PathArcToFast(
const ImVec2& center, 
float radius, 
int a_min_of_12, 
int a_max_of_12);                
 
 2574     IMGUI_API 
void  PathBezierCubicCurveTo(
const ImVec2& p2, 
const ImVec2& p3, 
const ImVec2& p4, 
int num_segments = 0); 
 
 2575     IMGUI_API 
void  PathBezierQuadraticCurveTo(
const ImVec2& p2, 
const ImVec2& p3, 
int num_segments = 0);               
 
 2576     IMGUI_API 
void  PathRect(
const ImVec2& rect_min, 
const ImVec2& rect_max, 
float rounding = 0.0f, ImDrawFlags flags = 0);
 
 2579     IMGUI_API 
void  AddCallback(ImDrawCallback callback, 
void* callback_data);  
 
 2580     IMGUI_API 
void  AddDrawCmd();                                               
 
 2589     inline void     ChannelsSplit(
int count)    { _Splitter.Split(
this, count); }
 
 2590     inline void     ChannelsMerge()             { _Splitter.Merge(
this); }
 
 2591     inline void     ChannelsSetCurrent(
int n)   { _Splitter.SetCurrentChannel(
this, n); }
 
 2596     IMGUI_API 
void  PrimReserve(
int idx_count, 
int vtx_count);
 
 2597     IMGUI_API 
void  PrimUnreserve(
int idx_count, 
int vtx_count);
 
 2598     IMGUI_API 
void  PrimRect(
const ImVec2& a, 
const ImVec2& b, ImU32 col);      
 
 2601     inline    void  PrimWriteVtx(
const ImVec2& pos, 
const ImVec2& uv, ImU32 col)    { _VtxWritePtr->pos = pos; _VtxWritePtr->uv = uv; _VtxWritePtr->col = col; _VtxWritePtr++; _VtxCurrentIdx++; }
 
 2602     inline    void  PrimWriteIdx(ImDrawIdx idx)                                     { *_IdxWritePtr = idx; _IdxWritePtr++; }
 
 2603     inline    void  PrimVtx(
const ImVec2& pos, 
const ImVec2& uv, ImU32 col)         { PrimWriteIdx((ImDrawIdx)_VtxCurrentIdx); PrimWriteVtx(pos, uv, col); } 
 
 2605 #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS 
 2606     inline    void  AddBezierCurve(
const ImVec2& p1, 
const ImVec2& p2, 
const ImVec2& p3, 
const ImVec2& p4, ImU32 col, 
float thickness, 
int num_segments = 0) { AddBezierCubic(p1, p2, p3, p4, col, thickness, num_segments); } 
 
 2607     inline    void  PathBezierCurveTo(
const ImVec2& p2, 
const ImVec2& p3, 
const ImVec2& p4, 
int num_segments = 0) { PathBezierCubicCurveTo(p2, p3, p4, num_segments); } 
 
 2611     IMGUI_API 
void  _ResetForNewFrame();
 
 2612     IMGUI_API 
void  _ClearFreeMemory();
 
 2613     IMGUI_API 
void  _PopUnusedDrawCmd();
 
 2614     IMGUI_API 
void  _TryMergeDrawCmds();
 
 2615     IMGUI_API 
void  _OnChangedClipRect();
 
 2616     IMGUI_API 
void  _OnChangedTextureID();
 
 2617     IMGUI_API 
void  _OnChangedVtxOffset();
 
 2618     IMGUI_API 
int   _CalcCircleAutoSegmentCount(
float radius) 
const;
 
 2619     IMGUI_API 
void  _PathArcToFastEx(
const ImVec2& center, 
float radius, 
int a_min_sample, 
int a_max_sample, 
int a_step);
 
 2620     IMGUI_API 
void  _PathArcToN(
const ImVec2& center, 
float radius, 
float a_min, 
float a_max, 
int num_segments);
 
 2639     void Clear()    { memset(
this, 0, 
sizeof(*
this)); }     
 
 2640     IMGUI_API 
void  DeIndexAllBuffers();                    
 
 2641     IMGUI_API 
void  ScaleClipRects(
const ImVec2& fb_scale); 
 
 2652     bool            FontDataOwnedByAtlas;   
 
 2658     ImVec2          GlyphExtraSpacing;      
 
 2660     const ImWchar*  GlyphRanges;            
 
 2661     float           GlyphMinAdvanceX;       
 
 2662     float           GlyphMaxAdvanceX;       
 
 2664     unsigned int    FontBuilderFlags;       
 
 2665     float           RasterizerMultiply;     
 
 2666     ImWchar         EllipsisChar;           
 
 2679     unsigned int    Colored : 1;        
 
 2680     unsigned int    Visible : 1;        
 
 2681     unsigned int    Codepoint : 30;     
 
 2683     float           X0, Y0, X1, Y1;     
 
 2684     float           U0, V0, U1, V1;     
 
 2694     inline void     Clear()                 { 
int size_in_bytes = (IM_UNICODE_CODEPOINT_MAX + 1) / 8; UsedChars.resize(size_in_bytes / (
int)
sizeof(ImU32)); memset(UsedChars.Data, 0, (
size_t)size_in_bytes); }
 
 2695     inline bool     GetBit(
size_t n)
 const  { 
int off = (int)(n >> 5); ImU32 mask = 1u << (n & 31); 
return (UsedChars[off] & mask) != 0; }  
 
 2696     inline void     SetBit(
size_t n)        { 
int off = (int)(n >> 5); ImU32 mask = 1u << (n & 31); UsedChars[off] |= mask; }               
 
 2697     inline void     AddChar(ImWchar c)      { SetBit(c); }                      
 
 2698     IMGUI_API 
void  AddText(
const char* text, 
const char* text_end = NULL);     
 
 2699     IMGUI_API 
void  AddRanges(
const ImWchar* ranges);                           
 
 2706     unsigned short  Width, Height;  
 
 2707     unsigned short  X, Y;           
 
 2708     unsigned int    GlyphID;        
 
 2709     float           GlyphAdvanceX;  
 
 2712     ImFontAtlasCustomRect()         { Width = Height = 0; X = Y = 0xFFFF; GlyphID = 0; GlyphAdvanceX = 0.0f; GlyphOffset = 
ImVec2(0, 0); Font = NULL; }
 
 2713     bool IsPacked()
 const           { 
return X != 0xFFFF; }
 
 2717 enum ImFontAtlasFlags_
 
 2719     ImFontAtlasFlags_None               = 0,
 
 2720     ImFontAtlasFlags_NoPowerOfTwoHeight = 1 << 0,   
 
 2721     ImFontAtlasFlags_NoMouseCursors     = 1 << 1,   
 
 2722     ImFontAtlasFlags_NoBakedLines       = 1 << 2,   
 
 2748     IMGUI_API 
ImFont*           AddFontFromFileTTF(
const char* filename, 
float size_pixels, 
const ImFontConfig* font_cfg = NULL, 
const ImWchar* glyph_ranges = NULL);
 
 2749     IMGUI_API 
ImFont*           AddFontFromMemoryTTF(
void* font_data, 
int font_size, 
float size_pixels, 
const ImFontConfig* font_cfg = NULL, 
const ImWchar* glyph_ranges = NULL); 
 
 2750     IMGUI_API 
ImFont*           AddFontFromMemoryCompressedTTF(
const void* compressed_font_data, 
int compressed_font_size, 
float size_pixels, 
const ImFontConfig* font_cfg = NULL, 
const ImWchar* glyph_ranges = NULL); 
 
 2751     IMGUI_API 
ImFont*           AddFontFromMemoryCompressedBase85TTF(
const char* compressed_font_data_base85, 
float size_pixels, 
const ImFontConfig* font_cfg = NULL, 
const ImWchar* glyph_ranges = NULL);              
 
 2752     IMGUI_API 
void              ClearInputData();           
 
 2753     IMGUI_API 
void              ClearTexData();             
 
 2754     IMGUI_API 
void              ClearFonts();               
 
 2755     IMGUI_API 
void              Clear();                    
 
 2762     IMGUI_API 
bool              Build();                    
 
 2763     IMGUI_API 
void              GetTexDataAsAlpha8(
unsigned char** out_pixels, 
int* out_width, 
int* out_height, 
int* out_bytes_per_pixel = NULL);  
 
 2764     IMGUI_API 
void              GetTexDataAsRGBA32(
unsigned char** out_pixels, 
int* out_width, 
int* out_height, 
int* out_bytes_per_pixel = NULL);  
 
 2765     bool                        IsBuilt()
 const             { 
return Fonts.Size > 0 && TexReady; } 
 
 2766     void                        SetTexID(ImTextureID 
id)    { TexID = id; }
 
 2775     IMGUI_API 
const ImWchar*    GetGlyphRangesDefault();                
 
 2776     IMGUI_API 
const ImWchar*    GetGlyphRangesGreek();                  
 
 2777     IMGUI_API 
const ImWchar*    GetGlyphRangesKorean();                 
 
 2778     IMGUI_API 
const ImWchar*    GetGlyphRangesJapanese();               
 
 2779     IMGUI_API 
const ImWchar*    GetGlyphRangesChineseFull();            
 
 2780     IMGUI_API 
const ImWchar*    GetGlyphRangesChineseSimplifiedCommon();
 
 2781     IMGUI_API 
const ImWchar*    GetGlyphRangesCyrillic();               
 
 2782     IMGUI_API 
const ImWchar*    GetGlyphRangesThai();                   
 
 2783     IMGUI_API 
const ImWchar*    GetGlyphRangesVietnamese();             
 
 2796     IMGUI_API 
int               AddCustomRectRegular(
int width, 
int height);
 
 2797     IMGUI_API 
int               AddCustomRectFontGlyph(
ImFont* font, ImWchar 
id, 
int width, 
int height, 
float advance_x, 
const ImVec2& offset = 
ImVec2(0, 0));
 
 2798     ImFontAtlasCustomRect*      GetCustomRectByIndex(
int index) { IM_ASSERT(index >= 0); 
return &CustomRects[index]; }
 
 2802     IMGUI_API 
bool              GetMouseCursorTexData(ImGuiMouseCursor cursor, 
ImVec2* out_offset, 
ImVec2* out_size, 
ImVec2 out_uv_border[2], 
ImVec2 out_uv_fill[2]);
 
 2808     ImFontAtlasFlags            Flags;              
 
 2810     int                         TexDesiredWidth;    
 
 2811     int                         TexGlyphPadding;    
 
 2818     bool                        TexPixelsUseColors; 
 
 2819     unsigned char*              TexPixelsAlpha8;    
 
 2820     unsigned int*               TexPixelsRGBA32;    
 
 2828     ImVec4                      TexUvLines[IM_DRAWLIST_TEX_LINES_WIDTH_MAX + 1];  
 
 2832     unsigned int                FontBuilderFlags;   
 
 2835     int                         PackIdMouseCursors; 
 
 2849     float                       FallbackAdvanceX;   
 
 2860     short                       ConfigDataCount;    
 
 2861     ImWchar                     FallbackChar;       
 
 2862     ImWchar                     EllipsisChar;       
 
 2864     bool                        DirtyLookupTables;  
 
 2866     float                       Ascent, Descent;    
 
 2867     int                         MetricsTotalSurface;
 
 2868     ImU8                        Used4kPagesMap[(IM_UNICODE_CODEPOINT_MAX+1)/4096/8]; 
 
 2873     IMGUI_API 
const ImFontGlyph*FindGlyph(ImWchar c) 
const;
 
 2874     IMGUI_API 
const ImFontGlyph*FindGlyphNoFallback(ImWchar c) 
const;
 
 2875     float                       GetCharAdvance(ImWchar c)
 const     { 
return ((
int)c < IndexAdvanceX.Size) ? IndexAdvanceX[(int)c] : FallbackAdvanceX; }
 
 2876     bool                        IsLoaded()
 const                    { 
return ContainerAtlas != NULL; }
 
 2877     const char*                 GetDebugName()
 const                { 
return ConfigData ? ConfigData->Name : 
"<unknown>"; }
 
 2881     IMGUI_API 
ImVec2            CalcTextSizeA(
float size, 
float max_width, 
float wrap_width, 
const char* text_begin, 
const char* text_end = NULL, 
const char** remaining = NULL) 
const; 
 
 2882     IMGUI_API 
const char*       CalcWordWrapPositionA(
float scale, 
const char* text, 
const char* text_end, 
float wrap_width) 
const;
 
 2883     IMGUI_API 
void              RenderChar(
ImDrawList* draw_list, 
float size, 
const ImVec2& pos, ImU32 col, ImWchar c) 
const;
 
 2884     IMGUI_API 
void              RenderText(
ImDrawList* draw_list, 
float size, 
const ImVec2& pos, ImU32 col, 
const ImVec4& clip_rect, 
const char* text_begin, 
const char* text_end, 
float wrap_width = 0.0f, 
bool cpu_fine_clip = 
false) 
const;
 
 2887     IMGUI_API 
void              BuildLookupTable();
 
 2888     IMGUI_API 
void              ClearOutputData();
 
 2889     IMGUI_API 
void              GrowIndex(
int new_size);
 
 2890     IMGUI_API 
void              AddGlyph(
const ImFontConfig* src_cfg, ImWchar c, 
float x0, 
float y0, 
float x1, 
float y1, 
float u0, 
float v0, 
float u1, 
float v1, 
float advance_x);
 
 2891     IMGUI_API 
void              AddRemapChar(ImWchar dst, ImWchar src, 
bool overwrite_dst = 
true); 
 
 2892     IMGUI_API 
void              SetGlyphVisible(ImWchar c, 
bool visible);
 
 2893     IMGUI_API 
bool              IsGlyphRangeUnused(
unsigned int c_begin, 
unsigned int c_last);
 
 2901 enum ImGuiViewportFlags_
 
 2903     ImGuiViewportFlags_None                     = 0,
 
 2904     ImGuiViewportFlags_IsPlatformWindow         = 1 << 0,   
 
 2905     ImGuiViewportFlags_IsPlatformMonitor        = 1 << 1,   
 
 2906     ImGuiViewportFlags_OwnedByApp               = 1 << 2,   
 
 2918     ImGuiViewportFlags  Flags;                  
 
 2925     void*               PlatformHandleRaw;      
 
 2930     ImVec2              GetCenter()
 const       { 
return ImVec2(Pos.x + Size.x * 0.5f, Pos.y + Size.y * 0.5f); }
 
 2931     ImVec2              GetWorkCenter()
 const   { 
return ImVec2(WorkPos.x + WorkSize.x * 0.5f, WorkPos.y + WorkSize.y * 0.5f); }
 
 2943     float   InputLineHeight;    
 
 2956 #ifndef IMGUI_DISABLE_OBSOLETE_KEYIO 
 2957     IMGUI_API ImGuiKey     GetKeyIndex(ImGuiKey key);  
 
 2959     static inline ImGuiKey GetKeyIndex(ImGuiKey key)   { IM_ASSERT(key >= ImGuiKey_NamedKey_BEGIN && key < ImGuiKey_NamedKey_END && 
"ImGuiKey and native_index was merged together and native_index is disabled by IMGUI_DISABLE_OBSOLETE_KEYIO. Please switch to ImGuiKey."); 
return key; }
 
 2963 #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS 
 2967     IMGUI_API 
bool      ImageButton(ImTextureID user_texture_id, 
const ImVec2& size, 
const ImVec2& uv0 = 
ImVec2(0, 0), 
const ImVec2& uv1 = 
ImVec2(1, 1), 
int frame_padding = -1, 
const ImVec4& bg_col = 
ImVec4(0, 0, 0, 0), 
const ImVec4& tint_col = 
ImVec4(1, 1, 1, 1)); 
 
 2969     static inline void  CaptureKeyboardFromApp(
bool want_capture_keyboard = 
true)           { SetNextFrameWantCaptureKeyboard(want_capture_keyboard); } 
 
 2970     static inline void  CaptureMouseFromApp(
bool want_capture_mouse = 
true)                 { SetNextFrameWantCaptureMouse(want_capture_mouse); }       
 
 2972     IMGUI_API 
void      CalcListClipping(
int items_count, 
float items_height, 
int* out_items_display_start, 
int* out_items_display_end); 
 
 2974     static inline float GetWindowContentRegionWidth()                                       { 
return GetWindowContentRegionMax().x - GetWindowContentRegionMin().x; }
 
 2976     IMGUI_API 
bool      ListBoxHeader(
const char* label, 
int items_count, 
int height_in_items = -1); 
 
 2977     static inline bool  ListBoxHeader(
const char* label, 
const ImVec2& size = 
ImVec2(0, 0)) { 
return BeginListBox(label, size); }
 
 2978     static inline void  ListBoxFooter()                                                     { EndListBox(); }
 
 3028 typedef ImDrawFlags ImDrawCornerFlags;
 
 3029 enum ImDrawCornerFlags_
 
 3031     ImDrawCornerFlags_None      = ImDrawFlags_RoundCornersNone,         
 
 3032     ImDrawCornerFlags_TopLeft   = ImDrawFlags_RoundCornersTopLeft,      
 
 3033     ImDrawCornerFlags_TopRight  = ImDrawFlags_RoundCornersTopRight,     
 
 3034     ImDrawCornerFlags_BotLeft   = ImDrawFlags_RoundCornersBottomLeft,   
 
 3035     ImDrawCornerFlags_BotRight  = ImDrawFlags_RoundCornersBottomRight,  
 
 3036     ImDrawCornerFlags_All       = ImDrawFlags_RoundCornersAll,          
 
 3037     ImDrawCornerFlags_Top       = ImDrawCornerFlags_TopLeft | ImDrawCornerFlags_TopRight,
 
 3038     ImDrawCornerFlags_Bot       = ImDrawCornerFlags_BotLeft | ImDrawCornerFlags_BotRight,
 
 3039     ImDrawCornerFlags_Left      = ImDrawCornerFlags_TopLeft | ImDrawCornerFlags_BotLeft,
 
 3040     ImDrawCornerFlags_Right     = ImDrawCornerFlags_TopRight | ImDrawCornerFlags_BotRight,
 
 3045 typedef ImGuiKeyChord ImGuiModFlags;      
 
 3046 enum ImGuiModFlags_ { ImGuiModFlags_None = 0, ImGuiModFlags_Ctrl = ImGuiMod_Ctrl, ImGuiModFlags_Shift = ImGuiMod_Shift, ImGuiModFlags_Alt = ImGuiMod_Alt, ImGuiModFlags_Super = ImGuiMod_Super };
 
 3053 #if defined(IMGUI_DISABLE_METRICS_WINDOW) && !defined(IMGUI_DISABLE_OBSOLETE_FUNCTIONS) && !defined(IMGUI_DISABLE_DEBUG_TOOLS) 
 3054 #define IMGUI_DISABLE_DEBUG_TOOLS 
 3056 #if defined(IMGUI_DISABLE_METRICS_WINDOW) && defined(IMGUI_DISABLE_OBSOLETE_FUNCTIONS) 
 3057 #error IMGUI_DISABLE_METRICS_WINDOW was renamed to IMGUI_DISABLE_DEBUG_TOOLS, please use new name. 
 3062 #if defined(__clang__) 
 3063 #pragma clang diagnostic pop 
 3064 #elif defined(__GNUC__) 
 3065 #pragma GCC diagnostic pop 
 3069 #pragma warning (pop) 
 3073 #ifdef IMGUI_INCLUDE_IMGUI_USER_H 
 3074 #include "imgui_user.h" 
Definition: imgui_internal.h:755
Definition: imgui_internal.h:3203
Definition: imgui_internal.h:1732