aboutsummaryrefslogtreecommitdiff
path: root/vendor/zgui/libs/imgui_test_engine/imgui_te_internal.h
diff options
context:
space:
mode:
authorNic Gaffney <gaffney_nic@protonmail.com>2024-06-12 21:15:52 -0500
committerNic Gaffney <gaffney_nic@protonmail.com>2024-06-12 21:15:52 -0500
commit963fae202108acd0498349e872e4811fa6c6aba0 (patch)
tree1a7d5b6ee837700819d8f6f5a2484342a0ab6ec1 /vendor/zgui/libs/imgui_test_engine/imgui_te_internal.h
parent6084001df845815efd9c0eb712acf4fd9311ce36 (diff)
downloadparticle-sim-963fae202108acd0498349e872e4811fa6c6aba0.tar.gz
Added imgui for configuration
Diffstat (limited to 'vendor/zgui/libs/imgui_test_engine/imgui_te_internal.h')
-rw-r--r--vendor/zgui/libs/imgui_test_engine/imgui_te_internal.h213
1 files changed, 213 insertions, 0 deletions
diff --git a/vendor/zgui/libs/imgui_test_engine/imgui_te_internal.h b/vendor/zgui/libs/imgui_test_engine/imgui_te_internal.h
new file mode 100644
index 0000000..4b20438
--- /dev/null
+++ b/vendor/zgui/libs/imgui_test_engine/imgui_te_internal.h
@@ -0,0 +1,213 @@
+// dear imgui test engine
+// (internal api)
+
+#pragma once
+
+#include "imgui_te_coroutine.h"
+#include "imgui_te_utils.h" // ImMovingAverage
+#include "imgui_capture_tool.h" // ImGuiCaptureTool // FIXME
+
+//-------------------------------------------------------------------------
+// FORWARD DECLARATIONS
+//-------------------------------------------------------------------------
+
+class Str; // Str<> from thirdparty/Str/Str.h
+struct ImGuiPerfTool;
+
+//-------------------------------------------------------------------------
+// DATA STRUCTURES
+//-------------------------------------------------------------------------
+
+// Query item position/window/state given ID.
+struct ImGuiTestInfoTask
+{
+ // Input
+ ImGuiID ID = 0;
+ int FrameCount = -1; // Timestamp of request
+ char DebugName[64] = ""; // Debug string representing the queried ID
+
+ // Output
+ ImGuiTestItemInfo Result;
+};
+
+// Gather item list in given parent ID.
+struct ImGuiTestGatherTask
+{
+ // Input
+ ImGuiID InParentID = 0;
+ int InMaxDepth = 0;
+ short InLayerMask = 0;
+
+ // Output/Temp
+ ImGuiTestItemList* OutList = NULL;
+ ImGuiTestItemInfo* LastItemInfo = NULL;
+
+ void Clear() { memset(this, 0, sizeof(*this)); }
+};
+
+// Find item ID given a label and a parent id
+// Usually used by queries with wildcards such as ItemInfo("hello/**/foo/bar")
+struct ImGuiTestFindByLabelTask
+{
+ // Input
+ ImGuiID InPrefixId = 0; // A known base ID which appears BEFORE the wildcard ID (for "hello/**/foo/bar" it would be hash of "hello")
+ int InSuffixDepth = 0; // Number of labels in a path, after unknown base ID (for "hello/**/foo/bar" it would be 2)
+ const char* InSuffix = NULL; // A label string which appears on ID stack after unknown base ID (for "hello/**/foo/bar" it would be "foo/bar")
+ const char* InSuffixLastItem = NULL; // A last label string (for "hello/**/foo/bar" it would be "bar")
+ ImGuiID InSuffixLastItemHash = 0;
+ ImGuiItemStatusFlags InFilterItemStatusFlags = 0; // Flags required for item to be returned
+
+ // Output
+ ImGuiID OutItemId = 0; // Result item ID
+};
+
+enum ImGuiTestInputType
+{
+ ImGuiTestInputType_None,
+ ImGuiTestInputType_Key,
+ ImGuiTestInputType_Char,
+ ImGuiTestInputType_ViewportFocus,
+ ImGuiTestInputType_ViewportClose
+};
+
+// FIXME: May want to strip further now that core imgui is using its own input queue
+struct ImGuiTestInput
+{
+ ImGuiTestInputType Type = ImGuiTestInputType_None;
+ ImGuiKeyChord KeyChord = ImGuiKey_None;
+ ImWchar Char = 0;
+ bool Down = false;
+ ImGuiID ViewportId = 0;
+
+ static ImGuiTestInput ForKeyChord(ImGuiKeyChord key_chord, bool down)
+ {
+ ImGuiTestInput inp;
+ inp.Type = ImGuiTestInputType_Key;
+ inp.KeyChord = key_chord;
+ inp.Down = down;
+ return inp;
+ }
+
+ static ImGuiTestInput ForChar(ImWchar v)
+ {
+ ImGuiTestInput inp;
+ inp.Type = ImGuiTestInputType_Char;
+ inp.Char = v;
+ return inp;
+ }
+
+ static ImGuiTestInput ForViewportFocus(ImGuiID viewport_id)
+ {
+ ImGuiTestInput inp;
+ inp.Type = ImGuiTestInputType_ViewportFocus;
+ inp.ViewportId = viewport_id;
+ return inp;
+ }
+
+ static ImGuiTestInput ForViewportClose(ImGuiID viewport_id)
+ {
+ ImGuiTestInput inp;
+ inp.Type = ImGuiTestInputType_ViewportClose;
+ inp.ViewportId = viewport_id;
+ return inp;
+ }
+};
+
+struct ImGuiTestInputs
+{
+ ImVec2 MousePosValue; // Own non-rounded copy of MousePos in order facilitate simulating mouse movement very slow speed and high-framerate
+ ImVec2 MouseWheel;
+ ImGuiID MouseHoveredViewport = 0;
+ int MouseButtonsValue = 0x00; // FIXME-TESTS: Use simulated_io.MouseDown[] ?
+ ImVector<ImGuiTestInput> Queue;
+ bool HostEscDown = false;
+ float HostEscDownDuration = -1.0f; // Maintain our own DownDuration for host/backend ESC key so we can abort.
+};
+
+// [Internal] Test Engine Context
+struct ImGuiTestEngine
+{
+ ImGuiTestEngineIO IO;
+ ImGuiContext* UiContextTarget = NULL; // imgui context for testing
+ ImGuiContext* UiContextActive = NULL; // imgui context for testing == UiContextTarget or NULL
+
+ bool Started = false;
+ ImU64 BatchStartTime = 0;
+ ImU64 BatchEndTime = 0;
+ int FrameCount = 0;
+ float OverrideDeltaTime = -1.0f; // Inject custom delta time into imgui context to simulate clock passing faster than wall clock time.
+ ImVector<ImGuiTest*> TestsAll;
+ ImVector<ImGuiTestRunTask> TestsQueue;
+ ImGuiTestContext* TestContext = NULL;
+ ImVector<ImGuiTestInfoTask*>InfoTasks;
+ ImGuiTestGatherTask GatherTask;
+ ImGuiTestFindByLabelTask FindByLabelTask;
+ ImGuiTestCoroutineHandle TestQueueCoroutine = NULL; // Coroutine to run the test queue
+ bool TestQueueCoroutineShouldExit = false; // Flag to indicate that we are shutting down and the test queue coroutine should stop
+
+ // Inputs
+ ImGuiTestInputs Inputs;
+
+ // UI support
+ bool Abort = false;
+ ImGuiTest* UiSelectAndScrollToTest = NULL;
+ ImGuiTest* UiSelectedTest = NULL;
+ Str* UiFilterTests;
+ Str* UiFilterPerfs;
+ ImU32 UiFilterByStatusMask = ~0u;
+ bool UiMetricsOpen = false;
+ bool UiDebugLogOpen = false;
+ bool UiCaptureToolOpen = false;
+ bool UiStackToolOpen = false;
+ bool UiPerfToolOpen = false;
+ float UiLogHeight = 150.0f;
+
+ // Performance Monitor
+ double PerfRefDeltaTime;
+ ImMovingAverage<double> PerfDeltaTime100;
+ ImMovingAverage<double> PerfDeltaTime500;
+ ImGuiPerfTool* PerfTool = NULL;
+
+ // Screen/Video Capturing
+ ImGuiCaptureToolUI CaptureTool; // Capture tool UI
+ ImGuiCaptureContext CaptureContext; // Capture context used in tests
+ ImGuiCaptureArgs* CaptureCurrentArgs = NULL;
+
+ // Tools
+ bool PostSwapCalled = false;
+ bool ToolDebugRebootUiContext = false; // Completely shutdown and recreate the dear imgui context in place
+ bool ToolSlowDown = false;
+ int ToolSlowDownMs = 100;
+ ImGuiTestRunSpeed BackupConfigRunSpeed = ImGuiTestRunSpeed_Fast;
+ bool BackupConfigNoThrottle = false;
+
+ // Functions
+ ImGuiTestEngine();
+ ~ImGuiTestEngine();
+};
+
+//-------------------------------------------------------------------------
+// INTERNAL FUNCTIONS
+//-------------------------------------------------------------------------
+
+ImGuiTestItemInfo* ImGuiTestEngine_FindItemInfo(ImGuiTestEngine* engine, ImGuiID id, const char* debug_id);
+void ImGuiTestEngine_Yield(ImGuiTestEngine* engine);
+void ImGuiTestEngine_SetDeltaTime(ImGuiTestEngine* engine, float delta_time);
+int ImGuiTestEngine_GetFrameCount(ImGuiTestEngine* engine);
+bool ImGuiTestEngine_PassFilter(ImGuiTest* test, const char* filter);
+void ImGuiTestEngine_RunTest(ImGuiTestEngine* engine, ImGuiTestContext* ctx, ImGuiTest* test, ImGuiTestRunFlags run_flags);
+
+void ImGuiTestEngine_RebootUiContext(ImGuiTestEngine* engine);
+ImGuiPerfTool* ImGuiTestEngine_GetPerfTool(ImGuiTestEngine* engine);
+
+// Screen/Video Capturing
+bool ImGuiTestEngine_CaptureScreenshot(ImGuiTestEngine* engine, ImGuiCaptureArgs* args);
+bool ImGuiTestEngine_CaptureBeginVideo(ImGuiTestEngine* engine, ImGuiCaptureArgs* args);
+bool ImGuiTestEngine_CaptureEndVideo(ImGuiTestEngine* engine, ImGuiCaptureArgs* args);
+
+// Helper functions
+const char* ImGuiTestEngine_GetStatusName(ImGuiTestStatus v);
+const char* ImGuiTestEngine_GetRunSpeedName(ImGuiTestRunSpeed v);
+const char* ImGuiTestEngine_GetVerboseLevelName(ImGuiTestVerboseLevel v);
+
+//-------------------------------------------------------------------------