mirror of
https://github.com/ocornut/imgui.git
synced 2026-01-11 00:04:24 +00:00
Added wp TextAligned() TextAlignedV(), TextAlignedExV() to internal API. (#7024)
This commit is contained in:
parent
dcf0d8cab6
commit
6a42d6b339
3 changed files with 53 additions and 2 deletions
2
imgui.h
2
imgui.h
|
|
@ -29,7 +29,7 @@
|
||||||
// Library Version
|
// Library Version
|
||||||
// (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM >= 12345')
|
// (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM >= 12345')
|
||||||
#define IMGUI_VERSION "1.92.0 WIP"
|
#define IMGUI_VERSION "1.92.0 WIP"
|
||||||
#define IMGUI_VERSION_NUM 19193
|
#define IMGUI_VERSION_NUM 19194
|
||||||
#define IMGUI_HAS_TABLE
|
#define IMGUI_HAS_TABLE
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -3443,8 +3443,13 @@ namespace ImGui
|
||||||
IMGUI_API void RenderRectFilledRangeH(ImDrawList* draw_list, const ImRect& rect, ImU32 col, float x_start_norm, float x_end_norm, float rounding);
|
IMGUI_API void RenderRectFilledRangeH(ImDrawList* draw_list, const ImRect& rect, ImU32 col, float x_start_norm, float x_end_norm, float rounding);
|
||||||
IMGUI_API void RenderRectFilledWithHole(ImDrawList* draw_list, const ImRect& outer, const ImRect& inner, ImU32 col, float rounding);
|
IMGUI_API void RenderRectFilledWithHole(ImDrawList* draw_list, const ImRect& outer, const ImRect& inner, ImU32 col, float rounding);
|
||||||
|
|
||||||
// Widgets
|
// Widgets: Text
|
||||||
IMGUI_API void TextEx(const char* text, const char* text_end = NULL, ImGuiTextFlags flags = 0);
|
IMGUI_API void TextEx(const char* text, const char* text_end = NULL, ImGuiTextFlags flags = 0);
|
||||||
|
IMGUI_API void TextAligned(float align_x, const char* fmt, ...); // FIXME-WIP: Works but API is likely to be reworked. This is designed for 1 item on the line. (#7024)
|
||||||
|
IMGUI_API void TextAlignedV(float align_x, const char* fmt, va_list args);
|
||||||
|
IMGUI_API void TextAlignedExV(float align_x, float avail_x, const char* fmt, va_list args);
|
||||||
|
|
||||||
|
// Widgets
|
||||||
IMGUI_API bool ButtonEx(const char* label, const ImVec2& size_arg = ImVec2(0, 0), ImGuiButtonFlags flags = 0);
|
IMGUI_API bool ButtonEx(const char* label, const ImVec2& size_arg = ImVec2(0, 0), ImGuiButtonFlags flags = 0);
|
||||||
IMGUI_API bool ArrowButtonEx(const char* str_id, ImGuiDir dir, ImVec2 size_arg, ImGuiButtonFlags flags = 0);
|
IMGUI_API bool ArrowButtonEx(const char* str_id, ImGuiDir dir, ImVec2 size_arg, ImGuiButtonFlags flags = 0);
|
||||||
IMGUI_API bool ImageButtonEx(ImGuiID id, ImTextureID user_texture_id, const ImVec2& image_size, const ImVec2& uv0, const ImVec2& uv1, const ImVec4& bg_col, const ImVec4& tint_col, ImGuiButtonFlags flags = 0);
|
IMGUI_API bool ImageButtonEx(ImGuiID id, ImTextureID user_texture_id, const ImVec2& image_size, const ImVec2& uv0, const ImVec2& uv1, const ImVec4& bg_col, const ImVec4& tint_col, ImGuiButtonFlags flags = 0);
|
||||||
|
|
|
||||||
|
|
@ -339,6 +339,52 @@ void ImGui::TextWrappedV(const char* fmt, va_list args)
|
||||||
PopTextWrapPos();
|
PopTextWrapPos();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ImGui::TextAligned(float align_x, const char* fmt, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
va_start(args, fmt);
|
||||||
|
TextAlignedV(align_x, fmt, args);
|
||||||
|
va_end(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
// align_x: 0.0f = left, 0.5f = center, 1.0f = right.
|
||||||
|
// FIXME-WIP: Works but API is likely to be reworked. This is designed for 1 item on the line. (#7024)
|
||||||
|
void ImGui::TextAlignedV(float align_x, const char* fmt, va_list args)
|
||||||
|
{
|
||||||
|
TextAlignedExV(align_x, GetContentRegionAvail().x, fmt, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ImGui::TextAlignedExV(float align_x, float avail_x, const char* fmt, va_list args)
|
||||||
|
{
|
||||||
|
ImGuiWindow* window = GetCurrentWindow();
|
||||||
|
if (window->SkipItems)
|
||||||
|
return;
|
||||||
|
|
||||||
|
const char* text, *text_end;
|
||||||
|
ImFormatStringToTempBufferV(&text, &text_end, fmt, args);
|
||||||
|
const ImVec2 text_size = CalcTextSize(text, text_end);
|
||||||
|
|
||||||
|
ImVec2 pos(window->DC.CursorPos.x, window->DC.CursorPos.y + window->DC.CurrLineTextBaseOffset);
|
||||||
|
ImVec2 pos_max(pos.x + avail_x, window->ClipRect.Max.y);
|
||||||
|
ImVec2 size(ImMin(avail_x, text_size.x), text_size.y);
|
||||||
|
window->DC.CursorMaxPos.x = ImMax(window->DC.CursorMaxPos.x, pos.x + text_size.x);
|
||||||
|
window->DC.IdealMaxPos.x = ImMax(window->DC.IdealMaxPos.x, pos.x + text_size.x);
|
||||||
|
if (align_x > 0.0f && text_size.x < avail_x)
|
||||||
|
{
|
||||||
|
pos.x += ImTrunc((avail_x - text_size.x) * align_x);
|
||||||
|
window->DC.CursorPos = pos;
|
||||||
|
}
|
||||||
|
RenderTextEllipsis(window->DrawList, pos, pos_max, pos_max.x, text, text_end, &text_size);
|
||||||
|
|
||||||
|
const ImVec2 backup_max_pos = window->DC.CursorMaxPos;
|
||||||
|
ItemSize(size);
|
||||||
|
ItemAdd(ImRect(pos, pos + size), 0);
|
||||||
|
window->DC.CursorMaxPos.x = backup_max_pos.x; // Cancel out extending content size because right-aligned text would otherwise mess it up.
|
||||||
|
|
||||||
|
if (avail_x < text_size.x && IsItemHovered(ImGuiHoveredFlags_NoNavOverride | ImGuiHoveredFlags_AllowWhenDisabled | ImGuiHoveredFlags_ForTooltip))
|
||||||
|
SetTooltip("%.*s", (int)(text_end - text), text);
|
||||||
|
}
|
||||||
|
|
||||||
void ImGui::LabelText(const char* label, const char* fmt, ...)
|
void ImGui::LabelText(const char* label, const char* fmt, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue