mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-15 01:17:00 +00:00
DrawList: Replace "bool close" in drawing functions with flags.
This commit is contained in:
parent
a64e0eb3a4
commit
01a2bac7d5
@ -37,6 +37,11 @@ HOW TO UPDATE?
|
|||||||
|
|
||||||
Breaking Changes:
|
Breaking Changes:
|
||||||
|
|
||||||
|
- ImDrawList: upgraded AddPolyline()/PathStroke()'s "bool closed" parameter to use "ImDrawFlags flags".
|
||||||
|
The matching ImDrawFlags_Closed value is guaranteed to always stay == 1 in the future.
|
||||||
|
bool closed = false ----> use ImDrawFlags_None, or 0
|
||||||
|
bool closed = true ----> use ImDrawFlags_Closed
|
||||||
|
Difference may not be noticeable for most but zealous type-checking tools may report a need to change.
|
||||||
- Style: renamed rarely used style.CircleSegmentMaxError (old default = 1.60f)
|
- Style: renamed rarely used style.CircleSegmentMaxError (old default = 1.60f)
|
||||||
to style.CircleTessellationMaxError (new default = 0.30f) as its meaning changed. (#3808) [@thedmd]
|
to style.CircleTessellationMaxError (new default = 0.30f) as its meaning changed. (#3808) [@thedmd]
|
||||||
- Win32+MinGW: Re-enabled IME functions by default even under MinGW. In July 2016, issue #738 had me incorrectly
|
- Win32+MinGW: Re-enabled IME functions by default even under MinGW. In July 2016, issue #738 had me incorrectly
|
||||||
@ -53,26 +58,26 @@ Other Changes:
|
|||||||
when it appears while gamepad/keyboard are not being used. (#787)
|
when it appears while gamepad/keyboard are not being used. (#787)
|
||||||
- Drags: Fixed crash when using DragScalar() directly (not via common wrapper like DragFloat() etc.)
|
- Drags: Fixed crash when using DragScalar() directly (not via common wrapper like DragFloat() etc.)
|
||||||
with ImGuiSliderFlags_AlwaysClamp + only one of either p_min or p_max set. (#3824) [@harry75369]
|
with ImGuiSliderFlags_AlwaysClamp + only one of either p_min or p_max set. (#3824) [@harry75369]
|
||||||
- Drags, Sliders: Fixed a bug where editing value would use wrong number if there were digits right after
|
- Drags, Sliders: Fixed a bug where editing value would use wrong number if there were digits right after
|
||||||
format specifier (e.g. using "%f123" as a format string). [@rokups]
|
format specifier (e.g. using "%f123" as a format string). [@rokups]
|
||||||
- Drags, Sliders: Fixed a bug where using custom formatting flags (',$,_) supported by stb_sprintf.h
|
- Drags, Sliders: Fixed a bug where using custom formatting flags (',$,_) supported by stb_sprintf.h
|
||||||
would cause incorrect value to be displayed. (#3604) [@rokups]
|
would cause incorrect value to be displayed. (#3604) [@rokups]
|
||||||
- Tables: Fixed unaligned accesses when using TableSetBgColor(ImGuiTableBgTarget_CellBg). (#3872)
|
- Tables: Fixed unaligned accesses when using TableSetBgColor(ImGuiTableBgTarget_CellBg). (#3872)
|
||||||
- IsItemHovered(): fixed return value false positive when used after EndChild(), EndGroup() or widgets using
|
- IsItemHovered(): fixed return value false positive when used after EndChild(), EndGroup() or widgets using
|
||||||
either of them, when the hovered location is located within a child window, e.g. InputTextMultiline().
|
either of them, when the hovered location is located within a child window, e.g. InputTextMultiline().
|
||||||
This is intended to have no side effects, but brace yourself for the possible comeback.. (#3851, #1370)
|
This is intended to have no side effects, but brace yourself for the possible comeback.. (#3851, #1370)
|
||||||
- Drag and Drop: can use BeginDragDropSource() for other than the left mouse button as long as the item
|
- Drag and Drop: can use BeginDragDropSource() for other than the left mouse button as long as the item
|
||||||
has an ID (for ID-less items will add new functionalities later). (#1637, #3885)
|
has an ID (for ID-less items will add new functionalities later). (#1637, #3885)
|
||||||
- Added GetAllocatorFunctions() to facilitate sharing allocators accross DLL boundaries. (#3836)
|
- Added GetAllocatorFunctions() to facilitate sharing allocators accross DLL boundaries. (#3836)
|
||||||
- ImFontAtlas: Added 'bool TexPixelsUseColors' output to help backend decide of underlying texture format. (#3369)
|
- ImFontAtlas: Added 'bool TexPixelsUseColors' output to help backend decide of underlying texture format. (#3369)
|
||||||
This can currently only ever be set by the Freetype renderer.
|
This can currently only ever be set by the Freetype renderer.
|
||||||
- imgui_freetype: Added ImGuiFreeTypeBuilderFlags_Bitmap flag to request Freetype loading bitmap data.
|
- imgui_freetype: Added ImGuiFreeTypeBuilderFlags_Bitmap flag to request Freetype loading bitmap data.
|
||||||
This may have an effect on size and must be called with correct size values. (#3879) [@metarutaiga]
|
This may have an effect on size and must be called with correct size values. (#3879) [@metarutaiga]
|
||||||
- ImDrawList: AddCircle, AddCircleFilled(): Tweaked default segment count calculation to honor MaxError
|
- ImDrawList: AddCircle, AddCircleFilled(): Tweaked default segment count calculation to honor MaxError
|
||||||
with more accuracy. Made default segment count always even for better looking result. (#3808) [@thedmd]
|
with more accuracy. Made default segment count always even for better looking result. (#3808) [@thedmd]
|
||||||
- ImDrawList: AddCircle, AddCircleFilled(): New default for style.
|
- ImDrawList: AddCircle, AddCircleFilled(): New default for style.
|
||||||
- Backends: Android: Added native Android backend. (#3446) [@duddel]
|
- Backends: Android: Added native Android backend. (#3446) [@duddel]
|
||||||
- Backends: Win32: Added ImGui_ImplWin32_EnableAlphaCompositing() to facilitate experimenting with
|
- Backends: Win32: Added ImGui_ImplWin32_EnableAlphaCompositing() to facilitate experimenting with
|
||||||
alpha compositing and transparent windows. (#2766, #3447 etc.).
|
alpha compositing and transparent windows. (#2766, #3447 etc.).
|
||||||
- Backends: OpenGL, Vulkan, DX9, DX10, DX11, DX12, Metal, WebGPU, Allegro: Rework blending equation to
|
- Backends: OpenGL, Vulkan, DX9, DX10, DX11, DX12, Metal, WebGPU, Allegro: Rework blending equation to
|
||||||
preserve alpha in output buffer (using SrcBlendAlpha = ONE, DstBlendAlpha = ONE_MINUS_SRC_ALPHA consistently
|
preserve alpha in output buffer (using SrcBlendAlpha = ONE, DstBlendAlpha = ONE_MINUS_SRC_ALPHA consistently
|
||||||
|
13
imgui.cpp
13
imgui.cpp
@ -376,6 +376,7 @@ CODE
|
|||||||
When you are not sure about a old symbol or function name, try using the Search/Find function of your IDE to look for comments or references in all imgui files.
|
When you are not sure about a old symbol or function name, try using the Search/Find function of your IDE to look for comments or references in all imgui files.
|
||||||
You can read releases logs https://github.com/ocornut/imgui/releases for more details.
|
You can read releases logs https://github.com/ocornut/imgui/releases for more details.
|
||||||
|
|
||||||
|
- 2021/03/10 (1.82) - upgraded ImDrawList::AddPolyline() and PathStroke() "bool closed" parameter to "ImDrawFlags flags". The matching ImDrawFlags_Closed value is guaranteed to always stay == 1 in the future.
|
||||||
- 2021/02/22 (1.82) - win32+mingw: Re-enabled IME functions by default even under MinGW. In July 2016, issue #738 had me incorrectly disable those default functions for MinGW. MinGW users should: either link with -limm32, either set their imconfig file with '#define IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS'.
|
- 2021/02/22 (1.82) - win32+mingw: Re-enabled IME functions by default even under MinGW. In July 2016, issue #738 had me incorrectly disable those default functions for MinGW. MinGW users should: either link with -limm32, either set their imconfig file with '#define IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS'.
|
||||||
- 2021/02/17 (1.82) - renamed rarely used style.CircleSegmentMaxError (old default = 1.60f) to style.CircleTessellationMaxError (new default = 0.30f) as the meaning of the value changed.
|
- 2021/02/17 (1.82) - renamed rarely used style.CircleSegmentMaxError (old default = 1.60f) to style.CircleTessellationMaxError (new default = 0.30f) as the meaning of the value changed.
|
||||||
- 2021/02/03 (1.81) - renamed ListBoxHeader(const char* label, ImVec2 size) to BeginListBox(). Kept inline redirection function (will obsolete).
|
- 2021/02/03 (1.81) - renamed ListBoxHeader(const char* label, ImVec2 size) to BeginListBox(). Kept inline redirection function (will obsolete).
|
||||||
@ -3859,7 +3860,7 @@ void ImGui::NewFrame()
|
|||||||
{
|
{
|
||||||
IM_ASSERT(GImGui != NULL && "No current context. Did you call ImGui::CreateContext() and ImGui::SetCurrentContext() ?");
|
IM_ASSERT(GImGui != NULL && "No current context. Did you call ImGui::CreateContext() and ImGui::SetCurrentContext() ?");
|
||||||
ImGuiContext& g = *GImGui;
|
ImGuiContext& g = *GImGui;
|
||||||
|
|
||||||
// Remove pending delete hooks before frame start.
|
// Remove pending delete hooks before frame start.
|
||||||
// This deferred removal avoid issues of removal while iterating the hook vector
|
// This deferred removal avoid issues of removal while iterating the hook vector
|
||||||
for (int n = g.Hooks.Size - 1; n >= 0; n--)
|
for (int n = g.Hooks.Size - 1; n >= 0; n--)
|
||||||
@ -4829,7 +4830,7 @@ bool ImGui::IsItemFocused()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Important: this can be useful but it is NOT equivalent to the behavior of e.g.Button()!
|
// Important: this can be useful but it is NOT equivalent to the behavior of e.g.Button()!
|
||||||
// Most widgets have specific reactions based on mouse-up/down state, mouse position etc.
|
// Most widgets have specific reactions based on mouse-up/down state, mouse position etc.
|
||||||
bool ImGui::IsItemClicked(ImGuiMouseButton mouse_button)
|
bool ImGui::IsItemClicked(ImGuiMouseButton mouse_button)
|
||||||
{
|
{
|
||||||
@ -5451,7 +5452,7 @@ static void ImGui::RenderWindowOuterBorders(ImGuiWindow* window)
|
|||||||
ImRect border_r = GetResizeBorderRect(window, border_held, rounding, 0.0f);
|
ImRect border_r = GetResizeBorderRect(window, border_held, rounding, 0.0f);
|
||||||
window->DrawList->PathArcTo(ImLerp(border_r.Min, border_r.Max, def.CornerPosN1) + ImVec2(0.5f, 0.5f) + def.InnerDir * rounding, rounding, def.OuterAngle - IM_PI * 0.25f, def.OuterAngle);
|
window->DrawList->PathArcTo(ImLerp(border_r.Min, border_r.Max, def.CornerPosN1) + ImVec2(0.5f, 0.5f) + def.InnerDir * rounding, rounding, def.OuterAngle - IM_PI * 0.25f, def.OuterAngle);
|
||||||
window->DrawList->PathArcTo(ImLerp(border_r.Min, border_r.Max, def.CornerPosN2) + ImVec2(0.5f, 0.5f) + def.InnerDir * rounding, rounding, def.OuterAngle, def.OuterAngle + IM_PI * 0.25f);
|
window->DrawList->PathArcTo(ImLerp(border_r.Min, border_r.Max, def.CornerPosN2) + ImVec2(0.5f, 0.5f) + def.InnerDir * rounding, rounding, def.OuterAngle, def.OuterAngle + IM_PI * 0.25f);
|
||||||
window->DrawList->PathStroke(GetColorU32(ImGuiCol_SeparatorActive), false, ImMax(2.0f, border_size)); // Thicker than usual
|
window->DrawList->PathStroke(GetColorU32(ImGuiCol_SeparatorActive), 0, ImMax(2.0f, border_size)); // Thicker than usual
|
||||||
}
|
}
|
||||||
if (g.Style.FrameBorderSize > 0 && !(window->Flags & ImGuiWindowFlags_NoTitleBar))
|
if (g.Style.FrameBorderSize > 0 && !(window->Flags & ImGuiWindowFlags_NoTitleBar))
|
||||||
{
|
{
|
||||||
@ -11246,7 +11247,7 @@ void ImGui::DebugNodeDrawList(ImGuiWindow* window, const ImDrawList* draw_list,
|
|||||||
{
|
{
|
||||||
ImDrawListFlags backup_flags = fg_draw_list->Flags;
|
ImDrawListFlags backup_flags = fg_draw_list->Flags;
|
||||||
fg_draw_list->Flags &= ~ImDrawListFlags_AntiAliasedLines; // Disable AA on triangle outlines is more readable for very large and thin triangles.
|
fg_draw_list->Flags &= ~ImDrawListFlags_AntiAliasedLines; // Disable AA on triangle outlines is more readable for very large and thin triangles.
|
||||||
fg_draw_list->AddPolyline(triangle, 3, IM_COL32(255, 255, 0, 255), true, 1.0f);
|
fg_draw_list->AddPolyline(triangle, 3, IM_COL32(255, 255, 0, 255), ImDrawFlags_Closed, 1.0f);
|
||||||
fg_draw_list->Flags = backup_flags;
|
fg_draw_list->Flags = backup_flags;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -11273,7 +11274,7 @@ void ImGui::DebugNodeDrawCmdShowMeshAndBoundingBox(ImDrawList* out_draw_list, co
|
|||||||
for (int n = 0; n < 3; n++, idx_n++)
|
for (int n = 0; n < 3; n++, idx_n++)
|
||||||
vtxs_rect.Add((triangle[n] = vtx_buffer[idx_buffer ? idx_buffer[idx_n] : idx_n].pos));
|
vtxs_rect.Add((triangle[n] = vtx_buffer[idx_buffer ? idx_buffer[idx_n] : idx_n].pos));
|
||||||
if (show_mesh)
|
if (show_mesh)
|
||||||
out_draw_list->AddPolyline(triangle, 3, IM_COL32(255, 255, 0, 255), true, 1.0f); // In yellow: mesh triangles
|
out_draw_list->AddPolyline(triangle, 3, IM_COL32(255, 255, 0, 255), ImDrawFlags_Closed, 1.0f); // In yellow: mesh triangles
|
||||||
}
|
}
|
||||||
// Draw bounding boxes
|
// Draw bounding boxes
|
||||||
if (show_aabb)
|
if (show_aabb)
|
||||||
@ -11343,7 +11344,7 @@ void ImGui::DebugNodeViewport(ImGuiViewportP* viewport)
|
|||||||
viewport->Pos.x, viewport->Pos.y, viewport->Size.x, viewport->Size.y,
|
viewport->Pos.x, viewport->Pos.y, viewport->Size.x, viewport->Size.y,
|
||||||
viewport->WorkOffsetMin.x, viewport->WorkOffsetMin.y, viewport->WorkOffsetMax.x, viewport->WorkOffsetMax.y);
|
viewport->WorkOffsetMin.x, viewport->WorkOffsetMin.y, viewport->WorkOffsetMax.x, viewport->WorkOffsetMax.y);
|
||||||
BulletText("Flags: 0x%04X =%s%s%s", viewport->Flags,
|
BulletText("Flags: 0x%04X =%s%s%s", viewport->Flags,
|
||||||
(flags & ImGuiViewportFlags_IsPlatformWindow) ? " IsPlatformWindow" : "",
|
(flags & ImGuiViewportFlags_IsPlatformWindow) ? " IsPlatformWindow" : "",
|
||||||
(flags & ImGuiViewportFlags_IsPlatformMonitor) ? " IsPlatformMonitor" : "",
|
(flags & ImGuiViewportFlags_IsPlatformMonitor) ? " IsPlatformMonitor" : "",
|
||||||
(flags & ImGuiViewportFlags_OwnedByApp) ? " OwnedByApp" : "");
|
(flags & ImGuiViewportFlags_OwnedByApp) ? " OwnedByApp" : "");
|
||||||
for (int layer_i = 0; layer_i < IM_ARRAYSIZE(viewport->DrawDataBuilder.Layers); layer_i++)
|
for (int layer_i = 0; layer_i < IM_ARRAYSIZE(viewport->DrawDataBuilder.Layers); layer_i++)
|
||||||
|
20
imgui.h
20
imgui.h
@ -30,7 +30,7 @@ Index of this file:
|
|||||||
// [SECTION] Misc data structures (ImGuiInputTextCallbackData, ImGuiSizeCallbackData, ImGuiPayload, ImGuiTableSortSpecs, ImGuiTableColumnSortSpecs)
|
// [SECTION] Misc data structures (ImGuiInputTextCallbackData, ImGuiSizeCallbackData, ImGuiPayload, ImGuiTableSortSpecs, ImGuiTableColumnSortSpecs)
|
||||||
// [SECTION] Obsolete functions
|
// [SECTION] Obsolete functions
|
||||||
// [SECTION] Helpers (ImGuiOnceUponAFrame, ImGuiTextFilter, ImGuiTextBuffer, ImGuiStorage, ImGuiListClipper, ImColor)
|
// [SECTION] Helpers (ImGuiOnceUponAFrame, ImGuiTextFilter, ImGuiTextBuffer, ImGuiStorage, ImGuiListClipper, ImColor)
|
||||||
// [SECTION] Drawing API (ImDrawCallback, ImDrawCmd, ImDrawIdx, ImDrawVert, ImDrawChannel, ImDrawListSplitter, ImDrawListFlags, ImDrawList, ImDrawData)
|
// [SECTION] Drawing API (ImDrawCallback, ImDrawCmd, ImDrawIdx, ImDrawVert, ImDrawChannel, ImDrawListSplitter, ImDrawFlags, ImDrawListFlags, ImDrawList, ImDrawData)
|
||||||
// [SECTION] Font API (ImFontConfig, ImFontGlyph, ImFontGlyphRangesBuilder, ImFontAtlasFlags, ImFontAtlas, ImFont)
|
// [SECTION] Font API (ImFontConfig, ImFontGlyph, ImFontGlyphRangesBuilder, ImFontAtlasFlags, ImFontAtlas, ImFont)
|
||||||
// [SECTION] Viewports (ImGuiViewportFlags, ImGuiViewport)
|
// [SECTION] Viewports (ImGuiViewportFlags, ImGuiViewport)
|
||||||
|
|
||||||
@ -162,8 +162,9 @@ typedef int ImGuiMouseCursor; // -> enum ImGuiMouseCursor_ // Enum: A
|
|||||||
typedef int ImGuiSortDirection; // -> enum ImGuiSortDirection_ // Enum: A sorting direction (ascending or descending)
|
typedef int ImGuiSortDirection; // -> enum ImGuiSortDirection_ // Enum: A sorting direction (ascending or descending)
|
||||||
typedef int ImGuiStyleVar; // -> enum ImGuiStyleVar_ // Enum: A variable identifier for styling
|
typedef int ImGuiStyleVar; // -> enum ImGuiStyleVar_ // Enum: A variable identifier for styling
|
||||||
typedef int ImGuiTableBgTarget; // -> enum ImGuiTableBgTarget_ // Enum: A color target for TableSetBgColor()
|
typedef int ImGuiTableBgTarget; // -> enum ImGuiTableBgTarget_ // Enum: A color target for TableSetBgColor()
|
||||||
typedef int ImDrawCornerFlags; // -> enum ImDrawCornerFlags_ // Flags: for ImDrawList::AddRect(), AddRectFilled() etc.
|
typedef int ImDrawCornerFlags; // -> enum ImDrawCornerFlags_ // Flags: for ImDrawList functions: AddRect(), AddRectFilled() etc.
|
||||||
typedef int ImDrawListFlags; // -> enum ImDrawListFlags_ // Flags: for ImDrawList
|
typedef int ImDrawFlags; // -> enum ImDrawFlags_ // Flags: for ImDrawList functions: AddPolyline(), PathStroke() etc.
|
||||||
|
typedef int ImDrawListFlags; // -> enum ImDrawListFlags_ // Flags: for ImDrawList instance
|
||||||
typedef int ImFontAtlasFlags; // -> enum ImFontAtlasFlags_ // Flags: for ImFontAtlas build
|
typedef int ImFontAtlasFlags; // -> enum ImFontAtlasFlags_ // Flags: for ImFontAtlas build
|
||||||
typedef int ImGuiBackendFlags; // -> enum ImGuiBackendFlags_ // Flags: for io.BackendFlags
|
typedef int ImGuiBackendFlags; // -> enum ImGuiBackendFlags_ // Flags: for io.BackendFlags
|
||||||
typedef int ImGuiButtonFlags; // -> enum ImGuiButtonFlags_ // Flags: for InvisibleButton()
|
typedef int ImGuiButtonFlags; // -> enum ImGuiButtonFlags_ // Flags: for InvisibleButton()
|
||||||
@ -2336,7 +2337,14 @@ enum ImDrawCornerFlags_
|
|||||||
ImDrawCornerFlags_All = 0xF // In your function calls you may use ~0 (= all bits sets) instead of ImDrawCornerFlags_All, as a convenience
|
ImDrawCornerFlags_All = 0xF // In your function calls you may use ~0 (= all bits sets) instead of ImDrawCornerFlags_All, as a convenience
|
||||||
};
|
};
|
||||||
|
|
||||||
// Flags for ImDrawList. Those are set automatically by ImGui:: functions from ImGuiIO settings, and generally not manipulated directly.
|
// Flags for some ImDrawList functions
|
||||||
|
enum ImDrawFlags_
|
||||||
|
{
|
||||||
|
ImDrawFlags_None = 0,
|
||||||
|
ImDrawFlags_Closed = 1 << 0 // PathStroke(), AddPolyline(): specify that (LEGACY: this must always stay == 1 to be backward compatible with old API using a bool)
|
||||||
|
};
|
||||||
|
|
||||||
|
// Flags for ImDrawList instance. Those are set automatically by ImGui:: functions from ImGuiIO settings, and generally not manipulated directly.
|
||||||
// It is however possible to temporarily alter flags between calls to ImDrawList:: functions.
|
// It is however possible to temporarily alter flags between calls to ImDrawList:: functions.
|
||||||
enum ImDrawListFlags_
|
enum ImDrawListFlags_
|
||||||
{
|
{
|
||||||
@ -2409,7 +2417,7 @@ struct ImDrawList
|
|||||||
IMGUI_API void AddNgonFilled(const ImVec2& center, float radius, ImU32 col, int num_segments);
|
IMGUI_API void AddNgonFilled(const ImVec2& center, float radius, ImU32 col, int num_segments);
|
||||||
IMGUI_API void AddText(const ImVec2& pos, ImU32 col, const char* text_begin, const char* text_end = NULL);
|
IMGUI_API void AddText(const ImVec2& pos, ImU32 col, const char* text_begin, const char* text_end = NULL);
|
||||||
IMGUI_API void AddText(const ImFont* font, float font_size, const ImVec2& pos, ImU32 col, const char* text_begin, const char* text_end = NULL, float wrap_width = 0.0f, const ImVec4* cpu_fine_clip_rect = NULL);
|
IMGUI_API void AddText(const ImFont* font, float font_size, const ImVec2& pos, ImU32 col, const char* text_begin, const char* text_end = NULL, float wrap_width = 0.0f, const ImVec4* cpu_fine_clip_rect = NULL);
|
||||||
IMGUI_API void AddPolyline(const ImVec2* points, int num_points, ImU32 col, bool closed, float thickness);
|
IMGUI_API void AddPolyline(const ImVec2* points, int num_points, ImU32 col, ImDrawFlags flags, float thickness);
|
||||||
IMGUI_API void AddConvexPolyFilled(const ImVec2* points, int num_points, ImU32 col); // Note: Anti-aliased filling requires points to be in clockwise order.
|
IMGUI_API void AddConvexPolyFilled(const ImVec2* points, int num_points, ImU32 col); // Note: Anti-aliased filling requires points to be in clockwise order.
|
||||||
IMGUI_API void AddBezierCubic(const ImVec2& p1, const ImVec2& p2, const ImVec2& p3, const ImVec2& p4, ImU32 col, float thickness, int num_segments = 0); // Cubic Bezier (4 control points)
|
IMGUI_API void AddBezierCubic(const ImVec2& p1, const ImVec2& p2, const ImVec2& p3, const ImVec2& p4, ImU32 col, float thickness, int num_segments = 0); // Cubic Bezier (4 control points)
|
||||||
IMGUI_API void AddBezierQuadratic(const ImVec2& p1, const ImVec2& p2, const ImVec2& p3, ImU32 col, float thickness, int num_segments = 0); // Quadratic Bezier (3 control points)
|
IMGUI_API void AddBezierQuadratic(const ImVec2& p1, const ImVec2& p2, const ImVec2& p3, ImU32 col, float thickness, int num_segments = 0); // Quadratic Bezier (3 control points)
|
||||||
@ -2427,7 +2435,7 @@ struct ImDrawList
|
|||||||
inline void PathLineTo(const ImVec2& pos) { _Path.push_back(pos); }
|
inline void PathLineTo(const ImVec2& pos) { _Path.push_back(pos); }
|
||||||
inline void PathLineToMergeDuplicate(const ImVec2& pos) { if (_Path.Size == 0 || memcmp(&_Path.Data[_Path.Size - 1], &pos, 8) != 0) _Path.push_back(pos); }
|
inline void PathLineToMergeDuplicate(const ImVec2& pos) { if (_Path.Size == 0 || memcmp(&_Path.Data[_Path.Size - 1], &pos, 8) != 0) _Path.push_back(pos); }
|
||||||
inline void PathFillConvex(ImU32 col) { AddConvexPolyFilled(_Path.Data, _Path.Size, col); _Path.Size = 0; } // Note: Anti-aliased filling requires points to be in clockwise order.
|
inline void PathFillConvex(ImU32 col) { AddConvexPolyFilled(_Path.Data, _Path.Size, col); _Path.Size = 0; } // Note: Anti-aliased filling requires points to be in clockwise order.
|
||||||
inline void PathStroke(ImU32 col, bool closed, float thickness = 1.0f) { AddPolyline(_Path.Data, _Path.Size, col, closed, thickness); _Path.Size = 0; }
|
inline void PathStroke(ImU32 col, ImDrawFlags flags = 0, float thickness = 1.0f) { AddPolyline(_Path.Data, _Path.Size, col, flags, thickness); _Path.Size = 0; }
|
||||||
IMGUI_API void PathArcTo(const ImVec2& center, float radius, float a_min, float a_max, int num_segments = 10);
|
IMGUI_API void PathArcTo(const ImVec2& center, float radius, float a_min, float a_max, int num_segments = 10);
|
||||||
IMGUI_API void PathArcToFast(const ImVec2& center, float radius, int a_min_of_12, int a_max_of_12); // Use precomputed angles for a 12 steps circle
|
IMGUI_API void PathArcToFast(const ImVec2& center, float radius, int a_min_of_12, int a_max_of_12); // Use precomputed angles for a 12 steps circle
|
||||||
IMGUI_API void PathBezierCubicCurveTo(const ImVec2& p2, const ImVec2& p3, const ImVec2& p4, int num_segments = 0); // Cubic Bezier (4 control points)
|
IMGUI_API void PathBezierCubicCurveTo(const ImVec2& p2, const ImVec2& p3, const ImVec2& p4, int num_segments = 0); // Cubic Bezier (4 control points)
|
||||||
|
@ -689,11 +689,12 @@ void ImDrawList::PrimQuadUV(const ImVec2& a, const ImVec2& b, const ImVec2& c, c
|
|||||||
|
|
||||||
// TODO: Thickness anti-aliased lines cap are missing their AA fringe.
|
// TODO: Thickness anti-aliased lines cap are missing their AA fringe.
|
||||||
// We avoid using the ImVec2 math operators here to reduce cost to a minimum for debug/non-inlined builds.
|
// We avoid using the ImVec2 math operators here to reduce cost to a minimum for debug/non-inlined builds.
|
||||||
void ImDrawList::AddPolyline(const ImVec2* points, const int points_count, ImU32 col, bool closed, float thickness)
|
void ImDrawList::AddPolyline(const ImVec2* points, const int points_count, ImU32 col, ImDrawFlags flags, float thickness)
|
||||||
{
|
{
|
||||||
if (points_count < 2)
|
if (points_count < 2)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
const bool closed = (flags & ImDrawFlags_Closed) != 0;
|
||||||
const ImVec2 opaque_uv = _Data->TexUvWhitePixel;
|
const ImVec2 opaque_uv = _Data->TexUvWhitePixel;
|
||||||
const int count = closed ? points_count : points_count - 1; // The number of line segments we need to draw
|
const int count = closed ? points_count : points_count - 1; // The number of line segments we need to draw
|
||||||
const bool thick_line = (thickness > _FringeScale);
|
const bool thick_line = (thickness > _FringeScale);
|
||||||
@ -1192,7 +1193,7 @@ void ImDrawList::AddLine(const ImVec2& p1, const ImVec2& p2, ImU32 col, float th
|
|||||||
return;
|
return;
|
||||||
PathLineTo(p1 + ImVec2(0.5f, 0.5f));
|
PathLineTo(p1 + ImVec2(0.5f, 0.5f));
|
||||||
PathLineTo(p2 + ImVec2(0.5f, 0.5f));
|
PathLineTo(p2 + ImVec2(0.5f, 0.5f));
|
||||||
PathStroke(col, false, thickness);
|
PathStroke(col, 0, thickness);
|
||||||
}
|
}
|
||||||
|
|
||||||
// p_min = upper-left, p_max = lower-right
|
// p_min = upper-left, p_max = lower-right
|
||||||
@ -1205,7 +1206,7 @@ void ImDrawList::AddRect(const ImVec2& p_min, const ImVec2& p_max, ImU32 col, fl
|
|||||||
PathRect(p_min + ImVec2(0.50f, 0.50f), p_max - ImVec2(0.50f, 0.50f), rounding, rounding_corners);
|
PathRect(p_min + ImVec2(0.50f, 0.50f), p_max - ImVec2(0.50f, 0.50f), rounding, rounding_corners);
|
||||||
else
|
else
|
||||||
PathRect(p_min + ImVec2(0.50f, 0.50f), p_max - ImVec2(0.49f, 0.49f), rounding, rounding_corners); // Better looking lower-right corner and rounded non-AA shapes.
|
PathRect(p_min + ImVec2(0.50f, 0.50f), p_max - ImVec2(0.49f, 0.49f), rounding, rounding_corners); // Better looking lower-right corner and rounded non-AA shapes.
|
||||||
PathStroke(col, true, thickness);
|
PathStroke(col, ImDrawFlags_Closed, thickness);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImDrawList::AddRectFilled(const ImVec2& p_min, const ImVec2& p_max, ImU32 col, float rounding, ImDrawCornerFlags rounding_corners)
|
void ImDrawList::AddRectFilled(const ImVec2& p_min, const ImVec2& p_max, ImU32 col, float rounding, ImDrawCornerFlags rounding_corners)
|
||||||
@ -1249,7 +1250,7 @@ void ImDrawList::AddQuad(const ImVec2& p1, const ImVec2& p2, const ImVec2& p3, c
|
|||||||
PathLineTo(p2);
|
PathLineTo(p2);
|
||||||
PathLineTo(p3);
|
PathLineTo(p3);
|
||||||
PathLineTo(p4);
|
PathLineTo(p4);
|
||||||
PathStroke(col, true, thickness);
|
PathStroke(col, ImDrawFlags_Closed, thickness);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImDrawList::AddQuadFilled(const ImVec2& p1, const ImVec2& p2, const ImVec2& p3, const ImVec2& p4, ImU32 col)
|
void ImDrawList::AddQuadFilled(const ImVec2& p1, const ImVec2& p2, const ImVec2& p3, const ImVec2& p4, ImU32 col)
|
||||||
@ -1272,7 +1273,7 @@ void ImDrawList::AddTriangle(const ImVec2& p1, const ImVec2& p2, const ImVec2& p
|
|||||||
PathLineTo(p1);
|
PathLineTo(p1);
|
||||||
PathLineTo(p2);
|
PathLineTo(p2);
|
||||||
PathLineTo(p3);
|
PathLineTo(p3);
|
||||||
PathStroke(col, true, thickness);
|
PathStroke(col, ImDrawFlags_Closed, thickness);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImDrawList::AddTriangleFilled(const ImVec2& p1, const ImVec2& p2, const ImVec2& p3, ImU32 col)
|
void ImDrawList::AddTriangleFilled(const ImVec2& p1, const ImVec2& p2, const ImVec2& p3, ImU32 col)
|
||||||
@ -1309,7 +1310,7 @@ void ImDrawList::AddCircle(const ImVec2& center, float radius, ImU32 col, int nu
|
|||||||
PathArcToFast(center, radius - 0.5f, 0, 12 - 1);
|
PathArcToFast(center, radius - 0.5f, 0, 12 - 1);
|
||||||
else
|
else
|
||||||
PathArcTo(center, radius - 0.5f, 0.0f, a_max, num_segments - 1);
|
PathArcTo(center, radius - 0.5f, 0.0f, a_max, num_segments - 1);
|
||||||
PathStroke(col, true, thickness);
|
PathStroke(col, ImDrawFlags_Closed, thickness);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImDrawList::AddCircleFilled(const ImVec2& center, float radius, ImU32 col, int num_segments)
|
void ImDrawList::AddCircleFilled(const ImVec2& center, float radius, ImU32 col, int num_segments)
|
||||||
@ -1347,7 +1348,7 @@ void ImDrawList::AddNgon(const ImVec2& center, float radius, ImU32 col, int num_
|
|||||||
// Because we are filling a closed shape we remove 1 from the count of segments/points
|
// Because we are filling a closed shape we remove 1 from the count of segments/points
|
||||||
const float a_max = (IM_PI * 2.0f) * ((float)num_segments - 1.0f) / (float)num_segments;
|
const float a_max = (IM_PI * 2.0f) * ((float)num_segments - 1.0f) / (float)num_segments;
|
||||||
PathArcTo(center, radius - 0.5f, 0.0f, a_max, num_segments - 1);
|
PathArcTo(center, radius - 0.5f, 0.0f, a_max, num_segments - 1);
|
||||||
PathStroke(col, true, thickness);
|
PathStroke(col, ImDrawFlags_Closed, thickness);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Guaranteed to honor 'num_segments'
|
// Guaranteed to honor 'num_segments'
|
||||||
@ -1370,7 +1371,7 @@ void ImDrawList::AddBezierCubic(const ImVec2& p1, const ImVec2& p2, const ImVec2
|
|||||||
|
|
||||||
PathLineTo(p1);
|
PathLineTo(p1);
|
||||||
PathBezierCubicCurveTo(p2, p3, p4, num_segments);
|
PathBezierCubicCurveTo(p2, p3, p4, num_segments);
|
||||||
PathStroke(col, false, thickness);
|
PathStroke(col, 0, thickness);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Quadratic Bezier takes 3 controls points
|
// Quadratic Bezier takes 3 controls points
|
||||||
@ -1381,7 +1382,7 @@ void ImDrawList::AddBezierQuadratic(const ImVec2& p1, const ImVec2& p2, const Im
|
|||||||
|
|
||||||
PathLineTo(p1);
|
PathLineTo(p1);
|
||||||
PathBezierQuadraticCurveTo(p2, p3, num_segments);
|
PathBezierQuadraticCurveTo(p2, p3, num_segments);
|
||||||
PathStroke(col, false, thickness);
|
PathStroke(col, 0, thickness);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImDrawList::AddText(const ImFont* font, float font_size, const ImVec2& pos, ImU32 col, const char* text_begin, const char* text_end, float wrap_width, const ImVec4* cpu_fine_clip_rect)
|
void ImDrawList::AddText(const ImFont* font, float font_size, const ImVec2& pos, ImU32 col, const char* text_begin, const char* text_end, float wrap_width, const ImVec4* cpu_fine_clip_rect)
|
||||||
@ -2534,7 +2535,7 @@ static void ImFontAtlasBuildRenderLinesTexData(ImFontAtlas* atlas)
|
|||||||
unsigned char* write_ptr = &atlas->TexPixelsAlpha8[r->X + ((r->Y + y) * atlas->TexWidth)];
|
unsigned char* write_ptr = &atlas->TexPixelsAlpha8[r->X + ((r->Y + y) * atlas->TexWidth)];
|
||||||
for (unsigned int i = 0; i < pad_left; i++)
|
for (unsigned int i = 0; i < pad_left; i++)
|
||||||
*(write_ptr + i) = 0x00;
|
*(write_ptr + i) = 0x00;
|
||||||
|
|
||||||
for (unsigned int i = 0; i < line_width; i++)
|
for (unsigned int i = 0; i < line_width; i++)
|
||||||
*(write_ptr + pad_left + i) = 0xFF;
|
*(write_ptr + pad_left + i) = 0xFF;
|
||||||
|
|
||||||
@ -2546,7 +2547,7 @@ static void ImFontAtlasBuildRenderLinesTexData(ImFontAtlas* atlas)
|
|||||||
unsigned int* write_ptr = &atlas->TexPixelsRGBA32[r->X + ((r->Y + y) * atlas->TexWidth)];
|
unsigned int* write_ptr = &atlas->TexPixelsRGBA32[r->X + ((r->Y + y) * atlas->TexWidth)];
|
||||||
for (unsigned int i = 0; i < pad_left; i++)
|
for (unsigned int i = 0; i < pad_left; i++)
|
||||||
*(write_ptr + i) = IM_COL32_BLACK_TRANS;
|
*(write_ptr + i) = IM_COL32_BLACK_TRANS;
|
||||||
|
|
||||||
for (unsigned int i = 0; i < line_width; i++)
|
for (unsigned int i = 0; i < line_width; i++)
|
||||||
*(write_ptr + pad_left + i) = IM_COL32_WHITE;
|
*(write_ptr + pad_left + i) = IM_COL32_WHITE;
|
||||||
|
|
||||||
@ -3584,7 +3585,7 @@ void ImGui::RenderCheckMark(ImDrawList* draw_list, ImVec2 pos, ImU32 col, float
|
|||||||
draw_list->PathLineTo(ImVec2(bx - third, by - third));
|
draw_list->PathLineTo(ImVec2(bx - third, by - third));
|
||||||
draw_list->PathLineTo(ImVec2(bx, by));
|
draw_list->PathLineTo(ImVec2(bx, by));
|
||||||
draw_list->PathLineTo(ImVec2(bx + third * 2.0f, by - third * 2.0f));
|
draw_list->PathLineTo(ImVec2(bx + third * 2.0f, by - third * 2.0f));
|
||||||
draw_list->PathStroke(col, false, thickness);
|
draw_list->PathStroke(col, 0, thickness);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImGui::RenderMouseCursor(ImDrawList* draw_list, ImVec2 pos, float scale, ImGuiMouseCursor mouse_cursor, ImU32 col_fill, ImU32 col_border, ImU32 col_shadow)
|
void ImGui::RenderMouseCursor(ImDrawList* draw_list, ImVec2 pos, float scale, ImGuiMouseCursor mouse_cursor, ImU32 col_fill, ImU32 col_border, ImU32 col_shadow)
|
||||||
|
@ -5231,7 +5231,7 @@ bool ImGui::ColorPicker4(const char* label, float col[4], ImGuiColorEditFlags fl
|
|||||||
const float a1 = (n+1.0f)/6.0f * 2.0f * IM_PI + aeps;
|
const float a1 = (n+1.0f)/6.0f * 2.0f * IM_PI + aeps;
|
||||||
const int vert_start_idx = draw_list->VtxBuffer.Size;
|
const int vert_start_idx = draw_list->VtxBuffer.Size;
|
||||||
draw_list->PathArcTo(wheel_center, (wheel_r_inner + wheel_r_outer)*0.5f, a0, a1, segment_per_arc);
|
draw_list->PathArcTo(wheel_center, (wheel_r_inner + wheel_r_outer)*0.5f, a0, a1, segment_per_arc);
|
||||||
draw_list->PathStroke(col_white, false, wheel_thickness);
|
draw_list->PathStroke(col_white, 0, wheel_thickness);
|
||||||
const int vert_end_idx = draw_list->VtxBuffer.Size;
|
const int vert_end_idx = draw_list->VtxBuffer.Size;
|
||||||
|
|
||||||
// Paint colors over existing vertices
|
// Paint colors over existing vertices
|
||||||
@ -7890,7 +7890,7 @@ void ImGui::TabItemBackground(ImDrawList* draw_list, const ImRect& bb, ImGuiTabI
|
|||||||
draw_list->PathArcToFast(ImVec2(bb.Min.x + rounding + 0.5f, y1 + rounding + 0.5f), rounding, 6, 9);
|
draw_list->PathArcToFast(ImVec2(bb.Min.x + rounding + 0.5f, y1 + rounding + 0.5f), rounding, 6, 9);
|
||||||
draw_list->PathArcToFast(ImVec2(bb.Max.x - rounding - 0.5f, y1 + rounding + 0.5f), rounding, 9, 12);
|
draw_list->PathArcToFast(ImVec2(bb.Max.x - rounding - 0.5f, y1 + rounding + 0.5f), rounding, 9, 12);
|
||||||
draw_list->PathLineTo(ImVec2(bb.Max.x - 0.5f, y2));
|
draw_list->PathLineTo(ImVec2(bb.Max.x - 0.5f, y2));
|
||||||
draw_list->PathStroke(GetColorU32(ImGuiCol_Border), false, g.Style.TabBorderSize);
|
draw_list->PathStroke(GetColorU32(ImGuiCol_Border), 0, g.Style.TabBorderSize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user