mirror of
https://github.com/Drezil/imgui.git
synced 2024-12-19 06:26:35 +00:00
Merge branch 'master' into docking
# Conflicts: # examples/imgui_impl_glfw.cpp # examples/imgui_impl_sdl.cpp
This commit is contained in:
commit
9afb849e16
@ -149,8 +149,13 @@ Other Changes:
|
|||||||
- Log/Capture: Fixed LogXXX functions 'auto_open_depth' parameter being treated as an absolute
|
- Log/Capture: Fixed LogXXX functions 'auto_open_depth' parameter being treated as an absolute
|
||||||
tree depth instead of a relative one.
|
tree depth instead of a relative one.
|
||||||
- Log/Capture: Fixed CollapsingHeader trailing ascii representation being "#" instead of "##".
|
- Log/Capture: Fixed CollapsingHeader trailing ascii representation being "#" instead of "##".
|
||||||
|
- ImFont: Added GetGlyphRangesVietnamese() helper. (#2403)
|
||||||
- Misc: Asserting in NewFrame() if style.WindowMinSize is zero or smaller than (1.0f,1.0f).
|
- Misc: Asserting in NewFrame() if style.WindowMinSize is zero or smaller than (1.0f,1.0f).
|
||||||
- Demo: Using GetBackgroundDrawList() and GetForegroundDrawList() in "Custom Rendering" demo.
|
- Demo: Using GetBackgroundDrawList() and GetForegroundDrawList() in "Custom Rendering" demo.
|
||||||
|
- Demo: InputText: Demonstrating use of ImGuiInputTextFlags_CallbackResize. (#2006, #1443, #1008).
|
||||||
|
- Examples: GLFW, SDL: Preserve DisplayFramebufferScale when main viewport is minimized.
|
||||||
|
(This is particularly useful for the viewport branch because we are not supporting per-viewport
|
||||||
|
frame-buffer scale. It fixes windows not refreshing when main viewport is minimized.) (#2416)
|
||||||
- Examples: OpenGL: Fix to be able to run on ES 2.0 / WebGL 1.0. [@rmitton, @gabrielcuvillier]
|
- Examples: OpenGL: Fix to be able to run on ES 2.0 / WebGL 1.0. [@rmitton, @gabrielcuvillier]
|
||||||
- Examples: OpenGL: Fix for OSX not supporting OpenGL 4.5, we don't try to read GL_CLIP_ORIGIN
|
- Examples: OpenGL: Fix for OSX not supporting OpenGL 4.5, we don't try to read GL_CLIP_ORIGIN
|
||||||
even if the OpenGL headers/loader happens to define the value. (#2366, #2186)
|
even if the OpenGL headers/loader happens to define the value. (#2366, #2186)
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
// CHANGELOG
|
// CHANGELOG
|
||||||
// (minor and older changes stripped away, please see git history for details)
|
// (minor and older changes stripped away, please see git history for details)
|
||||||
// 2018-XX-XX: Platform: Added support for multiple windows via the ImGuiPlatformIO interface.
|
// 2018-XX-XX: Platform: Added support for multiple windows via the ImGuiPlatformIO interface.
|
||||||
|
// 2019-03-12: Misc: Preserve DisplayFramebufferScale when main window is minimized.
|
||||||
// 2018-11-30: Misc: Setting up io.BackendPlatformName so it can be displayed in the About Window.
|
// 2018-11-30: Misc: Setting up io.BackendPlatformName so it can be displayed in the About Window.
|
||||||
// 2018-11-07: Inputs: When installing our GLFW callbacks, we save user's previously installed ones - if any - and chain call them.
|
// 2018-11-07: Inputs: When installing our GLFW callbacks, we save user's previously installed ones - if any - and chain call them.
|
||||||
// 2018-08-01: Inputs: Workaround for Emscripten which doesn't seem to handle focus related calls.
|
// 2018-08-01: Inputs: Workaround for Emscripten which doesn't seem to handle focus related calls.
|
||||||
@ -371,7 +372,8 @@ void ImGui_ImplGlfw_NewFrame()
|
|||||||
glfwGetWindowSize(g_Window, &w, &h);
|
glfwGetWindowSize(g_Window, &w, &h);
|
||||||
glfwGetFramebufferSize(g_Window, &display_w, &display_h);
|
glfwGetFramebufferSize(g_Window, &display_w, &display_h);
|
||||||
io.DisplaySize = ImVec2((float)w, (float)h);
|
io.DisplaySize = ImVec2((float)w, (float)h);
|
||||||
io.DisplayFramebufferScale = ImVec2(w > 0 ? ((float)display_w / w) : 0, h > 0 ? ((float)display_h / h) : 0);
|
if (w > 0 && h > 0)
|
||||||
|
io.DisplayFramebufferScale = ImVec2((float)display_w / w, (float)display_h / h);
|
||||||
if (g_WantUpdateMonitors)
|
if (g_WantUpdateMonitors)
|
||||||
ImGui_ImplGlfw_UpdateMonitors();
|
ImGui_ImplGlfw_UpdateMonitors();
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
// CHANGELOG
|
// CHANGELOG
|
||||||
// (minor and older changes stripped away, please see git history for details)
|
// (minor and older changes stripped away, please see git history for details)
|
||||||
// 2018-XX-XX: Platform: Added support for multiple windows via the ImGuiPlatformIO interface.
|
// 2018-XX-XX: Platform: Added support for multiple windows via the ImGuiPlatformIO interface.
|
||||||
|
// 2019-03-12: Misc: Preserve DisplayFramebufferScale when main window is minimized.
|
||||||
// 2018-12-21: Inputs: Workaround for Android/iOS which don't seem to handle focus related calls.
|
// 2018-12-21: Inputs: Workaround for Android/iOS which don't seem to handle focus related calls.
|
||||||
// 2018-11-30: Misc: Setting up io.BackendPlatformName so it can be displayed in the About Window.
|
// 2018-11-30: Misc: Setting up io.BackendPlatformName so it can be displayed in the About Window.
|
||||||
// 2018-11-14: Changed the signature of ImGui_ImplSDL2_ProcessEvent() to take a 'const SDL_Event*'.
|
// 2018-11-14: Changed the signature of ImGui_ImplSDL2_ProcessEvent() to take a 'const SDL_Event*'.
|
||||||
@ -335,7 +336,8 @@ void ImGui_ImplSDL2_NewFrame(SDL_Window* window)
|
|||||||
SDL_GetWindowSize(window, &w, &h);
|
SDL_GetWindowSize(window, &w, &h);
|
||||||
SDL_GL_GetDrawableSize(window, &display_w, &display_h);
|
SDL_GL_GetDrawableSize(window, &display_w, &display_h);
|
||||||
io.DisplaySize = ImVec2((float)w, (float)h);
|
io.DisplaySize = ImVec2((float)w, (float)h);
|
||||||
io.DisplayFramebufferScale = ImVec2(w > 0 ? ((float)display_w / w) : 0, h > 0 ? ((float)display_h / h) : 0);
|
if (w > 0 && h > 0)
|
||||||
|
io.DisplayFramebufferScale = ImVec2((float)display_w / w, (float)display_h / h);
|
||||||
|
|
||||||
// Setup time step (we don't use SDL_GetTicks() because it is using millisecond resolution)
|
// Setup time step (we don't use SDL_GetTicks() because it is using millisecond resolution)
|
||||||
static Uint64 frequency = SDL_GetPerformanceFrequency();
|
static Uint64 frequency = SDL_GetPerformanceFrequency();
|
||||||
|
1
imgui.h
1
imgui.h
@ -2137,6 +2137,7 @@ struct ImFontAtlas
|
|||||||
IMGUI_API const ImWchar* GetGlyphRangesChineseSimplifiedCommon();// Default + Half-Width + Japanese Hiragana/Katakana + set of 2500 CJK Unified Ideographs for common simplified Chinese
|
IMGUI_API const ImWchar* GetGlyphRangesChineseSimplifiedCommon();// Default + Half-Width + Japanese Hiragana/Katakana + set of 2500 CJK Unified Ideographs for common simplified Chinese
|
||||||
IMGUI_API const ImWchar* GetGlyphRangesCyrillic(); // Default + about 400 Cyrillic characters
|
IMGUI_API const ImWchar* GetGlyphRangesCyrillic(); // Default + about 400 Cyrillic characters
|
||||||
IMGUI_API const ImWchar* GetGlyphRangesThai(); // Default + Thai characters
|
IMGUI_API const ImWchar* GetGlyphRangesThai(); // Default + Thai characters
|
||||||
|
IMGUI_API const ImWchar* GetGlyphRangesVietnamese(); // Default + Vietname characters
|
||||||
|
|
||||||
//-------------------------------------------
|
//-------------------------------------------
|
||||||
// Custom Rectangles/Glyphs API
|
// Custom Rectangles/Glyphs API
|
||||||
|
@ -976,26 +976,8 @@ static void ShowDemoWindowWidgets()
|
|||||||
ImGui::TreePop();
|
ImGui::TreePop();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::TreeNode("Filtered Text Input"))
|
if (ImGui::TreeNode("Text Input"))
|
||||||
{
|
{
|
||||||
static char buf1[64] = ""; ImGui::InputText("default", buf1, 64);
|
|
||||||
static char buf2[64] = ""; ImGui::InputText("decimal", buf2, 64, ImGuiInputTextFlags_CharsDecimal);
|
|
||||||
static char buf3[64] = ""; ImGui::InputText("hexadecimal", buf3, 64, ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_CharsUppercase);
|
|
||||||
static char buf4[64] = ""; ImGui::InputText("uppercase", buf4, 64, ImGuiInputTextFlags_CharsUppercase);
|
|
||||||
static char buf5[64] = ""; ImGui::InputText("no blank", buf5, 64, ImGuiInputTextFlags_CharsNoBlank);
|
|
||||||
struct TextFilters { static int FilterImGuiLetters(ImGuiInputTextCallbackData* data) { if (data->EventChar < 256 && strchr("imgui", (char)data->EventChar)) return 0; return 1; } };
|
|
||||||
static char buf6[64] = ""; ImGui::InputText("\"imgui\" letters", buf6, 64, ImGuiInputTextFlags_CallbackCharFilter, TextFilters::FilterImGuiLetters);
|
|
||||||
|
|
||||||
ImGui::Text("Password input");
|
|
||||||
static char bufpass[64] = "password123";
|
|
||||||
ImGui::InputText("password", bufpass, 64, ImGuiInputTextFlags_Password | ImGuiInputTextFlags_CharsNoBlank);
|
|
||||||
ImGui::SameLine(); HelpMarker("Display all characters as '*'.\nDisable clipboard cut and copy.\nDisable logging.\n");
|
|
||||||
ImGui::InputTextWithHint("password (w/ hint)", "<password>", bufpass, 64, ImGuiInputTextFlags_Password | ImGuiInputTextFlags_CharsNoBlank);
|
|
||||||
ImGui::InputText("password (clear)", bufpass, 64, ImGuiInputTextFlags_CharsNoBlank);
|
|
||||||
|
|
||||||
ImGui::TreePop();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ImGui::TreeNode("Multi-line Text Input"))
|
if (ImGui::TreeNode("Multi-line Text Input"))
|
||||||
{
|
{
|
||||||
// Note: we are using a fixed-sized buffer for simplicity here. See ImGuiInputTextFlags_CallbackResize
|
// Note: we are using a fixed-sized buffer for simplicity here. See ImGuiInputTextFlags_CallbackResize
|
||||||
@ -1021,6 +1003,65 @@ static void ShowDemoWindowWidgets()
|
|||||||
ImGui::TreePop();
|
ImGui::TreePop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ImGui::TreeNode("Filtered Text Input"))
|
||||||
|
{
|
||||||
|
static char buf1[64] = ""; ImGui::InputText("default", buf1, 64);
|
||||||
|
static char buf2[64] = ""; ImGui::InputText("decimal", buf2, 64, ImGuiInputTextFlags_CharsDecimal);
|
||||||
|
static char buf3[64] = ""; ImGui::InputText("hexadecimal", buf3, 64, ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_CharsUppercase);
|
||||||
|
static char buf4[64] = ""; ImGui::InputText("uppercase", buf4, 64, ImGuiInputTextFlags_CharsUppercase);
|
||||||
|
static char buf5[64] = ""; ImGui::InputText("no blank", buf5, 64, ImGuiInputTextFlags_CharsNoBlank);
|
||||||
|
struct TextFilters { static int FilterImGuiLetters(ImGuiInputTextCallbackData* data) { if (data->EventChar < 256 && strchr("imgui", (char)data->EventChar)) return 0; return 1; } };
|
||||||
|
static char buf6[64] = ""; ImGui::InputText("\"imgui\" letters", buf6, 64, ImGuiInputTextFlags_CallbackCharFilter, TextFilters::FilterImGuiLetters);
|
||||||
|
|
||||||
|
ImGui::Text("Password input");
|
||||||
|
static char bufpass[64] = "password123";
|
||||||
|
ImGui::InputText("password", bufpass, 64, ImGuiInputTextFlags_Password | ImGuiInputTextFlags_CharsNoBlank);
|
||||||
|
ImGui::SameLine(); HelpMarker("Display all characters as '*'.\nDisable clipboard cut and copy.\nDisable logging.\n");
|
||||||
|
ImGui::InputTextWithHint("password (w/ hint)", "<password>", bufpass, 64, ImGuiInputTextFlags_Password | ImGuiInputTextFlags_CharsNoBlank);
|
||||||
|
ImGui::InputText("password (clear)", bufpass, 64, ImGuiInputTextFlags_CharsNoBlank);
|
||||||
|
ImGui::TreePop();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ImGui::TreeNode("Resize Callback"))
|
||||||
|
{
|
||||||
|
// If you have a custom string type you would typically create a ImGui::InputText() wrapper than takes your type as input.
|
||||||
|
// See misc/cpp/imgui_stdlib.h and .cpp for an implementation of this using std::string.
|
||||||
|
HelpMarker("Demonstrate using ImGuiInputTextFlags_CallbackResize to wire your resizable string type to InputText().\n\nSee misc/cpp/imgui_stdlib.h for an implementation of this for std::string.");
|
||||||
|
struct Funcs
|
||||||
|
{
|
||||||
|
static int MyResizeCallback(ImGuiInputTextCallbackData* data)
|
||||||
|
{
|
||||||
|
if (data->EventFlag == ImGuiInputTextFlags_CallbackResize)
|
||||||
|
{
|
||||||
|
ImVector<char>* my_str = (ImVector<char>*)data->UserData;
|
||||||
|
IM_ASSERT(my_str->begin() == data->Buf);
|
||||||
|
my_str->resize(data->BufSize); // NB: On resizing calls, generally data->BufSize == data->BufTextLen + 1
|
||||||
|
data->Buf = my_str->begin();
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tip: Because ImGui:: is a namespace you can add your own function into the namespace from your own source files.
|
||||||
|
static bool MyInputTextMultiline(const char* label, ImVector<char>* my_str, const ImVec2& size = ImVec2(0, 0), ImGuiInputTextFlags flags = 0)
|
||||||
|
{
|
||||||
|
IM_ASSERT((flags & ImGuiInputTextFlags_CallbackResize) == 0);
|
||||||
|
return ImGui::InputTextMultiline(label, my_str->begin(), (size_t)my_str->size(), size, flags | ImGuiInputTextFlags_CallbackResize, Funcs::MyResizeCallback, (void*)my_str);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// For this demo we are using ImVector as a string container.
|
||||||
|
// Note that because we need to store a terminating zero character, our size/capacity are 1 more than usually reported by a typical string class.
|
||||||
|
static ImVector<char> my_str;
|
||||||
|
if (my_str.empty())
|
||||||
|
my_str.push_back(0);
|
||||||
|
Funcs::MyInputTextMultiline("##MyStr", &my_str, ImVec2(-1.0f, ImGui::GetTextLineHeight() * 16));
|
||||||
|
ImGui::Text("Data: %p\nSize: %d\nCapacity: %d", (void*)my_str.begin(), my_str.size(), my_str.capacity());
|
||||||
|
ImGui::TreePop();
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::TreePop();
|
||||||
|
}
|
||||||
|
|
||||||
if (ImGui::TreeNode("Plots Widgets"))
|
if (ImGui::TreeNode("Plots Widgets"))
|
||||||
{
|
{
|
||||||
static bool animate = true;
|
static bool animate = true;
|
||||||
|
@ -2352,6 +2352,23 @@ const ImWchar* ImFontAtlas::GetGlyphRangesThai()
|
|||||||
return &ranges[0];
|
return &ranges[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const ImWchar* ImFontAtlas::GetGlyphRangesVietnamese()
|
||||||
|
{
|
||||||
|
static const ImWchar ranges[] =
|
||||||
|
{
|
||||||
|
0x0020, 0x00FF, // Basic Latin
|
||||||
|
0x0102, 0x0103,
|
||||||
|
0x0110, 0x0111,
|
||||||
|
0x0128, 0x0129,
|
||||||
|
0x0168, 0x0169,
|
||||||
|
0x01A0, 0x01A1,
|
||||||
|
0x01AF, 0x01B0,
|
||||||
|
0x1EA0, 0x1EF9,
|
||||||
|
0,
|
||||||
|
};
|
||||||
|
return &ranges[0];
|
||||||
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// [SECTION] ImFontGlyphRangesBuilder
|
// [SECTION] ImFontGlyphRangesBuilder
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@ -583,10 +583,9 @@ struct ImGuiGroupData
|
|||||||
// Simple column measurement, currently used for MenuItem() only.. This is very short-sighted/throw-away code and NOT a generic helper.
|
// Simple column measurement, currently used for MenuItem() only.. This is very short-sighted/throw-away code and NOT a generic helper.
|
||||||
struct IMGUI_API ImGuiMenuColumns
|
struct IMGUI_API ImGuiMenuColumns
|
||||||
{
|
{
|
||||||
int Count;
|
|
||||||
float Spacing;
|
float Spacing;
|
||||||
float Width, NextWidth;
|
float Width, NextWidth;
|
||||||
float Pos[4], NextWidths[4];
|
float Pos[3], NextWidths[3];
|
||||||
|
|
||||||
ImGuiMenuColumns();
|
ImGuiMenuColumns();
|
||||||
void Update(int count, float spacing, bool clear);
|
void Update(int count, float spacing, bool clear);
|
||||||
|
@ -3397,14 +3397,8 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_
|
|||||||
bool enter_pressed = false;
|
bool enter_pressed = false;
|
||||||
|
|
||||||
// Select the buffer to render.
|
// Select the buffer to render.
|
||||||
const char* buf_display = ((render_cursor || render_selection || g.ActiveId == id) && !is_readonly && state && state->TextAIsValid) ? state->TextA.Data : buf;
|
const bool buf_display_from_state = (render_cursor || render_selection || g.ActiveId == id) && !is_readonly && state && state->TextAIsValid;
|
||||||
const char* buf_display_end = NULL; // We have specialized paths below for setting the length
|
const bool is_displaying_hint = (hint != NULL && (buf_display_from_state ? state->TextA.Data : buf)[0] == 0);
|
||||||
const bool is_displaying_hint = (hint != NULL && buf_display[0] == 0);
|
|
||||||
if (is_displaying_hint)
|
|
||||||
{
|
|
||||||
buf_display = hint;
|
|
||||||
buf_display_end = hint + strlen(hint);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Password pushes a temporary font with only a fallback glyph
|
// Password pushes a temporary font with only a fallback glyph
|
||||||
if (is_password && !is_displaying_hint)
|
if (is_password && !is_displaying_hint)
|
||||||
@ -3771,6 +3765,13 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_
|
|||||||
// without any carriage return, which would makes ImFont::RenderText() reserve too many vertices and probably crash. Avoid it altogether.
|
// without any carriage return, which would makes ImFont::RenderText() reserve too many vertices and probably crash. Avoid it altogether.
|
||||||
// Note that we only use this limit on single-line InputText(), so a pathologically large line on a InputTextMultiline() would still crash.
|
// Note that we only use this limit on single-line InputText(), so a pathologically large line on a InputTextMultiline() would still crash.
|
||||||
const int buf_display_max_length = 2 * 1024 * 1024;
|
const int buf_display_max_length = 2 * 1024 * 1024;
|
||||||
|
const char* buf_display = buf_display_from_state ? state->TextA.Data : buf; //-V595
|
||||||
|
const char* buf_display_end = NULL; // We have specialized paths below for setting the length
|
||||||
|
if (is_displaying_hint)
|
||||||
|
{
|
||||||
|
buf_display = hint;
|
||||||
|
buf_display_end = hint + strlen(hint);
|
||||||
|
}
|
||||||
|
|
||||||
// Render text. We currently only render selection when the widget is active or while scrolling.
|
// Render text. We currently only render selection when the widget is active or while scrolling.
|
||||||
// FIXME: We could remove the '&& render_cursor' to keep rendering selection when inactive.
|
// FIXME: We could remove the '&& render_cursor' to keep rendering selection when inactive.
|
||||||
@ -5708,7 +5709,6 @@ void ImGui::Value(const char* prefix, float v, const char* float_format)
|
|||||||
// Helpers for internal use
|
// Helpers for internal use
|
||||||
ImGuiMenuColumns::ImGuiMenuColumns()
|
ImGuiMenuColumns::ImGuiMenuColumns()
|
||||||
{
|
{
|
||||||
Count = 0;
|
|
||||||
Spacing = Width = NextWidth = 0.0f;
|
Spacing = Width = NextWidth = 0.0f;
|
||||||
memset(Pos, 0, sizeof(Pos));
|
memset(Pos, 0, sizeof(Pos));
|
||||||
memset(NextWidths, 0, sizeof(NextWidths));
|
memset(NextWidths, 0, sizeof(NextWidths));
|
||||||
@ -5716,12 +5716,12 @@ ImGuiMenuColumns::ImGuiMenuColumns()
|
|||||||
|
|
||||||
void ImGuiMenuColumns::Update(int count, float spacing, bool clear)
|
void ImGuiMenuColumns::Update(int count, float spacing, bool clear)
|
||||||
{
|
{
|
||||||
IM_ASSERT(Count <= IM_ARRAYSIZE(Pos));
|
IM_ASSERT(count == IM_ARRAYSIZE(Pos));
|
||||||
Count = count;
|
|
||||||
Width = NextWidth = 0.0f;
|
Width = NextWidth = 0.0f;
|
||||||
Spacing = spacing;
|
Spacing = spacing;
|
||||||
if (clear) memset(NextWidths, 0, sizeof(NextWidths));
|
if (clear)
|
||||||
for (int i = 0; i < Count; i++)
|
memset(NextWidths, 0, sizeof(NextWidths));
|
||||||
|
for (int i = 0; i < IM_ARRAYSIZE(Pos); i++)
|
||||||
{
|
{
|
||||||
if (i > 0 && NextWidths[i] > 0.0f)
|
if (i > 0 && NextWidths[i] > 0.0f)
|
||||||
Width += Spacing;
|
Width += Spacing;
|
||||||
@ -5737,7 +5737,7 @@ float ImGuiMenuColumns::DeclColumns(float w0, float w1, float w2) // not using v
|
|||||||
NextWidths[0] = ImMax(NextWidths[0], w0);
|
NextWidths[0] = ImMax(NextWidths[0], w0);
|
||||||
NextWidths[1] = ImMax(NextWidths[1], w1);
|
NextWidths[1] = ImMax(NextWidths[1], w1);
|
||||||
NextWidths[2] = ImMax(NextWidths[2], w2);
|
NextWidths[2] = ImMax(NextWidths[2], w2);
|
||||||
for (int i = 0; i < 3; i++)
|
for (int i = 0; i < IM_ARRAYSIZE(Pos); i++)
|
||||||
NextWidth += NextWidths[i] + ((i > 0 && NextWidths[i] > 0.0f) ? Spacing : 0.0f);
|
NextWidth += NextWidths[i] + ((i > 0 && NextWidths[i] > 0.0f) ? Spacing : 0.0f);
|
||||||
return ImMax(Width, NextWidth);
|
return ImMax(Width, NextWidth);
|
||||||
}
|
}
|
||||||
|
@ -294,6 +294,9 @@ MONOSPACE FONTS
|
|||||||
https://github.com/kmar/Sweet16Font
|
https://github.com/kmar/Sweet16Font
|
||||||
Also include .inl file to use directly in dear imgui.
|
Also include .inl file to use directly in dear imgui.
|
||||||
|
|
||||||
|
Google Noto Mono Fonts
|
||||||
|
https://www.google.com/get/noto/
|
||||||
|
|
||||||
Typefaces for source code beautification
|
Typefaces for source code beautification
|
||||||
https://github.com/chrissimpkins/codeface
|
https://github.com/chrissimpkins/codeface
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user