|
@@ -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__)
|