2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// dear imgui, v1.81 WIP
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// (internal structures/api)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// You may use this file to debug, understand or extend ImGui features but we don't provide any guarantee of forward compatibility!
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Set:
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//   #define IMGUI_DEFINE_MATH_OPERATORS
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// To implement maths operators for ImVec2 (disabled by default to not collide with using IM_VEC2_CLASS_EXTRA along with your own math types+operators)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Index  of  this  file :  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Header mess
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Forward declarations
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Context pointer
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] STB libraries includes
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Macros
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Generic helpers
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] ImDrawList support
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Widgets support: flags, enums, data structures
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Columns support
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Multi-select support
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Docking support
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Viewport support
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Settings support
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Metrics, Debug
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Generic context hooks
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] ImGuiContext (main imgui context)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] ImGuiWindowTempData, ImGuiWindow
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Tab bar, Tab item support
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Table support
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] ImGui internal API
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] ImFontAtlas internal API
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Test Engine specific hooks (imgui_test_engine)
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# pragma once 
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifndef IMGUI_DISABLE 
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// [SECTION] Header mess
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifndef IMGUI_VERSION 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# error Must include imgui.h before imgui_internal.h 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <stdio.h>      // FILE*, sscanf 
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  <stdlib.h>     // NULL, malloc, free, qsort, atoi, atof 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <math.h>       // sqrtf, fabsf, fmodf, powf, floorf, ceilf, cosf, sinf 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <limits.h>     // INT_MIN, INT_MAX 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Visual Studio warnings
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# ifdef _MSC_VER 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# pragma warning (push) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# pragma warning (disable: 4251)  // class 'xxx' needs to have dll-interface to be used by clients of struct 'xxx' // when IMGUI_API is set to__declspec(dllexport)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Clang/GCC warnings with -Weverything
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# if defined(__clang__) 
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# pragma clang diagnostic push 
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if __has_warning("-Wunknown-warning-option") 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# pragma clang diagnostic ignored "-Wunknown-warning-option"          // warning: unknown warning group 'xxx'
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# pragma clang diagnostic ignored "-Wunknown-pragmas"                 // warning: unknown warning group 'xxx'
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# pragma clang diagnostic ignored "-Wunused-function"                 // for stb_textedit.h
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# pragma clang diagnostic ignored "-Wmissing-prototypes"              // for stb_textedit.h
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# pragma clang diagnostic ignored "-Wold-style-cast" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# pragma clang diagnostic ignored "-Wdouble-promotion" 
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# pragma clang diagnostic ignored "-Wimplicit-int-float-conversion"   // warning: implicit conversion from 'xxx' to 'float' may lose precision
  
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# elif defined(__GNUC__) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# pragma GCC diagnostic push 
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# 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
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Legacy defines
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef IMGUI_DISABLE_FORMAT_STRING_FUNCTIONS             // Renamed in 1.74
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# error Use IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef IMGUI_DISABLE_MATH_FUNCTIONS                      // Renamed in 1.74
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# error Use IMGUI_DISABLE_DEFAULT_MATH_FUNCTIONS 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Enable stb_truetype by default unless FreeType is enabled.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// You can compile with both by defining both IMGUI_ENABLE_FREETYPE and IMGUI_ENABLE_STB_TRUETYPE together.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifndef IMGUI_ENABLE_FREETYPE 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IMGUI_ENABLE_STB_TRUETYPE 
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// [SECTION] Forward declarations
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  ImBitVector ;                  // Store 1-bit per value
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								struct  ImRect ;                       // An axis-aligned rectangle (2 points)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImDrawDataBuilder ;            // Helper to build a ImDrawData instance
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImDrawListSharedData ;         // Data shared between all ImDrawList instances
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiColorMod ;                // Stacked color modifier, backup of modified data so we can restore it
  
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  ImGuiContext ;                 // Main Dear ImGui context
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  ImGuiContextHook ;             // Hook for extensions like ImGuiTestEngine
  
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  ImGuiDataTypeInfo ;            // Type information associated to a ImGuiDataType enum
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								struct  ImGuiGroupData ;               // Stacked storage data for BeginGroup()/EndGroup()
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiInputTextState ;          // Internal state of the currently focused/edited text input box
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  ImGuiLastItemDataBackup ;      // Backup and restore IsItemHovered() internal data
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								struct  ImGuiMenuColumns ;             // Simple column measurement, currently used for MenuItem() only
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  ImGuiNavMoveResult ;           // Result of a gamepad/keyboard directional navigation move query result
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiMetricsConfig ;           // Storage for ShowMetricsWindow() and DebugNodeXXX() functions
  
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  ImGuiNextWindowData ;          // Storage for SetNextWindow** functions
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiNextItemData ;            // Storage for SetNextItem** functions
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  ImGuiOldColumnData ;           // Storage data for a single column for legacy Columns() api
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiOldColumns ;              // Storage data for a columns set for legacy Columns() api
  
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  ImGuiPopupData ;               // Storage for current popup stack
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								struct  ImGuiSettingsHandler ;         // Storage for one type registered in the .ini file
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  ImGuiStackSizes ;              // Storage of stack sizes for debugging/asserting
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								struct  ImGuiStyleMod ;                // Stacked style modifier, backup of modified data so we can restore it
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiTabBar ;                  // Storage for a tab bar
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiTabItem ;                 // Storage for a tab item (within a tab bar)
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  ImGuiTable ;                   // Storage for a table
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiTableColumn ;             // Storage for one column of a table
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiTableSettings ;           // Storage for a table .ini settings
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiTableColumnsSettings ;    // Storage for a column .ini settings
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								struct  ImGuiWindow ;                  // Storage for one window
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiWindowTempData ;          // Temporary storage for one window (that's the data which in theory we could ditch at the end of the frame)
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  ImGuiWindowSettings ;          // Storage for a window .ini settings (we keep one of those even if the actual window wasn't instanced during this session)
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Use your programming IDE "Go to definition" facility on the names of the center columns to find the actual flags/enum lists.
  
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								typedef  int  ImGuiLayoutType ;             // -> enum ImGuiLayoutType_         // Enum: Horizontal or vertical
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  int  ImGuiItemFlags ;              // -> enum ImGuiItemFlags_          // Flags: for PushItemFlag()
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  int  ImGuiItemStatusFlags ;        // -> enum ImGuiItemStatusFlags_    // Flags: for DC.LastItemStatusFlags
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								typedef  int  ImGuiOldColumnFlags ;         // -> enum ImGuiOldColumnFlags_     // Flags: for BeginColumns()
  
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								typedef  int  ImGuiNavHighlightFlags ;      // -> enum ImGuiNavHighlightFlags_  // Flags: for RenderNavHighlight()
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  int  ImGuiNavDirSourceFlags ;      // -> enum ImGuiNavDirSourceFlags_  // Flags: for GetNavInputAmount2d()
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  int  ImGuiNavMoveFlags ;           // -> enum ImGuiNavMoveFlags_       // Flags: for navigation requests
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  int  ImGuiNextItemDataFlags ;      // -> enum ImGuiNextItemDataFlags_  // Flags: for SetNextItemXXX() functions
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  int  ImGuiNextWindowDataFlags ;    // -> enum ImGuiNextWindowDataFlags_// Flags: for SetNextWindowXXX() functions
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  int  ImGuiSeparatorFlags ;         // -> enum ImGuiSeparatorFlags_     // Flags: for SeparatorEx()
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  int  ImGuiTextFlags ;              // -> enum ImGuiTextFlags_          // Flags: for TextEx()
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								typedef  int  ImGuiTooltipFlags ;           // -> enum ImGuiTooltipFlags_       // Flags: for BeginTooltipEx()
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  void  ( * ImGuiErrorLogCallback ) ( void *  user_data ,  const  char *  fmt ,  . . . ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [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 
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-------------------------------------------------------------------------
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// [SECTION] STB libraries includes
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//-------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								namespace  ImStb  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# undef STB_TEXTEDIT_STRING 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# undef STB_TEXTEDIT_CHARTYPE 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define STB_TEXTEDIT_STRING             ImGuiInputTextState 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define STB_TEXTEDIT_CHARTYPE           ImWchar 
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define STB_TEXTEDIT_GETWIDTH_NEWLINE   (-1.0f) 
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# define STB_TEXTEDIT_UNDOSTATECOUNT     99 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define STB_TEXTEDIT_UNDOCHARCOUNT      999 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "imstb_textedit.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  // namespace ImStb
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// [SECTION] Macros
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Debug Logging
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifndef IMGUI_DEBUG_LOG 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IMGUI_DEBUG_LOG(_FMT,...)       printf("[%05d] " _FMT, GImGui->FrameCount, __VA_ARGS__) 
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Debug Logging for selected systems. Remove the '((void)0) //' to enable.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//#define IMGUI_DEBUG_LOG_POPUP         IMGUI_DEBUG_LOG // Enable log
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//#define IMGUI_DEBUG_LOG_NAV           IMGUI_DEBUG_LOG // Enable log
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IMGUI_DEBUG_LOG_POPUP(...)      ((void)0)        // Disable log
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IMGUI_DEBUG_LOG_NAV(...)        ((void)0)        // Disable log
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Static Asserts
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# if (__cplusplus >= 201100) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201100) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IM_STATIC_ASSERT(_COND)         static_assert(_COND, "") 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# else 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IM_STATIC_ASSERT(_COND)         typedef char static_assertion_##__line__[(_COND)?1:-1] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// "Paranoid" Debug Asserts are meant to only be enabled during specific debugging/work, otherwise would slow down the code too much.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// We currently don't have many of those so the effect is currently negligible, but onward intent to add more aggressive ones in the code.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//#define IMGUI_DEBUG_PARANOID
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef IMGUI_DEBUG_PARANOID 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IM_ASSERT_PARANOID(_EXPR)       IM_ASSERT(_EXPR) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# else 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IM_ASSERT_PARANOID(_EXPR) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Error handling
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Down the line in some frameworks/languages we would like to have a way to redirect those to the programmer and recover from more faults.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifndef IM_ASSERT_USER_ERROR 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IM_ASSERT_USER_ERROR(_EXP,_MSG) IM_ASSERT((_EXP) && _MSG)    // Recoverable User Error
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Misc Macros
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IM_PI                           3.14159265358979323846f 
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# ifdef _WIN32 
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define IM_NEWLINE                      "\r\n"    // Play it nice with Windows users (Update: since 2018-05, Notepad finally appears to support Unix-style carriage returns!)
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# else 
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define IM_NEWLINE                      "\n" 
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define IM_TABSIZE                      (4) 
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# define IM_F32_TO_INT8_UNBOUND(_VAL)    ((int)((_VAL) * 255.0f + ((_VAL)>=0 ? 0.5f : -0.5f)))    // Unsaturated, for display purpose
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IM_F32_TO_INT8_SAT(_VAL)        ((int)(ImSaturate(_VAL) * 255.0f + 0.5f))                // Saturated, always output 0..255
  
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define IM_FLOOR(_VAL)                  ((float)(int)(_VAL))                                     // ImFloor() is not inlined in MSVC debug builds
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define IM_ROUND(_VAL)                  ((float)(int)((_VAL) + 0.5f))                            //
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Enforce cdecl calling convention for functions called by the standard library, in case compilation settings changed the default to e.g. __vectorcall
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef _MSC_VER 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IMGUI_CDECL __cdecl 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# else 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IMGUI_CDECL 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// 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
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Generic helpers
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 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.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// - Helpers: Hashing
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// - Helpers: Sorting
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// - Helpers: Bit manipulation
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// - Helpers: String, Formatting
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// - Helpers: UTF-8 <> wchar conversions
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// - Helpers: ImVec2/ImVec4 operators
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// - Helpers: Maths
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// - Helpers: Geometry
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// - Helper: ImVec1
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// - Helper: ImVec2ih
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// - Helper: ImRect
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// - Helper: ImBitArray
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// - Helper: ImBitVector
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// - Helper: ImSpan<>, ImSpanAllocator<>
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// - Helper: ImPool<>
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// - Helper: ImChunkStream<>
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Helpers: Hashing
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  ImGuiID        ImHashData ( const  void *  data ,  size_t  data_size ,  ImU32  seed  =  0 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  ImGuiID        ImHashStr ( const  char *  data ,  size_t  data_size  =  0 ,  ImU32  seed  =  0 ) ;  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS 
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  ImGuiID    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]
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Helpers: Sorting
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define ImQsort         qsort 
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Helpers: Color Blending
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  ImU32          ImAlphaBlendColors ( ImU32  col_a ,  ImU32  col_b ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Helpers: Bit manipulation
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  bool       ImIsPowerOfTwo ( int  v )            {  return  v  ! =  0  & &  ( v  &  ( v  -  1 ) )  = =  0 ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  bool       ImIsPowerOfTwo ( ImU64  v )          {  return  v  ! =  0  & &  ( v  &  ( v  -  1 ) )  = =  0 ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  int        ImUpperPowerOfTwo ( int  v )         {  v - - ;  v  | =  v  > >  1 ;  v  | =  v  > >  2 ;  v  | =  v  > >  4 ;  v  | =  v  > >  8 ;  v  | =  v  > >  16 ;  v + + ;  return  v ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Helpers: String, Formatting
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								IMGUI_API  int            ImStricmp ( const  char *  str1 ,  const  char *  str2 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  int            ImStrnicmp ( const  char *  str1 ,  const  char *  str2 ,  size_t  count ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  void           ImStrncpy ( char *  dst ,  const  char *  src ,  size_t  count ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  char *          ImStrdup ( const  char *  str ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  char *          ImStrdupcpy ( char *  dst ,  size_t *  p_dst_size ,  const  char *  str ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  const  char *    ImStrchrRange ( const  char *  str_begin ,  const  char *  str_end ,  char  c ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  int            ImStrlenW ( const  ImWchar *  str ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  const  char *    ImStreolRange ( const  char *  str ,  const  char *  str_end ) ;                 // End end-of-line
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  const  ImWchar * ImStrbolW ( const  ImWchar *  buf_mid_line ,  const  ImWchar *  buf_begin ) ;    // Find beginning-of-line
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  const  char *    ImStristr ( const  char *  haystack ,  const  char *  haystack_end ,  const  char *  needle ,  const  char *  needle_end ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  void           ImStrTrimBlanks ( char *  str ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  const  char *    ImStrSkipBlank ( const  char *  str ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  int            ImFormatString ( char *  buf ,  size_t  buf_size ,  const  char *  fmt ,  . . . )  IM_FMTARGS ( 3 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  int            ImFormatStringV ( char *  buf ,  size_t  buf_size ,  const  char *  fmt ,  va_list  args )  IM_FMTLIST ( 3 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  const  char *    ImParseFormatFindStart ( const  char *  format ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  const  char *    ImParseFormatFindEnd ( const  char *  format ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  const  char *    ImParseFormatTrimDecorations ( const  char *  format ,  char *  buf ,  size_t  buf_size ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  int            ImParseFormatPrecision ( const  char *  format ,  int  default_value ) ;  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  bool       ImCharIsBlankA ( char  c )           {  return  c  = =  '   '  | |  c  = =  ' \t ' ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  bool       ImCharIsBlankW ( unsigned  int  c )   {  return  c  = =  '   '  | |  c  = =  ' \t '  | |  c  = =  0x3000 ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Helpers: UTF-8 <> wchar conversions
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  int            ImTextStrToUtf8 ( char *  buf ,  int  buf_size ,  const  ImWchar *  in_text ,  const  ImWchar *  in_text_end ) ;       // return output UTF-8 bytes count
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  int            ImTextCharFromUtf8 ( unsigned  int *  out_char ,  const  char *  in_text ,  const  char *  in_text_end ) ;           // read one character. return input UTF-8 bytes count
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  int            ImTextStrFromUtf8 ( ImWchar *  buf ,  int  buf_size ,  const  char *  in_text ,  const  char *  in_text_end ,  const  char * *  in_remaining  =  NULL ) ;    // return input UTF-8 bytes count
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  int            ImTextCountCharsFromUtf8 ( const  char *  in_text ,  const  char *  in_text_end ) ;                             // return number of UTF-8 code-points (NOT bytes count)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  int            ImTextCountUtf8BytesFromChar ( const  char *  in_text ,  const  char *  in_text_end ) ;                         // return number of bytes to express one char in UTF-8
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  int            ImTextCountUtf8BytesFromStr ( const  ImWchar *  in_text ,  const  ImWchar *  in_text_end ) ;                    // return number of bytes to express string in UTF-8
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Helpers: ImVec2/ImVec4 operators
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// We are keeping those disabled by default so they don't leak in user space, to allow user enabling implicit cast operators between ImVec2 and their own types (using IM_VEC2_CLASS_EXTRA etc.)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// We unfortunately don't have a unary- operator for ImVec2 because this would needs to be defined inside the class itself.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef IMGUI_DEFINE_MATH_OPERATORS 
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  ImVec2  operator * ( const  ImVec2 &  lhs ,  const  float  rhs )               {  return  ImVec2 ( lhs . x  *  rhs ,  lhs . y  *  rhs ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec2  operator / ( const  ImVec2 &  lhs ,  const  float  rhs )               {  return  ImVec2 ( lhs . x  /  rhs ,  lhs . y  /  rhs ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec2  operator + ( const  ImVec2 &  lhs ,  const  ImVec2 &  rhs )             {  return  ImVec2 ( lhs . x  +  rhs . x ,  lhs . y  +  rhs . y ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec2  operator - ( const  ImVec2 &  lhs ,  const  ImVec2 &  rhs )             {  return  ImVec2 ( lhs . x  -  rhs . x ,  lhs . y  -  rhs . y ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec2  operator * ( const  ImVec2 &  lhs ,  const  ImVec2 &  rhs )             {  return  ImVec2 ( lhs . x  *  rhs . x ,  lhs . y  *  rhs . y ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec2  operator / ( const  ImVec2 &  lhs ,  const  ImVec2 &  rhs )             {  return  ImVec2 ( lhs . x  /  rhs . x ,  lhs . y  /  rhs . y ) ;  }  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec2 &  operator * = ( ImVec2 &  lhs ,  const  float  rhs )                   {  lhs . x  * =  rhs ;  lhs . y  * =  rhs ;  return  lhs ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec2 &  operator / = ( ImVec2 &  lhs ,  const  float  rhs )                   {  lhs . x  / =  rhs ;  lhs . y  / =  rhs ;  return  lhs ;  }  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  ImVec2 &  operator + = ( ImVec2 &  lhs ,  const  ImVec2 &  rhs )                 {  lhs . x  + =  rhs . x ;  lhs . y  + =  rhs . y ;  return  lhs ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec2 &  operator - = ( ImVec2 &  lhs ,  const  ImVec2 &  rhs )                 {  lhs . x  - =  rhs . x ;  lhs . y  - =  rhs . y ;  return  lhs ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec2 &  operator * = ( ImVec2 &  lhs ,  const  ImVec2 &  rhs )                 {  lhs . x  * =  rhs . x ;  lhs . y  * =  rhs . y ;  return  lhs ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec2 &  operator / = ( ImVec2 &  lhs ,  const  ImVec2 &  rhs )                 {  lhs . x  / =  rhs . x ;  lhs . y  / =  rhs . y ;  return  lhs ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec4  operator + ( const  ImVec4 &  lhs ,  const  ImVec4 &  rhs )             {  return  ImVec4 ( lhs . x  +  rhs . x ,  lhs . y  +  rhs . y ,  lhs . z  +  rhs . z ,  lhs . w  +  rhs . w ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec4  operator - ( const  ImVec4 &  lhs ,  const  ImVec4 &  rhs )             {  return  ImVec4 ( lhs . x  -  rhs . x ,  lhs . y  -  rhs . y ,  lhs . z  -  rhs . z ,  lhs . w  -  rhs . w ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec4  operator * ( const  ImVec4 &  lhs ,  const  ImVec4 &  rhs )             {  return  ImVec4 ( lhs . x  *  rhs . x ,  lhs . y  *  rhs . y ,  lhs . z  *  rhs . z ,  lhs . w  *  rhs . w ) ;  }  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Helpers: File System
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef IMGUI_DISABLE_FILE_FUNCTIONS 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IMGUI_DISABLE_DEFAULT_FILE_FUNCTIONS 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  void *  ImFileHandle ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImFileHandle   ImFileOpen ( const  char * ,  const  char * )                     {  return  NULL ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  bool           ImFileClose ( ImFileHandle )                                {  return  false ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImU64          ImFileGetSize ( ImFileHandle )                              {  return  ( ImU64 ) - 1 ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImU64          ImFileRead ( void * ,  ImU64 ,  ImU64 ,  ImFileHandle )            {  return  0 ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImU64          ImFileWrite ( const  void * ,  ImU64 ,  ImU64 ,  ImFileHandle )     {  return  0 ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifndef IMGUI_DISABLE_DEFAULT_FILE_FUNCTIONS 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  FILE *  ImFileHandle ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  ImFileHandle       ImFileOpen ( const  char *  filename ,  const  char *  mode ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  bool               ImFileClose ( ImFileHandle  file ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  ImU64              ImFileGetSize ( ImFileHandle  file ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  ImU64              ImFileRead ( void *  data ,  ImU64  size ,  ImU64  count ,  ImFileHandle  file ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  ImU64              ImFileWrite ( const  void *  data ,  ImU64  size ,  ImU64  count ,  ImFileHandle  file ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# else 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IMGUI_DISABLE_TTY_FUNCTIONS  // Can't use stdout, fflush if we are not using default file functions
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  void *              ImFileLoadToMemory ( const  char *  filename ,  const  char *  mode ,  size_t *  out_file_size  =  NULL ,  int  padding_bytes  =  0 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// Helpers: Maths
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// - Wrapper for standard libs functions. (Note that imgui_demo.cpp does _not_ use them to keep the code easy to copy)
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifndef IMGUI_DISABLE_DEFAULT_MATH_FUNCTIONS 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define ImFabs(X)           fabsf(X) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define ImSqrt(X)           sqrtf(X) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define ImFmod(X, Y)        fmodf((X), (Y)) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define ImCos(X)            cosf(X) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define ImSin(X)            sinf(X) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define ImAcos(X)           acosf(X) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define ImAtan2(Y, X)       atan2f((Y), (X)) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define ImAtof(STR)         atof(STR) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define ImFloorStd(X)       floorf(X)            // We already uses our own ImFloor() { return (float)(int)v } internally so the standard one wrapper is named differently (it's used by e.g. stb_truetype)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define ImCeil(X)           ceilf(X) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  float   ImPow ( float  x ,  float  y )     {  return  powf ( x ,  y ) ;  }           // DragBehaviorT/SliderBehaviorT uses ImPow with either float/double and need the precision
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  double  ImPow ( double  x ,  double  y )   {  return  pow ( x ,  y ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  float   ImLog ( float  x )              {  return  logf ( x ) ;  }              // DragBehaviorT/SliderBehaviorT uses ImLog with either float/double and need the precision
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  double  ImLog ( double  x )             {  return  log ( x ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  float   ImAbs ( float  x )              {  return  fabsf ( x ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  double  ImAbs ( double  x )             {  return  fabs ( x ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  float   ImSign ( float  x )             {  return  ( x  <  0.0f )  ?  - 1.0f  :  ( ( x  >  0.0f )  ?  1.0f  :  0.0f ) ;  }  // Sign operator - returns -1, 0 or 1 based on sign of argument
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  double  ImSign ( double  x )            {  return  ( x  <  0.0 )  ?  - 1.0  :  ( ( x  >  0.0 )  ?  1.0  :  0.0 ) ;  }  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// - ImMin/ImMax/ImClamp/ImLerp/ImSwap are used by widgets which support variety of types: signed/unsigned int/long long float/double
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// (Exceptionally using templates here but we could also redefine them for those types)
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								template < typename  T >  static  inline  T  ImMin ( T  lhs ,  T  rhs )                         {  return  lhs  <  rhs  ?  lhs  :  rhs ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								template < typename  T >  static  inline  T  ImMax ( T  lhs ,  T  rhs )                         {  return  lhs  > =  rhs  ?  lhs  :  rhs ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								template < typename  T >  static  inline  T  ImClamp ( T  v ,  T  mn ,  T  mx )                    {  return  ( v  <  mn )  ?  mn  :  ( v  >  mx )  ?  mx  :  v ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								template < typename  T >  static  inline  T  ImLerp ( T  a ,  T  b ,  float  t )                   {  return  ( T ) ( a  +  ( b  -  a )  *  t ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								template < typename  T >  static  inline  void  ImSwap ( T &  a ,  T &  b )                       {  T  tmp  =  a ;  a  =  b ;  b  =  tmp ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								template < typename  T >  static  inline  T  ImAddClampOverflow ( T  a ,  T  b ,  T  mn ,  T  mx )    {  if  ( b  <  0  & &  ( a  <  mn  -  b ) )  return  mn ;  if  ( b  >  0  & &  ( a  >  mx  -  b ) )  return  mx ;  return  a  +  b ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								template < typename  T >  static  inline  T  ImSubClampOverflow ( T  a ,  T  b ,  T  mn ,  T  mx )    {  if  ( b  >  0  & &  ( a  <  mn  +  b ) )  return  mn ;  if  ( b  <  0  & &  ( a  >  mx  +  b ) )  return  mx ;  return  a  -  b ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// - Misc maths helpers
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec2  ImMin ( const  ImVec2 &  lhs ,  const  ImVec2 &  rhs )                 {  return  ImVec2 ( lhs . x  <  rhs . x  ?  lhs . x  :  rhs . x ,  lhs . y  <  rhs . y  ?  lhs . y  :  rhs . y ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec2  ImMax ( const  ImVec2 &  lhs ,  const  ImVec2 &  rhs )                 {  return  ImVec2 ( lhs . x  > =  rhs . x  ?  lhs . x  :  rhs . x ,  lhs . y  > =  rhs . y  ?  lhs . y  :  rhs . y ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec2  ImClamp ( const  ImVec2 &  v ,  const  ImVec2 &  mn ,  ImVec2  mx )       {  return  ImVec2 ( ( v . x  <  mn . x )  ?  mn . x  :  ( v . x  >  mx . x )  ?  mx . x  :  v . x ,  ( v . y  <  mn . y )  ?  mn . y  :  ( v . y  >  mx . y )  ?  mx . y  :  v . y ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec2  ImLerp ( const  ImVec2 &  a ,  const  ImVec2 &  b ,  float  t )           {  return  ImVec2 ( a . x  +  ( b . x  -  a . x )  *  t ,  a . y  +  ( b . y  -  a . y )  *  t ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec2  ImLerp ( const  ImVec2 &  a ,  const  ImVec2 &  b ,  const  ImVec2 &  t )   {  return  ImVec2 ( a . x  +  ( b . x  -  a . x )  *  t . x ,  a . y  +  ( b . y  -  a . y )  *  t . y ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec4  ImLerp ( const  ImVec4 &  a ,  const  ImVec4 &  b ,  float  t )           {  return  ImVec4 ( a . x  +  ( b . x  -  a . x )  *  t ,  a . y  +  ( b . y  -  a . y )  *  t ,  a . z  +  ( b . z  -  a . z )  *  t ,  a . w  +  ( b . w  -  a . w )  *  t ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  float   ImSaturate ( float  f )                                         {  return  ( f  <  0.0f )  ?  0.0f  :  ( f  >  1.0f )  ?  1.0f  :  f ;  }  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  inline  float   ImLengthSqr ( const  ImVec2 &  lhs )                              {  return  ( lhs . x  *  lhs . x )  +  ( lhs . y  *  lhs . y ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  float   ImLengthSqr ( const  ImVec4 &  lhs )                              {  return  ( lhs . x  *  lhs . x )  +  ( lhs . y  *  lhs . y )  +  ( lhs . z  *  lhs . z )  +  ( lhs . w  *  lhs . w ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  float   ImInvLength ( const  ImVec2 &  lhs ,  float  fail_value )            {  float  d  =  ( lhs . x  *  lhs . x )  +  ( lhs . y  *  lhs . y ) ;  if  ( d  >  0.0f )  return  1.0f  /  ImSqrt ( d ) ;  return  fail_value ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  float   ImFloor ( float  f )                                            {  return  ( float ) ( int ) ( f ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec2  ImFloor ( const  ImVec2 &  v )                                    {  return  ImVec2 ( ( float ) ( int ) ( v . x ) ,  ( float ) ( int ) ( v . y ) ) ;  }  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								static  inline  int     ImModPositive ( int  a ,  int  b )                                 {  return  ( a  +  b )  %  b ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  float   ImDot ( const  ImVec2 &  a ,  const  ImVec2 &  b )                     {  return  a . x  *  b . x  +  a . y  *  b . y ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec2  ImRotate ( const  ImVec2 &  v ,  float  cos_a ,  float  sin_a )         {  return  ImVec2 ( v . x  *  cos_a  -  v . y  *  sin_a ,  v . x  *  sin_a  +  v . y  *  cos_a ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  float   ImLinearSweep ( float  current ,  float  target ,  float  speed )     {  if  ( current  <  target )  return  ImMin ( current  +  speed ,  target ) ;  if  ( current  >  target )  return  ImMax ( current  -  speed ,  target ) ;  return  current ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  inline  ImVec2  ImMul ( const  ImVec2 &  lhs ,  const  ImVec2 &  rhs )                 {  return  ImVec2 ( lhs . x  *  rhs . x ,  lhs . y  *  rhs . y ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Helpers: Geometry
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  ImVec2      ImBezierCubicCalc ( const  ImVec2 &  p1 ,  const  ImVec2 &  p2 ,  const  ImVec2 &  p3 ,  const  ImVec2 &  p4 ,  float  t ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  ImVec2      ImBezierCubicClosestPoint ( const  ImVec2 &  p1 ,  const  ImVec2 &  p2 ,  const  ImVec2 &  p3 ,  const  ImVec2 &  p4 ,  const  ImVec2 &  p ,  int  num_segments ) ;        // For curves with explicit number of segments
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  ImVec2      ImBezierCubicClosestPointCasteljau ( const  ImVec2 &  p1 ,  const  ImVec2 &  p2 ,  const  ImVec2 &  p3 ,  const  ImVec2 &  p4 ,  const  ImVec2 &  p ,  float  tess_tol ) ; // For auto-tessellated curves you can use tess_tol = style.CurveTessellationTol
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  ImVec2      ImBezierQuadraticCalc ( const  ImVec2 &  p1 ,  const  ImVec2 &  p2 ,  const  ImVec2 &  p3 ,  float  t ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  ImVec2      ImLineClosestPoint ( const  ImVec2 &  a ,  const  ImVec2 &  b ,  const  ImVec2 &  p ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  bool        ImTriangleContainsPoint ( const  ImVec2 &  a ,  const  ImVec2 &  b ,  const  ImVec2 &  c ,  const  ImVec2 &  p ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  ImVec2      ImTriangleClosestPoint ( const  ImVec2 &  a ,  const  ImVec2 &  b ,  const  ImVec2 &  c ,  const  ImVec2 &  p ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  void        ImTriangleBarycentricCoords ( const  ImVec2 &  a ,  const  ImVec2 &  b ,  const  ImVec2 &  c ,  const  ImVec2 &  p ,  float &  out_u ,  float &  out_v ,  float &  out_w ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								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 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 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  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    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 ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// 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 ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec4       ToVec4 ( )  const                       {  return  ImVec4 ( Min . x ,  Min . y ,  Max . x ,  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  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      ImBitArraySetBitRange ( ImU32 *  arr ,  int  n ,  int  n2 )  // Works on range [n..n2)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    n2 - - ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    while  ( n  < =  n2 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        int  a_mod  =  ( n  &  31 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        int  b_mod  =  ( n2  >  ( n  |  31 )  ?  31  :  ( n2  &  31 ) )  +  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ImU32  mask  =  ( ImU32 ) ( ( ( ImU64 ) 1  < <  b_mod )  -  1 )  &  ~ ( ImU32 ) ( ( ( ImU64 ) 1  < <  a_mod )  -  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        arr [ n  > >  5 ]  | =  mask ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        n  =  ( n  +  32 )  &  ~ 31 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Helper: ImBitArray class (wrapper over ImBitArray functions)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Store 1-bit per value. NOT CLEARED by constructor.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								template < int  BITCOUNT >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  IMGUI_API  ImBitArray  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU32            Storage [ ( BITCOUNT  +  31 )  > >  5 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImBitArray ( )                                 {  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void             ClearAllBits ( )               {  memset ( Storage ,  0 ,  sizeof ( Storage ) ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void             SetAllBits ( )                 {  memset ( Storage ,  255 ,  sizeof ( Storage ) ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool             TestBit ( int  n )  const         {  IM_ASSERT ( n  <  BITCOUNT ) ;  return  ImBitArrayTestBit ( Storage ,  n ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void             SetBit ( int  n )                {  IM_ASSERT ( n  <  BITCOUNT ) ;  ImBitArraySetBit ( Storage ,  n ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void             ClearBit ( int  n )              {  IM_ASSERT ( n  <  BITCOUNT ) ;  ImBitArrayClearBit ( Storage ,  n ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void             SetBitRange ( int  n ,  int  n2 )   {  ImBitArraySetBitRange ( Storage ,  n ,  n2 ) ;  }  // Works on range [n..n2)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Helper: ImBitVector
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Store 1-bit per value.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  IMGUI_API  ImBitVector  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < ImU32 >  Storage ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void             Create ( int  sz )               {  Storage . resize ( ( sz  +  31 )  > >  5 ) ;  memset ( Storage . Data ,  0 ,  ( size_t ) Storage . Size  *  sizeof ( Storage . Data [ 0 ] ) ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void             Clear ( )                      {  Storage . clear ( ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool             TestBit ( int  n )  const         {  IM_ASSERT ( n  <  ( Storage . Size  < <  5 ) ) ;  return  ImBitArrayTestBit ( Storage . Data ,  n ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void             SetBit ( int  n )                {  IM_ASSERT ( n  <  ( Storage . Size  < <  5 ) ) ;  ImBitArraySetBit ( Storage . Data ,  n ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void             ClearBit ( int  n )              {  IM_ASSERT ( n  <  ( Storage . Size  < <  5 ) ) ;  ImBitArrayClearBit ( Storage . Data ,  n ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Helper: ImSpan<>
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Pointing to a span of data we don't own.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								template < typename  T >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImSpan  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    T *                   Data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    T *                   DataEnd ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Constructors, destructor
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  ImSpan ( )                                  {  Data  =  DataEnd  =  NULL ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  ImSpan ( T *  data ,  int  size )                 {  Data  =  data ;  DataEnd  =  data  +  size ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  ImSpan ( T *  data ,  T *  data_end )              {  Data  =  data ;  DataEnd  =  data_end ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  void          set ( T *  data ,  int  size )       {  Data  =  data ;  DataEnd  =  data  +  size ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  void          set ( T *  data ,  T *  data_end )    {  Data  =  data ;  DataEnd  =  data_end ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  int           size ( )  const                 {  return  ( int ) ( ptrdiff_t ) ( DataEnd  -  Data ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  int           size_in_bytes ( )  const        {  return  ( int ) ( ptrdiff_t ) ( DataEnd  -  Data )  *  ( int ) sizeof ( T ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  T &            operator [ ] ( int  i )            {  T *  p  =  Data  +  i ;  IM_ASSERT ( p  > =  Data  & &  p  <  DataEnd ) ;  return  * p ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  const  T &      operator [ ] ( int  i )  const      {  const  T *  p  =  Data  +  i ;  IM_ASSERT ( p  > =  Data  & &  p  <  DataEnd ) ;  return  * p ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  T *            begin ( )                      {  return  Data ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  const  T *      begin ( )  const                {  return  Data ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  T *            end ( )                        {  return  DataEnd ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  const  T *      end ( )  const                  {  return  DataEnd ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Utilities
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  int   index_from_ptr ( const  T *  it )  const    {  IM_ASSERT ( it  > =  Data  & &  it  <  DataEnd ) ;  const  ptrdiff_t  off  =  it  -  Data ;  return  ( int ) off ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Helper: ImSpanAllocator<>
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Facilitate storing multiple chunks into a single large block (the "arena")
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								template < int  CHUNKS >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImSpanAllocator  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    char *    BasePtr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int      TotalSize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int      CurrSpan ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int      Offsets [ CHUNKS ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImSpanAllocator ( )                                {  memset ( this ,  0 ,  sizeof ( * this ) ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  void   ReserveBytes ( int  n ,  size_t  sz )      {  IM_ASSERT ( n  = =  CurrSpan  & &  n  <  CHUNKS ) ;  IM_UNUSED ( n ) ;  Offsets [ CurrSpan + + ]  =  TotalSize ;  TotalSize  + =  ( int ) sz ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  int    GetArenaSizeInBytes ( )               {  return  TotalSize ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  void   SetArenaBasePtr ( void *  base_ptr )     {  BasePtr  =  ( char * ) base_ptr ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  void *  GetSpanPtrBegin ( int  n )              {  IM_ASSERT ( n  > =  0  & &  n  <  CHUNKS  & &  CurrSpan  = =  CHUNKS ) ;  return  ( void * ) ( BasePtr  +  Offsets [ n ] ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  void *  GetSpanPtrEnd ( int  n )                {  IM_ASSERT ( n  > =  0  & &  n  <  CHUNKS  & &  CurrSpan  = =  CHUNKS ) ;  return  ( n  +  1  <  CHUNKS )  ?  BasePtr  +  Offsets [ n  +  1 ]  :  ( void * ) ( BasePtr  +  TotalSize ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template < typename  T > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  void   GetSpan ( int  n ,  ImSpan < T > *  span )     {  span - > set ( ( T * ) GetSpanPtrBegin ( n ) ,  ( T * ) GetSpanPtrEnd ( n ) ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Helper: ImPool<>
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Basic keyed storage for contiguous instances, slow/amortized insertion, O(1) indexable, O(Log N) queries by ID over a dense/hot buffer,
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// Honor constructor/destructor. Add/remove invalidate all pointers. Indexes have the same lifetime as the associated object.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  int  ImPoolIdx ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								template < typename  T >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  IMGUI_API  ImPool  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVector < T >      Buf ;         // Contiguous data
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiStorage     Map ;         // ID->Index
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImPoolIdx        FreeIdx ;     // Next free idx to use
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImPool ( )     {  FreeIdx  =  0 ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ~ ImPool ( )    {  Clear ( ) ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    T *           GetByKey ( ImGuiID  key )                {  int  idx  =  Map . GetInt ( key ,  - 1 ) ;  return  ( idx  ! =  - 1 )  ?  & Buf [ idx ]  :  NULL ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    T *           GetByIndex ( ImPoolIdx  n )              {  return  & Buf [ n ] ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImPoolIdx    GetIndex ( const  T *  p )  const           {  IM_ASSERT ( p  > =  Buf . Data  & &  p  <  Buf . Data  +  Buf . Size ) ;  return  ( ImPoolIdx ) ( p  -  Buf . Data ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    T *           GetOrAddByKey ( ImGuiID  key )           {  int *  p_idx  =  Map . GetIntRef ( key ,  - 1 ) ;  if  ( * p_idx  ! =  - 1 )  return  & Buf [ * p_idx ] ;  * p_idx  =  FreeIdx ;  return  Add ( ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool         Contains ( const  T *  p )  const           {  return  ( p  > =  Buf . Data  & &  p  <  Buf . Data  +  Buf . Size ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void         Clear ( )                              {  for  ( int  n  =  0 ;  n  <  Map . Data . Size ;  n + + )  {  int  idx  =  Map . Data [ n ] . val_i ;  if  ( idx  ! =  - 1 )  Buf [ idx ] . ~ T ( ) ;  }  Map . Clear ( ) ;  Buf . clear ( ) ;  FreeIdx  =  0 ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    T *           Add ( )                                {  int  idx  =  FreeIdx ;  if  ( idx  = =  Buf . Size )  {  Buf . resize ( Buf . Size  +  1 ) ;  FreeIdx + + ;  }  else  {  FreeIdx  =  * ( int * ) & Buf [ idx ] ;  }  IM_PLACEMENT_NEW ( & Buf [ idx ] )  T ( ) ;  return  & Buf [ idx ] ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    void         Remove ( ImGuiID  key ,  const  T *  p )      {  Remove ( key ,  GetIndex ( p ) ) ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    void         Remove ( ImGuiID  key ,  ImPoolIdx  idx )   {  Buf [ idx ] . ~ T ( ) ;  * ( int * ) & Buf [ idx ]  =  FreeIdx ;  FreeIdx  =  idx ;  Map . SetInt ( key ,  - 1 ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void         Reserve ( int  capacity )                {  Buf . reserve ( capacity ) ;  Map . Data . reserve ( capacity ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int          GetSize ( )  const                      {  return  Buf . Size ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Helper: ImChunkStream<>
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Build and iterate a contiguous stream of variable-sized structures.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// This is used by Settings to store persistent data while reducing allocation count.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// We store the chunk size first, and align the final size on 4 bytes boundaries (this what the '(X + 3) & ~3' statement is for)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// The tedious/zealous amount of casting is to avoid -Wcast-align warnings.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								template < typename  T >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  IMGUI_API  ImChunkStream  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < char >   Buf ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void     clear ( )                      {  Buf . clear ( ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool     empty ( )  const                {  return  Buf . Size  = =  0 ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int      size ( )  const                 {  return  Buf . Size ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    T *       alloc_chunk ( size_t  sz )       {  size_t  HDR_SZ  =  4 ;  sz  =  ( ( HDR_SZ  +  sz )  +  3u )  &  ~ 3u ;  int  off  =  Buf . Size ;  Buf . resize ( off  +  ( int ) sz ) ;  ( ( int * ) ( void * ) ( Buf . Data  +  off ) ) [ 0 ]  =  ( int ) sz ;  return  ( T * ) ( void * ) ( Buf . Data  +  off  +  ( int ) HDR_SZ ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    T *       begin ( )                      {  size_t  HDR_SZ  =  4 ;  if  ( ! Buf . Data )  return  NULL ;  return  ( T * ) ( void * ) ( Buf . Data  +  HDR_SZ ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    T *       next_chunk ( T *  p )             {  size_t  HDR_SZ  =  4 ;  IM_ASSERT ( p  > =  begin ( )  & &  p  <  end ( ) ) ;  p  =  ( T * ) ( void * ) ( ( char * ) ( void * ) p  +  chunk_size ( p ) ) ;  if  ( p  = =  ( T * ) ( void * ) ( ( char * ) end ( )  +  HDR_SZ ) )  return  ( T * ) 0 ;  IM_ASSERT ( p  <  end ( ) ) ;  return  p ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int      chunk_size ( const  T *  p )       {  return  ( ( const  int * ) p ) [ - 1 ] ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    T *       end ( )                        {  return  ( T * ) ( void * ) ( Buf . Data  +  Buf . Size ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int      offset_from_ptr ( const  T *  p )  {  IM_ASSERT ( p  > =  begin ( )  & &  p  <  end ( ) ) ;  const  ptrdiff_t  off  =  ( const  char * ) p  -  Buf . Data ;  return  ( int ) off ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    T *       ptr_from_offset ( int  off )     {  IM_ASSERT ( off  > =  4  & &  off  <  Buf . Size ) ;  return  ( T * ) ( void * ) ( Buf . Data  +  off ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void     swap ( ImChunkStream < T > &  rhs )  {  rhs . Buf . swap ( Buf ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// [SECTION] ImDrawList support
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// ImDrawList: Helper function to calculate a circle's segment count given its radius and a "maximum error" value.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// FIXME: the minimum number of auto-segment may be undesirably high for very small radiuses (e.g. 1.0f)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# 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) 
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// 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 
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// 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  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    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)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // [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 before we calculate it dynamically (to avoid calculation overhead)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  ImVec4 *    TexUvLines ;                  // UV of anti-aliased lines in the atlas
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImDrawListSharedData ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void  SetCircleSegmentMaxError ( float  max_error ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  ImDrawDataBuilder  
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVector < ImDrawList * >    Layers [ 2 ] ;            // Global layers for: regular, tooltip
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    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 ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Widgets support: flags, enums, data structures
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// Transient per-window flags, reset at the beginning of the frame. For child window, inherited from parent on first Begin().
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// This is going to be exposed in imgui.h when stabilized enough.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiItemFlags_  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiItemFlags_None                      =  0 , 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiItemFlags_NoTabStop                 =  1  < <  0 ,   // false
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiItemFlags_ButtonRepeat              =  1  < <  1 ,   // false    // Button() will return true multiple times based on io.KeyRepeatDelay and io.KeyRepeatRate settings.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiItemFlags_Disabled                  =  1  < <  2 ,   // false    // [BETA] Disable interactions but doesn't affect visuals yet. See github.com/ocornut/imgui/issues/211
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiItemFlags_NoNav                     =  1  < <  3 ,   // false
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiItemFlags_NoNavDefaultFocus         =  1  < <  4 ,   // false
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiItemFlags_SelectableDontClosePopup  =  1  < <  5 ,   // false    // MenuItem/Selectable() automatically closes current Popup window
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiItemFlags_MixedValue                =  1  < <  6 ,   // false    // [BETA] Represent a mixed/indeterminate value, generally multi-selection where values differ. Currently only supported by Checkbox() (later should support all sorts of widgets)
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiItemFlags_ReadOnly                  =  1  < <  7 ,   // false    // [ALPHA] Allow hovering interactions but underlying value is not changed.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiItemFlags_Default_                  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Storage for LastItem data
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiItemStatusFlags_  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiItemStatusFlags_None                =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiItemStatusFlags_HoveredRect         =  1  < <  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiItemStatusFlags_HasDisplayRect      =  1  < <  1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiItemStatusFlags_Edited              =  1  < <  2 ,    // Value exposed by item was edited in the current frame (should match the bool return value of most widgets)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiItemStatusFlags_ToggledSelection    =  1  < <  3 ,    // Set when Selectable(), TreeNode() reports toggling a selection. We can't report "Selected" because reporting the change allows us to handle clipping with less issues.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiItemStatusFlags_ToggledOpen         =  1  < <  4 ,    // Set when TreeNode() reports toggling their open state.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiItemStatusFlags_HasDeactivated      =  1  < <  5 ,    // Set if the widget/group is able to provide data for the ImGuiItemStatusFlags_Deactivated flag.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiItemStatusFlags_Deactivated         =  1  < <  6     // Only valid if ImGuiItemStatusFlags_HasDeactivated is set.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef IMGUI_ENABLE_TEST_ENGINE 
  
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ,  // [imgui_tests only]
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiItemStatusFlags_Openable            =  1  < <  10 ,   //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiItemStatusFlags_Opened              =  1  < <  11 ,   //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiItemStatusFlags_Checkable           =  1  < <  12 ,   //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiItemStatusFlags_Checked             =  1  < <  13    //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Extend ImGuiButtonFlags_
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiButtonFlagsPrivate_  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiButtonFlags_PressedOnClick          =  1  < <  4 ,    // return true on click (mouse down event)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiButtonFlags_PressedOnClickRelease   =  1  < <  5 ,    // [Default] return true on click + release on same item <-- this is what the majority of Button are using
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiButtonFlags_PressedOnClickReleaseAnywhere  =  1  < <  6 ,  // return true on click + release even if the release event is not done while hovering the item
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiButtonFlags_PressedOnRelease        =  1  < <  7 ,    // return true on release (default requires click+release)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiButtonFlags_PressedOnDoubleClick    =  1  < <  8 ,    // return true on double-click (default requires click+release)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiButtonFlags_PressedOnDragDropHold   =  1  < <  9 ,    // return true when held into while we are drag and dropping another item (used by e.g. tree nodes, collapsing headers)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiButtonFlags_Repeat                  =  1  < <  10 ,   // hold to repeat
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiButtonFlags_FlattenChildren         =  1  < <  11 ,   // allow interactions even if a child window is overlapping
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiButtonFlags_AllowItemOverlap        =  1  < <  12 ,   // require previous frame HoveredId to either match id or be null before being usable, use along with SetItemAllowOverlap()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiButtonFlags_DontClosePopups         =  1  < <  13 ,   // disable automatically closing parent popup on press // [UNUSED]
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiButtonFlags_Disabled                =  1  < <  14 ,   // disable interactions
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiButtonFlags_AlignTextBaseLine       =  1  < <  15 ,   // vertically align button to match text baseline - ButtonEx() only // FIXME: Should be removed and handled by SmallButton(), not possible currently because of DC.CursorPosPrevLine
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiButtonFlags_NoKeyModifiers          =  1  < <  16 ,   // disable mouse interaction if a key modifier is held
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiButtonFlags_NoHoldingActiveId       =  1  < <  17 ,   // don't set ActiveId while holding the mouse (ImGuiButtonFlags_PressedOnClick only)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiButtonFlags_NoNavFocus              =  1  < <  18 ,   // don't override navigation focus when activated
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiButtonFlags_NoHoveredOnFocus        =  1  < <  19 ,   // don't report as hovered when nav focus is on this item
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiButtonFlags_PressedOnMask_          =  ImGuiButtonFlags_PressedOnClick  |  ImGuiButtonFlags_PressedOnClickRelease  |  ImGuiButtonFlags_PressedOnClickReleaseAnywhere  |  ImGuiButtonFlags_PressedOnRelease  |  ImGuiButtonFlags_PressedOnDoubleClick  |  ImGuiButtonFlags_PressedOnDragDropHold , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiButtonFlags_PressedOnDefault_       =  ImGuiButtonFlags_PressedOnClickRelease 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Extend ImGuiSliderFlags_
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiSliderFlagsPrivate_  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiSliderFlags_Vertical                =  1  < <  20 ,   // Should this slider be orientated vertically?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiSliderFlags_ReadOnly                =  1  < <  21 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Extend ImGuiSelectableFlags_
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiSelectableFlagsPrivate_  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // NB: need to be in sync with last value of ImGuiSelectableFlags_
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiSelectableFlags_NoHoldingActiveID       =  1  < <  20 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiSelectableFlags_SelectOnClick           =  1  < <  21 ,   // Override button behavior to react on Click (default is Click+Release)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiSelectableFlags_SelectOnRelease         =  1  < <  22 ,   // Override button behavior to react on Release (default is Click+Release)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiSelectableFlags_SpanAvailWidth          =  1  < <  23 ,   // Span all avail width even if we declared less for layout purpose. FIXME: We may be able to remove this (added in 6251d379, 2bcafc86 for menus)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiSelectableFlags_DrawHoveredWhenHeld     =  1  < <  24 ,   // Always show active when held, even is not hovered. This concept could probably be renamed/formalized somehow.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiSelectableFlags_SetNavIdOnHover         =  1  < <  25 ,   // Set Nav/Focus ID on mouse hover (used by MenuItem)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiSelectableFlags_NoPadWithHalfSpacing    =  1  < <  26    // Disable padding each side with ItemSpacing * 0.5f
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Extend ImGuiTreeNodeFlags_
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiTreeNodeFlagsPrivate_  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTreeNodeFlags_ClipLabelForTrailingButton  =  1  < <  20 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiSeparatorFlags_  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiSeparatorFlags_None                 =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiSeparatorFlags_Horizontal           =  1  < <  0 ,    // Axis default to current layout type, so generally Horizontal unless e.g. in a menu bar
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiSeparatorFlags_Vertical             =  1  < <  1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiSeparatorFlags_SpanAllColumns       =  1  < <  2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								enum  ImGuiTextFlags_  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTextFlags_None  =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTextFlags_NoWidthForLargeClippedText  =  1  < <  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								enum  ImGuiTooltipFlags_  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTooltipFlags_None  =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTooltipFlags_OverridePreviousTooltip  =  1  < <  0       // Override will clear/ignore previously submitted tooltip (defaults to append)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// FIXME: this is in development, not exposed/functional as a generic feature yet.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Horizontal/Vertical enums are fixed to 0/1 so they may be used to index ImVec2
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiLayoutType_  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiLayoutType_Horizontal  =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiLayoutType_Vertical  =  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiLogType  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiLogType_None  =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiLogType_TTY , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiLogType_File , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiLogType_Buffer , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiLogType_Clipboard 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// X/Y enums are fixed to 0/1 so they may be used to index ImVec2
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiAxis  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiAxis_None  =  - 1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiAxis_X  =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiAxis_Y  =  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiPlotType  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiPlotType_Lines , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiPlotType_Histogram 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiInputSource  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiInputSource_None  =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiInputSource_Mouse , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiInputSource_Nav , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiInputSource_NavKeyboard ,    // Only used occasionally for storage, not tested/handled by most code
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiInputSource_NavGamepad ,     // "
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiInputSource_COUNT 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// FIXME-NAV: Clarify/expose various repeat delay/rate
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiInputReadMode  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiInputReadMode_Down , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiInputReadMode_Pressed , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiInputReadMode_Released , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiInputReadMode_Repeat , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiInputReadMode_RepeatSlow , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiInputReadMode_RepeatFast 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiNavHighlightFlags_  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavHighlightFlags_None          =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavHighlightFlags_TypeDefault   =  1  < <  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavHighlightFlags_TypeThin      =  1  < <  1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavHighlightFlags_AlwaysDraw    =  1  < <  2 ,        // Draw rectangular highlight if (g.NavId == id) _even_ when using the mouse.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavHighlightFlags_NoRounding    =  1  < <  3 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiNavDirSourceFlags_  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavDirSourceFlags_None          =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavDirSourceFlags_Keyboard      =  1  < <  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavDirSourceFlags_PadDPad       =  1  < <  1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavDirSourceFlags_PadLStick     =  1  < <  2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiNavMoveFlags_  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavMoveFlags_None                   =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavMoveFlags_LoopX                  =  1  < <  0 ,    // On failed request, restart from opposite side
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavMoveFlags_LoopY                  =  1  < <  1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavMoveFlags_WrapX                  =  1  < <  2 ,    // On failed request, request from opposite side one line down (when NavDir==right) or one line up (when NavDir==left)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavMoveFlags_WrapY                  =  1  < <  3 ,    // This is not super useful for provided for completeness
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavMoveFlags_AllowCurrentNavId      =  1  < <  4 ,    // Allow scoring and considering the current NavId as a move target candidate. This is used when the move source is offset (e.g. pressing PageDown actually needs to send a Up move request, if we are pressing PageDown from the bottom-most item we need to stay in place)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiNavMoveFlags_AlsoScoreVisibleSet    =  1  < <  5 ,    // Store alternate result in NavMoveResultLocalVisibleSet that only comprise elements that are already fully visible.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavMoveFlags_ScrollToEdge           =  1  < <  6 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiNavForward  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavForward_None , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavForward_ForwardQueued , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavForward_ForwardActive 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiNavLayer  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavLayer_Main   =  0 ,     // Main scrolling layer
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavLayer_Menu   =  1 ,     // Menu layer (access with Alt/ImGuiNavInput_Menu)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavLayer_COUNT 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiPopupPositionPolicy  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiPopupPositionPolicy_Default , 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiPopupPositionPolicy_ComboBox , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiPopupPositionPolicy_Tooltip 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  ImGuiDataTypeTempStorage  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImU8         Data [ 8 ] ;         // Can fit any data up to ImGuiDataType_COUNT
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Type information associated to one ImGuiDataType. Retrieve with DataTypeGetInfo().
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiDataTypeInfo  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    size_t       Size ;            // Size in bytes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  char *  Name ;            // Short descriptive name for the type, for debugging
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  char *  PrintFmt ;        // Default printf format for the type
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  char *  ScanFmt ;         // Default scanf format for the type
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Extend ImGuiDataType_
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiDataTypePrivate_  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiDataType_String  =  ImGuiDataType_COUNT  +  1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiDataType_Pointer , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiDataType_ID 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// Stacked color modifier, backup of modified data so we can restore it
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiColorMod  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiCol     Col ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec4       BackupValue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Stacked style modifier, backup of modified data so we can restore it. Data type inferred from the variable.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiStyleMod  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiStyleVar    VarIdx ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    union            {  int  BackupInt [ 2 ] ;  float  BackupFloat [ 2 ] ;  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiStyleMod ( ImGuiStyleVar  idx ,  int  v )      {  VarIdx  =  idx ;  BackupInt [ 0 ]  =  v ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiStyleMod ( ImGuiStyleVar  idx ,  float  v )    {  VarIdx  =  idx ;  BackupFloat [ 0 ]  =  v ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiStyleMod ( ImGuiStyleVar  idx ,  ImVec2  v )   {  VarIdx  =  idx ;  BackupFloat [ 0 ]  =  v . x ;  BackupFloat [ 1 ]  =  v . y ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Stacked storage data for BeginGroup()/EndGroup()
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiGroupData  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiID      WindowID ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImVec2       BackupCursorPos ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2       BackupCursorMaxPos ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec1       BackupIndent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec1       BackupGroupOffset ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVec2       BackupCurrLineSize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float        BackupCurrLineTextBaseOffset ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiID      BackupActiveIdIsAlive ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool         BackupActiveIdPreviousFrameIsAlive ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool         EmitItem ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Simple column measurement, currently used for MenuItem() only.. This is very short-sighted/throw-away code and NOT a generic helper.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  IMGUI_API  ImGuiMenuColumns  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float        Spacing ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float        Width ,  NextWidth ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float        Pos [ 3 ] ,  NextWidths [ 3 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiMenuColumns ( )  {  memset ( this ,  0 ,  sizeof ( * this ) ) ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    void         Update ( int  count ,  float  spacing ,  bool  clear ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float        DeclColumns ( float  w0 ,  float  w1 ,  float  w2 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    float        CalcExtraSpace ( float  avail_w )  const ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Internal state of the currently focused/edited text input box
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// For a given item ID, access with ImGui::GetInputTextState()
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								struct  IMGUI_API  ImGuiInputTextState  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  ID ;                      // widget id owning the text state
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int                      CurLenW ,  CurLenA ;        // we need to maintain our buffer length in both UTF-8 and wchar format. UTF-8 length is valid even if TextA is not.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImVector < ImWchar >        TextW ;                   // edit buffer, we need to persist but can't guarantee the persistence of the user-provided buffer. so we copy into own buffer.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < char >           TextA ;                   // temporary UTF8 buffer for callbacks and other operations. this is not updated in every code-path! size=capacity.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < char >           InitialTextA ;            // backup of end-user buffer at the time of focus (in UTF-8, unaltered)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     TextAIsValid ;            // temporary UTF8 buffer is not initially valid before we make the widget active (until then we pull the data from user argument)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      BufCapacityA ;            // end-user buffer capacity
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    ScrollX ;                 // horizontal scrolling/offset
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImStb : : STB_TexteditState  Stb ;                    // state for stb_textedit.h
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    CursorAnim ;              // timer for cursor blink, reset on every user action so the cursor reappears immediately
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     CursorFollow ;            // set when we want scrolling to follow the current cursor position (not always!)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     SelectedAllMouseLock ;    // after a double-click to select all, we ignore further mouse drags to update selection
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool                     Edited ;                  // edited this frame
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiInputTextFlags      UserFlags ;               // Temporarily set while we call user's callback
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiInputTextCallback   UserCallback ;            // "
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void *                    UserCallbackData ;        // "
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiInputTextState ( )                    {  memset ( this ,  0 ,  sizeof ( * this ) ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void         ClearText ( )                  {  CurLenW  =  CurLenA  =  0 ;  TextW [ 0 ]  =  0 ;  TextA [ 0 ]  =  0 ;  CursorClamp ( ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void         ClearFreeMemory ( )            {  TextW . clear ( ) ;  TextA . clear ( ) ;  InitialTextA . clear ( ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int          GetUndoAvailCount ( )  const    {  return  Stb . undostate . undo_point ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int          GetRedoAvailCount ( )  const    {  return  STB_TEXTEDIT_UNDOSTATECOUNT  -  Stb . undostate . redo_point ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void         OnKeyPressed ( int  key ) ;       // Cannot be inline because we call in code in stb_textedit.h implementation
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Cursor & Selection
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void         CursorAnimReset ( )            {  CursorAnim  =  - 0.30f ;  }                                    // After a user-input the cursor stays on for a while without blinking
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void         CursorClamp ( )                {  Stb . cursor  =  ImMin ( Stb . cursor ,  CurLenW ) ;  Stb . select_start  =  ImMin ( Stb . select_start ,  CurLenW ) ;  Stb . select_end  =  ImMin ( Stb . select_end ,  CurLenW ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool         HasSelection ( )  const         {  return  Stb . select_start  ! =  Stb . select_end ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void         ClearSelection ( )             {  Stb . select_start  =  Stb . select_end  =  Stb . cursor ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void         SelectAll ( )                  {  Stb . select_start  =  0 ;  Stb . cursor  =  Stb . select_end  =  CurLenW ;  Stb . has_preferred_x  =  0 ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Storage for current popup stack
  
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  ImGuiPopupData  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID              PopupId ;         // Set on OpenPopup()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow *         Window ;          // Resolved on BeginPopup() - may stay unresolved if user never calls OpenPopup()
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiWindow *         SourceWindow ;    // Set on OpenPopup() copy of NavWindow at the time of opening the popup
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    int                  OpenFrameCount ;  // Set on OpenPopup()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID              OpenParentId ;    // Set on OpenPopup(), we need this to differentiate multiple menu sets from each others (e.g. inside menu bar vs loose menu items)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2               OpenPopupPos ;    // Set on OpenPopup(), preferred popup position (typically == OpenMousePos when using mouse)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2               OpenMousePos ;    // Set on OpenPopup(), copy of mouse position at the time of opening popup
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiPopupData ( )     {  memset ( this ,  0 ,  sizeof ( * this ) ) ;  OpenFrameCount  =  - 1 ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiNavMoveResult  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiWindow *     Window ;              // Best candidate window
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID          ID ;                  // Best candidate ID
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID          FocusScopeId ;        // Best candidate focus scope ID
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float            DistBox ;             // Best candidate box distance to current NavId
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float            DistCenter ;          // Best candidate center distance to current NavId
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float            DistAxial ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect           RectRel ;             // Best candidate bounding box in window relative space
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavMoveResult ( )  {  Clear ( ) ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    void  Clear ( )          {  Window  =  NULL ;  ID  =  FocusScopeId  =  0 ;  DistBox  =  DistCenter  =  DistAxial  =  FLT_MAX ;  RectRel  =  ImRect ( ) ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								enum  ImGuiNextWindowDataFlags_  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNextWindowDataFlags_None                =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNextWindowDataFlags_HasPos              =  1  < <  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNextWindowDataFlags_HasSize             =  1  < <  1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNextWindowDataFlags_HasContentSize      =  1  < <  2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNextWindowDataFlags_HasCollapsed        =  1  < <  3 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNextWindowDataFlags_HasSizeConstraint   =  1  < <  4 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNextWindowDataFlags_HasFocus            =  1  < <  5 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNextWindowDataFlags_HasBgAlpha          =  1  < <  6 , 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiNextWindowDataFlags_HasScroll           =  1  < <  7 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// Storage for SetNexWindow** functions
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiNextWindowData  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiNextWindowDataFlags     Flags ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiCond                    PosCond ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiCond                    SizeCond ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiCond                    CollapsedCond ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2                       PosVal ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2                       PosPivotVal ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2                       SizeVal ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2                       ContentSizeVal ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVec2                       ScrollVal ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool                         CollapsedVal ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                       SizeConstraintRect ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiSizeCallback            SizeCallback ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void *                        SizeCallbackUserData ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    float                        BgAlphaVal ;              // Override background alpha
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVec2                       MenuBarOffsetMinVal ;     // *Always on* This is not exposed publicly, so we don't clear it.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNextWindowData ( )        {  memset ( this ,  0 ,  sizeof ( * this ) ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  void  ClearFlags ( )     {  Flags  =  ImGuiNextWindowDataFlags_None ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								enum  ImGuiNextItemDataFlags_  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNextItemDataFlags_None      =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNextItemDataFlags_HasWidth  =  1  < <  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNextItemDataFlags_HasOpen   =  1  < <  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  ImGuiNextItemData  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNextItemDataFlags       Flags ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    float                        Width ;           // Set by SetNextItemWidth()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                      FocusScopeId ;    // Set by SetNextItemMultiSelectData() (!= 0 signify value has been set, so it's an alternate version of HasSelectionData, we don't use Flags for this because they are cleared too early. This is mostly used for debugging)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiCond                    OpenCond ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool                         OpenVal ;         // Set by SetNextItemOpen()
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNextItemData ( )          {  memset ( this ,  0 ,  sizeof ( * this ) ) ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    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 ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// [SECTION] Columns support
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Flags for internal's BeginColumns(). Prefix using BeginTable() nowadays!
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiOldColumnFlags_  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiOldColumnFlags_None                     =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiOldColumnFlags_NoBorder                 =  1  < <  0 ,    // Disable column dividers
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiOldColumnFlags_NoResize                 =  1  < <  1 ,    // Disable resizing columns when clicking on the dividers
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiOldColumnFlags_NoPreserveWidths         =  1  < <  2 ,    // Disable column width preservation when adjusting columns
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiOldColumnFlags_NoForceWithinWindow      =  1  < <  3 ,    // Disable forcing columns to fit within window
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiOldColumnFlags_GrowParentContentsSize   =  1  < <  4     // (WIP) Restore pre-1.51 behavior of extending the parent window contents size but _without affecting the columns width at all_. Will eventually remove.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Obsolete names (will be removed)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ,  ImGuiColumnsFlags_None                     =  ImGuiOldColumnFlags_None , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiColumnsFlags_NoBorder                   =  ImGuiOldColumnFlags_NoBorder , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiColumnsFlags_NoResize                   =  ImGuiOldColumnFlags_NoResize , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiColumnsFlags_NoPreserveWidths           =  ImGuiOldColumnFlags_NoPreserveWidths , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiColumnsFlags_NoForceWithinWindow        =  ImGuiOldColumnFlags_NoForceWithinWindow , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiColumnsFlags_GrowParentContentsSize     =  ImGuiOldColumnFlags_GrowParentContentsSize 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  ImGuiOldColumnData  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                OffsetNorm ;          // Column start offset, normalized 0.0 (far left) -> 1.0 (far right)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                OffsetNormBeforeResize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiOldColumnFlags  Flags ;               // Not exposed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect               ClipRect ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiOldColumnData ( )  {  memset ( this ,  0 ,  sizeof ( * this ) ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiOldColumns  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID              ID ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiOldColumnFlags  Flags ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                 IsFirstFrame ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                 IsBeingResized ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                  Current ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                  Count ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                OffMinX ,  OffMaxX ;        // Offsets from HostWorkRect.Min.x
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                LineMinY ,  LineMaxY ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                HostCursorPosY ;          // Backup of CursorPos at the time of BeginColumns()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                HostCursorMaxPosX ;       // Backup of CursorMaxPos at the time of BeginColumns()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect               HostInitialClipRect ;     // Backup of ClipRect at the time of BeginColumns()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect               HostBackupClipRect ;      // Backup of ClipRect during PushColumnsBackground()/PopColumnsBackground()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect               HostBackupParentWorkRect ; //Backup of WorkRect at the time of BeginColumns()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < ImGuiOldColumnData >  Columns ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImDrawListSplitter   Splitter ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiOldColumns ( )    {  memset ( this ,  0 ,  sizeof ( * this ) ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Multi-select support
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef IMGUI_HAS_MULTI_SELECT 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// <this is filled in 'range_select' branch>
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  // #ifdef IMGUI_HAS_MULTI_SELECT
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Docking support
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef IMGUI_HAS_DOCK 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// <this is filled in 'docking' branch>
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  // #ifdef IMGUI_HAS_DOCK
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Viewport support
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef IMGUI_HAS_VIEWPORT 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// <this is filled in 'docking' branch>
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  // #ifdef IMGUI_HAS_VIEWPORT
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Settings support
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 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 ( )        {  memset ( this ,  0 ,  sizeof ( * this ) ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    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         ( * ReadInitFn ) ( ImGuiContext *  ctx ,  ImGuiSettingsHandler *  handler ) ;                                 // Read: Called before 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         ( * ApplyAllFn ) ( ImGuiContext *  ctx ,  ImGuiSettingsHandler *  handler ) ;                                 // Read: Called after reading (in registration order)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void         ( * WriteAllFn ) ( ImGuiContext *  ctx ,  ImGuiSettingsHandler *  handler ,  ImGuiTextBuffer *  out_buf ) ;       // Write: Output every entries into 'out_buf'
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void *        UserData ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiSettingsHandler ( )  {  memset ( this ,  0 ,  sizeof ( * this ) ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Metrics, Debug
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiMetricsConfig  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool         ShowWindowsRects ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool         ShowWindowsBeginOrder ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool         ShowTablesRects ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool         ShowDrawCmdMesh ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool         ShowDrawCmdBoundingBoxes ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int          ShowWindowsRectsType ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int          ShowTablesRectsType ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiMetricsConfig ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ShowWindowsRects  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ShowWindowsBeginOrder  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ShowTablesRects  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ShowDrawCmdMesh  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ShowDrawCmdBoundingBoxes  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ShowWindowsRectsType  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ShowTablesRectsType  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  IMGUI_API  ImGuiStackSizes  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    short    SizeOfIDStack ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    short    SizeOfColorStack ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    short    SizeOfStyleVarStack ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    short    SizeOfFontStack ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    short    SizeOfFocusScopeStack ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    short    SizeOfGroupStack ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    short    SizeOfBeginPopupStack ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiStackSizes ( )  {  memset ( this ,  0 ,  sizeof ( * this ) ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void  SetToCurrentState ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void  CompareWithCurrentState ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Generic context hooks
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  void  ( * ImGuiContextHookCallback ) ( ImGuiContext *  ctx ,  ImGuiContextHook *  hook ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enum  ImGuiContextHookType  {  ImGuiContextHookType_NewFramePre ,  ImGuiContextHookType_NewFramePost ,  ImGuiContextHookType_EndFramePre ,  ImGuiContextHookType_EndFramePost ,  ImGuiContextHookType_RenderPre ,  ImGuiContextHookType_RenderPost ,  ImGuiContextHookType_Shutdown ,  ImGuiContextHookType_PendingRemoval_  } ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiContextHook  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiID                      HookId ;      // A unique ID assigned by AddContextHook()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiContextHookType         Type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                      Owner ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiContextHookCallback     Callback ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void *                        UserData ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiContextHook ( )           {  memset ( this ,  0 ,  sizeof ( * this ) ) ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// [SECTION] ImGuiContext (main imgui context)
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiContext  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     Initialized ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool                     FontAtlasOwnedByContext ;             // IO.Fonts-> is owned by the ImGuiContext and will be destructed along with it.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiIO                  IO ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiStyle               Style ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImFont *                  Font ;                                // (Shortcut) == FontStack.empty() ? IO.Font : FontStack.back()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    FontSize ;                            // (Shortcut) == FontBaseSize * g.CurrentWindow->FontWindowScale == window->FontSize(). Text height for current window.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    FontBaseSize ;                        // (Shortcut) == IO.FontGlobalScale * Font->Scale * Font->FontSize. Base text height.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImDrawListSharedData     DrawListSharedData ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    double                   Time ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      FrameCount ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      FrameCountEnded ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      FrameCountRendered ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool                     WithinFrameScope ;                    // Set by NewFrame(), cleared by EndFrame()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     WithinFrameScopeWithImplicitWindow ;  // Set by NewFrame(), cleared by EndFrame() when the implicit debug window has been pushed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     WithinEndChild ;                      // Set within EndChild()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     GcCompactAll ;                        // Request full GC
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     TestEngineHookItems ;                 // Will call test engine hooks: ImGuiTestEngineHook_ItemAdd(), ImGuiTestEngineHook_ItemInfo(), ImGuiTestEngineHook_Log()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  TestEngineHookIdInfo ;                // Will call test engine hooks: ImGuiTestEngineHook_IdInfo() from GetID()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void *                    TestEngine ;                          // Test engine user data
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Windows state
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImVector < ImGuiWindow * >   Windows ;                             // Windows, sorted in display order, back to front
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVector < ImGuiWindow * >   WindowsFocusOrder ;                   // Windows, sorted in focus order, back to front. (FIXME: We could only store root windows here! Need to sort out the Docking equivalent which is RootWindowDockStop and is unfortunately a little more dynamic)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < ImGuiWindow * >   WindowsTempSortBuffer ;               // Temporary buffer used in EndFrame() to reorder windows so parents are kept before their child
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImVector < ImGuiWindow * >   CurrentWindowStack ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiStorage             WindowsById ;                         // Map window's ImGuiID to ImGuiWindow*
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      WindowsActiveCount ;                  // Number of unique windows submitted by frame
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow *             CurrentWindow ;                       // Window being drawn into
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow *             HoveredWindow ;                       // Window the mouse is hovering. Will typically catch mouse inputs.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow *             HoveredRootWindow ;                   // == HoveredWindow ? HoveredWindow->RootWindow : NULL, merely a shortcut to avoid null test in some situation.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow *             HoveredWindowUnderMovingWindow ;      // Hovered window ignoring MovingWindow. Only set if MovingWindow is set.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiWindow *             MovingWindow ;                        // Track the window we clicked on (in order to preserve focus). The actual window that is moved is generally MovingWindow->RootWindow.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow *             WheelingWindow ;                      // Track the window we started mouse-wheeling on. Until a timer elapse or mouse has moved, generally keep scrolling the same window even if during the course of scrolling the mouse ends up hovering a child window.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVec2                   WheelingWindowRefMousePos ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    WheelingWindowTimer ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Item/widgets state and tracking information
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiID                  HoveredId ;                           // Hovered widget, filled during the frame
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  HoveredIdPreviousFrame ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool                     HoveredIdAllowOverlap ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     HoveredIdUsingMouseWheel ;            // Hovered widget will use mouse wheel. Blocks scrolling the underlying window.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     HoveredIdPreviousFrameUsingMouseWheel ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     HoveredIdDisabled ;                   // At least one widget passed the rect test, but has been discarded by disabled flag or popup inhibit. May be true even if HoveredId == 0.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    float                    HoveredIdTimer ;                      // Measure contiguous hovering time
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    HoveredIdNotActiveTimer ;             // Measure contiguous hovering time where the item has not been active
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  ActiveId ;                            // Active widget
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  ActiveIdIsAlive ;                     // Active widget has been seen this frame (we can't use a bool as the ActiveId may change within the frame)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    ActiveIdTimer ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     ActiveIdIsJustActivated ;             // Set at the time of activation for one frame
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     ActiveIdAllowOverlap ;                // Active widget allows another widget to steal active id (generally for overlapping widgets, but not always)
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool                     ActiveIdNoClearOnFocusLoss ;          // Disable losing active id if the active id window gets unfocused.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool                     ActiveIdHasBeenPressedBefore ;        // Track whether the active id led to a press (this is to allow changing between PressOnClick and PressOnRelease without pressing twice). Used by range_select branch.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     ActiveIdHasBeenEditedBefore ;         // Was the value associated to the widget Edited over the course of the Active state.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     ActiveIdHasBeenEditedThisFrame ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool                     ActiveIdUsingMouseWheel ;             // Active widget will want to read mouse wheel. Blocks scrolling the underlying window.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU32                    ActiveIdUsingNavDirMask ;             // Active widget will want to read those nav move requests (e.g. can activate a button and move away from it)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImU32                    ActiveIdUsingNavInputMask ;           // Active widget will want to read those nav inputs.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU64                    ActiveIdUsingKeyInputMask ;           // Active widget will want to read those key inputs. When we grow the ImGuiKey enum we'll need to either to order the enum to make useful keys come first, either redesign this into e.g. a small array.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImVec2                   ActiveIdClickOffset ;                 // Clicked offset from upper-left corner, if applicable (currently only set by ButtonBehavior)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow *             ActiveIdWindow ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiInputSource         ActiveIdSource ;                      // Activating with mouse or nav (gamepad/keyboard)
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int                      ActiveIdMouseButton ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiID                  ActiveIdPreviousFrame ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     ActiveIdPreviousFrameIsAlive ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     ActiveIdPreviousFrameHasBeenEditedBefore ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow *             ActiveIdPreviousFrameWindow ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  LastActiveId ;                        // Store the last non-zero ActiveId, useful for animation.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    LastActiveIdTimer ;                   // Store the last non-zero ActiveId timer since the beginning of activation, useful for animation.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Next window/item data
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNextWindowData      NextWindowData ;                      // Storage for SetNextWindow** functions
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNextItemData        NextItemData ;                        // Storage for SetNextItem** functions
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Shared stacks
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVector < ImGuiColorMod >  ColorStack ;                          // Stack for PushStyleColor()/PopStyleColor() - inherited by Begin()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < ImGuiStyleMod >  StyleVarStack ;                       // Stack for PushStyleVar()/PopStyleVar() - inherited by Begin()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < ImFont * >        FontStack ;                           // Stack for PushFont()/PopFont() - inherited by Begin()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < ImGuiID >        FocusScopeStack ;                     // Stack for PushFocusScope()/PopFocusScope() - not inherited by Begin(), unless child window
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < ImGuiItemFlags > ItemFlagsStack ;                      // Stack for PushItemFlag()/PopItemFlag() - inherited by Begin()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < ImGuiGroupData > GroupStack ;                          // Stack for BeginGroup()/EndGroup() - not inherited by Begin()
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVector < ImGuiPopupData > OpenPopupStack ;                      // Which popups are open (persistent)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < ImGuiPopupData > BeginPopupStack ;                     // Which level of BeginPopup() we are in (reset every frame)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Gamepad/keyboard Navigation
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow *             NavWindow ;                           // Focused window for navigation. Could be called 'FocusWindow'
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  NavId ;                               // Focused item for navigation
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiID                  NavFocusScopeId ;                     // Identify a selection scope (selection code often wants to "clear other items" when landing on an item of the selection set)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  NavActivateId ;                       // ~~ (g.ActiveId == 0) && IsNavInputPressed(ImGuiNavInput_Activate) ? NavId : 0, also set when calling ActivateItem()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  NavActivateDownId ;                   // ~~ IsNavInputDown(ImGuiNavInput_Activate) ? NavId : 0
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  NavActivatePressedId ;                // ~~ IsNavInputPressed(ImGuiNavInput_Activate) ? NavId : 0
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  NavInputId ;                          // ~~ IsNavInputPressed(ImGuiNavInput_Input) ? NavId : 0
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  NavJustTabbedId ;                     // Just tabbed to this id.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  NavJustMovedToId ;                    // Just navigated to this id (result of a successfully MoveRequest).
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiID                  NavJustMovedToFocusScopeId ;          // Just navigated to this focus scope id (result of a successfully MoveRequest).
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiKeyModFlags         NavJustMovedToKeyMods ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  NavNextActivateId ;                   // Set by ActivateItem(), queued until next frame.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiInputSource         NavInputSource ;                      // Keyboard or Gamepad mode? THIS WILL ONLY BE None or NavGamepad or NavKeyboard.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImRect                   NavScoringRect ;                      // Rectangle used for scoring, in screen space. Based of window->NavRectRel[], modified for directional navigation scoring.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    int                      NavScoringCount ;                     // Metrics for debugging
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavLayer            NavLayer ;                            // Layer we are navigating on. For now the system is hard-coded for 0=main contents and 1=menu/title bar, may expose layers later.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      NavIdTabCounter ;                     // == NavWindow->DC.FocusIdxTabCounter at time of NavId processing
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool                     NavIdIsAlive ;                        // Nav widget has been seen this frame ~~ NavRectRel is valid
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    bool                     NavMousePosDirty ;                    // When set we will update mouse position if (io.ConfigFlags & ImGuiConfigFlags_NavEnableSetMousePos) if set (NB: this not enabled by default)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     NavDisableHighlight ;                 // When user starts using mouse, we hide gamepad/keyboard highlight (NB: but they are still available, which is why NavDisableHighlight isn't always != NavDisableMouseHover)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     NavDisableMouseHover ;                // When user starts using gamepad/keyboard, we hide mouse hovering highlight until mouse is touched again.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     NavAnyRequest ;                       // ~~ NavMoveRequest || NavInitRequest
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     NavInitRequest ;                      // Init request for appearing window to select first item
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     NavInitRequestFromMove ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiID                  NavInitResultId ;                     // Init request result (first item of the window, or one for which SetItemDefaultFocus() was called)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                   NavInitResultRectRel ;                // Init request result rectangle (relative to parent window)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    bool                     NavMoveRequest ;                      // Move request for this frame
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavMoveFlags        NavMoveRequestFlags ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavForward          NavMoveRequestForward ;               // None / ForwardQueued / ForwardActive (this is used to navigate sibling parent menus from a child menu)
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiKeyModFlags         NavMoveRequestKeyMods ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiDir                 NavMoveDir ,  NavMoveDirLast ;          // Direction of the move request (left/right/up/down), direction of the previous move request
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiDir                 NavMoveClipDir ;                      // FIXME-NAV: Describe the purpose of this better. Might want to rename?
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiNavMoveResult       NavMoveResultLocal ;                  // Best move request candidate within NavWindow
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavMoveResult       NavMoveResultLocalVisibleSet ;        // Best move request candidate within NavWindow that are mostly visible (when using ImGuiNavMoveFlags_AlsoScoreVisibleSet flag)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavMoveResult       NavMoveResultOther ;                  // Best move request candidate within NavWindow's flattened hierarchy (when using ImGuiWindowFlags_NavFlattened flag)
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiWindow *             NavWrapRequestWindow ;                // Window which requested trying nav wrap-around.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiNavMoveFlags        NavWrapRequestFlags ;                 // Wrap-around operation flags.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Navigation: Windowing (CTRL+TAB for list, or Menu button + keys or directional pads to move/resize)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow *             NavWindowingTarget ;                  // Target window when doing CTRL+Tab (or Pad Menu + FocusPrev/Next), this window is temporarily displayed top-most!
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow *             NavWindowingTargetAnim ;              // Record of last valid NavWindowingTarget until DimBgRatio and NavWindowingHighlightAlpha becomes 0.0f, so the fade-out can stay on it.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow *             NavWindowingListWindow ;              // Internal window actually listing the CTRL+Tab contents
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    NavWindowingTimer ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    NavWindowingHighlightAlpha ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     NavWindowingToggleLayer ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Legacy Focus/Tabbing system (older than Nav, active even if Nav is disabled, misnamed. FIXME-NAV: This needs a redesign!)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow *             FocusRequestCurrWindow ;              //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow *             FocusRequestNextWindow ;              //
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int                      FocusRequestCurrCounterRegular ;      // Any item being requested for focus, stored as an index (we on layout to be stable between the frame pressing TAB and the next frame, semi-ouch)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      FocusRequestCurrCounterTabStop ;      // Tab item being requested for focus, stored as an index
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      FocusRequestNextCounterRegular ;      // Stored for next frame
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      FocusRequestNextCounterTabStop ;      // "
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    bool                     FocusTabPressed ;                     //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Render
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImDrawData               DrawData ;                            // Main ImDrawData instance to pass render information to the user
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImDrawDataBuilder        DrawDataBuilder ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    float                    DimBgRatio ;                          // 0.0..1.0 animation when fading in a dimming background (for modal window and CTRL+TAB list)
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImDrawList               BackgroundDrawList ;                  // First draw list to be rendered.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImDrawList               ForegroundDrawList ;                  // Last draw list to be rendered. This is where we the render software mouse cursor (if io.MouseDrawCursor is set) and most debug overlays.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiMouseCursor         MouseCursor ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Drag and Drop
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     DragDropActive ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool                     DragDropWithinSource ;                // Set when within a BeginDragDropXXX/EndDragDropXXX block for a drag source.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     DragDropWithinTarget ;                // Set when within a BeginDragDropXXX/EndDragDropXXX block for a drag target.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiDragDropFlags       DragDropSourceFlags ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      DragDropSourceFrameCount ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      DragDropMouseButton ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiPayload             DragDropPayload ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImRect                   DragDropTargetRect ;                  // Store rectangle of current target candidate (we favor small targets when overlapping)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  DragDropTargetId ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiDragDropFlags       DragDropAcceptFlags ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    DragDropAcceptIdCurrRectSurface ;     // Target item surface (we resolve overlapping targets by prioritizing the smaller surface)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  DragDropAcceptIdCurr ;                // Target item id (set at the time of accepting the payload)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  DragDropAcceptIdPrev ;                // Target item id from previous frame (we need to store this to allow for overlapping drag and drop targets)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      DragDropAcceptFrameCount ;            // Last time a target expressed a desire to accept the source
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiID                  DragDropHoldJustPressedId ;           // Set when holding a payload just made ButtonBehavior() return a press.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < unsigned  char >  DragDropPayloadBufHeap ;              // We don't expose the ImVector<> directly, ImGuiPayload only holds pointer+size
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    unsigned  char            DragDropPayloadBufLocal [ 16 ] ;         // Local buffer for small payloads
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Table
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTable *                      CurrentTable ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImPool < ImGuiTable >               Tables ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < ImGuiPtrOrIndex >        CurrentTableStack ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < float >                  TablesLastTimeActive ;        // Last used timestamp of each tables (SOA, for efficient GC)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < ImDrawChannel >          DrawChannelsTempMergeBuffer ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Tab bars
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTabBar *                     CurrentTabBar ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImPool < ImGuiTabBar >              TabBars ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < ImGuiPtrOrIndex >        CurrentTabBarStack ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < ImGuiShrinkWidthItem >   ShrinkWidthBuffer ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Widget state
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVec2                   LastValidMousePos ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiInputTextState      InputTextState ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImFont                   InputTextPasswordFont ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiID                  TempInputId ;                         // Temporary text input when CTRL+clicking on a slider, etc.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiColorEditFlags      ColorEditOptions ;                    // Store user options for color edit widgets
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    float                    ColorEditLastHue ;                    // Backup of last Hue associated to LastColor[3], so we can restore Hue in lossy RGB<>HSV round trips
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    ColorEditLastSat ;                    // Backup of last Saturation associated to LastColor[3], so we can restore Saturation in lossy RGB<>HSV round trips
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    float                    ColorEditLastColor [ 3 ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVec4                   ColorPickerRef ;                      // Initial/reference color at the time of opening the color picker.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    SliderCurrentAccum ;                  // Accumulated slider delta when using navigation controls.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     SliderCurrentAccumDirty ;             // Has the accumulated slider delta changed since last time we tried to apply it?
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    bool                     DragCurrentAccumDirty ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    DragCurrentAccum ;                    // Accumulator for dragging modification. Always high-precision, not rounded by end-user precision settings
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    DragSpeedDefaultRatio ;               // If speed == 0.0f, uses (max-min) * DragSpeedDefaultRatio
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    float                    ScrollbarClickDeltaToGrabCenter ;     // Distance between mouse and center of grab box, normalized in parent space. Use storage?
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    int                      TooltipOverrideCount ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    float                    TooltipSlowDelay ;                    // Time before slow tooltips appears (FIXME: This is temporary until we merge in tooltip timer+priority work)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < char >           ClipboardHandlerData ;                // If no custom clipboard handler is defined
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < ImGuiID >        MenusIdSubmittedThisFrame ;           // A list of menu IDs that were rendered at least once
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Platform support
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2                   PlatformImePos ;                      // Cursor position request & last passed to the OS Input Method Editor
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2                   PlatformImeLastPos ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    char                     PlatformLocaleDecimalPoint ;          // '.' or *localeconv()->decimal_point
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Settings
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool                     SettingsLoaded ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    SettingsDirtyTimer ;                  // Save .ini Settings to memory when time reaches zero
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTextBuffer          SettingsIniData ;                     // In memory .ini settings
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < ImGuiSettingsHandler >       SettingsHandlers ;        // List of .ini settings handlers
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImChunkStream < ImGuiWindowSettings >   SettingsWindows ;         // ImGuiWindow .ini settings entries
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImChunkStream < ImGuiTableSettings >    SettingsTables ;          // ImGuiTable .ini settings entries
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < ImGuiContextHook >           Hooks ;                   // Hooks for extensions (e.g. test engine)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                              HookIdNext ;              // Next available HookId
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Capture/Logging
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     LogEnabled ;                          // Currently capturing
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiLogType             LogType ;                             // Capture target
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImFileHandle             LogFile ;                             // If != NULL log to stdout/ file
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiTextBuffer          LogBuffer ;                           // Accumulation buffer when log to clipboard. This is pointer so our GImGui static constructor doesn't call heap allocators.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    LogLinePosY ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     LogLineFirstItem ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      LogDepthRef ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      LogDepthToExpand ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      LogDepthToExpandDefault ;             // Default/stored value for LogDepthMaxExpand if not specified in the LogXXX function call.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Debug Tools
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool                     DebugItemPickerActive ;               // Item picker is active (started with DebugStartItemPicker())
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  DebugItemPickerBreakId ;              // Will call IM_DEBUG_BREAK() when encountering this id
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiMetricsConfig       DebugMetricsConfig ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    // Misc
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    FramerateSecPerFrame [ 120 ] ;           // Calculate estimate of framerate for user over the last 2 seconds.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      FramerateSecPerFrameIdx ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    FramerateSecPerFrameAccum ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      WantCaptureMouseNextFrame ;           // Explicit capture via CaptureKeyboardFromApp()/CaptureMouseFromApp() sets those flags
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      WantCaptureKeyboardNextFrame ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      WantTextInputNextFrame ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    char                     TempBuffer [ 1024  *  3  +  1 ] ;            // Temporary text buffer
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiContext ( ImFontAtlas *  shared_font_atlas )  :  BackgroundDrawList ( & DrawListSharedData ) ,  ForegroundDrawList ( & DrawListSharedData ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Initialized  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        FontAtlasOwnedByContext  =  shared_font_atlas  ?  false  :  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        Font  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        FontSize  =  FontBaseSize  =  0.0f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        IO . Fonts  =  shared_font_atlas  ?  shared_font_atlas  :  IM_NEW ( ImFontAtlas ) ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Time  =  0.0f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        FrameCount  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        FrameCountEnded  =  FrameCountRendered  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        WithinFrameScope  =  WithinFrameScopeWithImplicitWindow  =  WithinEndChild  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        GcCompactAll  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        TestEngineHookItems  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        TestEngineHookIdInfo  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        TestEngine  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        WindowsActiveCount  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        CurrentWindow  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        HoveredWindow  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        HoveredRootWindow  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        HoveredWindowUnderMovingWindow  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        MovingWindow  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        WheelingWindow  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        WheelingWindowTimer  =  0.0f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        HoveredId  =  HoveredIdPreviousFrame  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        HoveredIdAllowOverlap  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        HoveredIdUsingMouseWheel  =  HoveredIdPreviousFrameUsingMouseWheel  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        HoveredIdDisabled  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        HoveredIdTimer  =  HoveredIdNotActiveTimer  =  0.0f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ActiveId  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ActiveIdIsAlive  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ActiveIdTimer  =  0.0f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ActiveIdIsJustActivated  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ActiveIdAllowOverlap  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ActiveIdNoClearOnFocusLoss  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ActiveIdHasBeenPressedBefore  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ActiveIdHasBeenEditedBefore  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ActiveIdHasBeenEditedThisFrame  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ActiveIdUsingMouseWheel  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ActiveIdUsingNavDirMask  =  0x00 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ActiveIdUsingNavInputMask  =  0x00 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ActiveIdUsingKeyInputMask  =  0x00 ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ActiveIdClickOffset  =  ImVec2 ( - 1 ,  - 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ActiveIdWindow  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        ActiveIdSource  =  ImGuiInputSource_None ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ActiveIdMouseButton  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ActiveIdPreviousFrame  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ActiveIdPreviousFrameIsAlive  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ActiveIdPreviousFrameHasBeenEditedBefore  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ActiveIdPreviousFrameWindow  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        LastActiveId  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        LastActiveIdTimer  =  0.0f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        NavWindow  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        NavId  =  NavFocusScopeId  =  NavActivateId  =  NavActivateDownId  =  NavActivatePressedId  =  NavInputId  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        NavJustTabbedId  =  NavJustMovedToId  =  NavJustMovedToFocusScopeId  =  NavNextActivateId  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        NavJustMovedToKeyMods  =  ImGuiKeyModFlags_None ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        NavInputSource  =  ImGuiInputSource_None ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        NavScoringRect  =  ImRect ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        NavScoringCount  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        NavLayer  =  ImGuiNavLayer_Main ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        NavIdTabCounter  =  INT_MAX ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        NavIdIsAlive  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        NavMousePosDirty  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        NavDisableHighlight  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        NavDisableMouseHover  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        NavAnyRequest  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        NavInitRequest  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        NavInitRequestFromMove  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        NavInitResultId  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        NavMoveRequest  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        NavMoveRequestFlags  =  ImGuiNavMoveFlags_None ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        NavMoveRequestForward  =  ImGuiNavForward_None ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        NavMoveRequestKeyMods  =  ImGuiKeyModFlags_None ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        NavMoveDir  =  NavMoveDirLast  =  NavMoveClipDir  =  ImGuiDir_None ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        NavWrapRequestWindow  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        NavWrapRequestFlags  =  ImGuiNavMoveFlags_None ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        NavWindowingTarget  =  NavWindowingTargetAnim  =  NavWindowingListWindow  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        NavWindowingTimer  =  NavWindowingHighlightAlpha  =  0.0f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        NavWindowingToggleLayer  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        FocusRequestCurrWindow  =  FocusRequestNextWindow  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        FocusRequestCurrCounterRegular  =  FocusRequestCurrCounterTabStop  =  INT_MAX ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        FocusRequestNextCounterRegular  =  FocusRequestNextCounterTabStop  =  INT_MAX ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        FocusTabPressed  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        DimBgRatio  =  0.0f ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        BackgroundDrawList . _OwnerName  =  " ##Background " ;  // Give it a name for debugging
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ForegroundDrawList . _OwnerName  =  " ##Foreground " ;  // Give it a name for debugging
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        MouseCursor  =  ImGuiMouseCursor_Arrow ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        DragDropActive  =  DragDropWithinSource  =  DragDropWithinTarget  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        DragDropSourceFlags  =  ImGuiDragDropFlags_None ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        DragDropSourceFrameCount  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        DragDropMouseButton  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        DragDropTargetId  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        DragDropAcceptFlags  =  ImGuiDragDropFlags_None ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        DragDropAcceptIdCurrRectSurface  =  0.0f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        DragDropAcceptIdPrev  =  DragDropAcceptIdCurr  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        DragDropAcceptFrameCount  =  - 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        DragDropHoldJustPressedId  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        memset ( DragDropPayloadBufLocal ,  0 ,  sizeof ( DragDropPayloadBufLocal ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        CurrentTable  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        CurrentTabBar  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        LastValidMousePos  =  ImVec2 ( 0.0f ,  0.0f ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        TempInputId  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        ColorEditOptions  =  ImGuiColorEditFlags__OptionsDefault ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ColorEditLastHue  =  ColorEditLastSat  =  0.0f ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ColorEditLastColor [ 0 ]  =  ColorEditLastColor [ 1 ]  =  ColorEditLastColor [ 2 ]  =  FLT_MAX ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        SliderCurrentAccum  =  0.0f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SliderCurrentAccumDirty  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        DragCurrentAccumDirty  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        DragCurrentAccum  =  0.0f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        DragSpeedDefaultRatio  =  1.0f  /  100.0f ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ScrollbarClickDeltaToGrabCenter  =  0.0f ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        TooltipOverrideCount  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        TooltipSlowDelay  =  0.50f ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        PlatformImePos  =  PlatformImeLastPos  =  ImVec2 ( FLT_MAX ,  FLT_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        PlatformLocaleDecimalPoint  =  ' . ' ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SettingsLoaded  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SettingsDirtyTimer  =  0.0f ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        HookIdNext  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        LogEnabled  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        LogType  =  ImGuiLogType_None ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        LogFile  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        LogLinePosY  =  FLT_MAX ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        LogLineFirstItem  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        LogDepthRef  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        LogDepthToExpand  =  LogDepthToExpandDefault  =  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        DebugItemPickerActive  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        DebugItemPickerBreakId  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        memset ( FramerateSecPerFrame ,  0 ,  sizeof ( FramerateSecPerFrame ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        FramerateSecPerFrameIdx  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        FramerateSecPerFrameAccum  =  0.0f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        WantCaptureMouseNextFrame  =  WantCaptureKeyboardNextFrame  =  WantTextInputNextFrame  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        memset ( TempBuffer ,  0 ,  sizeof ( TempBuffer ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// [SECTION] ImGuiWindowTempData, ImGuiWindow
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Transient per-window data, reset at the beginning of the frame. This used to be called ImGuiDrawContext, hence the DC variable name in ImGuiWindow.
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// (That's theory, in practice the delimitation between ImGuiWindow and ImGuiWindowTempData is quite tenuous and could be reconsidered..)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// (This doesn't need a constructor because we zero-clear it as part of ImGuiWindow and all frame-temporary data are setup on Begin)
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								struct  IMGUI_API  ImGuiWindowTempData  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Layout
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVec2                   CursorPos ;               // Current emitting position, in absolute coordinates.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImVec2                   CursorPosPrevLine ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVec2                   CursorStartPos ;          // Initial position after Begin(), generally ~ window position + WindowPadding.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVec2                   CursorMaxPos ;            // Used to implicitly calculate ContentSize at the beginning of next frame, for scrolling range and auto-resize. Always growing during the frame.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2                   IdealMaxPos ;             // Used to implicitly calculate ContentSizeIdeal at the beginning of next frame, for auto-resize only. Always growing during the frame.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVec2                   CurrLineSize ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImVec2                   PrevLineSize ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    float                    CurrLineTextBaseOffset ;  // Baseline offset (0.0f by default on a new line, generally == style.FramePadding.y when a framed item has been added).
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    float                    PrevLineTextBaseOffset ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVec1                   Indent ;                  // Indentation / start position from left of window (increased by TreePush/TreePop, etc.)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec1                   ColumnsOffset ;           // Offset to the current column (if ColumnsCurrent > 0). FIXME: This and the above should be a stack to allow use cases like Tree->Column->Tree. Need revamp columns API.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec1                   GroupOffset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Last item status
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiID                  LastItemId ;              // ID for last item
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiItemStatusFlags     LastItemStatusFlags ;     // Status flags for last item (see ImGuiItemStatusFlags_)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                   LastItemRect ;            // Interaction rect for last item
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                   LastItemDisplayRect ;     // End-user display rect for last item (only valid if LastItemStatusFlags & ImGuiItemStatusFlags_HasDisplayRect)
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Keyboard/Gamepad navigation
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiNavLayer            NavLayerCurrent ;         // Current layer, 0..31 (we currently only use 0..1)
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int                      NavLayerActiveMask ;      // Which layers have been written to (result from previous frame)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      NavLayerActiveMaskNext ;  // Which layers have been written to (accumulator for current frame)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  NavFocusScopeIdCurrent ;  // Current focus scope ID while appending
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    bool                     NavHideHighlightOneFrame ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     NavHasScroll ;            // Set when scrolling can be used (ScrollMax > 0.0f)
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Miscellaneous
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    bool                     MenuBarAppending ;        // FIXME: Remove this
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2                   MenuBarOffset ;           // MenuBarOffset.x is sort of equivalent of a per-layer CursorPos.x, saved/restored as we switch to the menu bar. The only situation when MenuBarOffset.y is > 0 if when (SafeAreaPadding.y > FramePadding.y), often used on TVs.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiMenuColumns         MenuColumns ;             // Simplified columns storage for menu items measurement
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      TreeDepth ;               // Current tree depth.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU32                    TreeJumpToParentOnPopMask ;  // Store a copy of !g.NavIdIsAlive for TreeDepth 0..31.. Could be turned into a ImU64 if necessary.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImVector < ImGuiWindow * >   ChildWindows ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiStorage *            StateStorage ;            // Current persistent per-window storage (store e.g. tree node open/close state)
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiOldColumns *         CurrentColumns ;          // Current columns set
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      CurrentTableIdx ;         // Current table index (into g.Tables)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiLayoutType          LayoutType ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiLayoutType          ParentLayoutType ;        // Layout type of parent window at the time of Begin()
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int                      FocusCounterRegular ;     // (Legacy Focus/Tabbing system) Sequential counter, start at -1 and increase as assigned via FocusableItemRegister() (FIXME-NAV: Needs redesign)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                      FocusCounterTabStop ;     // (Legacy Focus/Tabbing system) Same, but only count widgets which you can Tab through.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Local parameters stacks
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    // We store the current settings outside of the vectors to increase memory locality (reduce cache misses). The vectors are rarely modified. Also it allows us to not heap allocate for short-lived windows which are not using those settings.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiItemFlags           ItemFlags ;               // == g.ItemFlagsStack.back()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    ItemWidth ;               // Current item width (>0.0: width in pixels, <0.0: align xx pixels to the right of window).
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    TextWrapPos ;             // Current text wrap pos.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < float >          ItemWidthStack ;          // Store item widths to restore (attention: .back() is not == ItemWidth)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < float >          TextWrapPosStack ;        // Store text wrap pos to restore (attention: .back() is not == TextWrapPos)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiStackSizes          StackSizesOnBegin ;       // Store size of various stacks for asserting
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Storage for one window
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  IMGUI_API  ImGuiWindow  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    char *                    Name ;                                // Window name, owned by the window.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  ID ;                                  // == ImHashStr(Name)
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiWindowFlags         Flags ;                               // See enum ImGuiWindowFlags_
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImVec2                   Pos ;                                 // Position (always rounded-up to nearest pixel)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2                   Size ;                                // Current size (==SizeFull or collapsed title bar size)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2                   SizeFull ;                            // Size when non collapsed
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVec2                   ContentSize ;                         // Size of contents/scrollable client area (calculated from the extents reach of the cursor) from previous frame. Does not include window decoration or window padding.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVec2                   ContentSizeIdeal ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVec2                   ContentSizeExplicit ;                 // Size of contents/scrollable client area explicitly request by the user via SetNextWindowContentSize().
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2                   WindowPadding ;                       // Window padding at the time of Begin().
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    float                    WindowRounding ;                      // Window rounding at the time of Begin(). May be clamped lower to avoid rendering artifacts with title bar, menu bar etc.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    float                    WindowBorderSize ;                    // Window border size at the time of Begin().
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    int                      NameBufLen ;                          // Size of buffer storing Name. May be larger than strlen(Name)!
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  MoveId ;                              // == window->GetID("#MOVE")
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  ChildId ;                             // ID of corresponding item in parent window (for navigation to return from child window to parent window)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2                   Scroll ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVec2                   ScrollMax ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImVec2                   ScrollTarget ;                        // target scroll position. stored as cursor position with scrolling canceled out, so the highest point is always 0.0f. (FLT_MAX for no change)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2                   ScrollTargetCenterRatio ;             // 0.0f = scroll so that target position is at top, 0.5f = scroll so that target position is centered
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVec2                   ScrollTargetEdgeSnapDist ;            // 0.0f = no snapping, >0.0f snapping threshold
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2                   ScrollbarSizes ;                      // Size taken by each scrollbars on their smaller axis. Pay attention! ScrollbarSizes.x == width of the vertical scrollbar, ScrollbarSizes.y = height of the horizontal scrollbar.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool                     ScrollbarX ,  ScrollbarY ;              // Are scrollbars visible?
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    bool                     Active ;                              // Set to true on Begin(), unless Collapsed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     WasActive ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     WriteAccessed ;                       // Set to true when any widget access the current window
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     Collapsed ;                           // Set when collapsing window to become only title-bar
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     WantCollapseToggle ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     SkipItems ;                           // Set when items can safely be all clipped (e.g. window not visible or collapsed)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     Appearing ;                           // Set during the frame where the window is appearing (or re-appearing)
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool                     Hidden ;                              // Do not display (== HiddenFrames*** > 0)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     IsFallbackWindow ;                    // Set on the "Debug##Default" window.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    bool                     HasCloseButton ;                      // Set when the window has a close button (p_open != NULL)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    signed  char              ResizeBorderHeld ;                    // Current border being held for resize (-1: none, otherwise 0-3)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    short                    BeginCount ;                          // Number of Begin() during the current frame (generally 0 or 1, 1+ if appending via multiple Begin/End pairs)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    short                    BeginOrderWithinParent ;              // Order within immediate parent window, if we are a child window. Otherwise 0.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    short                    BeginOrderWithinContext ;             // Order within entire imgui context. This is mostly used for debugging submission order related issues.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  PopupId ;                             // ID in the popup stack when this window is used as a popup/menu (because we use generic Name/ID for recycling)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImS8                     AutoFitFramesX ,  AutoFitFramesY ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImS8                     AutoFitChildAxises ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    bool                     AutoFitOnlyGrows ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiDir                 AutoPosLastDirection ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImS8                     HiddenFramesCanSkipItems ;            // Hide the window for N frames
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImS8                     HiddenFramesCannotSkipItems ;         // Hide the window for N frames while allowing items to be submitted so we can measure their size
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImS8                     HiddenFramesForRenderOnly ;           // Hide the window until frame N at Render() time only
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiCond                SetWindowPosAllowFlags  :  8 ;          // store acceptable condition flags for SetNextWindowPos() use.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiCond                SetWindowSizeAllowFlags  :  8 ;         // store acceptable condition flags for SetNextWindowSize() use.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiCond                SetWindowCollapsedAllowFlags  :  8 ;    // store acceptable condition flags for SetNextWindowCollapsed() use.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImVec2                   SetWindowPosVal ;                     // store window position when using a non-zero Pivot (position set needs to be processed when we know the window size)
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVec2                   SetWindowPosPivot ;                   // store window pivot for positioning. ImVec2(0, 0) when positioning from top-left corner; ImVec2(0.5f, 0.5f) for centering; ImVec2(1, 1) for bottom right.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVector < ImGuiID >        IDStack ;                             // ID stack. ID are hashes seeded with the value at the top of the stack. (In theory this should be in the TempData structure)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiWindowTempData      DC ;                                  // Temporary per-window data, reset at the beginning of the frame. This used to be called ImGuiDrawContext, hence the "DC" variable name.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // The best way to understand what those rectangles are is to use the 'Metrics->Tools->Show Windows Rectangles' viewer.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // The main 'OuterRect', omitted as a field, is window->Rect().
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                   OuterRectClipped ;                    // == Window->Rect() just after setup in Begin(). == window->Rect() for root window.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                   InnerRect ;                           // Inner rectangle (omit title bar, menu bar, scroll bar)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                   InnerClipRect ;                       // == InnerRect shrunk by WindowPadding*0.5f on each side, clipped within viewport or parent clip rect.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImRect                   WorkRect ;                            // Initially covers the whole scrolling region. Reduced by containers e.g columns/tables when active. Shrunk by WindowPadding*1.0f on each side. This is meant to replace ContentRegionRect over time (from 1.71+ onward).
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                   ParentWorkRect ;                      // Backup of WorkRect before entering a container such as columns/tables. Used by e.g. SpanAllColumns functions to easily access. Stacked containers are responsible for maintaining this. // FIXME-WORKRECT: Could be a stack?
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImRect                   ClipRect ;                            // Current clipping/scissoring rectangle, evolve as we are using PushClipRect(), etc. == DrawList->clip_rect_stack.back().
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImRect                   ContentRegionRect ;                   // FIXME: This is currently confusing/misleading. It is essentially WorkRect but not handling of scrolling. We currently rely on it as right/bottom aligned sizing operation need some size to rely on.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2ih                 HitTestHoleSize ;                     // Define an optional rectangular hole where mouse will pass-through the window.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2ih                 HitTestHoleOffset ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    int                      LastFrameActive ;                     // Last frame number the window was Active.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    float                    LastTimeActive ;                      // Last timestamp the window was Active (using float as we don't need high precision there)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    float                    ItemWidthDefault ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiStorage             StateStorage ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVector < ImGuiOldColumns >  ColumnsStorage ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    float                    FontWindowScale ;                     // User scale multiplier per-window, via SetWindowFontScale()
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int                      SettingsOffset ;                      // Offset into SettingsWindows[] (offsets are always valid as we only grow the array from the back)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImDrawList *              DrawList ;                            // == &DrawListInst (for backward compatibility reason with code using imgui_internal.h we keep this a pointer)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImDrawList               DrawListInst ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow *             ParentWindow ;                        // If we are a child _or_ popup window, this is pointing to our parent. Otherwise NULL.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiWindow *             RootWindow ;                          // Point to ourself or first ancestor that is not a child window == Top-level window.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow *             RootWindowForTitleBarHighlight ;      // Point to ourself or first ancestor which will display TitleBgActive color when this window is active.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow *             RootWindowForNav ;                    // Point to ourself or first ancestor which doesn't have the NavFlattened flag.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow *             NavLastChildNavWindow ;               // When going to the menu bar, we remember the child window we came from. (This could probably be made implicit if we kept g.Windows sorted by last focused including child window.)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  NavLastIds [ ImGuiNavLayer_COUNT ] ;     // Last known NavId for this window, per layer (0/1)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                   NavRectRel [ ImGuiNavLayer_COUNT ] ;     // Reference rectangle, in window relative space
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int                      MemoryDrawListIdxCapacity ;           // Backup of last idx/vtx count, so when waking up the window we can preallocate and avoid iterative alloc/copy
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int                      MemoryDrawListVtxCapacity ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool                     MemoryCompacted ;                     // Set when window extraneous data have been garbage collected
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								public :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow ( ImGuiContext *  context ,  const  char *  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ~ ImGuiWindow ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID      GetID ( const  char *  str ,  const  char *  str_end  =  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID      GetID ( const  void *  ptr ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiID      GetID ( int  n ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiID      GetIDNoKeepAlive ( const  char *  str ,  const  char *  str_end  =  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID      GetIDNoKeepAlive ( const  void *  ptr ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiID      GetIDNoKeepAlive ( int  n ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiID      GetIDFromRectangle ( const  ImRect &  r_abs ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // We don't use g.FontSize because the window may be != g.CurrentWidow.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    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        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 ( ) ) ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    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 ( ) ) ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// 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.
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  ImGuiLastItemDataBackup  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  LastItemId ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiItemStatusFlags     LastItemStatusFlags ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                   LastItemRect ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                   LastItemDisplayRect ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiLastItemDataBackup ( )  {  Backup ( ) ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    void  Backup ( )            {  ImGuiWindow *  window  =  GImGui - > CurrentWindow ;  LastItemId  =  window - > DC . LastItemId ;  LastItemStatusFlags  =  window - > DC . LastItemStatusFlags ;  LastItemRect  =  window - > DC . LastItemRect ;  LastItemDisplayRect  =  window - > DC . LastItemDisplayRect ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void  Restore ( )  const     {  ImGuiWindow *  window  =  GImGui - > CurrentWindow ;  window - > DC . LastItemId  =  LastItemId ;  window - > DC . LastItemStatusFlags  =  LastItemStatusFlags ;  window - > DC . LastItemRect  =  LastItemRect ;  window - > DC . LastItemDisplayRect  =  LastItemDisplayRect ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// [SECTION] Tab bar, Tab item support
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Extend ImGuiTabBarFlags_
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								enum  ImGuiTabBarFlagsPrivate_  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTabBarFlags_DockNode                    =  1  < <  20 ,   // Part of a dock node [we don't use this in the master branch but it facilitate branch syncing to keep this around]
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTabBarFlags_IsFocused                   =  1  < <  21 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTabBarFlags_SaveSettings                =  1  < <  22    // FIXME: Settings are handled by the docking system, this only request the tab bar to mark settings dirty when reordering tabs
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Extend ImGuiTabItemFlags_
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								enum  ImGuiTabItemFlagsPrivate_  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiTabItemFlags_NoCloseButton              =  1  < <  20 ,   // Track whether p_open was set or not (we'll need this info on the next frame to recompute ContentWidth during layout)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTabItemFlags_Button                     =  1  < <  21    // Used by TabItemButton, change the tab item behavior to mimic a button
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Storage for one active tab item (sizeof() 28~32 bytes)
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								struct  ImGuiTabItem  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID              ID ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTabItemFlags    Flags ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                  LastFrameVisible ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                  LastFrameSelected ;       // This allows us to infer an ordered list of the last activated tabs with little maintenance
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                Offset ;                  // Position relative to beginning of tab
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                Width ;                   // Width currently displayed
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    float                ContentWidth ;            // Width of label, stored during BeginTabItem() call
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImS16                NameOffset ;              // When Window==NULL, offset to name within parent ImGuiTabBar::TabsNames
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImS16                BeginOrder ;              // BeginTabItem() order, used to re-order tabs after toggling ImGuiTabBarFlags_Reorderable
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImS16                IndexDuringLayout ;       // Index only used during TabBarLayout()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                 WantClose ;               // Marked as closed by SetTabItemClosed()
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiTabItem ( )       {  memset ( this ,  0 ,  sizeof ( * this ) ) ;  LastFrameVisible  =  LastFrameSelected  =  - 1 ;  NameOffset  =  BeginOrder  =  IndexDuringLayout  =  - 1 ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Storage for a tab bar (sizeof() 152 bytes)
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								struct  ImGuiTabBar  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < ImGuiTabItem >  Tabs ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiTabBarFlags     Flags ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiID              ID ;                      // Zero for tab-bars used by docking
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiID              SelectedTabId ;           // Selected tab/window
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiID              NextSelectedTabId ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID              VisibleTabId ;            // Can occasionally be != SelectedTabId (e.g. when previewing contents for CTRL+TAB preview)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                  CurrFrameVisible ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                  PrevFrameVisible ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect               BarRect ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    float                CurrTabsContentsHeight ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                PrevTabsContentsHeight ;  // Record the height of contents submitted below the tab bar
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                WidthAllTabs ;            // Actual width of all tabs (locked during layout)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                WidthAllTabsIdeal ;       // Ideal width if all tabs were visible and not clipped
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    float                ScrollingAnim ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                ScrollingTarget ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                ScrollingTargetDistToVisibility ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                ScrollingSpeed ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    float                ScrollingRectMinX ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                ScrollingRectMaxX ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiID              ReorderRequestTabId ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImS8                 ReorderRequestDir ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImS8                 BeginCount ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    bool                 WantLayout ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                 VisibleTabWasSubmitted ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool                 TabsAddedNew ;            // Set to true when a new tab item or button has been added to the tab bar during last frame
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImS16                TabsActiveCount ;         // Number of tabs submitted this frame.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImS16                LastTabItemIdx ;          // Index of last BeginTabItem() tab for use by EndTabItem()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                ItemSpacingY ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImVec2               FramePadding ;            // style.FramePadding locked at the time of BeginTabBar()
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImVec2               BackupCursorPos ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ImGuiTextBuffer      TabsNames ;               // For non-docking tab bar we re-append names in a contiguous buffer.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTabBar ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                  GetTabOrder ( const  ImGuiTabItem *  tab )  const   {  return  Tabs . index_from_ptr ( tab ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  char *          GetTabName ( const  ImGuiTabItem *  tab )  const 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        IM_ASSERT ( tab - > NameOffset  ! =  - 1  & &  ( int ) tab - > NameOffset  <  TabsNames . Buf . Size ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        return  TabsNames . Buf . Data  +  tab - > NameOffset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// [SECTION] Table support
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef IMGUI_HAS_TABLE 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IM_COL32_DISABLE                IM_COL32(0,0,0,1)    // Special sentinel code which cannot be used as a regular color.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IMGUI_TABLE_MAX_COLUMNS         64                   // sizeof(ImU64) * 8. This is solely because we frequently encode columns set in a ImU64.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IMGUI_TABLE_MAX_DRAW_CHANNELS   (4 + 64 * 2)         // See TableSetupDrawChannels()
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Our current column maximum is 64 but we may raise that in the future.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  ImS8  ImGuiTableColumnIdx ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  ImU8  ImGuiTableDrawChannelIdx ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [Internal] sizeof() ~ 104
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// We use the terminology "Enabled" to refer to a column that is not Hidden by user/api.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// We use the terminology "Clipped" to refer to a column that is out of sight because of scrolling/clipping.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// This is in contrast with some user-facing api such as IsItemVisible() / IsRectVisible() which use "Visible" to mean "not clipped".
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiTableColumn  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnFlags    Flags ;                           // Flags after some patching (not directly same as provided by user). See ImGuiTableColumnFlags_
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    WidthGiven ;                      // Final/actual width visible == (MaxX - MinX), locked in TableUpdateLayout(). May be > WidthRequest to honor minimum width, may be < WidthRequest to honor shrinking columns down in tight space.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    MinX ;                            // Absolute positions
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    MaxX ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    WidthRequest ;                    // Master width absolute value when !(Flags & _WidthStretch). When Stretch this is derived every frame from StretchWeight in TableUpdateLayout()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    WidthAuto ;                       // Automatic width
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    StretchWeight ;                   // Master width weight when (Flags & _WidthStretch). Often around ~1.0f initially.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    InitStretchWeightOrWidth ;        // Value passed to TableSetupColumn(). For Width it is a content width (_without padding_).
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                   ClipRect ;                        // Clipping rectangle for the column
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  UserID ;                          // Optional, value passed to TableSetupColumn()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    WorkMinX ;                        // Contents region min ~(MinX + CellPaddingX + CellSpacingX1) == cursor start position when entering column
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    WorkMaxX ;                        // Contents region max ~(MaxX - CellPaddingX - CellSpacingX2)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    ItemWidth ;                       // Current item width for the column, preserved across rows
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    ContentMaxXFrozen ;               // Contents maximum position for frozen rows (apart from headers), from which we can infer content width.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    ContentMaxXUnfrozen ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    ContentMaxXHeadersUsed ;          // Contents maximum position for headers rows (regardless of freezing). TableHeader() automatically softclip itself + report ideal desired size, to avoid creating extraneous draw calls
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    ContentMaxXHeadersIdeal ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImS16                    NameOffset ;                      // Offset into parent ColumnsNames[]
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx      DisplayOrder ;                    // Index within Table's IndexToDisplayOrder[] (column may be reordered by users)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx      IndexWithinEnabledSet ;           // Index within enabled/visible set (<= IndexToDisplayOrder)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx      PrevEnabledColumn ;               // Index of prev enabled/visible column within Columns[], -1 if first enabled/visible column
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx      NextEnabledColumn ;               // Index of next enabled/visible column within Columns[], -1 if last enabled/visible column
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx      SortOrder ;                       // Index of this column within sort specs, -1 if not sorting on this column, 0 for single-sort, may be >0 on multi-sort
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableDrawChannelIdx  DrawChannelCurrent ;             // Index within DrawSplitter.Channels[]
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableDrawChannelIdx  DrawChannelFrozen ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableDrawChannelIdx  DrawChannelUnfrozen ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     IsEnabled ;                       // Is the column not marked Hidden by the user? (even if off view, e.g. clipped by scrolling).
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     IsEnabledNextFrame ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     IsVisibleX ;                      // Is actually in view (e.g. overlapping the host window clipping rectangle, not scrolled).
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     IsVisibleY ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     IsRequestOutput ;                 // Return value for TableSetColumnIndex() / TableNextColumn(): whether we request user to output contents or not.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     IsSkipItems ;                     // Do we want item submissions to this column to be completely ignored (no layout will happen).
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                     IsPreserveWidthAuto ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImS8                     NavLayerCurrent ;                 // ImGuiNavLayer in 1 byte
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU8                     AutoFitQueue ;                    // Queue of 8 values for the next 8 frames to request auto-fit
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU8                     CannotSkipItemsQueue ;            // Queue of 8 values for the next 8 frames to disable Clipped/SkipItem
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU8                     SortDirection  :  2 ;               // ImGuiSortDirection_Ascending or ImGuiSortDirection_Descending
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU8                     SortDirectionsAvailCount  :  2 ;    // Number of available sort directions (0 to 3)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU8                     SortDirectionsAvailMask  :  4 ;     // Mask of available sort directions (1-bit each)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU8                     SortDirectionsAvailList ;         // Ordered of available sort directions (2-bits each)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumn ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        memset ( this ,  0 ,  sizeof ( * this ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        StretchWeight  =  WidthRequest  =  - 1.0f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        NameOffset  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        DisplayOrder  =  IndexWithinEnabledSet  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        PrevEnabledColumn  =  NextEnabledColumn  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SortOrder  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SortDirection  =  ImGuiSortDirection_None ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        DrawChannelCurrent  =  DrawChannelFrozen  =  DrawChannelUnfrozen  =  ( ImU8 ) - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Transient cell data stored per row.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// sizeof() ~ 6
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiTableCellData  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU32                        BgColor ;     // Actual color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          Column ;      // Column number
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// FIXME-TABLE: transient data could be stored in a per-stacked table structure: DrawSplitter, SortSpecs, incoming RowData
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiTable  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                      ID ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableFlags              Flags ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void *                        RawData ;                     // Single allocation to hold Columns[], DisplayOrderToIndex[] and RowCellData[]
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImSpan < ImGuiTableColumn >     Columns ;                     // Point within RawData[]
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImSpan < ImGuiTableColumnIdx >  DisplayOrderToIndex ;         // Point within RawData[]. Store display order of columns (when not reordered, the values are 0...Count-1)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImSpan < ImGuiTableCellData >   RowCellData ;                 // Point within RawData[]. Store cells background requests for current row.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU64                        EnabledMaskByDisplayOrder ;   // Column DisplayOrder -> IsEnabled map
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU64                        EnabledMaskByIndex ;          // Column Index -> IsEnabled map (== not hidden by user/api) in a format adequate for iterating column without touching cold data
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU64                        VisibleMaskByIndex ;          // Column Index -> IsVisibleX|IsVisibleY map (== not hidden by user/api && not hidden by scrolling/cliprect)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU64                        RequestOutputMaskByIndex ;    // Column Index -> IsVisible || AutoFit (== expect user to submit items)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableFlags              SettingsLoadedFlags ;         // Which data were loaded from the .ini file (e.g. when order is not altered we won't save order)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                          SettingsOffset ;              // Offset in g.SettingsTables
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                          LastFrameActive ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                          ColumnsCount ;                // Number of columns declared in BeginTable()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                          CurrentRow ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                          CurrentColumn ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImS16                        InstanceCurrent ;             // Count of BeginTable() calls with same ID in the same frame (generally 0). This is a little bit similar to BeginCount for a window, but multiple table with same ID look are multiple tables, they are just synched.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImS16                        InstanceInteracted ;          // Mark which instance (generally 0) of the same ID is being interacted with
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        RowPosY1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        RowPosY2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        RowMinHeight ;                // Height submitted to TableNextRow()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        RowTextBaseline ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        RowIndentOffsetX ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableRowFlags           RowFlags  :  16 ;               // Current row flags, see ImGuiTableRowFlags_
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableRowFlags           LastRowFlags  :  16 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                          RowBgColorCounter ;           // Counter for alternating background colors (can be fast-forwarded by e.g clipper), not same as CurrentRow because header rows typically don't increase this.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU32                        RowBgColor [ 2 ] ;               // Background color override for current row.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU32                        BorderColorStrong ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU32                        BorderColorLight ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        BorderX1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        BorderX2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        HostIndentX ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        MinColumnWidth ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        OuterPaddingX ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        CellPaddingX ;                // Padding from each borders
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        CellPaddingY ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        CellSpacingX1 ;               // Spacing between non-bordered cells
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        CellSpacingX2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        LastOuterHeight ;             // Outer height from last frame
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        LastFirstRowHeight ;          // Height of first row from last frame
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        InnerWidth ;                  // User value passed to BeginTable(), see comments at the top of BeginTable() for details.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        ColumnsGivenWidth ;           // Sum of current column width
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        ColumnsAutoFitWidth ;         // Sum of ideal column width in order nothing to be clipped, used for auto-fitting and content width submission in outer window
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        ResizedColumnNextWidth ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        ResizeLockMinContentsX2 ;     // Lock minimum contents width while resizing down in order to not create feedback loops. But we allow growing the table.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        RefScale ;                    // Reference scale to be able to rescale columns on font/dpi changes.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                       OuterRect ;                   // Note: for non-scrolling table, OuterRect.Max.y is often FLT_MAX until EndTable(), unless a height has been specified in BeginTable().
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                       InnerRect ;                   // InnerRect but without decoration. As with OuterRect, for non-scrolling tables, InnerRect.Max.y is
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                       WorkRect ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                       InnerClipRect ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                       BgClipRect ;                  // We use this to cpu-clip cell background color fill
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                       Bg0ClipRectForDrawCmd ;       // Actual ImDrawCmd clip rect for BG0/1 channel. This tends to be == OuterWindow->ClipRect at BeginTable() because output in BG0/BG1 is cpu-clipped
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                       Bg2ClipRectForDrawCmd ;       // Actual ImDrawCmd clip rect for BG2 channel. This tends to be a correct, tight-fit, because output to BG2 are done by widgets relying on regular ClipRect.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                       HostClipRect ;                // This is used to check if we can eventually merge our columns draw calls into the current draw call of the current window.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                       HostBackupWorkRect ;          // Backup of InnerWindow->WorkRect at the end of BeginTable()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                       HostBackupParentWorkRect ;    // Backup of InnerWindow->ParentWorkRect at the end of BeginTable()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImRect                       HostBackupInnerClipRect ;     // Backup of InnerWindow->ClipRect during PushTableBackground()/PopTableBackground()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2                       HostBackupPrevLineSize ;      // Backup of InnerWindow->DC.PrevLineSize at the end of BeginTable()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2                       HostBackupCurrLineSize ;      // Backup of InnerWindow->DC.CurrLineSize at the end of BeginTable()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2                       HostBackupCursorMaxPos ;      // Backup of InnerWindow->DC.CursorMaxPos at the end of BeginTable()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec2                       UserOuterSize ;               // outer_size.x passed to BeginTable()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVec1                       HostBackupColumnsOffset ;     // Backup of OuterWindow->DC.ColumnsOffset at the end of BeginTable()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        HostBackupItemWidth ;         // Backup of OuterWindow->DC.ItemWidth at the end of BeginTable()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int                          HostBackupItemWidthStackSize ; // Backup of OuterWindow->DC.ItemWidthStack.Size at the end of BeginTable()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow *                 OuterWindow ;                 // Parent window for the table
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiWindow *                 InnerWindow ;                 // Window holding the table data (== OuterWindow or a child window)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTextBuffer              ColumnsNames ;                // Contiguous buffer holding columns names
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImDrawListSplitter           DrawSplitter ;                // We carry our own ImDrawList splitter to allow recursion (FIXME: could be stored outside, worst case we need 1 splitter per recursing table)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnSortSpecs    SortSpecsSingle ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImVector < ImGuiTableColumnSortSpecs >  SortSpecsMulti ;      // FIXME-OPT: Using a small-vector pattern would work be good.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableSortSpecs          SortSpecs ;                   // Public facing sorts specs, this is what we return in TableGetSortSpecs()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          SortSpecsCount ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          ColumnsEnabledCount ;         // Number of enabled columns (<= ColumnsCount)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          ColumnsEnabledFixedCount ;    // Number of enabled columns (<= ColumnsCount)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          DeclColumnsCount ;            // Count calls to TableSetupColumn()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          HoveredColumnBody ;           // Index of column whose visible region is being hovered. Important: == ColumnsCount when hovering empty region after the right-most column!
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          HoveredColumnBorder ;         // Index of column whose right-border is being hovered (for resizing).
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          AutoFitSingleColumn ;         // Index of single column requesting auto-fit.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          ResizedColumn ;               // Index of column being resized. Reset when InstanceCurrent==0.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          LastResizedColumn ;           // Index of column being resized from previous frame.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          HeldHeaderColumn ;            // Index of column header being held.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          ReorderColumn ;               // Index of column being reordered. (not cleared)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          ReorderColumnDir ;            // -1 or +1
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          LeftMostStretchedColumn ;     // Index of left-most stretched column.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          RightMostStretchedColumn ;    // Index of right-most stretched column.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          RightMostEnabledColumn ;      // Index of right-most non-hidden column.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          ContextPopupColumn ;          // Column right-clicked on, of -1 if opening context menu from a neutral/empty spot
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          FreezeRowsRequest ;           // Requested frozen rows count
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          FreezeRowsCount ;             // Actual frozen row count (== FreezeRowsRequest, or == 0 when no scrolling offset)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          FreezeColumnsRequest ;        // Requested frozen columns count
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          FreezeColumnsCount ;          // Actual frozen columns count (== FreezeColumnsRequest, or == 0 when no scrolling offset)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          RowCellDataCurrent ;          // Index of current RowCellData[] entry in current row
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableDrawChannelIdx     DummyDrawChannel ;            // Redirect non-visible columns here.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableDrawChannelIdx     Bg2DrawChannelCurrent ;       // For Selectable() and other widgets drawing accross columns after the freezing line. Index within DrawSplitter.Channels[]
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableDrawChannelIdx     Bg2DrawChannelUnfrozen ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                         IsLayoutLocked ;              // Set by TableUpdateLayout() which is called when beginning the first row.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                         IsInsideRow ;                 // Set when inside TableBeginRow()/TableEndRow().
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                         IsInitializing ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                         IsSortSpecsDirty ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                         IsUsingHeaders ;              // Set when the first row had the ImGuiTableRowFlags_Headers flag.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                         IsContextPopupOpen ;          // Set when default context menu is open (also see: ContextPopupColumn, InstanceInteracted).
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                         IsSettingsRequestLoad ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                         IsSettingsDirty ;             // Set when table settings have changed and needs to be reported into ImGuiTableSetttings data.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                         IsDefaultDisplayOrder ;       // Set when display order is unchanged from default (DisplayOrder contains 0...Count-1)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                         IsResetAllRequest ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                         IsResetDisplayOrderRequest ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                         IsUnfrozenRows ;              // Set when we got past the frozen row.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                         IsDefaultSizingPolicy ;       // Set if user didn't explicitely set a sizing policy in BeginTable()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                         MemoryCompacted ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                         HostSkipItems ;               // Backup of InnerWindow->SkipItem at the end of BeginTable(), because we will overwrite InnerWindow->SkipItem on a per-column basis
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiTable ( )       {  memset ( this ,  0 ,  sizeof ( * this ) ) ;  LastFrameActive  =  - 1 ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ~ ImGuiTable ( )      {  IM_FREE ( RawData ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// sizeof() ~ 12
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiTableColumnSettings  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                    WidthOrWeight ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                  UserID ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx      Index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx      DisplayOrder ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx      SortOrder ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU8                     SortDirection  :  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU8                     IsEnabled  :  1 ;  // "Visible" in ini file
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImU8                     IsStretch  :  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnSettings ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        WidthOrWeight  =  0.0f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        UserID  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Index  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        DisplayOrder  =  SortOrder  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SortDirection  =  ImGuiSortDirection_None ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        IsEnabled  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        IsStretch  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// This is designed to be stored in a single ImChunkStream (1 header followed by N ImGuiTableColumnSettings, etc.)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImGuiTableSettings  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiID                      ID ;                      // Set to 0 to invalidate/delete the setting
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableFlags              SaveFlags ;               // Indicate data we want to save using the Resizable/Reorderable/Sortable/Hideable flags (could be using its own flags..)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    float                        RefScale ;                // Reference scale to be able to rescale columns on font/dpi changes.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          ColumnsCount ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnIdx          ColumnsCountMax ;         // Maximum number of columns this settings instance can store, we can recycle a settings instance with lower number of columns but not higher
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool                         WantApply ;               // Set when loaded from .ini data (to enable merging/loading .ini data into an already running context)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableSettings ( )         {  memset ( this ,  0 ,  sizeof ( * this ) ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiTableColumnSettings *    GetColumnSettings ( )      {  return  ( ImGuiTableColumnSettings * ) ( this  +  1 ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  // #ifdef IMGUI_HAS_TABLE
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] ImGui internal API
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// No guarantee of forward compatibility here!
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								namespace  ImGui  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Windows
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    // We should always have a CurrentWindow in the stack (there is an implicit "Debug" window)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // If this ever crash because g.CurrentWindow is NULL it means that either
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // - ImGui::NewFrame() has never been called, which is illegal.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // - You are calling ImGui functions after ImGui::EndFrame()/ImGui::Render() and before the next ImGui::NewFrame(), which is also illegal.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline     ImGuiWindow *   GetCurrentWindowRead ( )       {  ImGuiContext &  g  =  * GImGui ;  return  g . CurrentWindow ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline     ImGuiWindow *   GetCurrentWindow ( )           {  ImGuiContext &  g  =  * GImGui ;  g . CurrentWindow - > WriteAccessed  =  true ;  return  g . CurrentWindow ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiWindow *   FindWindowByID ( ImGuiID  id ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiWindow *   FindWindowByName ( const  char *  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           UpdateWindowParentAndRootLinks ( ImGuiWindow *  window ,  ImGuiWindowFlags  flags ,  ImGuiWindow *  parent_window ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  ImVec2         CalcWindowNextAutoFitSize ( ImGuiWindow *  window ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           IsWindowChildOf ( ImGuiWindow *  window ,  ImGuiWindow *  potential_parent ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  bool           IsWindowAbove ( ImGuiWindow *  potential_above ,  ImGuiWindow *  potential_below ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           IsWindowNavFocusable ( ImGuiWindow *  window ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImRect         GetWindowAllowedExtentRect ( ImGuiWindow *  window ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           SetWindowPos ( ImGuiWindow *  window ,  const  ImVec2 &  pos ,  ImGuiCond  cond  =  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           SetWindowSize ( ImGuiWindow *  window ,  const  ImVec2 &  size ,  ImGuiCond  cond  =  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           SetWindowCollapsed ( ImGuiWindow *  window ,  bool  collapsed ,  ImGuiCond  cond  =  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           SetWindowHitTestHole ( ImGuiWindow *  window ,  const  ImVec2 &  pos ,  const  ImVec2 &  size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Windows: Display Order and Focus Order
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           FocusWindow ( ImGuiWindow *  window ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           FocusTopMostWindowUnderOne ( ImGuiWindow *  under_this_window ,  ImGuiWindow *  ignore_window ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           BringWindowToFocusFront ( ImGuiWindow *  window ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           BringWindowToDisplayFront ( ImGuiWindow *  window ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           BringWindowToDisplayBack ( ImGuiWindow *  window ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Fonts, drawing
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           SetCurrentFont ( ImFont *  font ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  ImFont *           GetDefaultFont ( )  {  ImGuiContext &  g  =  * GImGui ;  return  g . IO . FontDefault  ?  g . IO . FontDefault  :  g . IO . Fonts - > Fonts [ 0 ] ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    inline  ImDrawList *       GetForegroundDrawList ( ImGuiWindow *  window )  {  IM_UNUSED ( window ) ;  ImGuiContext &  g  =  * GImGui ;  return  & g . ForegroundDrawList ;  }  // This seemingly unnecessary wrapper simplifies compatibility between the 'master' and 'docking' branches.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Init
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           Initialize ( ImGuiContext *  context ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           Shutdown ( ImGuiContext *  context ) ;     // Since 1.60 this is a _private_ function. You can call DestroyContext() to destroy the context created by CreateContext().
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // NewFrame
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           UpdateHoveredWindowAndCaptureFlags ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           StartMouseMovingWindow ( ImGuiWindow *  window ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           UpdateMouseMovingWindowNewFrame ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           UpdateMouseMovingWindowEndFrame ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Generic context hooks
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiID        AddContextHook ( ImGuiContext *  context ,  const  ImGuiContextHook *  hook ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           RemoveContextHook ( ImGuiContext *  context ,  ImGuiID  hook_to_remove ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           CallContextHooks ( ImGuiContext *  context ,  ImGuiContextHookType  type ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Settings
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void                   MarkIniSettingsDirty ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void                   MarkIniSettingsDirty ( ImGuiWindow *  window ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void                   ClearIniSettings ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiWindowSettings *   CreateNewWindowSettings ( const  char *  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiWindowSettings *   FindWindowSettings ( ImGuiID  id ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiWindowSettings *   FindOrCreateWindowSettings ( const  char *  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiSettingsHandler *  FindSettingsHandler ( const  char *  type_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Scrolling
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           SetNextWindowScroll ( const  ImVec2 &  scroll ) ;  // Use -1.0f on one axis to leave as-is
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           SetScrollX ( ImGuiWindow *  window ,  float  scroll_x ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           SetScrollY ( ImGuiWindow *  window ,  float  scroll_y ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           SetScrollFromPosX ( ImGuiWindow *  window ,  float  local_x ,  float  center_x_ratio ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           SetScrollFromPosY ( ImGuiWindow *  window ,  float  local_y ,  float  center_y_ratio ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  ImVec2         ScrollToBringRectIntoView ( ImGuiWindow *  window ,  const  ImRect &  item_rect ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    // Basic Accessors
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    inline  ImGuiID           GetItemID ( )      {  ImGuiContext &  g  =  * GImGui ;  return  g . CurrentWindow - > DC . LastItemId ;  }    // Get ID of last item (~~ often same ImGui::GetID(label) beforehand)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  ImGuiItemStatusFlags  GetItemStatusFlags ( )  {  ImGuiContext &  g  =  * GImGui ;  return  g . CurrentWindow - > DC . LastItemStatusFlags ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    inline  ImGuiID           GetActiveID ( )    {  ImGuiContext &  g  =  * GImGui ;  return  g . ActiveId ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  ImGuiID           GetFocusID ( )     {  ImGuiContext &  g  =  * GImGui ;  return  g . NavId ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    inline  ImGuiItemFlags    GetItemsFlags ( )  {  ImGuiContext &  g  =  * GImGui ;  return  g . CurrentWindow - > DC . ItemFlags ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           SetActiveID ( ImGuiID  id ,  ImGuiWindow *  window ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           SetFocusID ( ImGuiID  id ,  ImGuiWindow *  window ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           ClearActiveID ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiID        GetHoveredID ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           SetHoveredID ( ImGuiID  id ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           KeepAliveID ( ImGuiID  id ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           MarkItemEdited ( ImGuiID  id ) ;      // Mark data associated to given item as "edited", used by IsItemDeactivatedAfterEdit() function.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           PushOverrideID ( ImGuiID  id ) ;      // Push given value as-is at the top of the ID stack (whereas PushID combines old and new hashes)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiID        GetIDWithSeed ( const  char *  str_id_begin ,  const  char *  str_id_end ,  ImGuiID  seed ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Basic Helpers for widget code
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           ItemSize ( const  ImVec2 &  size ,  float  text_baseline_y  =  - 1.0f ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           ItemSize ( const  ImRect &  bb ,  float  text_baseline_y  =  - 1.0f ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           ItemAdd ( const  ImRect &  bb ,  ImGuiID  id ,  const  ImRect *  nav_bb  =  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           ItemHoverable ( const  ImRect &  bb ,  ImGuiID  id ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           IsClippedEx ( const  ImRect &  bb ,  ImGuiID  id ,  bool  clip_even_when_logged ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           SetLastItemData ( ImGuiWindow *  window ,  ImGuiID  item_id ,  ImGuiItemStatusFlags  status_flags ,  const  ImRect &  item_rect ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           FocusableItemRegister ( ImGuiWindow *  window ,  ImGuiID  id ) ;    // Return true if focus is requested
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           FocusableItemUnregister ( ImGuiWindow *  window ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImVec2         CalcItemSize ( ImVec2  size ,  float  default_w ,  float  default_h ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  float          CalcWrapWidthForPos ( const  ImVec2 &  pos ,  float  wrap_pos_x ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           PushMultiItemsWidths ( int  components ,  float  width_full ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           PushItemFlag ( ImGuiItemFlags  option ,  bool  enabled ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           PopItemFlag ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  bool           IsItemToggledSelection ( ) ;                                    // Was the last item selection toggled? (after Selectable(), TreeNode() etc. We only returns toggle _event_ in order to handle clipping correctly)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  ImVec2         GetContentRegionMaxAbs ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           ShrinkWidths ( ImGuiShrinkWidthItem *  items ,  int  count ,  float  width_excess ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Logging/Capture
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           LogBegin ( ImGuiLogType  type ,  int  auto_open_depth ) ;            // -> BeginCapture() when we design v2 api, for now stay under the radar by using the old name.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           LogToBuffer ( int  auto_open_depth  =  - 1 ) ;                       // Start logging/capturing to internal buffer
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Popups, Modals, Tooltips
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  bool           BeginChildEx ( const  char *  name ,  ImGuiID  id ,  const  ImVec2 &  size_arg ,  bool  border ,  ImGuiWindowFlags  flags ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           OpenPopupEx ( ImGuiID  id ,  ImGuiPopupFlags  popup_flags  =  ImGuiPopupFlags_None ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           ClosePopupToLevel ( int  remaining ,  bool  restore_focus_to_window_under_popup ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           ClosePopupsOverWindow ( ImGuiWindow *  ref_window ,  bool  restore_focus_to_window_under_popup ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  bool           IsPopupOpen ( ImGuiID  id ,  ImGuiPopupFlags  popup_flags ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           BeginPopupEx ( ImGuiID  id ,  ImGuiWindowFlags  extra_flags ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           BeginTooltipEx ( ImGuiWindowFlags  extra_flags ,  ImGuiTooltipFlags  tooltip_flags ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiWindow *   GetTopMostPopupModal ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImVec2         FindBestWindowPosForPopup ( ImGuiWindow *  window ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  ImVec2         FindBestWindowPosForPopupEx ( const  ImVec2 &  ref_pos ,  const  ImVec2 &  size ,  ImGuiDir *  last_dir ,  const  ImRect &  r_outer ,  const  ImRect &  r_avoid ,  ImGuiPopupPositionPolicy  policy ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Gamepad/Keyboard Navigation
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           NavInitWindow ( ImGuiWindow *  window ,  bool  force_reinit ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           NavMoveRequestButNoResultYet ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           NavMoveRequestCancel ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           NavMoveRequestForward ( ImGuiDir  move_dir ,  ImGuiDir  clip_dir ,  const  ImRect &  bb_rel ,  ImGuiNavMoveFlags  move_flags ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           NavMoveRequestTryWrapping ( ImGuiWindow *  window ,  ImGuiNavMoveFlags  move_flags ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  float          GetNavInputAmount ( ImGuiNavInput  n ,  ImGuiInputReadMode  mode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImVec2         GetNavInputAmount2d ( ImGuiNavDirSourceFlags  dir_sources ,  ImGuiInputReadMode  mode ,  float  slow_factor  =  0.0f ,  float  fast_factor  =  0.0f ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  int            CalcTypematicRepeatAmount ( float  t0 ,  float  t1 ,  float  repeat_delay ,  float  repeat_rate ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           ActivateItem ( ImGuiID  id ) ;    // Remotely activate a button, checkbox, tree node etc. given its unique ID. activation is queued and processed on the next frame when the item is encountered again.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           SetNavID ( ImGuiID  id ,  int  nav_layer ,  ImGuiID  focus_scope_id ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           SetNavIDWithRectRel ( ImGuiID  id ,  int  nav_layer ,  ImGuiID  focus_scope_id ,  const  ImRect &  rect_rel ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Focus Scope (WIP)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // This is generally used to identify a selection set (multiple of which may be in the same window), as selection
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // patterns generally need to react (e.g. clear selection) when landing on an item of the set.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           PushFocusScope ( ImGuiID  id ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           PopFocusScope ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  ImGuiID           GetFocusedFocusScope ( )           {  ImGuiContext &  g  =  * GImGui ;  return  g . NavFocusScopeId ;  }                             // Focus scope which is actually active
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  ImGuiID           GetFocusScope ( )                  {  ImGuiContext &  g  =  * GImGui ;  return  g . CurrentWindow - > DC . NavFocusScopeIdCurrent ;  }    // Focus scope we are outputting into, set by PushFocusScope()
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Inputs
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // FIXME: Eventually we should aim to move e.g. IsActiveIdUsingKey() into IsKeyXXX functions.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           SetItemUsingMouseWheel ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    inline  bool              IsActiveIdUsingNavDir ( ImGuiDir  dir )                          {  ImGuiContext &  g  =  * GImGui ;  return  ( g . ActiveIdUsingNavDirMask  &  ( 1  < <  dir ) )  ! =  0 ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  bool              IsActiveIdUsingNavInput ( ImGuiNavInput  input )                 {  ImGuiContext &  g  =  * GImGui ;  return  ( g . ActiveIdUsingNavInputMask  &  ( 1  < <  input ) )  ! =  0 ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  bool              IsActiveIdUsingKey ( ImGuiKey  key )                             {  ImGuiContext &  g  =  * GImGui ;  IM_ASSERT ( key  <  64 ) ;  return  ( g . ActiveIdUsingKeyInputMask  &  ( ( ImU64 ) 1  < <  key ) )  ! =  0 ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  bool           IsMouseDragPastThreshold ( ImGuiMouseButton  button ,  float  lock_threshold  =  - 1.0f ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    inline  bool              IsKeyPressedMap ( ImGuiKey  key ,  bool  repeat  =  true )            {  ImGuiContext &  g  =  * GImGui ;  const  int  key_index  =  g . IO . KeyMap [ key ] ;  return  ( key_index  > =  0 )  ?  IsKeyPressed ( key_index ,  repeat )  :  false ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  bool              IsNavInputDown ( ImGuiNavInput  n )                              {  ImGuiContext &  g  =  * GImGui ;  return  g . IO . NavInputs [ n ]  >  0.0f ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    inline  bool              IsNavInputTest ( ImGuiNavInput  n ,  ImGuiInputReadMode  rm )       {  return  ( GetNavInputAmount ( n ,  rm )  >  0.0f ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiKeyModFlags  GetMergedKeyModFlags ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Drag and Drop
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           BeginDragDropTargetCustom ( const  ImRect &  bb ,  ImGuiID  id ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           ClearDragDrop ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           IsDragDropPayloadBeingAccepted ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Internal Columns API (this is not exposed because we will encourage transitioning to the Tables API)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           SetWindowClipRectBeforeSetChannel ( ImGuiWindow *  window ,  const  ImRect &  clip_rect ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           BeginColumns ( const  char *  str_id ,  int  count ,  ImGuiOldColumnFlags  flags  =  0 ) ;  // setup number of columns. use an identifier to distinguish multiple column sets. close with EndColumns().
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           EndColumns ( ) ;                                                                // close columns
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           PushColumnClipRect ( int  column_index ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           PushColumnsBackground ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           PopColumnsBackground ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiID        GetColumnsID ( const  char *  str_id ,  int  count ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiOldColumns *  FindOrCreateColumns ( ImGuiWindow *  window ,  ImGuiID  id ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  float          GetColumnOffsetFromNorm ( const  ImGuiOldColumns *  columns ,  float  offset_norm ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  float          GetColumnNormFromOffset ( const  ImGuiOldColumns *  columns ,  float  offset ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Tables: Candidates for public API
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableOpenContextMenu ( int  column_n  =  - 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableSetColumnWidth ( int  column_n ,  float  width ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableSetColumnSortDirection ( int  column_n ,  ImGuiSortDirection  sort_direction ,  bool  append_to_sort_specs ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  int            TableGetHoveredColumn ( ) ;  // May use (TableGetColumnFlags() & ImGuiTableColumnFlags_IsHovered) instead. Return hovered column. return -1 when table is not hovered. return columns_count if the unused space at the right of visible columns is hovered.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  float          TableGetHeaderRowHeight ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TablePushBackgroundChannel ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TablePopBackgroundChannel ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Tables: Internals
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiTable *    TableFindByID ( ImGuiID  id ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           BeginTableEx ( const  char *  name ,  ImGuiID  id ,  int  columns_count ,  ImGuiTableFlags  flags  =  0 ,  const  ImVec2 &  outer_size  =  ImVec2 ( 0 ,  0 ) ,  float  inner_width  =  0.0f ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableBeginInitMemory ( ImGuiTable *  table ,  int  columns_count ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableBeginApplyRequests ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableSetupDrawChannels ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableUpdateLayout ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableUpdateBorders ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableUpdateColumnsWeightFromWidth ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableDrawBorders ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableDrawContextMenu ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableMergeDrawChannels ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableSortSpecsSanitize ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableSortSpecsBuild ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiSortDirection  TableGetColumnNextSortDirection ( ImGuiTableColumn *  column ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableFixColumnSortDirection ( ImGuiTable *  table ,  ImGuiTableColumn *  column ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  float          TableGetColumnWidthAuto ( ImGuiTable *  table ,  ImGuiTableColumn *  column ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableBeginRow ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableEndRow ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableBeginCell ( ImGuiTable *  table ,  int  column_n ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableEndCell ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImRect         TableGetCellBgRect ( const  ImGuiTable *  table ,  int  column_n ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  const  char *    TableGetColumnName ( const  ImGuiTable *  table ,  int  column_n ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiID        TableGetColumnResizeID ( const  ImGuiTable *  table ,  int  column_n ,  int  instance_no  =  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  float          TableGetMaxColumnWidth ( const  ImGuiTable *  table ,  int  column_n ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableSetColumnWidthAutoSingle ( ImGuiTable *  table ,  int  column_n ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableSetColumnWidthAutoAll ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableRemove ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableGcCompactTransientBuffers ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TableGcCompactSettings ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Tables: Settings
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void                   TableLoadSettings ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void                   TableSaveSettings ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void                   TableResetSettings ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiTableSettings *    TableGetBoundSettings ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void                   TableSettingsInstallHandler ( ImGuiContext *  context ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiTableSettings *    TableSettingsCreate ( ImGuiID  id ,  int  columns_count ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiTableSettings *    TableSettingsFindByID ( ImGuiID  id ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Tab Bars
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  bool           BeginTabBarEx ( ImGuiTabBar *  tab_bar ,  const  ImRect &  bb ,  ImGuiTabBarFlags  flags ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiTabItem *  TabBarFindTabByID ( ImGuiTabBar *  tab_bar ,  ImGuiID  tab_id ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TabBarRemoveTab ( ImGuiTabBar *  tab_bar ,  ImGuiID  tab_id ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TabBarCloseTab ( ImGuiTabBar *  tab_bar ,  ImGuiTabItem *  tab ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           TabBarQueueReorder ( ImGuiTabBar *  tab_bar ,  const  ImGuiTabItem *  tab ,  int  dir ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           TabBarProcessReorder ( ImGuiTabBar *  tab_bar ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           TabItemEx ( ImGuiTabBar *  tab_bar ,  const  char *  label ,  bool *  p_open ,  ImGuiTabItemFlags  flags ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImVec2         TabItemCalcSize ( const  char *  label ,  bool  has_close_button ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TabItemBackground ( ImDrawList *  draw_list ,  const  ImRect &  bb ,  ImGuiTabItemFlags  flags ,  ImU32  col ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           TabItemLabelAndCloseButton ( ImDrawList *  draw_list ,  const  ImRect &  bb ,  ImGuiTabItemFlags  flags ,  ImVec2  frame_padding ,  const  char *  label ,  ImGuiID  tab_id ,  ImGuiID  close_button_id ,  bool  is_contents_visible ,  bool *  out_just_closed ,  bool *  out_text_clipped ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Render helpers
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // AVOID USING OUTSIDE OF IMGUI.CPP! NOT FOR PUBLIC CONSUMPTION. THOSE FUNCTIONS ARE A MESS. THEIR SIGNATURE AND BEHAVIOR WILL CHANGE, THEY NEED TO BE REFACTORED INTO SOMETHING DECENT.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // NB: All position are in absolute pixels coordinates (we are never using window coordinates internally)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           RenderText ( ImVec2  pos ,  const  char *  text ,  const  char *  text_end  =  NULL ,  bool  hide_text_after_hash  =  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           RenderTextWrapped ( ImVec2  pos ,  const  char *  text ,  const  char *  text_end ,  float  wrap_width ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           RenderTextClipped ( const  ImVec2 &  pos_min ,  const  ImVec2 &  pos_max ,  const  char *  text ,  const  char *  text_end ,  const  ImVec2 *  text_size_if_known ,  const  ImVec2 &  align  =  ImVec2 ( 0 ,  0 ) ,  const  ImRect *  clip_rect  =  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           RenderTextClippedEx ( ImDrawList *  draw_list ,  const  ImVec2 &  pos_min ,  const  ImVec2 &  pos_max ,  const  char *  text ,  const  char *  text_end ,  const  ImVec2 *  text_size_if_known ,  const  ImVec2 &  align  =  ImVec2 ( 0 ,  0 ) ,  const  ImRect *  clip_rect  =  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           RenderTextEllipsis ( ImDrawList *  draw_list ,  const  ImVec2 &  pos_min ,  const  ImVec2 &  pos_max ,  float  clip_max_x ,  float  ellipsis_max_x ,  const  char *  text ,  const  char *  text_end ,  const  ImVec2 *  text_size_if_known ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           RenderFrame ( ImVec2  p_min ,  ImVec2  p_max ,  ImU32  fill_col ,  bool  border  =  true ,  float  rounding  =  0.0f ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           RenderFrameBorder ( ImVec2  p_min ,  ImVec2  p_max ,  float  rounding  =  0.0f ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           RenderColorRectWithAlphaCheckerboard ( ImDrawList *  draw_list ,  ImVec2  p_min ,  ImVec2  p_max ,  ImU32  fill_col ,  float  grid_step ,  ImVec2  grid_off ,  float  rounding  =  0.0f ,  int  rounding_corners_flags  =  ~ 0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           RenderNavHighlight ( const  ImRect &  bb ,  ImGuiID  id ,  ImGuiNavHighlightFlags  flags  =  ImGuiNavHighlightFlags_TypeDefault ) ;  // Navigation highlight
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  const  char *    FindRenderedTextEnd ( const  char *  text ,  const  char *  text_end  =  NULL ) ;  // Find the optional ## from which we stop displaying text.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           LogRenderedText ( const  ImVec2 *  ref_pos ,  const  char *  text ,  const  char *  text_end  =  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Render helpers (those functions don't access any ImGui state!)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           RenderArrow ( ImDrawList *  draw_list ,  ImVec2  pos ,  ImU32  col ,  ImGuiDir  dir ,  float  scale  =  1.0f ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           RenderBullet ( ImDrawList *  draw_list ,  ImVec2  pos ,  ImU32  col ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           RenderCheckMark ( ImDrawList *  draw_list ,  ImVec2  pos ,  ImU32  col ,  float  sz ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           RenderMouseCursor ( ImDrawList *  draw_list ,  ImVec2  pos ,  float  scale ,  ImGuiMouseCursor  mouse_cursor ,  ImU32  col_fill ,  ImU32  col_border ,  ImU32  col_shadow ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           RenderArrowPointingAt ( ImDrawList *  draw_list ,  ImVec2  pos ,  ImVec2  half_sz ,  ImGuiDir  direction ,  ImU32  col ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           RenderRectFilledRangeH ( ImDrawList *  draw_list ,  const  ImRect &  rect ,  ImU32  col ,  float  x_start_norm ,  float  x_end_norm ,  float  rounding ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           RenderRectFilledWithHole ( ImDrawList *  draw_list ,  ImRect  outer ,  ImRect  inner ,  ImU32  col ,  float  rounding ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // [1.71: 2019/06/07: Updating prototypes of some of the internal functions. Leaving those for reference for a short while]
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  void  RenderArrow ( ImVec2  pos ,  ImGuiDir  dir ,  float  scale = 1.0f )  {  ImGuiWindow *  window  =  GetCurrentWindow ( ) ;  RenderArrow ( window - > DrawList ,  pos ,  GetColorU32 ( ImGuiCol_Text ) ,  dir ,  scale ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  void  RenderBullet ( ImVec2  pos )                                 {  ImGuiWindow *  window  =  GetCurrentWindow ( ) ;  RenderBullet ( window - > DrawList ,  pos ,  GetColorU32 ( ImGuiCol_Text ) ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Widgets
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TextEx ( const  char *  text ,  const  char *  text_end  =  NULL ,  ImGuiTextFlags  flags  =  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  bool           ButtonEx ( const  char *  label ,  const  ImVec2 &  size_arg  =  ImVec2 ( 0 ,  0 ) ,  ImGuiButtonFlags  flags  =  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  bool           CloseButton ( ImGuiID  id ,  const  ImVec2 &  pos ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  bool           CollapseButton ( ImGuiID  id ,  const  ImVec2 &  pos ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           ArrowButtonEx ( const  char *  str_id ,  ImGuiDir  dir ,  ImVec2  size_arg ,  ImGuiButtonFlags  flags  =  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           Scrollbar ( ImGuiAxis  axis ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  bool           ScrollbarEx ( const  ImRect &  bb ,  ImGuiID  id ,  ImGuiAxis  axis ,  float *  p_scroll_v ,  float  avail_v ,  float  contents_v ,  ImDrawCornerFlags  rounding_corners ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  bool           ImageButtonEx ( ImGuiID  id ,  ImTextureID  texture_id ,  const  ImVec2 &  size ,  const  ImVec2 &  uv0 ,  const  ImVec2 &  uv1 ,  const  ImVec2 &  padding ,  const  ImVec4 &  bg_col ,  const  ImVec4 &  tint_col ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImRect         GetWindowScrollbarRect ( ImGuiWindow *  window ,  ImGuiAxis  axis ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiID        GetWindowScrollbarID ( ImGuiWindow *  window ,  ImGuiAxis  axis ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  ImGuiID        GetWindowResizeID ( ImGuiWindow *  window ,  int  n ) ;  // 0..3: corners, 4..7: borders
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           SeparatorEx ( ImGuiSeparatorFlags  flags ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  bool           CheckboxFlags ( const  char *  label ,  ImS64 *  flags ,  ImS64  flags_value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           CheckboxFlags ( const  char *  label ,  ImU64 *  flags ,  ImU64  flags_value ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Widgets low-level behaviors
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           ButtonBehavior ( const  ImRect &  bb ,  ImGuiID  id ,  bool *  out_hovered ,  bool *  out_held ,  ImGuiButtonFlags  flags  =  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  bool           DragBehavior ( ImGuiID  id ,  ImGuiDataType  data_type ,  void *  p_v ,  float  v_speed ,  const  void *  p_min ,  const  void *  p_max ,  const  char *  format ,  ImGuiSliderFlags  flags ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           SliderBehavior ( const  ImRect &  bb ,  ImGuiID  id ,  ImGuiDataType  data_type ,  void *  p_v ,  const  void *  p_min ,  const  void *  p_max ,  const  char *  format ,  ImGuiSliderFlags  flags ,  ImRect *  out_grab_bb ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           SplitterBehavior ( const  ImRect &  bb ,  ImGuiID  id ,  ImGuiAxis  axis ,  float *  size1 ,  float *  size2 ,  float  min_size1 ,  float  min_size2 ,  float  hover_extend  =  0.0f ,  float  hover_visibility_delay  =  0.0f ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           TreeNodeBehavior ( ImGuiID  id ,  ImGuiTreeNodeFlags  flags ,  const  char *  label ,  const  char *  label_end  =  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  bool           TreeNodeBehaviorIsOpen ( ImGuiID  id ,  ImGuiTreeNodeFlags  flags  =  0 ) ;                      // Consume previous SetNextItemOpen() data, if any. May return true when logging
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           TreePushOverrideID ( ImGuiID  id ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Template functions are instantiated in imgui_widgets.cpp for a finite number of types.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // To use them externally (for custom widget) you may need an "extern template" statement in your code in order to link to existing instances and silence Clang warnings (see #2036).
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // e.g. " extern template IMGUI_API float RoundScalarWithFormatT<float, float>(const char* format, ImGuiDataType data_type, float v); "
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    template < typename  T ,  typename  SIGNED_T ,  typename  FLOAT_T >    IMGUI_API  float  ScaleRatioFromValueT ( ImGuiDataType  data_type ,  T  v ,  T  v_min ,  T  v_max ,  bool  is_logarithmic ,  float  logarithmic_zero_epsilon ,  float  zero_deadzone_size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template < typename  T ,  typename  SIGNED_T ,  typename  FLOAT_T >    IMGUI_API  T      ScaleValueFromRatioT ( ImGuiDataType  data_type ,  float  t ,  T  v_min ,  T  v_max ,  bool  is_logarithmic ,  float  logarithmic_zero_epsilon ,  float  zero_deadzone_size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template < typename  T ,  typename  SIGNED_T ,  typename  FLOAT_T >    IMGUI_API  bool   DragBehaviorT ( ImGuiDataType  data_type ,  T *  v ,  float  v_speed ,  T  v_min ,  T  v_max ,  const  char *  format ,  ImGuiSliderFlags  flags ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template < typename  T ,  typename  SIGNED_T ,  typename  FLOAT_T >    IMGUI_API  bool   SliderBehaviorT ( const  ImRect &  bb ,  ImGuiID  id ,  ImGuiDataType  data_type ,  T *  v ,  T  v_min ,  T  v_max ,  const  char *  format ,  ImGuiSliderFlags  flags ,  ImRect *  out_grab_bb ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    template < typename  T ,  typename  SIGNED_T >                      IMGUI_API  T      RoundScalarWithFormatT ( const  char *  format ,  ImGuiDataType  data_type ,  T  v ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    template < typename  T >                                         IMGUI_API  bool   CheckboxFlagsT ( const  char *  label ,  T *  flags ,  T  flags_value ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Data type helpers
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  const  ImGuiDataTypeInfo *   DataTypeGetInfo ( ImGuiDataType  data_type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  int            DataTypeFormatString ( char *  buf ,  int  buf_size ,  ImGuiDataType  data_type ,  const  void *  p_data ,  const  char *  format ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           DataTypeApplyOp ( ImGuiDataType  data_type ,  int  op ,  void *  output ,  const  void *  arg_1 ,  const  void *  arg_2 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  bool           DataTypeApplyOpFromText ( const  char *  buf ,  const  char *  initial_value_buf ,  ImGuiDataType  data_type ,  void *  p_data ,  const  char *  format ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  int            DataTypeCompare ( ImGuiDataType  data_type ,  const  void *  arg_1 ,  const  void *  arg_2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           DataTypeClamp ( ImGuiDataType  data_type ,  void *  p_data ,  const  void *  p_min ,  const  void *  p_max ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    // InputText
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           InputTextEx ( const  char *  label ,  const  char *  hint ,  char *  buf ,  int  buf_size ,  const  ImVec2 &  size_arg ,  ImGuiInputTextFlags  flags ,  ImGuiInputTextCallback  callback  =  NULL ,  void *  user_data  =  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  bool           TempInputText ( const  ImRect &  bb ,  ImGuiID  id ,  const  char *  label ,  char *  buf ,  int  buf_size ,  ImGuiInputTextFlags  flags ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  bool           TempInputScalar ( const  ImRect &  bb ,  ImGuiID  id ,  const  char *  label ,  ImGuiDataType  data_type ,  void *  p_data ,  const  char *  format ,  const  void *  p_clamp_min  =  NULL ,  const  void *  p_clamp_max  =  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  bool              TempInputIsActive ( ImGuiID  id )        {  ImGuiContext &  g  =  * GImGui ;  return  ( g . ActiveId  = =  id  & &  g . TempInputId  = =  id ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  ImGuiInputTextState *  GetInputTextState ( ImGuiID  id )    {  ImGuiContext &  g  =  * GImGui ;  return  ( g . InputTextState . ID  = =  id )  ?  & g . InputTextState  :  NULL ;  }  // Get input text state if active
 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           ColorTooltip ( const  char *  text ,  const  float *  col ,  ImGuiColorEditFlags  flags ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           ColorEditOptionsPopup ( const  float *  col ,  ImGuiColorEditFlags  flags ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           ColorPickerOptionsPopup ( const  float *  ref_col ,  ImGuiColorEditFlags  flags ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Plot
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  int            PlotEx ( ImGuiPlotType  plot_type ,  const  char *  label ,  float  ( * values_getter ) ( void *  data ,  int  idx ) ,  void *  data ,  int  values_count ,  int  values_offset ,  const  char *  overlay_text ,  float  scale_min ,  float  scale_max ,  ImVec2  frame_size ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Shade functions (write over already created vertices)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           ShadeVertsLinearColorGradientKeepAlpha ( ImDrawList *  draw_list ,  int  vert_start_idx ,  int  vert_end_idx ,  ImVec2  gradient_p0 ,  ImVec2  gradient_p1 ,  ImU32  col0 ,  ImU32  col1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           ShadeVertsLinearUV ( ImDrawList *  draw_list ,  int  vert_start_idx ,  int  vert_end_idx ,  const  ImVec2 &  a ,  const  ImVec2 &  b ,  const  ImVec2 &  uv_a ,  const  ImVec2 &  uv_b ,  bool  clamp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Garbage collection
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           GcCompactTransientMiscBuffers ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           GcCompactTransientWindowBuffers ( ImGuiWindow *  window ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           GcAwakeTransientWindowBuffers ( ImGuiWindow *  window ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Debug Tools
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           ErrorCheckEndFrameRecover ( ImGuiErrorLogCallback  log_callback ,  void *  user_data  =  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    inline  void              DebugDrawItemRect ( ImU32  col  =  IM_COL32 ( 255 , 0 , 0 , 255 ) )     {  ImGuiContext &  g  =  * GImGui ;  ImGuiWindow *  window  =  g . CurrentWindow ;  GetForegroundDrawList ( window ) - > AddRect ( window - > DC . LastItemRect . Min ,  window - > DC . LastItemRect . Max ,  col ) ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inline  void              DebugStartItemPicker ( )                                   {  ImGuiContext &  g  =  * GImGui ;  g . DebugItemPickerActive  =  true ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IMGUI_API  void           DebugNodeColumns ( ImGuiOldColumns *  columns ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           DebugNodeDrawList ( ImGuiWindow *  window ,  const  ImDrawList *  draw_list ,  const  char *  label ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           DebugNodeDrawCmdShowMeshAndBoundingBox ( ImGuiWindow *  window ,  const  ImDrawList *  draw_list ,  const  ImDrawCmd *  draw_cmd ,  bool  show_mesh ,  bool  show_aabb ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           DebugNodeStorage ( ImGuiStorage *  storage ,  const  char *  label ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           DebugNodeTabBar ( ImGuiTabBar *  tab_bar ,  const  char *  label ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           DebugNodeTable ( ImGuiTable *  table ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           DebugNodeTableSettings ( ImGuiTableSettings *  settings ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           DebugNodeWindow ( ImGuiWindow *  window ,  const  char *  label ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           DebugNodeWindowSettings ( ImGuiWindowSettings *  settings ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IMGUI_API  void           DebugNodeWindowsList ( ImVector < ImGuiWindow * > *  windows ,  const  char *  label ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  // namespace ImGui
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] ImFontAtlas internal API
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// This structure is likely to evolve as we add support for incremental atlas updates
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct  ImFontBuilderIO  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool     ( * FontBuilder_Build ) ( ImFontAtlas *  atlas ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Helper for font builder
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  const  ImFontBuilderIO *  ImFontAtlasGetBuilderForStbTruetype ( ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  void       ImFontAtlasBuildInit ( ImFontAtlas *  atlas ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  void       ImFontAtlasBuildSetupFont ( ImFontAtlas *  atlas ,  ImFont *  font ,  ImFontConfig *  font_config ,  float  ascent ,  float  descent ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  void       ImFontAtlasBuildPackCustomRects ( ImFontAtlas *  atlas ,  void *  stbrp_context_opaque ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  void       ImFontAtlasBuildFinish ( ImFontAtlas *  atlas ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMGUI_API  void       ImFontAtlasBuildRender8bppRectFromString ( ImFontAtlas *  atlas ,  int  atlas_x ,  int  atlas_y ,  int  w ,  int  h ,  const  char *  in_str ,  char  in_marker_char ,  unsigned  char  in_marker_pixel_value ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								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 ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// [SECTION] Test Engine specific hooks (imgui_test_engine)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# ifdef IMGUI_ENABLE_TEST_ENGINE 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								extern  void                  ImGuiTestEngineHook_ItemAdd ( ImGuiContext *  ctx ,  const  ImRect &  bb ,  ImGuiID  id ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								extern  void                  ImGuiTestEngineHook_ItemInfo ( ImGuiContext *  ctx ,  ImGuiID  id ,  const  char *  label ,  ImGuiItemStatusFlags  flags ) ;  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								extern  void                  ImGuiTestEngineHook_IdInfo ( ImGuiContext *  ctx ,  ImGuiDataType  data_type ,  ImGuiID  id ,  const  void *  data_id ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								extern  void                  ImGuiTestEngineHook_IdInfo ( ImGuiContext *  ctx ,  ImGuiDataType  data_type ,  ImGuiID  id ,  const  void *  data_id ,  const  void *  data_id_end ) ;  
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								extern  void                  ImGuiTestEngineHook_Log ( ImGuiContext *  ctx ,  const  char *  fmt ,  . . . ) ;  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define IMGUI_TEST_ENGINE_ITEM_ADD(_BB,_ID)                 if (g.TestEngineHookItems) ImGuiTestEngineHook_ItemAdd(&g, _BB, _ID)                // Register item bounding box
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IMGUI_TEST_ENGINE_ITEM_INFO(_ID,_LABEL,_FLAGS)      if (g.TestEngineHookItems) ImGuiTestEngineHook_ItemInfo(&g, _ID, _LABEL, _FLAGS)    // Register item label and status flags (optional)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IMGUI_TEST_ENGINE_LOG(_FMT,...)                     if (g.TestEngineHookItems) ImGuiTestEngineHook_Log(&g, _FMT, __VA_ARGS__)           // Custom log entry from user land into test log
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IMGUI_TEST_ENGINE_ID_INFO(_ID,_TYPE,_DATA)          if (g.TestEngineHookIdInfo == id) ImGuiTestEngineHook_IdInfo(&g, _TYPE, _ID, (const void*)(_DATA)); 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IMGUI_TEST_ENGINE_ID_INFO2(_ID,_TYPE,_DATA,_DATA2)  if (g.TestEngineHookIdInfo == id) ImGuiTestEngineHook_IdInfo(&g, _TYPE, _ID, (const void*)(_DATA), (const void*)(_DATA2)); 
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# else 
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define IMGUI_TEST_ENGINE_ITEM_ADD(_BB,_ID)                 do { } while (0) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IMGUI_TEST_ENGINE_ITEM_INFO(_ID,_LABEL,_FLAGS)      do { } while (0) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IMGUI_TEST_ENGINE_LOG(_FMT,...)                     do { } while (0) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IMGUI_TEST_ENGINE_ID_INFO(_ID,_TYPE,_DATA)          do { } while (0) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define IMGUI_TEST_ENGINE_ID_INFO2(_ID,_TYPE,_DATA,_DATA2)  do { } while (0) 
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if defined(__clang__) 
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# pragma clang diagnostic pop 
  
						 
					
						
							
								
									
										
										
										
											2019-10-27 10:41:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# elif defined(__GNUC__) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# pragma GCC diagnostic pop 
  
						 
					
						
							
								
									
										
										
										
											2019-09-09 07:01:26 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef _MSC_VER 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# pragma warning (pop) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2021-01-16 09:28:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  // #ifndef IMGUI_DISABLE