mirror of
https://github.com/scratchfoundation/bgfx.git
synced 2024-12-01 03:47:07 -05:00
Updated imgui.
This commit is contained in:
parent
b44189e046
commit
d13080fa82
5 changed files with 90 additions and 66 deletions
60
3rdparty/ocornut-imgui/imgui.cpp
vendored
60
3rdparty/ocornut-imgui/imgui.cpp
vendored
|
@ -1,4 +1,4 @@
|
||||||
// ImGui library v1.44
|
// ImGui library v1.45 WIP
|
||||||
// Main code & documentation
|
// Main code & documentation
|
||||||
|
|
||||||
// See ImGui::ShowTestWindow() in imgui_demo.cpp for demo code.
|
// See ImGui::ShowTestWindow() in imgui_demo.cpp for demo code.
|
||||||
|
@ -458,7 +458,6 @@
|
||||||
- input: rework IO to be able to pass actual events to fix temporal aliasing issues.
|
- input: rework IO to be able to pass actual events to fix temporal aliasing issues.
|
||||||
- input: support track pad style scrolling & slider edit.
|
- input: support track pad style scrolling & slider edit.
|
||||||
- memory: add a way to discard allocs of unused/transient windows. with the current architecture new windows (including popup, opened combos, listbox) perform at least 3 allocs.
|
- memory: add a way to discard allocs of unused/transient windows. with the current architecture new windows (including popup, opened combos, listbox) perform at least 3 allocs.
|
||||||
- misc: mark printf compiler attributes on relevant functions
|
|
||||||
- misc: provide a way to compile out the entire implementation while providing a dummy API (e.g. #define IMGUI_DUMMY_IMPL)
|
- misc: provide a way to compile out the entire implementation while providing a dummy API (e.g. #define IMGUI_DUMMY_IMPL)
|
||||||
- misc: double-clicking on title bar to minimize isn't consistent, perhaps move to single-click on left-most collapse icon?
|
- misc: double-clicking on title bar to minimize isn't consistent, perhaps move to single-click on left-most collapse icon?
|
||||||
- style editor: have a more global HSV setter (e.g. alter hue on all elements). consider replacing active/hovered by offset in HSV space?
|
- style editor: have a more global HSV setter (e.g. alter hue on all elements). consider replacing active/hovered by offset in HSV space?
|
||||||
|
@ -487,6 +486,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
|
#pragma warning (disable: 4127) // condition expression is constant
|
||||||
#pragma warning (disable: 4505) // unreferenced local function has been removed (stb stuff)
|
#pragma warning (disable: 4505) // unreferenced local function has been removed (stb stuff)
|
||||||
#pragma warning (disable: 4996) // 'This function or variable may be unsafe': strcpy, strdup, sprintf, vsnprintf, sscanf, fopen
|
#pragma warning (disable: 4996) // 'This function or variable may be unsafe': strcpy, strdup, sprintf, vsnprintf, sscanf, fopen
|
||||||
#define snprintf _snprintf
|
#define snprintf _snprintf
|
||||||
|
@ -726,7 +726,7 @@ void ImGuiIO::AddInputCharactersUTF8(const char* utf8_chars)
|
||||||
#define IM_INT_MAX (2147483647)
|
#define IM_INT_MAX (2147483647)
|
||||||
|
|
||||||
// Play it nice with Windows users. Notepad in 2015 still doesn't display text data with Unix-style \n.
|
// Play it nice with Windows users. Notepad in 2015 still doesn't display text data with Unix-style \n.
|
||||||
#ifdef _MSC_VER
|
#ifdef _WIN32
|
||||||
#define IM_NEWLINE "\r\n"
|
#define IM_NEWLINE "\r\n"
|
||||||
#else
|
#else
|
||||||
#define IM_NEWLINE "\n"
|
#define IM_NEWLINE "\n"
|
||||||
|
@ -2071,7 +2071,7 @@ static void LoadSettings()
|
||||||
if (line_start[0] == '[' && line_end > line_start && line_end[-1] == ']')
|
if (line_start[0] == '[' && line_end > line_start && line_end[-1] == ']')
|
||||||
{
|
{
|
||||||
char name[64];
|
char name[64];
|
||||||
ImFormatString(name, IM_ARRAYSIZE(name), "%.*s", line_end-line_start-2, line_start+1);
|
ImFormatString(name, IM_ARRAYSIZE(name), "%.*s", (int)(line_end-line_start-2), line_start+1);
|
||||||
settings = FindWindowSettings(name);
|
settings = FindWindowSettings(name);
|
||||||
if (!settings)
|
if (!settings)
|
||||||
settings = AddWindowSettings(name);
|
settings = AddWindowSettings(name);
|
||||||
|
@ -2181,6 +2181,12 @@ static void AddDrawListToRenderList(ImVector<ImDrawList*>& out_render_list, ImDr
|
||||||
if (draw_list->CmdBuffer.back().ElemCount == 0)
|
if (draw_list->CmdBuffer.back().ElemCount == 0)
|
||||||
draw_list->CmdBuffer.pop_back();
|
draw_list->CmdBuffer.pop_back();
|
||||||
out_render_list.push_back(draw_list);
|
out_render_list.push_back(draw_list);
|
||||||
|
|
||||||
|
// Check that draw_list doesn't use more vertices than indexable (default ImDrawIdx = 2 bytes = 64K vertices)
|
||||||
|
// If this assert triggers because you are drawing lots of stuff manually, A) workaround by calling BeginChild()/EndChild() to put your draw commands in multiple draw lists, B) #define ImDrawIdx to a 'unsigned int' in imconfig.h and render accordingly.
|
||||||
|
const unsigned long long int max_vtx_idx = (unsigned long long int)1L << (sizeof(ImDrawIdx)*8);
|
||||||
|
IM_ASSERT((unsigned long long int)draw_list->_VtxCurrentIdx <= max_vtx_idx);
|
||||||
|
|
||||||
GImGui->IO.MetricsRenderVertices += draw_list->VtxBuffer.Size;
|
GImGui->IO.MetricsRenderVertices += draw_list->VtxBuffer.Size;
|
||||||
GImGui->IO.MetricsRenderIndices += draw_list->IdxBuffer.Size;
|
GImGui->IO.MetricsRenderIndices += draw_list->IdxBuffer.Size;
|
||||||
}
|
}
|
||||||
|
@ -2684,13 +2690,13 @@ static ImGuiWindow* FindHoveredWindow(ImVec2 pos, bool excluding_childs)
|
||||||
// Test if mouse cursor is hovering given rectangle
|
// Test if mouse cursor is hovering given rectangle
|
||||||
// NB- Rectangle is clipped by our current clip setting
|
// NB- Rectangle is clipped by our current clip setting
|
||||||
// NB- Expand the rectangle to be generous on imprecise inputs systems (g.Style.TouchExtraPadding)
|
// NB- Expand the rectangle to be generous on imprecise inputs systems (g.Style.TouchExtraPadding)
|
||||||
bool ImGui::IsMouseHoveringRect(const ImVec2& rect_min, const ImVec2& rect_max)
|
bool ImGui::IsMouseHoveringRect(const ImVec2& pos_min, const ImVec2& pos_max)
|
||||||
{
|
{
|
||||||
ImGuiState& g = *GImGui;
|
ImGuiState& g = *GImGui;
|
||||||
ImGuiWindow* window = GetCurrentWindow();
|
ImGuiWindow* window = GetCurrentWindow();
|
||||||
|
|
||||||
// Clip
|
// Clip
|
||||||
ImRect rect_clipped(rect_min, rect_max);
|
ImRect rect_clipped(pos_min, pos_max);
|
||||||
rect_clipped.Clip(window->ClipRect);
|
rect_clipped.Clip(window->ClipRect);
|
||||||
|
|
||||||
// Expand for touch input
|
// Expand for touch input
|
||||||
|
@ -4298,7 +4304,7 @@ const char* ImGui::GetStyleColName(ImGuiCol idx)
|
||||||
bool ImGui::IsWindowHovered()
|
bool ImGui::IsWindowHovered()
|
||||||
{
|
{
|
||||||
ImGuiState& g = *GImGui;
|
ImGuiState& g = *GImGui;
|
||||||
return g.HoveredWindow == g.CurrentWindow;
|
return g.HoveredWindow == g.CurrentWindow && IsWindowContentHoverable(g.HoveredRootWindow);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ImGui::IsWindowFocused()
|
bool ImGui::IsWindowFocused()
|
||||||
|
@ -4597,10 +4603,10 @@ float ImGui::GetCursorPosY()
|
||||||
return ImGui::GetCursorPos().y;
|
return ImGui::GetCursorPos().y;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImGui::SetCursorPos(const ImVec2& pos)
|
void ImGui::SetCursorPos(const ImVec2& local_pos)
|
||||||
{
|
{
|
||||||
ImGuiWindow* window = GetCurrentWindow();
|
ImGuiWindow* window = GetCurrentWindow();
|
||||||
window->DC.CursorPos = window->Pos + pos;
|
window->DC.CursorPos = window->Pos + local_pos;
|
||||||
window->DC.CursorMaxPos = ImMax(window->DC.CursorMaxPos, window->DC.CursorPos);
|
window->DC.CursorMaxPos = ImMax(window->DC.CursorMaxPos, window->DC.CursorPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8374,11 +8380,11 @@ void ImGui::EndGroup()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Gets back to previous line and continue with horizontal layout
|
// Gets back to previous line and continue with horizontal layout
|
||||||
// pos_x == 0 : follow on previous item
|
// local_pos_x == 0 : follow on previous item
|
||||||
// pos_x != 0 : align to specified column
|
// local_pos_x != 0 : align to specified column
|
||||||
// spacing_w < 0 : use default spacing if column_x==0, no spacing if column_x!=0
|
// spacing_w < 0 : use default spacing if column_x==0, no spacing if column_x!=0
|
||||||
// spacing_w >= 0 : enforce spacing
|
// spacing_w >= 0 : enforce spacing
|
||||||
void ImGui::SameLine(float pos_x, float spacing_w)
|
void ImGui::SameLine(float local_pos_x, float spacing_w)
|
||||||
{
|
{
|
||||||
ImGuiWindow* window = GetCurrentWindow();
|
ImGuiWindow* window = GetCurrentWindow();
|
||||||
if (window->SkipItems)
|
if (window->SkipItems)
|
||||||
|
@ -8386,10 +8392,10 @@ void ImGui::SameLine(float pos_x, float spacing_w)
|
||||||
|
|
||||||
ImGuiState& g = *GImGui;
|
ImGuiState& g = *GImGui;
|
||||||
float x, y;
|
float x, y;
|
||||||
if (pos_x != 0.0f)
|
if (local_pos_x != 0.0f)
|
||||||
{
|
{
|
||||||
if (spacing_w < 0.0f) spacing_w = 0.0f;
|
if (spacing_w < 0.0f) spacing_w = 0.0f;
|
||||||
x = window->Pos.x + pos_x + spacing_w;
|
x = window->Pos.x + local_pos_x + spacing_w;
|
||||||
y = window->DC.CursorPosPrevLine.y;
|
y = window->DC.CursorPosPrevLine.y;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -8707,15 +8713,19 @@ void ImGui::Color(const char* prefix, unsigned int v)
|
||||||
// PLATFORM DEPENDANT HELPERS
|
// PLATFORM DEPENDANT HELPERS
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
#if defined(_MSC_VER) && !defined(IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCS)
|
#if defined(_WIN32) && !defined(_WINDOWS_) && (!defined(IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCS) || !defined(IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCS))
|
||||||
|
#undef WIN32_LEAN_AND_MEAN
|
||||||
#ifndef _WINDOWS_
|
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#endif
|
#endif
|
||||||
#pragma comment(lib, "user32")
|
|
||||||
|
|
||||||
// Win32 API clipboard implementation
|
// Win32 API clipboard implementation
|
||||||
|
#if defined(_WIN32) && !defined(IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCS)
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma comment(lib, "user32")
|
||||||
|
#endif
|
||||||
|
|
||||||
static const char* GetClipboardTextFn_DefaultImpl()
|
static const char* GetClipboardTextFn_DefaultImpl()
|
||||||
{
|
{
|
||||||
static char* buf_local = NULL;
|
static char* buf_local = NULL;
|
||||||
|
@ -8740,7 +8750,6 @@ static const char* GetClipboardTextFn_DefaultImpl()
|
||||||
return buf_local;
|
return buf_local;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Win32 API clipboard implementation
|
|
||||||
static void SetClipboardTextFn_DefaultImpl(const char* text)
|
static void SetClipboardTextFn_DefaultImpl(const char* text)
|
||||||
{
|
{
|
||||||
if (!OpenClipboard(NULL))
|
if (!OpenClipboard(NULL))
|
||||||
|
@ -8783,14 +8792,13 @@ static void SetClipboardTextFn_DefaultImpl(const char* text)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(_MSC_VER) && !defined(IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCS)
|
// Win32 API IME support (for Asian languages, etc.)
|
||||||
|
#if defined(_WIN32) && !defined(IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCS)
|
||||||
|
|
||||||
#ifndef _WINDOWS_
|
#include <imm.h>
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#ifdef _MSC_VER
|
||||||
#include <windows.h>
|
|
||||||
#endif
|
|
||||||
#include <Imm.h>
|
|
||||||
#pragma comment(lib, "imm32")
|
#pragma comment(lib, "imm32")
|
||||||
|
#endif
|
||||||
|
|
||||||
static void ImeSetInputScreenPosFn_DefaultImpl(int x, int y)
|
static void ImeSetInputScreenPosFn_DefaultImpl(int x, int y)
|
||||||
{
|
{
|
||||||
|
@ -8881,7 +8889,7 @@ void ImGui::ShowMetricsWindow(bool* opened)
|
||||||
NodeDrawList(window->DrawList, "DrawList");
|
NodeDrawList(window->DrawList, "DrawList");
|
||||||
if (window->RootWindow != window) NodeWindow(window->RootWindow, "RootWindow");
|
if (window->RootWindow != window) NodeWindow(window->RootWindow, "RootWindow");
|
||||||
if (window->DC.ChildWindows.Size > 0) NodeWindows(window->DC.ChildWindows, "ChildWindows");
|
if (window->DC.ChildWindows.Size > 0) NodeWindows(window->DC.ChildWindows, "ChildWindows");
|
||||||
ImGui::BulletText("Storage: %d bytes", window->StateStorage.Data.Size * sizeof(ImGuiStorage::Pair));
|
ImGui::BulletText("Storage: %d bytes", window->StateStorage.Data.Size * (int)sizeof(ImGuiStorage::Pair));
|
||||||
ImGui::TreePop();
|
ImGui::TreePop();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
66
3rdparty/ocornut-imgui/imgui.h
vendored
66
3rdparty/ocornut-imgui/imgui.h
vendored
|
@ -1,4 +1,4 @@
|
||||||
// ImGui library v1.44
|
// ImGui library v1.45 WIP
|
||||||
// Headers
|
// Headers
|
||||||
|
|
||||||
// See imgui.cpp file for documentation.
|
// See imgui.cpp file for documentation.
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
#include <stdlib.h> // NULL, malloc, free, qsort, atoi
|
#include <stdlib.h> // NULL, malloc, free, qsort, atoi
|
||||||
#include <string.h> // memset, memmove, memcpy, strlen, strchr, strcpy, strcmp
|
#include <string.h> // memset, memmove, memcpy, strlen, strchr, strcpy, strcmp
|
||||||
|
|
||||||
#define IMGUI_VERSION "1.44"
|
#define IMGUI_VERSION "1.45 WIP"
|
||||||
|
|
||||||
// Define assertion handler.
|
// Define assertion handler.
|
||||||
#ifndef IM_ASSERT
|
#ifndef IM_ASSERT
|
||||||
|
@ -30,6 +30,12 @@
|
||||||
#define IMGUI_API
|
#define IMGUI_API
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__clang__) || defined(__GNUC__)
|
||||||
|
#define IM_PRINTFARGS(FMT) __attribute__((format(printf, FMT, (FMT+1))))
|
||||||
|
#else
|
||||||
|
#define IM_PRINTFARGS(FMT)
|
||||||
|
#endif
|
||||||
|
|
||||||
// Forward declarations
|
// Forward declarations
|
||||||
struct ImDrawCmd;
|
struct ImDrawCmd;
|
||||||
struct ImDrawList;
|
struct ImDrawList;
|
||||||
|
@ -174,7 +180,7 @@ namespace ImGui
|
||||||
IMGUI_API void BeginGroup(); // once closing a group it is seen as a single item (so you can use IsItemHovered() on a group, SameLine() between groups, etc.
|
IMGUI_API void BeginGroup(); // once closing a group it is seen as a single item (so you can use IsItemHovered() on a group, SameLine() between groups, etc.
|
||||||
IMGUI_API void EndGroup();
|
IMGUI_API void EndGroup();
|
||||||
IMGUI_API void Separator(); // horizontal line
|
IMGUI_API void Separator(); // horizontal line
|
||||||
IMGUI_API void SameLine(float pos_x = 0.0f, float spacing_w = -1.0f); // call between widgets or groups to layout them horizontally
|
IMGUI_API void SameLine(float local_pos_x = 0.0f, float spacing_w = -1.0f); // call between widgets or groups to layout them horizontally
|
||||||
IMGUI_API void Spacing(); // add spacing
|
IMGUI_API void Spacing(); // add spacing
|
||||||
IMGUI_API void Dummy(const ImVec2& size); // add a dummy item of given size
|
IMGUI_API void Dummy(const ImVec2& size); // add a dummy item of given size
|
||||||
IMGUI_API void Indent(); // move content position toward the right by style.IndentSpacing pixels
|
IMGUI_API void Indent(); // move content position toward the right by style.IndentSpacing pixels
|
||||||
|
@ -189,7 +195,7 @@ namespace ImGui
|
||||||
IMGUI_API ImVec2 GetCursorPos(); // cursor position is relative to window position
|
IMGUI_API ImVec2 GetCursorPos(); // cursor position is relative to window position
|
||||||
IMGUI_API float GetCursorPosX(); // "
|
IMGUI_API float GetCursorPosX(); // "
|
||||||
IMGUI_API float GetCursorPosY(); // "
|
IMGUI_API float GetCursorPosY(); // "
|
||||||
IMGUI_API void SetCursorPos(const ImVec2& pos); // "
|
IMGUI_API void SetCursorPos(const ImVec2& local_pos); // "
|
||||||
IMGUI_API void SetCursorPosX(float x); // "
|
IMGUI_API void SetCursorPosX(float x); // "
|
||||||
IMGUI_API void SetCursorPosY(float y); // "
|
IMGUI_API void SetCursorPosY(float y); // "
|
||||||
IMGUI_API ImVec2 GetCursorStartPos(); // initial cursor position
|
IMGUI_API ImVec2 GetCursorStartPos(); // initial cursor position
|
||||||
|
@ -213,19 +219,19 @@ namespace ImGui
|
||||||
IMGUI_API ImGuiID GetID(const void* ptr_id);
|
IMGUI_API ImGuiID GetID(const void* ptr_id);
|
||||||
|
|
||||||
// Widgets
|
// Widgets
|
||||||
IMGUI_API void Text(const char* fmt, ...);
|
IMGUI_API void Text(const char* fmt, ...) IM_PRINTFARGS(1);
|
||||||
IMGUI_API void TextV(const char* fmt, va_list args);
|
IMGUI_API void TextV(const char* fmt, va_list args);
|
||||||
IMGUI_API void TextColored(const ImVec4& col, const char* fmt, ...); // shortcut for PushStyleColor(ImGuiCol_Text, col); Text(fmt, ...); PopStyleColor();
|
IMGUI_API void TextColored(const ImVec4& col, const char* fmt, ...) IM_PRINTFARGS(2); // shortcut for PushStyleColor(ImGuiCol_Text, col); Text(fmt, ...); PopStyleColor();
|
||||||
IMGUI_API void TextColoredV(const ImVec4& col, const char* fmt, va_list args);
|
IMGUI_API void TextColoredV(const ImVec4& col, const char* fmt, va_list args);
|
||||||
IMGUI_API void TextDisabled(const char* fmt, ...); // shortcut for PushStyleColor(ImGuiCol_Text, style.Colors[ImGuiCol_TextDisabled]); Text(fmt, ...); PopStyleColor();
|
IMGUI_API void TextDisabled(const char* fmt, ...) IM_PRINTFARGS(1); // shortcut for PushStyleColor(ImGuiCol_Text, style.Colors[ImGuiCol_TextDisabled]); Text(fmt, ...); PopStyleColor();
|
||||||
IMGUI_API void TextDisabledV(const char* fmt, va_list args);
|
IMGUI_API void TextDisabledV(const char* fmt, va_list args);
|
||||||
IMGUI_API void TextWrapped(const char* fmt, ...); // shortcut for PushTextWrapPos(0.0f); Text(fmt, ...); PopTextWrapPos();. Note that this won't work on an auto-resizing window if there's no other widgets to extend the window width, yoy may need to set a size using SetNextWindowSize().
|
IMGUI_API void TextWrapped(const char* fmt, ...) IM_PRINTFARGS(1); // shortcut for PushTextWrapPos(0.0f); Text(fmt, ...); PopTextWrapPos();. Note that this won't work on an auto-resizing window if there's no other widgets to extend the window width, yoy may need to set a size using SetNextWindowSize().
|
||||||
IMGUI_API void TextWrappedV(const char* fmt, va_list args);
|
IMGUI_API void TextWrappedV(const char* fmt, va_list args);
|
||||||
IMGUI_API void TextUnformatted(const char* text, const char* text_end = NULL); // doesn't require null terminated string if 'text_end' is specified. no copy done to any bounded stack buffer, recommended for long chunks of text
|
IMGUI_API void TextUnformatted(const char* text, const char* text_end = NULL); // doesn't require null terminated string if 'text_end' is specified. no copy done to any bounded stack buffer, recommended for long chunks of text
|
||||||
IMGUI_API void LabelText(const char* label, const char* fmt, ...); // display text+label aligned the same way as value+label widgets
|
IMGUI_API void LabelText(const char* label, const char* fmt, ...) IM_PRINTFARGS(2); // display text+label aligned the same way as value+label widgets
|
||||||
IMGUI_API void LabelTextV(const char* label, const char* fmt, va_list args);
|
IMGUI_API void LabelTextV(const char* label, const char* fmt, va_list args);
|
||||||
IMGUI_API void Bullet();
|
IMGUI_API void Bullet();
|
||||||
IMGUI_API void BulletText(const char* fmt, ...);
|
IMGUI_API void BulletText(const char* fmt, ...) IM_PRINTFARGS(1);
|
||||||
IMGUI_API void BulletTextV(const char* fmt, va_list args);
|
IMGUI_API void BulletTextV(const char* fmt, va_list args);
|
||||||
IMGUI_API bool Button(const char* label, const ImVec2& size = ImVec2(0,0));
|
IMGUI_API bool Button(const char* label, const ImVec2& size = ImVec2(0,0));
|
||||||
IMGUI_API bool SmallButton(const char* label);
|
IMGUI_API bool SmallButton(const char* label);
|
||||||
|
@ -287,15 +293,15 @@ namespace ImGui
|
||||||
IMGUI_API bool VSliderInt(const char* label, const ImVec2& size, int* v, int v_min, int v_max, const char* display_format = "%.0f");
|
IMGUI_API bool VSliderInt(const char* label, const ImVec2& size, int* v, int v_min, int v_max, const char* display_format = "%.0f");
|
||||||
|
|
||||||
// Widgets: Trees
|
// Widgets: Trees
|
||||||
IMGUI_API bool TreeNode(const char* str_label_id); // if returning 'true' the node is open and the user is responsible for calling TreePop
|
IMGUI_API bool TreeNode(const char* str_label_id); // if returning 'true' the node is open and the user is responsible for calling TreePop
|
||||||
IMGUI_API bool TreeNode(const char* str_id, const char* fmt, ...); // "
|
IMGUI_API bool TreeNode(const char* str_id, const char* fmt, ...) IM_PRINTFARGS(2); // "
|
||||||
IMGUI_API bool TreeNode(const void* ptr_id, const char* fmt, ...); // "
|
IMGUI_API bool TreeNode(const void* ptr_id, const char* fmt, ...) IM_PRINTFARGS(2); // "
|
||||||
IMGUI_API bool TreeNodeV(const char* str_id, const char* fmt, va_list args); // "
|
IMGUI_API bool TreeNodeV(const char* str_id, const char* fmt, va_list args); // "
|
||||||
IMGUI_API bool TreeNodeV(const void* ptr_id, const char* fmt, va_list args); // "
|
IMGUI_API bool TreeNodeV(const void* ptr_id, const char* fmt, va_list args); // "
|
||||||
IMGUI_API void TreePush(const char* str_id = NULL); // already called by TreeNode(), but you can call Push/Pop yourself for layouting purpose
|
IMGUI_API void TreePush(const char* str_id = NULL); // already called by TreeNode(), but you can call Push/Pop yourself for layouting purpose
|
||||||
IMGUI_API void TreePush(const void* ptr_id = NULL); // "
|
IMGUI_API void TreePush(const void* ptr_id = NULL); // "
|
||||||
IMGUI_API void TreePop();
|
IMGUI_API void TreePop();
|
||||||
IMGUI_API void SetNextTreeNodeOpened(bool opened, ImGuiSetCond cond = 0); // set next tree node to be opened.
|
IMGUI_API void SetNextTreeNodeOpened(bool opened, ImGuiSetCond cond = 0); // set next tree node to be opened.
|
||||||
|
|
||||||
// Widgets: Selectable / Lists
|
// Widgets: Selectable / Lists
|
||||||
IMGUI_API bool Selectable(const char* label, bool selected = false, ImGuiSelectableFlags flags = 0, const ImVec2& size = ImVec2(0,0)); // size.x==0.0: use remaining width, size.x>0.0: specify width. size.y==0.0: use label height, size.y>0.0: specify height
|
IMGUI_API bool Selectable(const char* label, bool selected = false, ImGuiSelectableFlags flags = 0, const ImVec2& size = ImVec2(0,0)); // size.x==0.0: use remaining width, size.x>0.0: specify width. size.y==0.0: use label height, size.y>0.0: specify height
|
||||||
|
@ -315,7 +321,7 @@ namespace ImGui
|
||||||
IMGUI_API void Color(const char* prefix, unsigned int v);
|
IMGUI_API void Color(const char* prefix, unsigned int v);
|
||||||
|
|
||||||
// Tooltip
|
// Tooltip
|
||||||
IMGUI_API void SetTooltip(const char* fmt, ...); // set tooltip under mouse-cursor, typically use with ImGui::IsHovered(). last call wins
|
IMGUI_API void SetTooltip(const char* fmt, ...) IM_PRINTFARGS(1); // set tooltip under mouse-cursor, typically use with ImGui::IsHovered(). last call wins
|
||||||
IMGUI_API void SetTooltipV(const char* fmt, va_list args);
|
IMGUI_API void SetTooltipV(const char* fmt, va_list args);
|
||||||
IMGUI_API void BeginTooltip(); // use to create full-featured tooltip windows that aren't just text
|
IMGUI_API void BeginTooltip(); // use to create full-featured tooltip windows that aren't just text
|
||||||
IMGUI_API void EndTooltip();
|
IMGUI_API void EndTooltip();
|
||||||
|
@ -346,20 +352,20 @@ namespace ImGui
|
||||||
IMGUI_API void LogToClipboard(int max_depth = -1); // start logging to OS clipboard
|
IMGUI_API void LogToClipboard(int max_depth = -1); // start logging to OS clipboard
|
||||||
IMGUI_API void LogFinish(); // stop logging (close file, etc.)
|
IMGUI_API void LogFinish(); // stop logging (close file, etc.)
|
||||||
IMGUI_API void LogButtons(); // helper to display buttons for logging to tty/file/clipboard
|
IMGUI_API void LogButtons(); // helper to display buttons for logging to tty/file/clipboard
|
||||||
IMGUI_API void LogText(const char* fmt, ...); // pass text data straight to log (without being displayed)
|
IMGUI_API void LogText(const char* fmt, ...) IM_PRINTFARGS(1); // pass text data straight to log (without being displayed)
|
||||||
|
|
||||||
// Utilities
|
// Utilities
|
||||||
IMGUI_API bool IsItemHovered(); // was the last item hovered by mouse?
|
IMGUI_API bool IsItemHovered(); // was the last item hovered by mouse?
|
||||||
IMGUI_API bool IsItemHoveredRect(); // was the last item hovered by mouse? even if another item is active while we are hovering this
|
IMGUI_API bool IsItemHoveredRect(); // was the last item hovered by mouse? even if another item is active while we are hovering this
|
||||||
IMGUI_API bool IsItemActive(); // was the last item active? (e.g. button being held, text field being edited- items that don't interact will always return false)
|
IMGUI_API bool IsItemActive(); // was the last item active? (e.g. button being held, text field being edited- items that don't interact will always return false)
|
||||||
IMGUI_API bool IsItemVisible();
|
IMGUI_API bool IsItemVisible(); // was the last item visible? (aka not out of sight due to clipping/scrolling.)
|
||||||
IMGUI_API bool IsAnyItemHovered();
|
IMGUI_API bool IsAnyItemHovered();
|
||||||
IMGUI_API bool IsAnyItemActive();
|
IMGUI_API bool IsAnyItemActive();
|
||||||
IMGUI_API ImVec2 GetItemRectMin(); // get bounding rect of last item in screen space
|
IMGUI_API ImVec2 GetItemRectMin(); // get bounding rect of last item in screen space
|
||||||
IMGUI_API ImVec2 GetItemRectMax(); // "
|
IMGUI_API ImVec2 GetItemRectMax(); // "
|
||||||
IMGUI_API ImVec2 GetItemRectSize(); // "
|
IMGUI_API ImVec2 GetItemRectSize(); // "
|
||||||
IMGUI_API bool IsWindowHovered();
|
IMGUI_API bool IsWindowHovered(); // is current window hovered and hoverable (not blocked by a popup) (differentiate child windows from each others)
|
||||||
IMGUI_API bool IsWindowFocused(); // is current window focused (differentiate child windows from each others)
|
IMGUI_API bool IsWindowFocused(); // is current window focused
|
||||||
IMGUI_API bool IsRootWindowFocused(); // is current root window focused (top parent window in case of child windows)
|
IMGUI_API bool IsRootWindowFocused(); // is current root window focused (top parent window in case of child windows)
|
||||||
IMGUI_API bool IsRootWindowOrAnyChildFocused(); // is current root window or any of its child (including current window) focused
|
IMGUI_API bool IsRootWindowOrAnyChildFocused(); // is current root window or any of its child (including current window) focused
|
||||||
IMGUI_API bool IsRectVisible(const ImVec2& size); // test if rectangle of given size starting from cursor pos is visible (not clipped). to perform coarse clipping on user's side (as an optimization)
|
IMGUI_API bool IsRectVisible(const ImVec2& size); // test if rectangle of given size starting from cursor pos is visible (not clipped). to perform coarse clipping on user's side (as an optimization)
|
||||||
|
@ -387,9 +393,9 @@ namespace ImGui
|
||||||
IMGUI_API bool IsMouseClicked(int button, bool repeat = false); // did mouse button clicked (went from !Down to Down)
|
IMGUI_API bool IsMouseClicked(int button, bool repeat = false); // did mouse button clicked (went from !Down to Down)
|
||||||
IMGUI_API bool IsMouseDoubleClicked(int button); // did mouse button double-clicked. a double-click returns false in IsMouseClicked(). uses io.MouseDoubleClickTime.
|
IMGUI_API bool IsMouseDoubleClicked(int button); // did mouse button double-clicked. a double-click returns false in IsMouseClicked(). uses io.MouseDoubleClickTime.
|
||||||
IMGUI_API bool IsMouseReleased(int button); // did mouse button released (went from Down to !Down)
|
IMGUI_API bool IsMouseReleased(int button); // did mouse button released (went from Down to !Down)
|
||||||
IMGUI_API bool IsMouseHoveringWindow(); // is mouse hovering current window ("window" in API names always refer to current window)
|
IMGUI_API bool IsMouseHoveringWindow(); // is mouse hovering current window ("window" in API names always refer to current window). disregarding of any consideration of being blocked by a popup. (unlike IsWindowHovered() this will return true even if the window is blocked because of a popup)
|
||||||
IMGUI_API bool IsMouseHoveringAnyWindow(); // is mouse hovering any active imgui window
|
IMGUI_API bool IsMouseHoveringAnyWindow(); // is mouse hovering any visible window
|
||||||
IMGUI_API bool IsMouseHoveringRect(const ImVec2& rect_min, const ImVec2& rect_max);// is mouse hovering given bounding rect
|
IMGUI_API bool IsMouseHoveringRect(const ImVec2& pos_min, const ImVec2& pos_max); // is mouse hovering given bounding rect (in screen space). clipped by current clipping settings. disregarding of consideration of focus/window ordering/blocked by a popup.
|
||||||
IMGUI_API bool IsMouseDragging(int button = 0, float lock_threshold = -1.0f); // is mouse dragging. if lock_threshold < -1.0f uses io.MouseDraggingThreshold
|
IMGUI_API bool IsMouseDragging(int button = 0, float lock_threshold = -1.0f); // is mouse dragging. if lock_threshold < -1.0f uses io.MouseDraggingThreshold
|
||||||
IMGUI_API ImVec2 GetMousePos(); // shortcut to ImGui::GetIO().MousePos provided by user, to be consistent with other calls
|
IMGUI_API ImVec2 GetMousePos(); // shortcut to ImGui::GetIO().MousePos provided by user, to be consistent with other calls
|
||||||
IMGUI_API ImVec2 GetMouseDragDelta(int button = 0, float lock_threshold = -1.0f); // dragging amount since clicking, also see: GetItemActiveDragDelta(). if lock_threshold < -1.0f uses io.MouseDraggingThreshold
|
IMGUI_API ImVec2 GetMouseDragDelta(int button = 0, float lock_threshold = -1.0f); // dragging amount since clicking, also see: GetItemActiveDragDelta(). if lock_threshold < -1.0f uses io.MouseDraggingThreshold
|
||||||
|
@ -861,7 +867,7 @@ struct ImGuiTextBuffer
|
||||||
int size() const { return Buf.Size-1; }
|
int size() const { return Buf.Size-1; }
|
||||||
bool empty() { return size() >= 1; }
|
bool empty() { return size() >= 1; }
|
||||||
void clear() { Buf.clear(); Buf.push_back(0); }
|
void clear() { Buf.clear(); Buf.push_back(0); }
|
||||||
IMGUI_API void append(const char* fmt, ...);
|
IMGUI_API void append(const char* fmt, ...) IM_PRINTFARGS(2);
|
||||||
IMGUI_API void appendv(const char* fmt, va_list args);
|
IMGUI_API void appendv(const char* fmt, va_list args);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1007,8 +1013,10 @@ struct ImDrawCmd
|
||||||
void* UserCallbackData; // The draw callback code can access this.
|
void* UserCallbackData; // The draw callback code can access this.
|
||||||
};
|
};
|
||||||
|
|
||||||
// Vertex index
|
// Vertex index (override with, e.g. '#define ImDrawIdx unsigned int' in ImConfig)
|
||||||
|
#ifndef ImDrawIdx
|
||||||
typedef unsigned short ImDrawIdx;
|
typedef unsigned short ImDrawIdx;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Vertex layout
|
// Vertex layout
|
||||||
#ifndef IMGUI_OVERRIDE_DRAWVERT_STRUCT_LAYOUT
|
#ifndef IMGUI_OVERRIDE_DRAWVERT_STRUCT_LAYOUT
|
||||||
|
|
15
3rdparty/ocornut-imgui/imgui_demo.cpp
vendored
15
3rdparty/ocornut-imgui/imgui_demo.cpp
vendored
|
@ -1,4 +1,4 @@
|
||||||
// ImGui library v1.44
|
// ImGui library v1.45 WIP
|
||||||
// Demo code
|
// Demo code
|
||||||
|
|
||||||
// Don't remove this file from your project! It is useful reference code that you can execute.
|
// Don't remove this file from your project! It is useful reference code that you can execute.
|
||||||
|
@ -15,20 +15,21 @@
|
||||||
#include <stdio.h> // vsnprintf, sscanf, printf
|
#include <stdio.h> // vsnprintf, sscanf, printf
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#pragma warning (disable: 4505) // unreferenced local function has been removed (stb stuff)
|
|
||||||
#pragma warning (disable: 4996) // 'This function or variable may be unsafe': strcpy, strdup, sprintf, vsnprintf, sscanf, fopen
|
#pragma warning (disable: 4996) // 'This function or variable may be unsafe': strcpy, strdup, sprintf, vsnprintf, sscanf, fopen
|
||||||
#define snprintf _snprintf
|
#define snprintf _snprintf
|
||||||
#endif
|
#endif
|
||||||
#ifdef __clang__
|
#ifdef __clang__
|
||||||
#pragma clang diagnostic ignored "-Wdeprecated-declarations" // warning : 'xx' is deprecated: The POSIX name for this item.. // for strdup used in demo code (so user can copy & paste the code)
|
#pragma clang diagnostic ignored "-Wdeprecated-declarations" // warning : 'xx' is deprecated: The POSIX name for this item.. // for strdup used in demo code (so user can copy & paste the code)
|
||||||
#pragma clang diagnostic ignored "-Wint-to-void-pointer-cast" // warning : cast to 'void *' from smaller integer type 'int'
|
#pragma clang diagnostic ignored "-Wint-to-void-pointer-cast" // warning : cast to 'void *' from smaller integer type 'int'
|
||||||
|
#pragma clang diagnostic ignored "-Wformat-security" // warning : warning: format string is not a string literal
|
||||||
#endif
|
#endif
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
#pragma GCC diagnostic ignored "-Wint-to-pointer-cast" // warning: cast to pointer from integer of different size
|
#pragma GCC diagnostic ignored "-Wint-to-pointer-cast" // warning: cast to pointer from integer of different size
|
||||||
|
#pragma GCC diagnostic ignored "-Wformat-security" // warning : format string is not a string literal (potentially insecure)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Play it nice with Windows users. Notepad in 2015 still doesn't display text data with Unix-style \n.
|
// Play it nice with Windows users. Notepad in 2015 still doesn't display text data with Unix-style \n.
|
||||||
#ifdef _MSC_VER
|
#ifdef _WIN32
|
||||||
#define IM_NEWLINE "\r\n"
|
#define IM_NEWLINE "\r\n"
|
||||||
#else
|
#else
|
||||||
#define IM_NEWLINE "\n"
|
#define IM_NEWLINE "\n"
|
||||||
|
@ -1121,7 +1122,7 @@ void ImGui::ShowTestWindow(bool* opened)
|
||||||
selected = i;
|
selected = i;
|
||||||
ImGui::NextColumn();
|
ImGui::NextColumn();
|
||||||
ImGui::Text(names[i]); ImGui::NextColumn();
|
ImGui::Text(names[i]); ImGui::NextColumn();
|
||||||
ImGui::Text(paths[i]); ImGui::NextColumn();
|
ImGui::Text(paths[i]); ImGui::NextColumn();
|
||||||
ImGui::Text("...."); ImGui::NextColumn();
|
ImGui::Text("...."); ImGui::NextColumn();
|
||||||
}
|
}
|
||||||
ImGui::Columns(1);
|
ImGui::Columns(1);
|
||||||
|
@ -1424,7 +1425,7 @@ void ImGui::ShowStyleEditor(ImGuiStyle* ref)
|
||||||
const ImVec4& col = style.Colors[i];
|
const ImVec4& col = style.Colors[i];
|
||||||
const char* name = ImGui::GetStyleColName(i);
|
const char* name = ImGui::GetStyleColName(i);
|
||||||
if (!output_only_modified || memcmp(&col, (ref ? &ref->Colors[i] : &def.Colors[i]), sizeof(ImVec4)) != 0)
|
if (!output_only_modified || memcmp(&col, (ref ? &ref->Colors[i] : &def.Colors[i]), sizeof(ImVec4)) != 0)
|
||||||
ImGui::LogText("style.Colors[ImGuiCol_%s]%*s= ImVec4(%.2ff, %.2ff, %.2ff, %.2ff);" IM_NEWLINE, name, 22 - strlen(name), "", col.x, col.y, col.z, col.w);
|
ImGui::LogText("style.Colors[ImGuiCol_%s]%*s= ImVec4(%.2ff, %.2ff, %.2ff, %.2ff);" IM_NEWLINE, name, 22 - (int)strlen(name), "", col.x, col.y, col.z, col.w);
|
||||||
}
|
}
|
||||||
ImGui::LogFinish();
|
ImGui::LogFinish();
|
||||||
}
|
}
|
||||||
|
@ -1702,7 +1703,7 @@ struct ExampleAppConsole
|
||||||
ScrollToBottom = true;
|
ScrollToBottom = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddLog(const char* fmt, ...)
|
void AddLog(const char* fmt, ...) IM_PRINTFARGS(2)
|
||||||
{
|
{
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
va_list args;
|
va_list args;
|
||||||
|
@ -1862,7 +1863,7 @@ struct ExampleAppConsole
|
||||||
if (candidates.Size == 0)
|
if (candidates.Size == 0)
|
||||||
{
|
{
|
||||||
// No match
|
// No match
|
||||||
AddLog("No match for \"%.*s\"!\n", word_end-word_start, word_start);
|
AddLog("No match for \"%.*s\"!\n", (int)(word_end-word_start), word_start);
|
||||||
}
|
}
|
||||||
else if (candidates.Size == 1)
|
else if (candidates.Size == 1)
|
||||||
{
|
{
|
||||||
|
|
7
3rdparty/ocornut-imgui/imgui_draw.cpp
vendored
7
3rdparty/ocornut-imgui/imgui_draw.cpp
vendored
|
@ -1,4 +1,4 @@
|
||||||
// ImGui library v1.44
|
// ImGui library v1.45 WIP
|
||||||
// Drawing and font code
|
// Drawing and font code
|
||||||
|
|
||||||
// Contains implementation for
|
// Contains implementation for
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
#include <stdio.h> // vsnprintf, sscanf, printf
|
#include <stdio.h> // vsnprintf, sscanf, printf
|
||||||
#include <new> // new (ptr)
|
#include <new> // new (ptr)
|
||||||
#ifndef alloca
|
#ifndef alloca
|
||||||
#if defined(_MSC_VER) || defined(__MINGW32__)
|
#if _WIN32
|
||||||
#include <malloc.h> // alloca
|
#include <malloc.h> // alloca
|
||||||
#else
|
#else
|
||||||
#include <alloca.h> // alloca
|
#include <alloca.h> // alloca
|
||||||
|
@ -31,6 +31,9 @@
|
||||||
#pragma warning (disable: 4996) // 'This function or variable may be unsafe': strcpy, strdup, sprintf, vsnprintf, sscanf, fopen
|
#pragma warning (disable: 4996) // 'This function or variable may be unsafe': strcpy, strdup, sprintf, vsnprintf, sscanf, fopen
|
||||||
#define snprintf _snprintf
|
#define snprintf _snprintf
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef __GNUC__
|
||||||
|
#pragma GCC diagnostic ignored "-Wunused-function" // warning: 'xxxx' defined but not used
|
||||||
|
#endif
|
||||||
|
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
// STB libraries implementation
|
// STB libraries implementation
|
||||||
|
|
8
3rdparty/ocornut-imgui/imgui_internal.h
vendored
8
3rdparty/ocornut-imgui/imgui_internal.h
vendored
|
@ -1,4 +1,4 @@
|
||||||
// ImGui library v1.44
|
// ImGui library v1.45 WIP
|
||||||
// Internals
|
// Internals
|
||||||
// You may use this file to debug, understand or extend ImGui features but we don't provide any guarantee of forward compatibility!
|
// You may use this file to debug, understand or extend ImGui features but we don't provide any guarantee of forward compatibility!
|
||||||
|
|
||||||
|
@ -7,6 +7,10 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef IMGUI_VERSION
|
||||||
|
#error Must include imgui.h before imgui_internal.h
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <stdio.h> // FILE*
|
#include <stdio.h> // FILE*
|
||||||
#include <math.h> // sqrtf()
|
#include <math.h> // sqrtf()
|
||||||
|
|
||||||
|
@ -90,7 +94,7 @@ char* ImStrdup(const char* str);
|
||||||
int ImStrlenW(const ImWchar* str);
|
int ImStrlenW(const ImWchar* str);
|
||||||
const ImWchar* ImStrbolW(const ImWchar* buf_mid_line, const ImWchar* buf_begin); // Find beginning-of-line
|
const ImWchar* ImStrbolW(const ImWchar* buf_mid_line, const ImWchar* buf_begin); // Find beginning-of-line
|
||||||
const char* ImStristr(const char* haystack, const char* needle, const char* needle_end);
|
const char* ImStristr(const char* haystack, const char* needle, const char* needle_end);
|
||||||
int ImFormatString(char* buf, int buf_size, const char* fmt, ...);
|
int ImFormatString(char* buf, int buf_size, const char* fmt, ...) IM_PRINTFARGS(3);
|
||||||
int ImFormatStringV(char* buf, int buf_size, const char* fmt, va_list args);
|
int ImFormatStringV(char* buf, int buf_size, const char* fmt, va_list args);
|
||||||
|
|
||||||
// Helpers: Math
|
// Helpers: Math
|
||||||
|
|
Loading…
Reference in a new issue