From 963fae202108acd0498349e872e4811fa6c6aba0 Mon Sep 17 00:00:00 2001 From: Nic Gaffney Date: Wed, 12 Jun 2024 21:15:52 -0500 Subject: Added imgui for configuration --- .../zgui/libs/imgui_test_engine/imgui_te_utils.h | 221 +++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 vendor/zgui/libs/imgui_test_engine/imgui_te_utils.h (limited to 'vendor/zgui/libs/imgui_test_engine/imgui_te_utils.h') diff --git a/vendor/zgui/libs/imgui_test_engine/imgui_te_utils.h b/vendor/zgui/libs/imgui_test_engine/imgui_te_utils.h new file mode 100644 index 0000000..1eef55c --- /dev/null +++ b/vendor/zgui/libs/imgui_test_engine/imgui_te_utils.h @@ -0,0 +1,221 @@ +// dear imgui test engine +// (helpers/utilities. do NOT use this as a general purpose library) + +#pragma once + +//----------------------------------------------------------------------------- +// Includes +//----------------------------------------------------------------------------- + +#include // fabsf +#include // uint64_t +#include // FILE* +#include "imgui.h" // ImGuiID, ImGuiKey +class Str; // Str<> from thirdparty/Str/Str.h + +//----------------------------------------------------------------------------- +// Function Pointers +//----------------------------------------------------------------------------- + +#if IMGUI_TEST_ENGINE_ENABLE_STD_FUNCTION +#include +#define ImFuncPtr(FUNC_TYPE) std::function +#else +#define ImFuncPtr(FUNC_TYPE) FUNC_TYPE* +#endif + +//----------------------------------------------------------------------------- +// Hashing Helpers +//----------------------------------------------------------------------------- + +ImGuiID ImHashDecoratedPath(const char* str, const char* str_end = NULL, ImGuiID seed = 0); +const char* ImFindNextDecoratedPartInPath(const char* str, const char* str_end = NULL); + +//----------------------------------------------------------------------------- +// File/Directory Helpers +//----------------------------------------------------------------------------- + +bool ImFileExist(const char* filename); +bool ImFileDelete(const char* filename); +bool ImFileCreateDirectoryChain(const char* path, const char* path_end = NULL); +bool ImFileFindInParents(const char* sub_path, int max_parent_count, Str* output); +bool ImFileLoadSourceBlurb(const char* filename, int line_no_start, int line_no_end, ImGuiTextBuffer* out_buf); + +//----------------------------------------------------------------------------- +// Path Helpers +//----------------------------------------------------------------------------- + +// Those are strictly string manipulation functions +const char* ImPathFindFilename(const char* path, const char* path_end = NULL); // Return value always between path and path_end +const char* ImPathFindExtension(const char* path, const char* path_end = NULL); // Return value always between path and path_end +void ImPathFixSeparatorsForCurrentOS(char* buf); + +//----------------------------------------------------------------------------- +// String Helpers +//----------------------------------------------------------------------------- + +void ImStrReplace(Str* s, const char* find, const char* repl); +const char* ImStrchrRangeWithEscaping(const char* str, const char* str_end, char find_c); +void ImStrXmlEscape(Str* s); +int ImStrBase64Encode(const unsigned char* src, char* dst, int length); + +//----------------------------------------------------------------------------- +// Parsing Helpers +//----------------------------------------------------------------------------- + +void ImParseExtractArgcArgvFromCommandLine(int* out_argc, char const*** out_argv, const char* cmd_line); +bool ImParseFindIniSection(const char* ini_config, const char* header, ImVector* result); + +//----------------------------------------------------------------------------- +// Time Helpers +//----------------------------------------------------------------------------- + +uint64_t ImTimeGetInMicroseconds(); +void ImTimestampToISO8601(uint64_t timestamp, Str* out_date); + +//----------------------------------------------------------------------------- +// Threading Helpers +//----------------------------------------------------------------------------- + +void ImThreadSleepInMilliseconds(int ms); +void ImThreadSetCurrentThreadDescription(const char* description); + +//----------------------------------------------------------------------------- +// Build Info helpers +//----------------------------------------------------------------------------- + +// All the pointers are expect to be literals/persistent +struct ImBuildInfo +{ + const char* Type = ""; + const char* Cpu = ""; + const char* OS = ""; + const char* Compiler = ""; + char Date[32]; // "YYYY-MM-DD" + const char* Time = ""; +}; + +const ImBuildInfo* ImBuildGetCompilationInfo(); +bool ImBuildFindGitBranchName(const char* git_repo_path, Str* branch_name); + +//----------------------------------------------------------------------------- +// Operating System Helpers +//----------------------------------------------------------------------------- + +enum ImOsConsoleStream +{ + ImOsConsoleStream_StandardOutput, + ImOsConsoleStream_StandardError, +}; + +enum ImOsConsoleTextColor +{ + ImOsConsoleTextColor_Black, + ImOsConsoleTextColor_White, + ImOsConsoleTextColor_BrightWhite, + ImOsConsoleTextColor_BrightRed, + ImOsConsoleTextColor_BrightGreen, + ImOsConsoleTextColor_BrightBlue, + ImOsConsoleTextColor_BrightYellow, +}; + +bool ImOsCreateProcess(const char* cmd_line); +FILE* ImOsPOpen(const char* cmd_line, const char* mode); +void ImOsPClose(FILE* fp); +void ImOsOpenInShell(const char* path); +bool ImOsIsDebuggerPresent(); +void ImOsOutputDebugString(const char* message); +void ImOsConsoleSetTextColor(ImOsConsoleStream stream, ImOsConsoleTextColor color); + +//----------------------------------------------------------------------------- +// Miscellaneous functions +//----------------------------------------------------------------------------- + +// Tables functions +struct ImGuiTable; +ImGuiID TableGetHeaderID(ImGuiTable* table, const char* column, int instance_no = 0); +ImGuiID TableGetHeaderID(ImGuiTable* table, int column_n, int instance_no = 0); +void TableDiscardInstanceAndSettings(ImGuiID table_id); + +// DrawData functions +void DrawDataVerifyMatchingBufferCount(ImDrawData* draw_data); + +//----------------------------------------------------------------------------- +// Helper: maintain/calculate moving average +//----------------------------------------------------------------------------- + +template +struct ImMovingAverage +{ + // Internal Fields + ImVector Samples; + TYPE Accum; + int Idx; + int FillAmount; + + // Functions + ImMovingAverage() { Accum = (TYPE)0; Idx = FillAmount = 0; } + void Init(int count) { Samples.resize(count); memset(Samples.Data, 0, (size_t)Samples.Size * sizeof(TYPE)); Accum = (TYPE)0; Idx = FillAmount = 0; } + void AddSample(TYPE v) { Accum += v - Samples[Idx]; Samples[Idx] = v; if (++Idx == Samples.Size) Idx = 0; if (FillAmount < Samples.Size) FillAmount++; } + TYPE GetAverage() const { return Accum / (TYPE)FillAmount; } + int GetSampleCount() const { return Samples.Size; } + bool IsFull() const { return FillAmount == Samples.Size; } +}; + +//----------------------------------------------------------------------------- +// Helper: Simple/dumb CSV parser +//----------------------------------------------------------------------------- + +struct ImGuiCsvParser +{ + // Public fields + int Columns = 0; // Number of columns in CSV file. + int Rows = 0; // Number of rows in CSV file. + + // Internal fields + char* _Data = NULL; // CSV file data. + ImVector _Index; // CSV table: _Index[row * _Columns + col]. + + // Functions + ImGuiCsvParser(int columns = -1) { Columns = columns; } + ~ImGuiCsvParser() { Clear(); } + bool Load(const char* file_name); // Open and parse a CSV file. + void Clear(); // Free allocated buffers. + const char* GetCell(int row, int col) { IM_ASSERT(0 <= row && row < Rows && 0 <= col && col < Columns); return _Index[row * Columns + col]; } +}; + +//----------------------------------------------------------------------------- +// Misc Dear ImGui extensions +//----------------------------------------------------------------------------- + +#if IMGUI_VERSION_NUM < 18924 +struct ImGuiTabBar; +struct ImGuiTabItem; +#endif + +namespace ImGui +{ + +IMGUI_API void ItemErrorFrame(ImU32 col); + +#if IMGUI_VERSION_NUM < 18927 +ImGuiID TableGetInstanceID(ImGuiTable* table, int instance_no = 0); +#endif + +// Str support for InputText() +IMGUI_API bool InputText(const char* label, Str* str, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL, void* user_data = NULL); +IMGUI_API bool InputTextWithHint(const char* label, const char* hint, Str* str, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL, void* user_data = NULL); +IMGUI_API bool InputTextMultiline(const char* label, Str* str, const ImVec2& size = ImVec2(0, 0), ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL, void* user_data = NULL); + +// Splitter +IMGUI_API bool Splitter(const char* id, float* value_1, float* value_2, int axis, int anchor = 0, float min_size_0 = -1.0f, float min_size_1 = -1.0f); + +// Misc +IMGUI_API ImFont* FindFontByPrefix(const char* name); + +// Legacy version support +#if IMGUI_VERSION_NUM < 18924 +IMGUI_API const char* TabBarGetTabName(ImGuiTabBar* tab_bar, ImGuiTabItem* tab); +#endif + +} -- cgit v1.2.3