@ -723,6 +723,14 @@ struct ImGuiDataTypeInfo
const char * ScanFmt ; // Default scanf format for the type
} ;
// Extend ImGuiDataType_
enum ImGuiDataTypePrivate_
{
ImGuiDataType_String = ImGuiDataType_COUNT + 1 ,
ImGuiDataType_Pointer ,
ImGuiDataType_ID
} ;
// Stacked color modifier, backup of modified data so we can restore it
struct ImGuiColorMod
{
@ -1035,6 +1043,7 @@ struct ImGuiContext
bool WithinFrameScopeWithImplicitWindow ; // Set by NewFrame(), cleared by EndFrame() when the implicit debug window has been pushed
bool WithinEndChild ; // Set within EndChild()
bool TestEngineHookItems ; // Will call test engine hooks ImGuiTestEngineHook_ItemAdd(), ImGuiTestEngineHook_ItemInfo(), ImGuiTestEngineHook_Log()
ImGuiID TestEngineHookPushId ;
void * TestEngine ; // Test engine user data
// Windows state
@ -1244,6 +1253,7 @@ struct ImGuiContext
FrameCountEnded = FrameCountRendered = - 1 ;
WithinFrameScope = WithinFrameScopeWithImplicitWindow = WithinEndChild = false ;
TestEngineHookItems = false ;
TestEngineHookPushId = 0 ;
TestEngine = NULL ;
WindowsActiveCount = 0 ;
@ -1941,14 +1951,20 @@ extern void ImGuiTestEngineHook_PreNewFrame(ImGuiContext* ctx);
extern void ImGuiTestEngineHook_PostNewFrame ( ImGuiContext * ctx ) ;
extern void ImGuiTestEngineHook_ItemAdd ( ImGuiContext * ctx , const ImRect & bb , ImGuiID id ) ;
extern void ImGuiTestEngineHook_ItemInfo ( ImGuiContext * ctx , ImGuiID id , const char * label , ImGuiItemStatusFlags flags ) ;
extern void ImGuiTestEngineHook_PushID ( ImGuiContext * ctx , ImGuiDataType data_type , ImGuiID id , const void * data_id ) ;
extern void ImGuiTestEngineHook_PushID ( ImGuiContext * ctx , ImGuiDataType data_type , ImGuiID id , const void * data_id , const void * data_id_end ) ;
extern void ImGuiTestEngineHook_Log ( ImGuiContext * ctx , const char * fmt , . . . ) ;
# 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_PUSH_ID(_ID,_TYPE,_DATA) if (g.TestEngineHookPushId == id) ImGuiTestEngineHook_PushID(&g, _TYPE, _ID, (const void*)(_DATA));
# define IMGUI_TEST_ENGINE_PUSH_ID2(_ID,_TYPE,_DATA,_DATA2) if (g.TestEngineHookPushId == id) ImGuiTestEngineHook_PushID(&g, _TYPE, _ID, (const void*)(_DATA), (const void*)(_DATA2));
# else
# 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_PUSH_ID(_ID,_TYPE,_DATA) do { } while (0)
# define IMGUI_TEST_ENGINE_PUSH_ID2(_ID,_TYPE,_DATA,_DATA2) do { } while (0)
# endif
# if defined(__clang__)