@ -9,15 +9,21 @@ 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					/*
  
					 
					 
					 
					/*
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					Index  of  this  file :  
					 
					 
					 
					Index  of  this  file :  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Header mess
  
					 
					 
					 
					
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					// Forward declarations
  
					 
					 
					 
					// [SECTION] Header mess
  
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					// STB libraries includes
  
					 
					 
					 
					// [SECTION] Forward declarations
  
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					// Context pointer
  
					 
					 
					 
					// [SECTION] Context pointer
  
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					// Generic helpers
  
					 
					 
					 
					// [SECTION] STB libraries includes
  
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					// Flags, enums and data structures
  
					 
					 
					 
					// [SECTION] Macros
  
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					// Main imgui context
  
					 
					 
					 
					// [SECTION] Generic helpers
  
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					// Tab bar, Tab item
  
					 
					 
					 
					// [SECTION] ImDrawList support
  
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					// Internal API
  
					 
					 
					 
					// [SECTION] Misc flags, enums and data structures
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// [SECTION] Settings support
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// [SECTION] ImGuiContext (main imgui context)
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// [SECTION] ImGuiWindowTempData, ImGuiWindow
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// [SECTION] Tab bar, Tab item
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// [SECTION] Internal API
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// [SECTION] Test Engine Hooks (imgui_test_engine)
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					*/  
					 
					 
					 
					*/  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -25,7 +31,7 @@ Index of this file: 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# ifndef IMGUI_DISABLE  
					 
					 
					 
					# ifndef IMGUI_DISABLE  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Header mess
  
					 
					 
					 
					// [SECTION]  Header mess
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# ifndef IMGUI_VERSION  
					 
					 
					 
					# ifndef IMGUI_VERSION  
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -46,8 +52,8 @@ Index of this file: 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Clang/GCC warnings with -Weverything
  
					 
					 
					 
					// Clang/GCC warnings with -Weverything
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# if defined(__clang__)  
					 
					 
					 
					# if defined(__clang__)  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# pragma clang diagnostic push  
					 
					 
					 
					# pragma clang diagnostic push  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# pragma clang diagnostic ignored "-Wunused-function"          // for stb_textedit.h
  
					 
					 
					 
					# pragma clang diagnostic ignored "-Wunused-function"     // for stb_textedit.h
  
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					# pragma clang diagnostic ignored "-Wmissing-prototypes"       // for stb_textedit.h
  
					 
					 
					 
					# pragma clang diagnostic ignored "-Wmissing-prototypes"  // for stb_textedit.h
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					# pragma clang diagnostic ignored "-Wold-style-cast"  
					 
					 
					 
					# pragma clang diagnostic ignored "-Wold-style-cast"  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# if __has_warning("-Wzero-as-null-pointer-constant")  
					 
					 
					 
					# if __has_warning("-Wzero-as-null-pointer-constant")  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant"  
					 
					 
					 
					# pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant"  
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -57,20 +63,20 @@ Index of this file: 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# endif  
					 
					 
					 
					# endif  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# elif defined(__GNUC__)  
					 
					 
					 
					# elif defined(__GNUC__)  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# pragma GCC diagnostic push  
					 
					 
					 
					# pragma GCC diagnostic push  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# pragma GCC diagnostic ignored "-Wpragmas"                    // warning: unknown option after '#pragma GCC diagnostic' kind
  
					 
					 
					 
					# pragma GCC diagnostic ignored "-Wpragmas"               // warning: unknown option after '#pragma GCC diagnostic' kind
  
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					# pragma GCC diagnostic ignored "-Wclass-memaccess"            // [__GNUC__ >= 8] warning: 'memset/memcpy' clearing/writing an object of type 'xxxx' with no trivial copy-assignment; use assignment or value-initialization instead
  
					 
					 
					 
					# pragma GCC diagnostic ignored "-Wclass-memaccess"       // [__GNUC__ >= 8] warning: 'memset/memcpy' clearing/writing an object of type 'xxxx' with no trivial copy-assignment; use assignment or value-initialization instead
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					# endif  
					 
					 
					 
					# endif  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Legacy defines
  
					 
					 
					 
					// Legacy defines
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# ifdef IMGUI_DISABLE_FORMAT_STRING_FUNCTIONS                  // Renamed in 1.74
  
					 
					 
					 
					# ifdef IMGUI_DISABLE_FORMAT_STRING_FUNCTIONS             // Renamed in 1.74
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					# error Use IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS  
					 
					 
					 
					# error Use IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# endif  
					 
					 
					 
					# endif  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# ifdef IMGUI_DISABLE_MATH_FUNCTIONS                           // Renamed in 1.74
  
					 
					 
					 
					# ifdef IMGUI_DISABLE_MATH_FUNCTIONS                      // Renamed in 1.74
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					# error Use IMGUI_DISABLE_DEFAULT_MATH_FUNCTIONS  
					 
					 
					 
					# error Use IMGUI_DISABLE_DEFAULT_MATH_FUNCTIONS  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# endif  
					 
					 
					 
					# endif  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Forward declarations
  
					 
					 
					 
					// [SECTION]  Forward declarations
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					struct  ImBitVector ;                  // Store 1-bit per value
  
					 
					 
					 
					struct  ImBitVector ;                  // Store 1-bit per value
  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -115,8 +121,17 @@ typedef int ImGuiSliderFlags;           // -> enum ImGuiSliderFlags_        // F 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					typedef  int  ImGuiTextFlags ;              // -> enum ImGuiTextFlags_          // Flags: for TextEx()
  
					 
					 
					 
					typedef  int  ImGuiTextFlags ;              // -> enum ImGuiTextFlags_          // Flags: for TextEx()
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					typedef  int  ImGuiTooltipFlags ;           // -> enum ImGuiTooltipFlags_       // Flags: for BeginTooltipEx()
  
					 
					 
					 
					typedef  int  ImGuiTooltipFlags ;           // -> enum ImGuiTooltipFlags_       // Flags: for BeginTooltipEx()
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// [SECTION] Context pointer
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// See implementation of this variable in imgui.cpp for comments and details.
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# ifndef GImGui  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					extern  IMGUI_API  ImGuiContext *  GImGui ;   // Current implicit context pointer
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# endif  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					//-------------------------------------------------------------------------
  
					 
					 
					 
					//-------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// STB libraries includes
  
					 
					 
					 
					// [SECTION]  STB libraries includes
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					//-------------------------------------------------------------------------
  
					 
					 
					 
					//-------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					namespace  ImStb  
					 
					 
					 
					namespace  ImStb  
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -134,15 +149,7 @@ namespace ImStb 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  // namespace ImStb
  
					 
					 
					 
					}  // namespace ImStb
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Context pointer
  
					 
					 
					 
					// [SECTION] Macros
  
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# ifndef GImGui  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					extern  IMGUI_API  ImGuiContext *  GImGui ;   // Current implicit context pointer
  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# endif  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Macros
  
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Debug Logging
  
					 
					 
					 
					// Debug Logging
  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -192,32 +199,50 @@ extern IMGUI_API ImGuiContext* GImGui;  // Current implicit context pointer 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# define IMGUI_CDECL  
					 
					 
					 
					# define IMGUI_CDECL  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# endif  
					 
					 
					 
					# endif  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// Debug Tools
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// Use 'Metrics->Tools->Item Picker' to break into the call-stack of a specific item.
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# ifndef IM_DEBUG_BREAK  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# if defined(__clang__)  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# define IM_DEBUG_BREAK()    __builtin_debugtrap()  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# elif defined (_MSC_VER)  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# define IM_DEBUG_BREAK()    __debugbreak()  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# else  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# define IM_DEBUG_BREAK()    IM_ASSERT(0)     // It is expected that you define IM_DEBUG_BREAK() into something that will break nicely in a debugger!
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# endif  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# endif  // #ifndef IM_DEBUG_BREAK
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Generic helpers
  
					 
					 
					 
					// [SECTION]  Generic helpers
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					// Note that the ImXXX helpers functions are lower-level than ImGui functions.
  
					 
					 
					 
					// Note that the ImXXX helpers functions are lower-level than ImGui functions.
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// ImGui functions or the ImGui context are never called/used from other ImXXX functions.
  
					 
					 
					 
					// ImGui functions or the ImGui context are never called/used from other ImXXX functions.
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// - Helpers: Misc
  
					 
					 
					 
					// - Helpers: Hashing
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// - Helpers: Sorting
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// - Helpers: Bit manipulation
  
					 
					 
					 
					// - Helpers: Bit manipulation
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// - Helpers: String, Formatting
  
					 
					 
					 
					// - Helpers: String, Formatting
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// - Helpers: UTF-8 <> wchar conversions
  
					 
					 
					 
					// - Helpers: UTF-8 <> wchar conversions
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// - Helpers: ImVec2/ImVec4 operators
  
					 
					 
					 
					// - Helpers: ImVec2/ImVec4 operators
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// - Helpers: Maths
  
					 
					 
					 
					// - Helpers: Maths
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// - Helpers: Geometry
  
					 
					 
					 
					// - Helpers: Geometry
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// - Helpers: Bit arrays
  
					 
					 
					 
					// - Helper: ImVec1
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// - Helper: ImVec2ih
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// - Helper: ImRect
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// - Helper: ImBitArray
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// - Helper: ImBitVector
  
					 
					 
					 
					// - Helper: ImBitVector
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// - Helper: ImPool<>
  
					 
					 
					 
					// - Helper: ImPool<>
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// - Helper: ImChunkStream<>
  
					 
					 
					 
					// - Helper: ImChunkStream<>
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Helpers: Misc
  
					 
					 
					 
					// Helpers: Hashing
  
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					# define ImQsort         qsort  
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					IMGUI_API  ImU32          ImHashData ( const  void *  data ,  size_t  data_size ,  ImU32  seed  =  0 ) ;  
					 
					 
					 
					IMGUI_API  ImU32          ImHashData ( const  void *  data ,  size_t  data_size ,  ImU32  seed  =  0 ) ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					IMGUI_API  ImU32          ImHashStr ( const  char *  data ,  size_t  data_size  =  0 ,  ImU32  seed  =  0 ) ;  
					 
					 
					 
					IMGUI_API  ImU32          ImHashStr ( const  char *  data ,  size_t  data_size  =  0 ,  ImU32  seed  =  0 ) ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS  
					 
					 
					 
					# ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  inline  ImU32      ImHash ( const  void *  data ,  int  size ,  ImU32  seed  =  0 )  {  return  size  ?  ImHashData ( data ,  ( size_t ) size ,  seed )  :  ImHashStr ( ( const  char * ) data ,  0 ,  seed ) ;  }  // [moved to ImHashStr/ImHashData in 1.68]
  
					 
					 
					 
					static  inline  ImU32      ImHash ( const  void *  data ,  int  size ,  ImU32  seed  =  0 )  {  return  size  ?  ImHashData ( data ,  ( size_t ) size ,  seed )  :  ImHashStr ( ( const  char * ) data ,  0 ,  seed ) ;  }  // [moved to ImHashStr/ImHashData in 1.68]
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# endif  
					 
					 
					 
					# endif  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// Helpers: Sorting
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# define ImQsort         qsort  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Helpers: Color Blending
  
					 
					 
					 
					// Helpers: Color Blending
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					IMGUI_API  ImU32          ImAlphaBlendColors ( ImU32  col_a ,  ImU32  col_b ) ;  
					 
					 
					 
					IMGUI_API  ImU32          ImAlphaBlendColors ( ImU32  col_a ,  ImU32  col_b ) ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -286,7 +311,6 @@ static inline ImU64         ImFileGetSize(ImFileHandle) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  inline  ImU64          ImFileRead ( void * ,  ImU64 ,  ImU64 ,  ImFileHandle )            {  return  0 ;  }  
					 
					 
					 
					static  inline  ImU64          ImFileRead ( void * ,  ImU64 ,  ImU64 ,  ImFileHandle )            {  return  0 ;  }  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  inline  ImU64          ImFileWrite ( const  void * ,  ImU64 ,  ImU64 ,  ImFileHandle )     {  return  0 ;  }  
					 
					 
					 
					static  inline  ImU64          ImFileWrite ( const  void * ,  ImU64 ,  ImU64 ,  ImFileHandle )     {  return  0 ;  }  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# endif  
					 
					 
					 
					# endif  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# ifndef IMGUI_DISABLE_DEFAULT_FILE_FUNCTIONS  
					 
					 
					 
					# ifndef IMGUI_DISABLE_DEFAULT_FILE_FUNCTIONS  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					typedef  FILE *  ImFileHandle ;  
					 
					 
					 
					typedef  FILE *  ImFileHandle ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					IMGUI_API  ImFileHandle       ImFileOpen ( const  char *  filename ,  const  char *  mode ) ;  
					 
					 
					 
					IMGUI_API  ImFileHandle       ImFileOpen ( const  char *  filename ,  const  char *  mode ) ;  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -354,7 +378,61 @@ IMGUI_API void       ImTriangleBarycentricCoords(const ImVec2& a, const ImVec2& 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					inline  float          ImTriangleArea ( const  ImVec2 &  a ,  const  ImVec2 &  b ,  const  ImVec2 &  c )  {  return  ImFabs ( ( a . x  *  ( b . y  -  c . y ) )  +  ( b . x  *  ( c . y  -  a . y ) )  +  ( c . x  *  ( a . y  -  b . y ) ) )  *  0.5f ;  }  
					 
					 
					 
					inline  float          ImTriangleArea ( const  ImVec2 &  a ,  const  ImVec2 &  b ,  const  ImVec2 &  c )  {  return  ImFabs ( ( a . x  *  ( b . y  -  c . y ) )  +  ( b . x  *  ( c . y  -  a . y ) )  +  ( c . x  *  ( a . y  -  b . y ) ) )  *  0.5f ;  }  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					IMGUI_API  ImGuiDir    ImGetDirQuadrantFromDelta ( float  dx ,  float  dy ) ;  
					 
					 
					 
					IMGUI_API  ImGuiDir    ImGetDirQuadrantFromDelta ( float  dx ,  float  dy ) ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Helpers: Bit arrays
  
					 
					 
					 
					// Helper: ImVec1 (1D vector)
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// (this odd construct is used to facilitate the transition between 1D and 2D, and the maintenance of some branches/patches)
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					struct  ImVec1  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    float    x ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec1 ( )          {  x  =  0.0f ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec1 ( float  _x )  {  x  =  _x ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					} ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// Helper: ImVec2ih (2D vector, half-size integer, for long-term packed storage)
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					struct  ImVec2ih  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    short    x ,  y ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec2ih ( )                            {  x  =  y  =  0 ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec2ih ( short  _x ,  short  _y )          {  x  =  _x ;  y  =  _y ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    explicit  ImVec2ih ( const  ImVec2 &  rhs )  {  x  =  ( short ) rhs . x ;  y  =  ( short ) rhs . y ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					} ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// Helper: ImRect (2D axis aligned bounding-box)
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// NB: we can't rely on ImVec2 math operators being available here!
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					struct  IMGUI_API  ImRect  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec2       Min ;     // Upper-left
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec2       Max ;     // Lower-right
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImRect ( )                                         :  Min ( 0.0f ,  0.0f ) ,  Max ( 0.0f ,  0.0f )   { }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImRect ( const  ImVec2 &  min ,  const  ImVec2 &  max )     :  Min ( min ) ,  Max ( max )                 { }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImRect ( const  ImVec4 &  v )                          :  Min ( v . x ,  v . y ) ,  Max ( v . z ,  v . w )       { }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImRect ( float  x1 ,  float  y1 ,  float  x2 ,  float  y2 )   :  Min ( x1 ,  y1 ) ,  Max ( x2 ,  y2 )           { }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec2       GetCenter ( )  const                    {  return  ImVec2 ( ( Min . x  +  Max . x )  *  0.5f ,  ( Min . y  +  Max . y )  *  0.5f ) ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec2       GetSize ( )  const                      {  return  ImVec2 ( Max . x  -  Min . x ,  Max . y  -  Min . y ) ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    float        GetWidth ( )  const                     {  return  Max . x  -  Min . x ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    float        GetHeight ( )  const                    {  return  Max . y  -  Min . y ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec2       GetTL ( )  const                        {  return  Min ;  }                    // Top-left
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec2       GetTR ( )  const                        {  return  ImVec2 ( Max . x ,  Min . y ) ;  }   // Top-right
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec2       GetBL ( )  const                        {  return  ImVec2 ( Min . x ,  Max . y ) ;  }   // Bottom-left
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec2       GetBR ( )  const                        {  return  Max ;  }                    // Bottom-right
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    bool         Contains ( const  ImVec2 &  p )  const      {  return  p . x      > =  Min . x  & &  p . y      > =  Min . y  & &  p . x      <   Max . x  & &  p . y      <   Max . y ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    bool         Contains ( const  ImRect &  r )  const      {  return  r . Min . x  > =  Min . x  & &  r . Min . y  > =  Min . y  & &  r . Max . x  < =  Max . x  & &  r . Max . y  < =  Max . y ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    bool         Overlaps ( const  ImRect &  r )  const      {  return  r . Min . y  <   Max . y  & &  r . Max . y  >   Min . y  & &  r . Min . x  <   Max . x  & &  r . Max . x  >   Min . x ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    void         Add ( const  ImVec2 &  p )                 {  if  ( Min . x  >  p . x )      Min . x  =  p . x ;      if  ( Min . y  >  p . y )      Min . y  =  p . y ;      if  ( Max . x  <  p . x )      Max . x  =  p . x ;      if  ( Max . y  <  p . y )      Max . y  =  p . y ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    void         Add ( const  ImRect &  r )                 {  if  ( Min . x  >  r . Min . x )  Min . x  =  r . Min . x ;  if  ( Min . y  >  r . Min . y )  Min . y  =  r . Min . y ;  if  ( Max . x  <  r . Max . x )  Max . x  =  r . Max . x ;  if  ( Max . y  <  r . Max . y )  Max . y  =  r . Max . y ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    void         Expand ( const  float  amount )           {  Min . x  - =  amount ;    Min . y  - =  amount ;    Max . x  + =  amount ;    Max . y  + =  amount ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    void         Expand ( const  ImVec2 &  amount )         {  Min . x  - =  amount . x ;  Min . y  - =  amount . y ;  Max . x  + =  amount . x ;  Max . y  + =  amount . y ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    void         Translate ( const  ImVec2 &  d )           {  Min . x  + =  d . x ;  Min . y  + =  d . y ;  Max . x  + =  d . x ;  Max . y  + =  d . y ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    void         TranslateX ( float  dx )                 {  Min . x  + =  dx ;  Max . x  + =  dx ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    void         TranslateY ( float  dy )                 {  Min . y  + =  dy ;  Max . y  + =  dy ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    void         ClipWith ( const  ImRect &  r )            {  Min  =  ImMax ( Min ,  r . Min ) ;  Max  =  ImMin ( Max ,  r . Max ) ;  }                    // Simple version, may lead to an inverted rectangle, which is fine for Contains/Overlaps test but not for display.
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    void         ClipWithFull ( const  ImRect &  r )        {  Min  =  ImClamp ( Min ,  r . Min ,  r . Max ) ;  Max  =  ImClamp ( Max ,  r . Min ,  r . Max ) ;  }  // Full version, ensure both points are fully clipped.
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    void         Floor ( )                              {  Min . x  =  IM_FLOOR ( Min . x ) ;  Min . y  =  IM_FLOOR ( Min . y ) ;  Max . x  =  IM_FLOOR ( Max . x ) ;  Max . y  =  IM_FLOOR ( Max . y ) ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    bool         IsInverted ( )  const                   {  return  Min . x  >  Max . x  | |  Min . y  >  Max . y ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					} ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// Helper: ImBitArray
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					inline  bool           ImBitArrayTestBit ( const  ImU32 *  arr ,  int  n )          {  ImU32  mask  =  ( ImU32 ) 1  < <  ( n  &  31 ) ;  return  ( arr [ n  > >  5 ]  &  mask )  ! =  0 ;  }  
					 
					 
					 
					inline  bool           ImBitArrayTestBit ( const  ImU32 *  arr ,  int  n )          {  ImU32  mask  =  ( ImU32 ) 1  < <  ( n  &  31 ) ;  return  ( arr [ n  > >  5 ]  &  mask )  ! =  0 ;  }  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					inline  void           ImBitArrayClearBit ( ImU32 *  arr ,  int  n )               {  ImU32  mask  =  ( ImU32 ) 1  < <  ( n  &  31 ) ;  arr [ n  > >  5 ]  & =  ~ mask ;  }  
					 
					 
					 
					inline  void           ImBitArrayClearBit ( ImU32 *  arr ,  int  n )               {  ImU32  mask  =  ( ImU32 ) 1  < <  ( n  &  31 ) ;  arr [ n  > >  5 ]  & =  ~ mask ;  }  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					inline  void           ImBitArraySetBit ( ImU32 *  arr ,  int  n )                 {  ImU32  mask  =  ( ImU32 ) 1  < <  ( n  &  31 ) ;  arr [ n  > >  5 ]  | =  mask ;  }  
					 
					 
					 
					inline  void           ImBitArraySetBit ( ImU32 *  arr ,  int  n )                 {  ImU32  mask  =  ( ImU32 ) 1  < <  ( n  &  31 ) ;  arr [ n  > >  5 ]  | =  mask ;  }  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -431,7 +509,50 @@ struct IMGUI_API ImChunkStream 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} ;  
					 
					 
					 
					} ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Flags, enums and data structures
  
					 
					 
					 
					// [SECTION] ImDrawList support
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// ImDrawList: Helper function to calculate a circle's segment count given its radius and a "maximum error" value.
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# define IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_MIN                     12  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# define IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_MAX                     512  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# define IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_CALC(_RAD,_MAXERROR)    ImClamp((int)((IM_PI * 2.0f)  /  ImAcos(((_RAD) - (_MAXERROR))  /  (_RAD))), IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_MIN, IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_MAX)  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// ImDrawList: You may set this to higher values (e.g. 2 or 3) to increase tessellation of fast rounded corners path.
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# ifndef IM_DRAWLIST_ARCFAST_TESSELLATION_MULTIPLIER  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# define IM_DRAWLIST_ARCFAST_TESSELLATION_MULTIPLIER             1  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# endif  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// Data shared between all ImDrawList instances
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// You may want to create your own instance of this if you want to use ImDrawList completely without ImGui. In that case, watch out for future changes to this structure.
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					struct  IMGUI_API  ImDrawListSharedData  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec2           TexUvWhitePixel ;             // UV of white pixel in the atlas
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImFont *          Font ;                        // Current/default font (optional, for simplified AddText overload)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    float            FontSize ;                    // Current/default font size (optional, for simplified AddText overload)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    float            CurveTessellationTol ;        // Tessellation tolerance when using PathBezierCurveTo()
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    float            CircleSegmentMaxError ;       // Number of circle segments to use per pixel of radius for AddCircle() etc
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec4           ClipRectFullscreen ;          // Value for PushClipRectFullscreen()
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImDrawListFlags  InitialFlags ;                // Initial flags at the beginning of the frame (it is possible to alter flags on a per-drawlist basis afterwards)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    // [Internal] Lookup tables
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec2           ArcFastVtx [ 12  *  IM_DRAWLIST_ARCFAST_TESSELLATION_MULTIPLIER ] ;   // FIXME: Bake rounded corners fill/borders in atlas
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImU8             CircleSegmentCounts [ 64 ] ;     // Precomputed segment count for given radius (array index + 1) before we calculate it dynamically (to avoid calculation overhead)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImDrawListSharedData ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    void  SetCircleSegmentMaxError ( float  max_error ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					} ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					struct  ImDrawDataBuilder  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVector < ImDrawList * >    Layers [ 2 ] ;            // Global layers for: regular, tooltip
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    void  Clear ( )             {  for  ( int  n  =  0 ;  n  <  IM_ARRAYSIZE ( Layers ) ;  n + + )  Layers [ n ] . resize ( 0 ) ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    void  ClearFreeMemory ( )   {  for  ( int  n  =  0 ;  n  <  IM_ARRAYSIZE ( Layers ) ;  n + + )  Layers [ n ] . clear ( ) ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    IMGUI_API  void  FlattenIntoSingleLayer ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					} ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// [SECTION] Misc flags, enums and data structures
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					enum  ImGuiButtonFlags_  
					 
					 
					 
					enum  ImGuiButtonFlags_  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -662,59 +783,6 @@ enum ImGuiPopupPositionPolicy 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiPopupPositionPolicy_ComboBox   
					 
					 
					 
					    ImGuiPopupPositionPolicy_ComboBox   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} ;  
					 
					 
					 
					} ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// 1D vector (this odd construct is used to facilitate the transition between 1D and 2D, and the maintenance of some branches/patches)
  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					struct  ImVec1  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    float    x ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec1 ( )          {  x  =  0.0f ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec1 ( float  _x )  {  x  =  _x ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} ;  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// 2D vector (half-size integer)
  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					struct  ImVec2ih  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    short    x ,  y ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec2ih ( )                            {  x  =  y  =  0 ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec2ih ( short  _x ,  short  _y )          {  x  =  _x ;  y  =  _y ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    explicit  ImVec2ih ( const  ImVec2 &  rhs )  {  x  =  ( short ) rhs . x ;  y  =  ( short ) rhs . y ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} ;  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// 2D axis aligned bounding-box
  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// NB: we can't rely on ImVec2 math operators being available here
  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					struct  IMGUI_API  ImRect  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec2       Min ;     // Upper-left
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec2       Max ;     // Lower-right
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImRect ( )                                         :  Min ( 0.0f ,  0.0f ) ,  Max ( 0.0f ,  0.0f )               { }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImRect ( const  ImVec2 &  min ,  const  ImVec2 &  max )     :  Min ( min ) ,  Max ( max )                             { }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImRect ( const  ImVec4 &  v )                          :  Min ( v . x ,  v . y ) ,  Max ( v . z ,  v . w )                   { }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImRect ( float  x1 ,  float  y1 ,  float  x2 ,  float  y2 )   :  Min ( x1 ,  y1 ) ,  Max ( x2 ,  y2 )                       { }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec2       GetCenter ( )  const                    {  return  ImVec2 ( ( Min . x  +  Max . x )  *  0.5f ,  ( Min . y  +  Max . y )  *  0.5f ) ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec2       GetSize ( )  const                      {  return  ImVec2 ( Max . x  -  Min . x ,  Max . y  -  Min . y ) ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    float        GetWidth ( )  const                     {  return  Max . x  -  Min . x ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    float        GetHeight ( )  const                    {  return  Max . y  -  Min . y ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec2       GetTL ( )  const                        {  return  Min ;  }                    // Top-left
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec2       GetTR ( )  const                        {  return  ImVec2 ( Max . x ,  Min . y ) ;  }   // Top-right
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec2       GetBL ( )  const                        {  return  ImVec2 ( Min . x ,  Max . y ) ;  }   // Bottom-left
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec2       GetBR ( )  const                        {  return  Max ;  }                    // Bottom-right
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    bool         Contains ( const  ImVec2 &  p )  const      {  return  p . x      > =  Min . x  & &  p . y      > =  Min . y  & &  p . x      <   Max . x  & &  p . y      <   Max . y ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    bool         Contains ( const  ImRect &  r )  const      {  return  r . Min . x  > =  Min . x  & &  r . Min . y  > =  Min . y  & &  r . Max . x  < =  Max . x  & &  r . Max . y  < =  Max . y ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    bool         Overlaps ( const  ImRect &  r )  const      {  return  r . Min . y  <   Max . y  & &  r . Max . y  >   Min . y  & &  r . Min . x  <   Max . x  & &  r . Max . x  >   Min . x ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void         Add ( const  ImVec2 &  p )                 {  if  ( Min . x  >  p . x )      Min . x  =  p . x ;      if  ( Min . y  >  p . y )      Min . y  =  p . y ;      if  ( Max . x  <  p . x )      Max . x  =  p . x ;      if  ( Max . y  <  p . y )      Max . y  =  p . y ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void         Add ( const  ImRect &  r )                 {  if  ( Min . x  >  r . Min . x )  Min . x  =  r . Min . x ;  if  ( Min . y  >  r . Min . y )  Min . y  =  r . Min . y ;  if  ( Max . x  <  r . Max . x )  Max . x  =  r . Max . x ;  if  ( Max . y  <  r . Max . y )  Max . y  =  r . Max . y ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void         Expand ( const  float  amount )           {  Min . x  - =  amount ;    Min . y  - =  amount ;    Max . x  + =  amount ;    Max . y  + =  amount ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void         Expand ( const  ImVec2 &  amount )         {  Min . x  - =  amount . x ;  Min . y  - =  amount . y ;  Max . x  + =  amount . x ;  Max . y  + =  amount . y ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void         Translate ( const  ImVec2 &  d )           {  Min . x  + =  d . x ;  Min . y  + =  d . y ;  Max . x  + =  d . x ;  Max . y  + =  d . y ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void         TranslateX ( float  dx )                 {  Min . x  + =  dx ;  Max . x  + =  dx ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void         TranslateY ( float  dy )                 {  Min . y  + =  dy ;  Max . y  + =  dy ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void         ClipWith ( const  ImRect &  r )            {  Min  =  ImMax ( Min ,  r . Min ) ;  Max  =  ImMin ( Max ,  r . Max ) ;  }                    // Simple version, may lead to an inverted rectangle, which is fine for Contains/Overlaps test but not for display.
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void         ClipWithFull ( const  ImRect &  r )        {  Min  =  ImClamp ( Min ,  r . Min ,  r . Max ) ;  Max  =  ImClamp ( Max ,  r . Min ,  r . Max ) ;  }  // Full version, ensure both points are fully clipped.
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void         Floor ( )                              {  Min . x  =  IM_FLOOR ( Min . x ) ;  Min . y  =  IM_FLOOR ( Min . y ) ;  Max . x  =  IM_FLOOR ( Max . x ) ;  Max . y  =  IM_FLOOR ( Max . y ) ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    bool         IsInverted ( )  const                   {  return  Min . x  >  Max . x  | |  Min . y  >  Max . y ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} ;  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					struct  ImGuiDataTypeTempStorage  
					 
					 
					 
					struct  ImGuiDataTypeTempStorage  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImU8         Data [ 8 ] ;         // Can fit any data up to ImGuiDataType_COUNT
   
					 
					 
					 
					    ImU8         Data [ 8 ] ;         // Can fit any data up to ImGuiDataType_COUNT
   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -815,35 +883,6 @@ struct IMGUI_API ImGuiInputTextState 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void         SelectAll ( )                  {  Stb . select_start  =  0 ;  Stb . cursor  =  Stb . select_end  =  CurLenW ;  Stb . has_preferred_x  =  0 ;  }   
					 
					 
					 
					    void         SelectAll ( )                  {  Stb . select_start  =  0 ;  Stb . cursor  =  Stb . select_end  =  CurLenW ;  Stb . has_preferred_x  =  0 ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} ;  
					 
					 
					 
					} ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Windows data saved in imgui.ini file
  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Because we never destroy or rename ImGuiWindowSettings, we can store the names in a separate buffer easily.
  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// (this is designed to be stored in a ImChunkStream buffer, with the variable-length Name following our structure)
  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					struct  ImGuiWindowSettings  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiID      ID ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec2ih     Pos ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec2ih     Size ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    bool         Collapsed ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    bool         WantApply ;       // Set when loaded from .ini data (to enable merging/loading .ini data into an already running context)
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiWindowSettings ( )        {  ID  =  0 ;  Pos  =  Size  =  ImVec2ih ( 0 ,  0 ) ;  Collapsed  =  WantApply  =  false ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    char *  GetName ( )              {  return  ( char * ) ( this  +  1 ) ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} ;  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					struct  ImGuiSettingsHandler  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  char *  TypeName ;        // Short description stored in .ini file. Disallowed characters: '[' ']'
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiID      TypeHash ;        // == ImHashStr(TypeName)
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void         ( * ClearAllFn ) ( ImGuiContext *  ctx ,  ImGuiSettingsHandler *  handler ) ;                                 // Clear all settings data
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void         ( * ApplyAllFn ) ( ImGuiContext *  ctx ,  ImGuiSettingsHandler *  handler ) ;                                 // Read: Called after reading (in registration order)
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void *        ( * ReadOpenFn ) ( ImGuiContext *  ctx ,  ImGuiSettingsHandler *  handler ,  const  char *  name ) ;               // Read: Called when entering into a new ini entry e.g. "[Window][Name]"
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void         ( * ReadLineFn ) ( ImGuiContext *  ctx ,  ImGuiSettingsHandler *  handler ,  void *  entry ,  const  char *  line ) ;  // Read: Called for every line of text within an ini entry
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void         ( * WriteAllFn ) ( ImGuiContext *  ctx ,  ImGuiSettingsHandler *  handler ,  ImGuiTextBuffer *  out_buf ) ;       // Write: Output every entries into 'out_buf'
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void *        UserData ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiSettingsHandler ( )  {  memset ( this ,  0 ,  sizeof ( * this ) ) ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} ;  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Storage for current popup stack
  
					 
					 
					 
					// Storage for current popup stack
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					struct  ImGuiPopupData  
					 
					 
					 
					struct  ImGuiPopupData  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -902,45 +941,6 @@ struct ImGuiColumns 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    }   
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} ;  
					 
					 
					 
					} ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// ImDrawList: Helper function to calculate a circle's segment count given its radius and a "maximum error" value.
  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# define IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_MIN                     12  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# define IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_MAX                     512  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# define IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_CALC(_RAD,_MAXERROR)    ImClamp((int)((IM_PI * 2.0f)  /  ImAcos(((_RAD) - (_MAXERROR))  /  (_RAD))), IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_MIN, IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_MAX)  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// ImDrawList: You may set this to higher values (e.g. 2 or 3) to increase tessellation of fast rounded corners path.
  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# ifndef IM_DRAWLIST_ARCFAST_TESSELLATION_MULTIPLIER  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# define IM_DRAWLIST_ARCFAST_TESSELLATION_MULTIPLIER             1  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# endif  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Data shared between all ImDrawList instances
  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// You may want to create your own instance of this if you want to use ImDrawList completely without ImGui. In that case, watch out for future changes to this structure.
  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					struct  IMGUI_API  ImDrawListSharedData  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec2           TexUvWhitePixel ;             // UV of white pixel in the atlas
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImFont *          Font ;                        // Current/default font (optional, for simplified AddText overload)
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    float            FontSize ;                    // Current/default font size (optional, for simplified AddText overload)
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    float            CurveTessellationTol ;        // Tessellation tolerance when using PathBezierCurveTo()
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    float            CircleSegmentMaxError ;       // Number of circle segments to use per pixel of radius for AddCircle() etc
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec4           ClipRectFullscreen ;          // Value for PushClipRectFullscreen()
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImDrawListFlags  InitialFlags ;                // Initial flags at the beginning of the frame (it is possible to alter flags on a per-drawlist basis afterwards)
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // [Internal] Lookup tables
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVec2           ArcFastVtx [ 12  *  IM_DRAWLIST_ARCFAST_TESSELLATION_MULTIPLIER ] ;   // FIXME: Bake rounded corners fill/borders in atlas
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImU8             CircleSegmentCounts [ 64 ] ;     // Precomputed segment count for given radius (array index + 1) before we calculate it dynamically (to avoid calculation overhead)
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImDrawListSharedData ( ) ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void  SetCircleSegmentMaxError ( float  max_error ) ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} ;  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					struct  ImDrawDataBuilder  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImVector < ImDrawList * >    Layers [ 2 ] ;            // Global layers for: regular, tooltip
   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void  Clear ( )             {  for  ( int  n  =  0 ;  n  <  IM_ARRAYSIZE ( Layers ) ;  n + + )  Layers [ n ] . resize ( 0 ) ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void  ClearFreeMemory ( )   {  for  ( int  n  =  0 ;  n  <  IM_ARRAYSIZE ( Layers ) ;  n + + )  Layers [ n ] . clear ( ) ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    IMGUI_API  void  FlattenIntoSingleLayer ( ) ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} ;  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					struct  ImGuiNavMoveResult  
					 
					 
					 
					struct  ImGuiNavMoveResult  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiWindow *     Window ;              // Best candidate window
   
					 
					 
					 
					    ImGuiWindow *     Window ;              // Best candidate window
   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -1010,27 +1010,56 @@ struct ImGuiNextItemData 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    inline  void  ClearFlags ( )     {  Flags  =  ImGuiNextItemDataFlags_None ;  }  // Also cleared manually by ItemAdd()!
   
					 
					 
					 
					    inline  void  ClearFlags ( )     {  Flags  =  ImGuiNextItemDataFlags_None ;  }  // Also cleared manually by ItemAdd()!
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} ;  
					 
					 
					 
					} ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					struct  ImGuiShrinkWidthItem  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    int          Index ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    float        Width ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					} ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					struct  ImGuiPtrOrIndex  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    void *        Ptr ;             // Either field can be set, not both. e.g. Dock node tab bars are loose while BeginTabBar() ones are in a pool.
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    int          Index ;           // Usually index in a main pool.
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImGuiPtrOrIndex ( void *  ptr )   {  Ptr  =  ptr ;  Index  =  - 1 ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImGuiPtrOrIndex ( int  index )   {  Ptr  =  NULL ;  Index  =  index ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					} ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Tab bar, Tab item
  
					 
					 
					 
					// [SECTION] Settings support 
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					struct  ImGuiShrinkWidthItem  
					 
					 
					 
					// Windows data saved in imgui.ini file
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// Because we never destroy or rename ImGuiWindowSettings, we can store the names in a separate buffer easily.
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					// (this is designed to be stored in a ImChunkStream buffer, with the variable-length Name following our structure)
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					struct  ImGuiWindowSettings  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    int              Index ;   
					 
					 
					 
					    ImGuiID      ID ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    float            Width ;   
					 
					 
					 
					    ImVec2ih     Pos ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImVec2ih     Size ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    bool         Collapsed ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    bool         WantApply ;       // Set when loaded from .ini data (to enable merging/loading .ini data into an already running context)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ImGuiWindowSettings ( )        {  ID  =  0 ;  Pos  =  Size  =  ImVec2ih ( 0 ,  0 ) ;  Collapsed  =  WantApply  =  false ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    char *  GetName ( )              {  return  ( char * ) ( this  +  1 ) ;  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} ;  
					 
					 
					 
					} ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					struct  ImGuiPtrOrIndex  
					 
					 
					 
					struct  ImGuiSettingsHandler   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    void *            Ptr ;                 // Either field can be set, not both. e.g. Dock node tab bars are loose while BeginTabBar() ones are in a pool.
   
					 
					 
					 
					    const  char *  TypeName ;        // Short description stored in .ini file. Disallowed characters: '[' ']'
   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    int              Index ;               // Usually index in a main pool.
   
					 
					 
					 
					    ImGuiID      TypeHash ;        // == ImHashStr(TypeName)
   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    void         ( * ClearAllFn ) ( ImGuiContext *  ctx ,  ImGuiSettingsHandler *  handler ) ;                                 // Clear all settings data
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    void         ( * ApplyAllFn ) ( ImGuiContext *  ctx ,  ImGuiSettingsHandler *  handler ) ;                                 // Read: Called after reading (in registration order)
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    void *        ( * ReadOpenFn ) ( ImGuiContext *  ctx ,  ImGuiSettingsHandler *  handler ,  const  char *  name ) ;               // Read: Called when entering into a new ini entry e.g. "[Window][Name]"
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    void         ( * ReadLineFn ) ( ImGuiContext *  ctx ,  ImGuiSettingsHandler *  handler ,  void *  entry ,  const  char *  line ) ;  // Read: Called for every line of text within an ini entry
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    void         ( * WriteAllFn ) ( ImGuiContext *  ctx ,  ImGuiSettingsHandler *  handler ,  ImGuiTextBuffer *  out_buf ) ;       // Write: Output every entries into 'out_buf'
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    void *        UserData ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiPtrOrIndex ( void *  ptr )           {  Ptr  =  ptr ;  Index  =  - 1 ;  }   
					 
					 
					 
					    ImGuiSettingsHandler ( )  {  memset ( this ,  0 ,  sizeof ( * this ) ) ;  }   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiPtrOrIndex ( int  index )           {  Ptr  =  NULL ;  Index  =  index ;  }   
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					} ;  
					 
					 
					 
					} ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Main Dear ImGui context 
  
					 
					 
					 
					// [SECTION] ImGuiContext (main imgui context) 
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					struct  ImGuiContext  
					 
					 
					 
					struct  ImGuiContext  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -1386,7 +1415,7 @@ struct ImGuiContext 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} ;  
					 
					 
					 
					} ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// ImGuiWindow
  
					 
					 
					 
					// [SECTION] ImGuiWindowTempData,  ImGuiWindow
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Transient per-window data, reset at the beginning of the frame. This used to be called ImGuiDrawContext, hence the DC variable name in ImGuiWindow.
  
					 
					 
					 
					// Transient per-window data, reset at the beginning of the frame. This used to be called ImGuiDrawContext, hence the DC variable name in ImGuiWindow.
  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -1580,12 +1609,12 @@ public: 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiID      GetIDFromRectangle ( const  ImRect &  r_abs ) ;   
					 
					 
					 
					    ImGuiID      GetIDFromRectangle ( const  ImRect &  r_abs ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // We don't use g.FontSize because the window may be != g.CurrentWidow.
   
					 
					 
					 
					    // We don't use g.FontSize because the window may be != g.CurrentWidow.
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImRect       Rect ( )  const                  {  return  ImRect ( Pos . x ,  Pos . y ,  Pos . x + Size . x ,  Pos . y + Size . y ) ;  }   
					 
					 
					 
					    ImRect       Rect ( )  const             {  return  ImRect ( Pos . x ,  Pos . y ,  Pos . x + Size . x ,  Pos . y + Size . y ) ;  }   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    float        CalcFontSize ( )  const          {  ImGuiContext &  g  =  * GImGui ;  float  scale  =  g . FontBaseSize  *  FontWindowScale ;  if  ( ParentWindow )  scale  * =  ParentWindow - > FontWindowScale ;  return  scale ;  }   
					 
					 
					 
					    float        CalcFontSize ( )  const     {  ImGuiContext &  g  =  * GImGui ;  float  scale  =  g . FontBaseSize  *  FontWindowScale ;  if  ( ParentWindow )  scale  * =  ParentWindow - > FontWindowScale ;  return  scale ;  }   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    float        TitleBarHeight ( )  const        {  ImGuiContext &  g  =  * GImGui ;  return  ( Flags  &  ImGuiWindowFlags_NoTitleBar )  ?  0.0f  :  CalcFontSize ( )  +  g . Style . FramePadding . y  *  2.0f ;  }   
					 
					 
					 
					    float        TitleBarHeight ( )  const   {  ImGuiContext &  g  =  * GImGui ;  return  ( Flags  &  ImGuiWindowFlags_NoTitleBar )  ?  0.0f  :  CalcFontSize ( )  +  g . Style . FramePadding . y  *  2.0f ;  }   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImRect       TitleBarRect ( )  const          {  return  ImRect ( Pos ,  ImVec2 ( Pos . x  +  SizeFull . x ,  Pos . y  +  TitleBarHeight ( ) ) ) ;  }   
					 
					 
					 
					    ImRect       TitleBarRect ( )  const     {  return  ImRect ( Pos ,  ImVec2 ( Pos . x  +  SizeFull . x ,  Pos . y  +  TitleBarHeight ( ) ) ) ;  }   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    float        MenuBarHeight ( )  const         {  ImGuiContext &  g  =  * GImGui ;  return  ( Flags  &  ImGuiWindowFlags_MenuBar )  ?  DC . MenuBarOffset . y  +  CalcFontSize ( )  +  g . Style . FramePadding . y  *  2.0f  :  0.0f ;  }   
					 
					 
					 
					    float        MenuBarHeight ( )  const    {  ImGuiContext &  g  =  * GImGui ;  return  ( Flags  &  ImGuiWindowFlags_MenuBar )  ?  DC . MenuBarOffset . y  +  CalcFontSize ( )  +  g . Style . FramePadding . y  *  2.0f  :  0.0f ;  }   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImRect       MenuBarRect ( )  const           {  float  y1  =  Pos . y  +  TitleBarHeight ( ) ;  return  ImRect ( Pos . x ,  y1 ,  Pos . x  +  SizeFull . x ,  y1  +  MenuBarHeight ( ) ) ;  }   
					 
					 
					 
					    ImRect       MenuBarRect ( )  const      {  float  y1  =  Pos . y  +  TitleBarHeight ( ) ;  return  ImRect ( Pos . x ,  y1 ,  Pos . x  +  SizeFull . x ,  y1  +  MenuBarHeight ( ) ) ;  }   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					} ;  
					 
					 
					 
					} ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Backup and restore just enough data to be able to use IsItemHovered() on item A after another B in the same window has overwritten the data.
  
					 
					 
					 
					// Backup and restore just enough data to be able to use IsItemHovered() on item A after another B in the same window has overwritten the data.
  
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -1602,7 +1631,7 @@ struct ImGuiItemHoveredDataBackup 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} ;  
					 
					 
					 
					} ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Tab bar, t ab item
  
					 
					 
					 
					// [SECTION] Tab bar, T ab item
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Extend ImGuiTabBarFlags_
  
					 
					 
					 
					// Extend ImGuiTabBarFlags_
  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -1672,8 +1701,8 @@ struct ImGuiTabBar 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} ;  
					 
					 
					 
					} ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Internal API
  
					 
					 
					 
					// [SECTION]  Internal API
  
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					// No guarantee of forward compatibility here. 
  
					 
					 
					 
					// No guarantee of forward compatibility here! 
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					//-----------------------------------------------------------------------------
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					namespace  ImGui  
					 
					 
					 
					namespace  ImGui  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -1944,19 +1973,10 @@ IMGUI_API void              ImFontAtlasBuildFinish(ImFontAtlas* atlas); 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					IMGUI_API  void               ImFontAtlasBuildMultiplyCalcLookupTable ( unsigned  char  out_table [ 256 ] ,  float  in_multiply_factor ) ;  
					 
					 
					 
					IMGUI_API  void               ImFontAtlasBuildMultiplyCalcLookupTable ( unsigned  char  out_table [ 256 ] ,  float  in_multiply_factor ) ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					IMGUI_API  void               ImFontAtlasBuildMultiplyRectAlpha8 ( const  unsigned  char  table [ 256 ] ,  unsigned  char *  pixels ,  int  x ,  int  y ,  int  w ,  int  h ,  int  stride ) ;  
					 
					 
					 
					IMGUI_API  void               ImFontAtlasBuildMultiplyRectAlpha8 ( const  unsigned  char  table [ 256 ] ,  unsigned  char *  pixels ,  int  x ,  int  y ,  int  w ,  int  h ,  int  stride ) ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Debug Tools
  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					// Use 'Metrics->Tools->Item Picker' to break into the call-stack of a specific item.
  
					 
					 
					 
					// [SECTION] Test Engine Hooks (imgui_test_engine)
  
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					# ifndef IM_DEBUG_BREAK  
					 
					 
					 
					//-----------------------------------------------------------------------------
  
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					# if defined(__clang__)  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# define IM_DEBUG_BREAK()    __builtin_debugtrap()  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# elif defined (_MSC_VER)  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# define IM_DEBUG_BREAK()    __debugbreak()  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# else  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# define IM_DEBUG_BREAK()    IM_ASSERT(0)     // It is expected that you define IM_DEBUG_BREAK() into something that will break nicely in a debugger!
  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# endif  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# endif  // #ifndef IM_DEBUG_BREAK
  
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Test Engine Hooks (imgui_tests)
  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					//#define IMGUI_ENABLE_TEST_ENGINE
  
					 
					 
					 
					//#define IMGUI_ENABLE_TEST_ENGINE
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# ifdef IMGUI_ENABLE_TEST_ENGINE  
					 
					 
					 
					# ifdef IMGUI_ENABLE_TEST_ENGINE  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					extern  void                  ImGuiTestEngineHook_PreNewFrame ( ImGuiContext *  ctx ) ;  
					 
					 
					 
					extern  void                  ImGuiTestEngineHook_PreNewFrame ( ImGuiContext *  ctx ) ;