Library draw call sites match 1.93: AddLineH/AddLineV + StrokeCenterBiased/StrokeInside (window/menu borders, separators, text cursor), tab border PathStroke, check mark AALineEnds, CloseButton/TreeNode lines/ColorButton/alpha checkerboard 1.93, Ctrl+Tab highlight AddRect arg order, metrics AA push/pop

This commit is contained in:
4DBug
2026-10-15 07:24:13 -05:00
parent 9872d43fd6
commit 93a3c4faf5
10 changed files with 631 additions and 673 deletions
+1 -1
View File
@@ -1 +1 @@
[[46, "imgui.lua"], [21461, "imgui_demo.lua"], [33313, "imgui_draw.lua"], [40829, "imgui_h.lua"], [43735, "imgui_impl_roblox.lua"], [45383, "imgui_impl_roblox_fonts.lua"], [51786, "imgui_internal.lua"], [55495, "imgui_tables.lua"], [60554, "imgui_widgets.lua"], [72543, "imstb_rectpack.lua"], [73207, "imstb_textedit.lua"], [74749, "imstb_truetype.lua"], [77537, "imstd_minstdio.lua"]] [[46, "imgui.lua"], [21466, "imgui_demo.lua"], [33318, "imgui_draw.lua"], [40827, "imgui_h.lua"], [43733, "imgui_impl_roblox.lua"], [45381, "imgui_impl_roblox_fonts.lua"], [51784, "imgui_internal.lua"], [55494, "imgui_tables.lua"], [60553, "imgui_widgets.lua"], [72529, "imstb_rectpack.lua"], [73193, "imstb_textedit.lua"], [74735, "imstb_truetype.lua"], [77523, "imstd_minstdio.lua"]]
+101 -115
View File
@@ -10504,7 +10504,7 @@ local function RenderWindowOuterBorders(window)
if g.Style.FrameBorderSize > 0 and (bit32.band(window.Flags, 1 --[[ImGuiWindowFlags.NoTitleBar]]) == 0) and not window.DockIsActive then if g.Style.FrameBorderSize > 0 and (bit32.band(window.Flags, 1 --[[ImGuiWindowFlags.NoTitleBar]]) == 0) and not window.DockIsActive then
local y = window.Pos.y + window.TitleBarHeight - 1 local y = window.Pos.y + window.TitleBarHeight - 1
window.DrawList:AddLineH(window.Pos.x + border_size * 0.5, window.Pos.x + window.Size.x - border_size * 0.5, y, border_col, g.Style.FrameBorderSize) window.DrawList:AddLineH(window.Pos.x + border_size, window.Pos.x + window.Size.x - border_size, y, border_col, g.Style.FrameBorderSize, 393216 --[[ImDrawFlags.StrokeCenterBiased]])
end end
end end
@@ -10585,7 +10585,7 @@ local function RenderWindowDecorations(window, title_bar_rect, title_bar_is_high
menu_bar_rect:ClipWith(window:Rect()) -- Soft clipping, in particular child window don't have minimum size covering the menu bar so this is useful for them. menu_bar_rect:ClipWith(window:Rect()) -- Soft clipping, in particular child window don't have minimum size covering the menu bar so this is useful for them.
window.DrawList:AddRectFilled(menu_bar_rect.Min, menu_bar_rect.Max, ImGui.GetColorU32(13 --[[ImGuiCol.MenuBarBg]]), (bit32.band(flags, 1 --[[ImGuiWindowFlags.NoTitleBar]]) ~= 0) and window_rounding or 0.0, 48 --[[ImDrawFlags.RoundTop]]) window.DrawList:AddRectFilled(menu_bar_rect.Min, menu_bar_rect.Max, ImGui.GetColorU32(13 --[[ImGuiCol.MenuBarBg]]), (bit32.band(flags, 1 --[[ImGuiWindowFlags.NoTitleBar]]) ~= 0) and window_rounding or 0.0, 48 --[[ImDrawFlags.RoundTop]])
if style.FrameBorderSize > 0.0 and menu_bar_rect.Max.y < window.Pos.y + window.Size.y then if style.FrameBorderSize > 0.0 and menu_bar_rect.Max.y < window.Pos.y + window.Size.y then
window.DrawList:AddLineH(menu_bar_rect.Min.x + window_border_size * 0.5, menu_bar_rect.Max.x - window_border_size * 0.5, menu_bar_rect.Max.y, ImGui.GetColorU32(5 --[[ImGuiCol.Border]]), style.FrameBorderSize) window.DrawList:AddLineH(menu_bar_rect.Min.x + window_border_size, menu_bar_rect.Max.x - window_border_size, menu_bar_rect.Max.y, ImGui.GetColorU32(5 --[[ImGuiCol.Border]]), style.FrameBorderSize, 393216 --[[ImDrawFlags.StrokeCenterBiased]])
end end
end end
@@ -19084,7 +19084,7 @@ function ImGui.RenderDimmedBackgrounds()
window.DrawList:ChannelsMerge() window.DrawList:ChannelsMerge()
if window.DrawList.CmdBuffer.Size == 0 then window.DrawList:AddDrawCmd() end if window.DrawList.CmdBuffer.Size == 0 then window.DrawList:AddDrawCmd() end
window.DrawList:PushClipRect(viewport.Pos, viewport.Pos + viewport.Size) window.DrawList:PushClipRect(viewport.Pos, viewport.Pos + viewport.Size)
window.DrawList:AddRect(bb.Min, bb.Max, ImGui.GetColorU32(60 --[[ImGuiCol.NavWindowingHighlight]], g.NavWindowingHighlightAlpha), window.WindowRounding, 0, 3.0) -- FIXME-DPI window.DrawList:AddRect(bb.Min, bb.Max, ImGui.GetColorU32(60 --[[ImGuiCol.NavWindowingHighlight]], g.NavWindowingHighlightAlpha), window.WindowRounding, 3.0) -- FIXME-DPI
window.DrawList:PopClipRect() window.DrawList:PopClipRect()
end end
end end
@@ -20730,8 +20730,7 @@ function ImGui.DebugNodeDrawList(window, viewport, draw_list, label)
else else
local cr = pcmd.ClipRect local cr = pcmd.ClipRect
local open = ImGui.TreeNode(cmd_n, "DrawCmd:%5d tris, Tex %s, ClipRect (%4.0f,%4.0f)-(%4.0f,%4.0f)", math.floor(pcmd.ElemCount / 3), tostring(pcmd.TexRef and (pcmd.TexRef._TexID or pcmd.TexRef._TexData)), cr.x, cr.y, cr.z, cr.w) local open = ImGui.TreeNode(cmd_n, "DrawCmd:%5d tris, Tex %s, ClipRect (%4.0f,%4.0f)-(%4.0f,%4.0f)", math.floor(pcmd.ElemCount / 3), tostring(pcmd.TexRef and (pcmd.TexRef._TexID or pcmd.TexRef._TexData)), cr.x, cr.y, cr.z, cr.w)
local function ShowMesh(show_mesh, show_aabb) local function ShowMeshImpl(show_mesh, show_aabb)
if not fg_draw_list then return end
local clip_rect = ImRect(cr.x, cr.y, cr.z, cr.w) local clip_rect = ImRect(cr.x, cr.y, cr.z, cr.w)
local vtxs_rect = ImRect(3.4028234663853e+38 --[[FLT_MAX]], 3.4028234663853e+38 --[[FLT_MAX]], -3.4028234663853e+38 --[[FLT_MAX]], -3.4028234663853e+38 --[[FLT_MAX]]) local vtxs_rect = ImRect(3.4028234663853e+38 --[[FLT_MAX]], 3.4028234663853e+38 --[[FLT_MAX]], -3.4028234663853e+38 --[[FLT_MAX]], -3.4028234663853e+38 --[[FLT_MAX]])
local base = pcmd.IdxOffset local base = pcmd.IdxOffset
@@ -20750,6 +20749,12 @@ function ImGui.DebugNodeDrawList(window, viewport, draw_list, label)
fg_draw_list:AddRect(ImTrunc(vtxs_rect.Min), ImTrunc(vtxs_rect.Max), IM_COL32(0, 255, 255, 255)) -- In cyan: bounding box of triangles fg_draw_list:AddRect(ImTrunc(vtxs_rect.Min), ImTrunc(vtxs_rect.Max), IM_COL32(0, 255, 255, 255)) -- In cyan: bounding box of triangles
end end
end end
local function ShowMesh(show_mesh, show_aabb) -- DebugNodeDrawCmdShowMeshAndBoundingBox()
if not fg_draw_list then return end
fg_draw_list:PushDrawFlag(8192 --[[ImDrawFlags.AALines]], false) -- Disable AA on triangle outlines is more readable for very large and thin triangles.
ShowMeshImpl(show_mesh, show_aabb)
fg_draw_list:PopDrawFlag()
end
if ImGui.IsItemHovered() and (cfg.ShowDrawCmdMesh or cfg.ShowDrawCmdBoundingBoxes) then ShowMesh(cfg.ShowDrawCmdMesh, cfg.ShowDrawCmdBoundingBoxes) end if ImGui.IsItemHovered() and (cfg.ShowDrawCmdMesh or cfg.ShowDrawCmdBoundingBoxes) then ShowMesh(cfg.ShowDrawCmdMesh, cfg.ShowDrawCmdBoundingBoxes) end
if open then if open then
ImGui.Selectable(string.format("Mesh: ElemCount: %d, VtxOffset: +%d, IdxOffset: +%d", pcmd.ElemCount, pcmd.VtxOffset, pcmd.IdxOffset)) ImGui.Selectable(string.format("Mesh: ElemCount: %d, VtxOffset: +%d, IdxOffset: +%d", pcmd.ElemCount, pcmd.VtxOffset, pcmd.IdxOffset))
@@ -20778,8 +20783,8 @@ function ImGui.DebugNodeTabBar(tab_bar, label)
if is_active and ImGui.IsItemHovered() then if is_active and ImGui.IsItemHovered() then
local dl = FG(tab_bar.Window) local dl = FG(tab_bar.Window)
dl:AddRect(tab_bar.BarRect.Min, tab_bar.BarRect.Max, IM_COL32(255, 255, 0, 255)) dl:AddRect(tab_bar.BarRect.Min, tab_bar.BarRect.Max, IM_COL32(255, 255, 0, 255))
dl:AddLine(ImVec2(tab_bar.ScrollingRectMinX, tab_bar.BarRect.Min.y), ImVec2(tab_bar.ScrollingRectMinX, tab_bar.BarRect.Max.y), IM_COL32(0, 255, 0, 255)) dl:AddLineV(tab_bar.ScrollingRectMinX, tab_bar.BarRect.Min.y, tab_bar.BarRect.Max.y, IM_COL32(0, 255, 0, 255))
dl:AddLine(ImVec2(tab_bar.ScrollingRectMaxX, tab_bar.BarRect.Min.y), ImVec2(tab_bar.ScrollingRectMaxX, tab_bar.BarRect.Max.y), IM_COL32(0, 255, 0, 255)) dl:AddLineV(tab_bar.ScrollingRectMaxX, tab_bar.BarRect.Min.y, tab_bar.BarRect.Max.y, IM_COL32(0, 255, 0, 255))
end end
if open then if open then
for tab_n, tab in tab_bar.Tabs:iter() do for tab_n, tab in tab_bar.Tabs:iter() do
@@ -40469,7 +40474,7 @@ function ImGui.RenderCheckMark(draw_list, pos, col, sz)
draw_list:PathLineTo(p) draw_list:PathLineTo(p)
p.x = bx + third * 2.0; p.y = by - third * 2.0 p.x = bx + third * 2.0; p.y = by - third * 2.0
draw_list:PathLineTo(p) draw_list:PathLineTo(p)
draw_list:PathStroke(col, thickness) draw_list:PathStroke(col, thickness, 16384 --[[ImDrawFlags.AALineEnds]])
end end
-- Render an arrow. 'pos' is position of the arrow tip. half_sz.x is length from base to tip. half_sz.y is length on each side. -- Render an arrow. 'pos' is position of the arrow tip. half_sz.x is length from base to tip. half_sz.y is length on each side.
@@ -40555,7 +40560,7 @@ function ImGui.RenderRectFilledInRangeH(draw_list, rect, col, fill_x0, fill_x1,
end end
end end
draw_list:PathFillConvex(col) draw_list:PathFillConvex(col, 1024 --[[ImDrawFlags.JoinMiter]])
end end
--- @param r_in ImRect --- @param r_in ImRect
@@ -40589,16 +40594,16 @@ end
-- Helper for ColorPicker4() -- Helper for ColorPicker4()
-- NB: This is rather brittle and will show artifact when rounding this enabled if rounded corners overlap multiple cells. Caller currently responsible for avoiding that. -- NB: This is rather brittle and will show artifact when rounding this enabled if rounded corners overlap multiple cells. Caller currently responsible for avoiding that.
-- Spent a non reasonable amount of time trying to getting this right for ColorButton with rounding+anti-aliasing+ImGuiColorEditFlags_HalfAlphaPreview flag + various grid sizes and offsets, and eventually gave up... probably more reasonable to disable rounding altogether. -- Spent a non reasonable amount of time trying to getting this right for ColorButton with rounding+anti-aliasing+ImGuiColorEditFlags_HalfAlphaPreview flag + various grid sizes and offsets, and eventually gave up... probably more reasonable to disable rounding altogether.
-- FIXME: uses ImGui.GetColorU32
--- @param draw_list ImDrawList --- @param draw_list ImDrawList
--- @param p_min ImVec2 --- @param p_min ImVec2
--- @param p_max ImVec2 --- @param p_max ImVec2
--- @param col ImU32 --- @param col ImU32
--- @param alpha float
--- @param grid_step float --- @param grid_step float
--- @param grid_off ImVec2 --- @param grid_off ImVec2
--- @param rounding? float --- @param rounding? float
--- @param flags? ImDrawFlags --- @param flags? ImDrawFlags
function ImGui.RenderColorRectWithAlphaCheckerboard(draw_list, p_min, p_max, col, grid_step, grid_off, rounding, flags) function ImGui.RenderColorRectWithAlphaCheckerboard(draw_list, p_min, p_max, col, alpha, grid_step, grid_off, rounding, flags)
if rounding == nil then rounding = 0.0 end if rounding == nil then rounding = 0.0 end
if flags == nil then flags = 0 end if flags == nil then flags = 0 end
@@ -40607,60 +40612,53 @@ function ImGui.RenderColorRectWithAlphaCheckerboard(draw_list, p_min, p_max, col
end end
if bit32.rshift(bit32.band(col, 4278190080 --[[IM_COL32_A_MASK]]), 24 --[[IM_COL32_A_SHIFT]]) < 0xFF then if bit32.rshift(bit32.band(col, 4278190080 --[[IM_COL32_A_MASK]]), 24 --[[IM_COL32_A_SHIFT]]) < 0xFF then
local col_bg1 = ImGui.GetColorU32(ImStd.ImAlphaBlendColors(IM_COL32(128, 128, 128, 255), col), nil, true) assert(alpha >= 0.0 and alpha <= 1.0)
local col_bg2 = ImGui.GetColorU32(ImStd.ImAlphaBlendColors(IM_COL32(204, 204, 204, 255), col), nil, true) local a_mask = bit32.lshift(ImTrunc(alpha * 255.0), 24 --[[IM_COL32_A_SHIFT]])
draw_list:AddRectFilled(p_min, p_max, col_bg1, rounding, flags) local col_bg1 = bit32.bor(bit32.band(ImStd.ImAlphaBlendColors(IM_COL32(128, 128, 128, 255), col), bit32.bnot(4278190080 --[[IM_COL32_A_MASK]])), a_mask)
local col_bg2 = bit32.bor(bit32.band(ImStd.ImAlphaBlendColors(IM_COL32(204, 204, 204, 255), col), bit32.bnot(4278190080 --[[IM_COL32_A_MASK]])), a_mask)
local dual_layer = (alpha == 1.0) -- Dual layer is faster but incorrect if blending.
if dual_layer then
draw_list:AddRectFilled(p_min, p_max, col_bg1, rounding, flags)
end
local yi = 0 local yi = 0
local y = p_min.y + grid_off.y local y = p_min.y + grid_off.y
local x_start
local x
local cell_flags
while y < p_max.y do while y < p_max.y do
repeat local y1 = ImClamp(ImTrunc(y), p_min.y, p_max.y)
local y1 = ImClamp(y, p_min.y, p_max.y) local y2 = ImMin(ImTrunc(y + grid_step), p_max.y)
local y2 = ImMin(y + grid_step, p_max.y) if y2 > y1 then
local x_start_off = dual_layer and (((yi + 1) % 2) * grid_step) or 0.0
local x_step = dual_layer and (grid_step * 2.0) or grid_step
local xi = 0
local x = p_min.x + grid_off.x + x_start_off
while x < p_max.x do
local x1 = ImClamp(ImTrunc(x), p_min.x, p_max.x)
local x2 = ImMin(ImTrunc(x + grid_step), p_max.x)
if x2 > x1 then
local cell_flags = 256 --[[ImDrawFlags.RoundNone]] -- FIXME: Could use CalcRoundingFlagsForRectInRect()
if y1 <= p_min.y then
if x1 <= p_min.x then cell_flags = bit32.bor(cell_flags, 16 --[[ImDrawFlags.RoundTopLeft]]) end
if x2 >= p_max.x then cell_flags = bit32.bor(cell_flags, 32 --[[ImDrawFlags.RoundTopRight]]) end
end
if y2 >= p_max.y then
if x1 <= p_min.x then cell_flags = bit32.bor(cell_flags, 64 --[[ImDrawFlags.RoundBottomLeft]]) end
if x2 >= p_max.x then cell_flags = bit32.bor(cell_flags, 128 --[[ImDrawFlags.RoundBottomRight]]) end
end
if y2 <= y1 then -- Combine flags
break if flags == 256 --[[ImDrawFlags.RoundNone]] or cell_flags == 256 --[[ImDrawFlags.RoundNone]] then
cell_flags = 256 --[[ImDrawFlags.RoundNone]]
else
cell_flags = bit32.band(cell_flags, flags)
end
local col_bg
if dual_layer then col_bg = col_bg2 elseif (yi + xi) % 2 == 1 then col_bg = col_bg2 else col_bg = col_bg1 end
draw_list:AddRectFilled(ImVec2(x1, y1), ImVec2(x2, y2), col_bg, rounding, cell_flags)
end
x = x + x_step
xi = xi + 1
end
end end
x_start = p_min.x + grid_off.x + ((yi + 1) % 2) * grid_step
x = x_start
while x < p_max.x do
repeat
local x1 = ImClamp(x, p_min.x, p_max.x)
local x2 = ImMin(x + grid_step, p_max.x)
if x2 <= x1 then
break
end
cell_flags = 256 --[[ImDrawFlags.RoundNone]] -- FIXME: Could use CalcRoundingFlagsForRectInRect()
if y1 <= p_min.y then
if x1 <= p_min.x then cell_flags = bit32.bor(cell_flags, 16 --[[ImDrawFlags.RoundTopLeft]]) end
if x2 >= p_max.x then cell_flags = bit32.bor(cell_flags, 32 --[[ImDrawFlags.RoundTopRight]]) end
end
if y2 >= p_max.y then
if x1 <= p_min.x then cell_flags = bit32.bor(cell_flags, 64 --[[ImDrawFlags.RoundBottomLeft]]) end
if x2 >= p_max.x then cell_flags = bit32.bor(cell_flags, 128 --[[ImDrawFlags.RoundBottomRight]]) end
end
-- Combine flags
if flags == 256 --[[ImDrawFlags.RoundNone]] or cell_flags == 256 --[[ImDrawFlags.RoundNone]] then
cell_flags = 256 --[[ImDrawFlags.RoundNone]]
else
cell_flags = bit32.band(cell_flags, flags)
end
draw_list:AddRectFilled(ImVec2(x1, y1), ImVec2(x2, y2), col_bg2, rounding, cell_flags)
until true
x = x + grid_step * 2.0
end
until true
y = y + grid_step y = y + grid_step
yi = yi + 1 yi = yi + 1
end end
@@ -54293,6 +54291,7 @@ function ImGuiContext(shared_font_atlas) -- TODO: tidy up / complete this struct
DisabledAlphaBackup = 0.0, -- Backup for style.Alpha for BeginDisabled() DisabledAlphaBackup = 0.0, -- Backup for style.Alpha for BeginDisabled()
DisabledStackSize = 0, DisabledStackSize = 0,
MixedValueLabel = "-", -- Value replacement when displaying a mixed value.
ItemFlagsStack = ImVector(), -- Stack for PushItemFlag()/PopItemFlag() - inherited by Begin() ItemFlagsStack = ImVector(), -- Stack for PushItemFlag()/PopItemFlag() - inherited by Begin()
GroupStack = ImVector(), -- Stack for BeginGroup()/EndGroup() - not inherited by Begin() GroupStack = ImVector(), -- Stack for BeginGroup()/EndGroup() - not inherited by Begin()
@@ -61487,7 +61486,7 @@ function ImGui.CloseButton(id, pos)
window.DrawList:AddRectFilled(bb.Min, bb.Max, bg_col) window.DrawList:AddRectFilled(bb.Min, bb.Max, bg_col)
end end
local cross_center = bb:GetCenter() - ImVec2(0.5, 0.5) local cross_center = bb:GetCenter()
local cross_extent = g.FontSize * 0.5 * 0.7071 - 1 local cross_extent = g.FontSize * 0.5 * 0.7071 - 1
local cross_col = ImGui.GetColorU32(0 --[[ImGuiCol.Text]]) local cross_col = ImGui.GetColorU32(0 --[[ImGuiCol.Text]])
local cross_thickness = 1.0 -- FIXME-DPI local cross_thickness = 1.0 -- FIXME-DPI
@@ -61497,32 +61496,6 @@ function ImGui.CloseButton(id, pos)
return pressed return pressed
end end
--- @return bool
function ImGui.CollapseButton(id, pos)
local g = GImGui
local window = g.CurrentWindow
local bb = ImRect(pos, pos + ImVec2(g.FontSize, g.FontSize))
local is_clipped = not ImGui.ItemAdd(bb, id)
local pressed, hovered = ImGui.ButtonBehavior(bb, id)
-- Render
if hovered then
window.DrawList:AddRectFilled(bb.Min, bb.Max, ImGui.GetColorU32(23 --[[ImGuiCol.ButtonHovered]]))
end
if window.Collapsed then
ImGui.RenderArrow(window.DrawList, bb.Min, ImGui.GetColorU32(0 --[[ImGuiCol.Text]]), 1 --[[ImGuiDir.Right]], 1)
else
ImGui.RenderArrow(window.DrawList, bb.Min, ImGui.GetColorU32(0 --[[ImGuiCol.Text]]), 3 --[[ImGuiDir.Down]], 1)
end
return pressed
end
--- @param window ImGuiWindow --- @param window ImGuiWindow
--- @param axis ImGuiAxis --- @param axis ImGuiAxis
--- @return ImGuiID --- @return ImGuiID
@@ -62427,7 +62400,7 @@ function ImGui.SeparatorTextEx(id, label, label_end, extra_w)
local sep1_x1 = pos.x local sep1_x1 = pos.x
local sep2_x2 = bb.Max.x local sep2_x2 = bb.Max.x
local seps_y = ImTrunc((bb.Min.y + bb.Max.y) * 0.5 + 0.999) local seps_y = ImTrunc((bb.Min.y + bb.Max.y) * 0.5) + 1.0
local label_avail_w = ImMax(0.0, sep2_x2 - sep1_x1 - padding.x * 2.0) local label_avail_w = ImMax(0.0, sep2_x2 - sep1_x1 - padding.x * 2.0)
local label_pos = ImVec2(pos.x + padding.x + ImMax(0.0, (label_avail_w - label_size.x - extra_w) * style.SeparatorTextAlign.x), pos.y + text_baseline_y) -- FIXME-ALIGN local label_pos = ImVec2(pos.x + padding.x + ImMax(0.0, (label_avail_w - label_size.x - extra_w) * style.SeparatorTextAlign.x), pos.y + text_baseline_y) -- FIXME-ALIGN
@@ -62442,11 +62415,11 @@ function ImGui.SeparatorTextEx(id, label, label_end, extra_w)
local sep2_x1 = label_pos.x + label_size.x + extra_w + style.ItemSpacing.x local sep2_x1 = label_pos.x + label_size.x + extra_w + style.ItemSpacing.x
if sep1_x2 > sep1_x1 and separator_thickness > 0.0 then if sep1_x2 > sep1_x1 and separator_thickness > 0.0 then
window.DrawList:AddLineH(sep1_x1, sep1_x2, seps_y, separator_col, separator_thickness) window.DrawList:AddLineH(sep1_x1, sep1_x2, seps_y, separator_col, separator_thickness, 393216 --[[ImDrawFlags.StrokeCenterBiased]])
end end
if sep2_x2 > sep2_x1 and separator_thickness > 0.0 then if sep2_x2 > sep2_x1 and separator_thickness > 0.0 then
window.DrawList:AddLineH(sep2_x1, sep2_x2, seps_y, separator_col, separator_thickness) window.DrawList:AddLineH(sep2_x1, sep2_x2, seps_y, separator_col, separator_thickness, 393216 --[[ImDrawFlags.StrokeCenterBiased]])
end end
if g.LogEnabled then if g.LogEnabled then
@@ -62460,7 +62433,7 @@ function ImGui.SeparatorTextEx(id, label, label_end, extra_w)
end end
if separator_thickness > 0.0 then if separator_thickness > 0.0 then
window.DrawList:AddLineH(sep1_x1, sep2_x2, seps_y, separator_col, separator_thickness) window.DrawList:AddLineH(sep1_x1, sep2_x2, seps_y, separator_col, separator_thickness, 393216 --[[ImDrawFlags.StrokeCenterBiased]])
end end
end end
end end
@@ -66789,10 +66762,10 @@ function ImGui.InputTextEx(label, hint, buf, buf_size, size_arg, flags, callback
local cursor_is_visible = (not g.IO.ConfigInputTextCursorBlink) or (state.CursorAnim <= 0.0) or (ImFmod(state.CursorAnim, 1.20) <= 0.80) local cursor_is_visible = (not g.IO.ConfigInputTextCursorBlink) or (state.CursorAnim <= 0.0) or (ImFmod(state.CursorAnim, 1.20) <= 0.80)
local cursor_screen_pos = ImTrunc(draw_pos + cursor_offset - draw_scroll) local cursor_screen_pos = ImTrunc(draw_pos + cursor_offset - draw_scroll)
local cursor_screen_rect = ImRect(cursor_screen_pos.x, cursor_screen_pos.y - g.FontSize + 0.5, cursor_screen_pos.x + 1.0, cursor_screen_pos.y - 1.5) local cursor_screen_rect = ImRect(cursor_screen_pos.x, cursor_screen_pos.y - g.FontSize + 1.0, cursor_screen_pos.x + 1.0, cursor_screen_pos.y - 1.0)
if cursor_is_visible and cursor_screen_rect:Overlaps(clip_rect) then if cursor_is_visible and cursor_screen_rect:Overlaps(clip_rect) then
draw_window.DrawList:AddLineV(cursor_screen_rect.Min.x, cursor_screen_rect.Min.y, cursor_screen_rect.Max.y, ImGui.GetColorU32(34 --[[ImGuiCol.InputTextCursor]]), style.InputTextCursorSize) draw_window.DrawList:AddLineV(cursor_screen_rect.Min.x, cursor_screen_rect.Min.y, cursor_screen_rect.Max.y, ImGui.GetColorU32(34 --[[ImGuiCol.InputTextCursor]]), style.InputTextCursorSize, 131072 --[[ImDrawFlags.StrokeInside]])
end end
-- Notify OS of text input position for advanced IME (-1 x offset so that Windows IME can cover our cursor. Bit of an extra nicety.) -- Notify OS of text input position for advanced IME (-1 x offset so that Windows IME can cover our cursor. Bit of an extra nicety.)
@@ -67670,7 +67643,7 @@ function ImGui.ColorPicker4(label, col, flags, ref_col)
if alpha_bar then if alpha_bar then
local alpha = ImSaturate(col[4]) local alpha = ImSaturate(col[4])
local bar1_bb = ImRect(bar1_pos_x, picker_pos.y, bar1_pos_x + bars_width, picker_pos.y + sv_picker_size) local bar1_bb = ImRect(bar1_pos_x, picker_pos.y, bar1_pos_x + bars_width, picker_pos.y + sv_picker_size)
ImGui.RenderColorRectWithAlphaCheckerboard(draw_list, bar1_bb.Min, bar1_bb.Max, 0, bar1_bb:GetWidth() / 2.0, ImVec2(0.0, 0.0)) ImGui.RenderColorRectWithAlphaCheckerboard(draw_list, bar1_bb.Min, bar1_bb.Max, IM_COL32(0, 0, 0, 0), style.Alpha, bar1_bb:GetWidth() / 2.0, ImVec2(0.0, 0.0))
draw_list:AddRectFilledMultiColor(bar1_bb.Min, bar1_bb.Max, user_col32_striped_of_alpha, user_col32_striped_of_alpha, bit32.band(user_col32_striped_of_alpha, bit32.bnot(4278190080 --[[IM_COL32_A_MASK]])), bit32.band(user_col32_striped_of_alpha, bit32.bnot(4278190080 --[[IM_COL32_A_MASK]]))) draw_list:AddRectFilledMultiColor(bar1_bb.Min, bar1_bb.Max, user_col32_striped_of_alpha, user_col32_striped_of_alpha, bit32.band(user_col32_striped_of_alpha, bit32.bnot(4278190080 --[[IM_COL32_A_MASK]])), bit32.band(user_col32_striped_of_alpha, bit32.bnot(4278190080 --[[IM_COL32_A_MASK]])))
local bar1_line_y = IM_ROUND(picker_pos.y + (1.0 - alpha) * sv_picker_size) local bar1_line_y = IM_ROUND(picker_pos.y + (1.0 - alpha) * sv_picker_size)
@@ -67748,36 +67721,45 @@ function ImGui.ColorButton(desc_id, col, flags, size_arg)
local col_rgb_without_alpha = ImVec4(col_rgb.x, col_rgb.y, col_rgb.z, 1.0) local col_rgb_without_alpha = ImVec4(col_rgb.x, col_rgb.y, col_rgb.z, 1.0)
local grid_step = ImMin(size.x, size.y) / 2.99 local grid_step = ImMin(size.x, size.y) / 2.99
local rounding = ImMin(g.Style.FrameRounding, grid_step * 0.5) local rounding = ImMin(g.Style.FrameRounding, grid_step * 0.5)
local bb_inner = ImRect() local is_mixed = bit32.band(g.LastItemData.ItemFlags, 4096 --[[ImGuiItemFlags.MixedValue]]) ~= 0
ImRect_Copy(bb_inner, bb)
local off = 0.0 local backup_alpha = g.Style.Alpha
if bit32.band(flags, 1024 --[[ImGuiColorEditFlags.NoBorder]]) == 0 then if g.DisabledStackSize > 0 then
off = -0.75 g.Style.Alpha = g.DisabledAlphaBackup -- Cancel out effect of BeginDisabled() for color swatches.
bb_inner:Expand(off)
end end
if bit32.band(flags, 16384 --[[ImGuiColorEditFlags.AlphaPreviewHalf]]) ~= 0 and col_rgb.w < 1.0 then if is_mixed then
local mid_x = IM_ROUND((bb_inner.Min.x + bb_inner.Max.x) * 0.5) window.DrawList:AddRectFilled(bb.Min, bb.Max, ImGui.GetColorU32(7 --[[ImGuiCol.FrameBg]]), rounding)
if bit32.band(flags, 8192 --[[ImGuiColorEditFlags.AlphaNoBg]]) == 0 then ImGui.PushStyleColor(0 --[[ImGuiCol.Text]], g.Style.Colors[1 --[[ImGuiCol.TextDisabled]]]) -- ImGuiCol_TextMixedValue
ImGui.RenderColorRectWithAlphaCheckerboard(window.DrawList, ImVec2(bb_inner.Min.x + grid_step, bb_inner.Min.y), bb_inner.Max, ImGui.GetColorU32(col_rgb), grid_step, ImVec2(-grid_step + off, off), rounding, 160 --[[ImDrawFlags.RoundRight]]) if g.MixedValueLabel ~= nil then
else ImGui.RenderTextClipped(ImVec2(bb.Min.x, bb.Min.y + g.Style.FramePadding.y), bb.Max, g.MixedValueLabel, nil, nil, ImVec2(0.5, 0.0))
window.DrawList:AddRectFilled(ImVec2(bb_inner.Min.x + grid_step, bb_inner.Min.y), bb_inner.Max, ImGui.GetColorU32(col_rgb), rounding, 160 --[[ImDrawFlags.RoundRight]])
end end
window.DrawList:AddRectFilled(bb_inner.Min, ImVec2(mid_x, bb_inner.Max.y), ImGui.GetColorU32(col_rgb_without_alpha), rounding, 80 --[[ImDrawFlags.RoundLeft]]) ImGui.PopStyleColor()
elseif bit32.band(flags, 16384 --[[ImGuiColorEditFlags.AlphaPreviewHalf]]) ~= 0 and col_rgb.w < 1.0 then
local mid_x = IM_ROUND((bb.Min.x + bb.Max.x) * 0.5)
if bit32.band(flags, 8192 --[[ImGuiColorEditFlags.AlphaNoBg]]) == 0 then
ImGui.RenderColorRectWithAlphaCheckerboard(window.DrawList, ImVec2(bb.Min.x + grid_step, bb.Min.y), bb.Max, ImGui.ColorConvertFloat4ToU32(col_rgb), g.Style.Alpha, grid_step, ImVec2(-grid_step, 0.0), rounding, 160 --[[ImDrawFlags.RoundRight]])
else
window.DrawList:AddRectFilled(ImVec2(bb.Min.x + grid_step, bb.Min.y), bb.Max, ImGui.GetColorU32(col_rgb), rounding, 160 --[[ImDrawFlags.RoundRight]])
end
window.DrawList:AddRectFilled(bb.Min, ImVec2(mid_x, bb.Max.y), ImGui.GetColorU32(col_rgb_without_alpha), rounding, 80 --[[ImDrawFlags.RoundLeft]])
else else
-- Because GetColorU32() multiplies by the global style Alpha and we don't want to display a checkerboard if the source code had no alpha -- Because GetColorU32() multiplies by the global style Alpha and we don't want to display a checkerboard if the source code had no alpha
local col_source = (bit32.band(flags, 4096 --[[ImGuiColorEditFlags.AlphaOpaque]]) ~= 0) and col_rgb_without_alpha or col_rgb local col_source = (bit32.band(flags, 4096 --[[ImGuiColorEditFlags.AlphaOpaque]]) ~= 0) and col_rgb_without_alpha or col_rgb
if col_source.w < 1.0 and bit32.band(flags, 8192 --[[ImGuiColorEditFlags.AlphaNoBg]]) == 0 then if col_source.w < 1.0 and bit32.band(flags, 8192 --[[ImGuiColorEditFlags.AlphaNoBg]]) == 0 then
ImGui.RenderColorRectWithAlphaCheckerboard(window.DrawList, bb_inner.Min, bb_inner.Max, ImGui.GetColorU32(col_source), grid_step, ImVec2(off, off), rounding) ImGui.RenderColorRectWithAlphaCheckerboard(window.DrawList, bb.Min, bb.Max, ImGui.ColorConvertFloat4ToU32(col_source), g.Style.Alpha, grid_step, ImVec2(0.0, 0.0), rounding)
else else
window.DrawList:AddRectFilled(bb_inner.Min, bb_inner.Max, ImGui.GetColorU32(col_source), rounding) window.DrawList:AddRectFilled(bb.Min, bb.Max, ImGui.GetColorU32(col_source), rounding)
end end
end end
if g.DisabledStackSize > 0 then
g.Style.Alpha = backup_alpha
end
ImGui.RenderNavCursor(bb, id) ImGui.RenderNavCursor(bb, id)
if bit32.band(flags, 1024 --[[ImGuiColorEditFlags.NoBorder]]) == 0 then if bit32.band(flags, 1024 --[[ImGuiColorEditFlags.NoBorder]]) == 0 then
if g.Style.FrameBorderSize > 0.0 then if g.Style.FrameBorderSize > 0.0 then
ImGui.RenderFrameBorder(bb.Min, bb.Max, rounding) ImGui.RenderFrameBorder(bb.Min, bb.Max, rounding)
else else
window.DrawList:AddRect(bb.Min, bb.Max, ImGui.GetColorU32(7 --[[ImGuiCol.FrameBg]]), rounding) -- Color buttons are often in need of some sort of border window.DrawList:AddRect(bb.Min, bb.Max, ImGui.GetColorU32(7 --[[ImGuiCol.FrameBg]]), rounding, 1.0 * ImTrunc(g.Style._MainScale)) -- Color buttons are often in need of some sort of border -- FIXME-DPI
end end
end end
@@ -68460,23 +68442,27 @@ function ImGui.TreeNodeDrawLineToChildNode(target_pos)
-- FIXME: Could this be simplified using new stroke flags? -- FIXME: Could this be simplified using new stroke flags?
local parent_data = g.TreeNodeStack.Data[g.TreeNodeStack.Size] local parent_data = g.TreeNodeStack.Data[g.TreeNodeStack.Size]
local x1 = ImTrunc(parent_data.DrawLinesX1) local half_size = g.Style.TreeLinesSize * 0.5
local x1 = ImTrunc(parent_data.DrawLinesX1 - half_size) + half_size -- Draw line centered at X1, but snap to pixels boundary.
local x2 = ImTrunc(target_pos.x - g.Style.ItemInnerSpacing.x) local x2 = ImTrunc(target_pos.x - g.Style.ItemInnerSpacing.x)
local y = ImTrunc(target_pos.y) local y = ImTrunc(target_pos.y - half_size) + half_size
local rounding = (g.Style.TreeLinesRounding > 0.0) and ImMin(x2 - x1, g.Style.TreeLinesRounding) or 0.0 local rounding = (g.Style.TreeLinesRounding > 0.0) and ImMin(x2 - x1, g.Style.TreeLinesRounding) or 0.0
parent_data.DrawLinesToNodesY2 = ImMax(parent_data.DrawLinesToNodesY2, y - rounding) parent_data.DrawLinesToNodesY2 = ImMax(parent_data.DrawLinesToNodesY2, y - rounding)
if x1 >= x2 then if x1 >= x2 then
return return
end end
if rounding > 0.0 then if rounding > 0.0 and rounding > half_size then
x1 = x1 + 0.5 + rounding x1 = x1 + rounding
window.DrawList:PathArcToFast(ImVec2(x1, y - rounding), rounding, 6, 3) window.DrawList:PathArcToFast(ImVec2(x1, y - rounding), rounding, 6, 3)
if x1 < x2 then if x1 < x2 then
window.DrawList:PathLineTo(ImVec2(x2, y)) window.DrawList:PathLineTo(ImVec2(x2, y))
end end
window.DrawList:PathStroke(ImGui.GetColorU32(55 --[[ImGuiCol.TreeLines]]), g.Style.TreeLinesSize) window.DrawList:PathStroke(ImGui.GetColorU32(55 --[[ImGuiCol.TreeLines]]), g.Style.TreeLinesSize)
else else
window.DrawList:AddLineH(x1, x2, y, ImGui.GetColorU32(55 --[[ImGuiCol.TreeLines]]), g.Style.TreeLinesSize) -- We use AddLine() instead of AddLineH() as we provide coordinates for line center,
-- in order to make the code use same coordinates for both rounded and non-rounded version. (FIXME-OPT)
x1 = x1 + half_size -- Avoid overdraw
window.DrawList:AddLine(ImVec2(x1, y), ImVec2(x2, y), ImGui.GetColorU32(55 --[[ImGuiCol.TreeLines]]), g.Style.TreeLinesSize)
end end
end end
@@ -72458,7 +72444,7 @@ function ImGui.TabItemBackground(draw_list, bb, flags, col)
draw_list:PathArcToFast(ImVec2(bb.Min.x + rounding, y1 + rounding), rounding, 6, 9) draw_list:PathArcToFast(ImVec2(bb.Min.x + rounding, y1 + rounding), rounding, 6, 9)
draw_list:PathArcToFast(ImVec2(bb.Max.x - rounding, y1 + rounding), rounding, 9, 12) draw_list:PathArcToFast(ImVec2(bb.Max.x - rounding, y1 + rounding), rounding, 9, 12)
draw_list:PathLineTo(ImVec2(bb.Max.x, y2)) draw_list:PathLineTo(ImVec2(bb.Max.x, y2))
draw_list:PathStroke(ImGui.GetColorU32(5 --[[ImGuiCol.Border]]), g.Style.TabBorderSize) draw_list:PathStroke(ImGui.GetColorU32(5 --[[ImGuiCol.Border]]), g.Style.TabBorderSize, 393216 --[[ImDrawFlags.StrokeCenterBiased]]) -- Use _StrokeInside?
end end
end end
+1 -1
View File
@@ -1 +1 @@
[[183, "imgui.lua"], [21598, "imgui_demo.lua"], [33450, "imgui_draw.lua"], [40966, "imgui_h.lua"], [43872, "imgui_impl_love.lua"], [44412, "imgui_internal.lua"], [48121, "imgui_tables.lua"], [53180, "imgui_widgets.lua"], [65169, "imstb_rectpack.lua"], [65833, "imstb_textedit.lua"], [67375, "imstb_truetype.lua"], [70163, "imstd_minstdio.lua"]] [[183, "imgui.lua"], [21603, "imgui_demo.lua"], [33455, "imgui_draw.lua"], [40964, "imgui_h.lua"], [43870, "imgui_impl_love.lua"], [44410, "imgui_internal.lua"], [48120, "imgui_tables.lua"], [53179, "imgui_widgets.lua"], [65155, "imstb_rectpack.lua"], [65819, "imstb_textedit.lua"], [67361, "imstb_truetype.lua"], [70149, "imstd_minstdio.lua"]]
+101 -115
View File
@@ -10641,7 +10641,7 @@ local function RenderWindowOuterBorders(window)
if g.Style.FrameBorderSize > 0 and (bit32.band(window.Flags, 1 --[[ImGuiWindowFlags.NoTitleBar]]) == 0) and not window.DockIsActive then if g.Style.FrameBorderSize > 0 and (bit32.band(window.Flags, 1 --[[ImGuiWindowFlags.NoTitleBar]]) == 0) and not window.DockIsActive then
local y = window.Pos.y + window.TitleBarHeight - 1 local y = window.Pos.y + window.TitleBarHeight - 1
window.DrawList:AddLineH(window.Pos.x + border_size * 0.5, window.Pos.x + window.Size.x - border_size * 0.5, y, border_col, g.Style.FrameBorderSize) window.DrawList:AddLineH(window.Pos.x + border_size, window.Pos.x + window.Size.x - border_size, y, border_col, g.Style.FrameBorderSize, 393216 --[[ImDrawFlags.StrokeCenterBiased]])
end end
end end
@@ -10722,7 +10722,7 @@ local function RenderWindowDecorations(window, title_bar_rect, title_bar_is_high
menu_bar_rect:ClipWith(window:Rect()) -- Soft clipping, in particular child window don't have minimum size covering the menu bar so this is useful for them. menu_bar_rect:ClipWith(window:Rect()) -- Soft clipping, in particular child window don't have minimum size covering the menu bar so this is useful for them.
window.DrawList:AddRectFilled(menu_bar_rect.Min, menu_bar_rect.Max, ImGui.GetColorU32(13 --[[ImGuiCol.MenuBarBg]]), (bit32.band(flags, 1 --[[ImGuiWindowFlags.NoTitleBar]]) ~= 0) and window_rounding or 0.0, 48 --[[ImDrawFlags.RoundTop]]) window.DrawList:AddRectFilled(menu_bar_rect.Min, menu_bar_rect.Max, ImGui.GetColorU32(13 --[[ImGuiCol.MenuBarBg]]), (bit32.band(flags, 1 --[[ImGuiWindowFlags.NoTitleBar]]) ~= 0) and window_rounding or 0.0, 48 --[[ImDrawFlags.RoundTop]])
if style.FrameBorderSize > 0.0 and menu_bar_rect.Max.y < window.Pos.y + window.Size.y then if style.FrameBorderSize > 0.0 and menu_bar_rect.Max.y < window.Pos.y + window.Size.y then
window.DrawList:AddLineH(menu_bar_rect.Min.x + window_border_size * 0.5, menu_bar_rect.Max.x - window_border_size * 0.5, menu_bar_rect.Max.y, ImGui.GetColorU32(5 --[[ImGuiCol.Border]]), style.FrameBorderSize) window.DrawList:AddLineH(menu_bar_rect.Min.x + window_border_size, menu_bar_rect.Max.x - window_border_size, menu_bar_rect.Max.y, ImGui.GetColorU32(5 --[[ImGuiCol.Border]]), style.FrameBorderSize, 393216 --[[ImDrawFlags.StrokeCenterBiased]])
end end
end end
@@ -19221,7 +19221,7 @@ function ImGui.RenderDimmedBackgrounds()
window.DrawList:ChannelsMerge() window.DrawList:ChannelsMerge()
if window.DrawList.CmdBuffer.Size == 0 then window.DrawList:AddDrawCmd() end if window.DrawList.CmdBuffer.Size == 0 then window.DrawList:AddDrawCmd() end
window.DrawList:PushClipRect(viewport.Pos, viewport.Pos + viewport.Size) window.DrawList:PushClipRect(viewport.Pos, viewport.Pos + viewport.Size)
window.DrawList:AddRect(bb.Min, bb.Max, ImGui.GetColorU32(60 --[[ImGuiCol.NavWindowingHighlight]], g.NavWindowingHighlightAlpha), window.WindowRounding, 0, 3.0) -- FIXME-DPI window.DrawList:AddRect(bb.Min, bb.Max, ImGui.GetColorU32(60 --[[ImGuiCol.NavWindowingHighlight]], g.NavWindowingHighlightAlpha), window.WindowRounding, 3.0) -- FIXME-DPI
window.DrawList:PopClipRect() window.DrawList:PopClipRect()
end end
end end
@@ -20867,8 +20867,7 @@ function ImGui.DebugNodeDrawList(window, viewport, draw_list, label)
else else
local cr = pcmd.ClipRect local cr = pcmd.ClipRect
local open = ImGui.TreeNode(cmd_n, "DrawCmd:%5d tris, Tex %s, ClipRect (%4.0f,%4.0f)-(%4.0f,%4.0f)", math.floor(pcmd.ElemCount / 3), tostring(pcmd.TexRef and (pcmd.TexRef._TexID or pcmd.TexRef._TexData)), cr.x, cr.y, cr.z, cr.w) local open = ImGui.TreeNode(cmd_n, "DrawCmd:%5d tris, Tex %s, ClipRect (%4.0f,%4.0f)-(%4.0f,%4.0f)", math.floor(pcmd.ElemCount / 3), tostring(pcmd.TexRef and (pcmd.TexRef._TexID or pcmd.TexRef._TexData)), cr.x, cr.y, cr.z, cr.w)
local function ShowMesh(show_mesh, show_aabb) local function ShowMeshImpl(show_mesh, show_aabb)
if not fg_draw_list then return end
local clip_rect = ImRect(cr.x, cr.y, cr.z, cr.w) local clip_rect = ImRect(cr.x, cr.y, cr.z, cr.w)
local vtxs_rect = ImRect(3.4028234663853e+38 --[[FLT_MAX]], 3.4028234663853e+38 --[[FLT_MAX]], -3.4028234663853e+38 --[[FLT_MAX]], -3.4028234663853e+38 --[[FLT_MAX]]) local vtxs_rect = ImRect(3.4028234663853e+38 --[[FLT_MAX]], 3.4028234663853e+38 --[[FLT_MAX]], -3.4028234663853e+38 --[[FLT_MAX]], -3.4028234663853e+38 --[[FLT_MAX]])
local base = pcmd.IdxOffset local base = pcmd.IdxOffset
@@ -20887,6 +20886,12 @@ function ImGui.DebugNodeDrawList(window, viewport, draw_list, label)
fg_draw_list:AddRect(ImTrunc(vtxs_rect.Min), ImTrunc(vtxs_rect.Max), IM_COL32(0, 255, 255, 255)) -- In cyan: bounding box of triangles fg_draw_list:AddRect(ImTrunc(vtxs_rect.Min), ImTrunc(vtxs_rect.Max), IM_COL32(0, 255, 255, 255)) -- In cyan: bounding box of triangles
end end
end end
local function ShowMesh(show_mesh, show_aabb) -- DebugNodeDrawCmdShowMeshAndBoundingBox()
if not fg_draw_list then return end
fg_draw_list:PushDrawFlag(8192 --[[ImDrawFlags.AALines]], false) -- Disable AA on triangle outlines is more readable for very large and thin triangles.
ShowMeshImpl(show_mesh, show_aabb)
fg_draw_list:PopDrawFlag()
end
if ImGui.IsItemHovered() and (cfg.ShowDrawCmdMesh or cfg.ShowDrawCmdBoundingBoxes) then ShowMesh(cfg.ShowDrawCmdMesh, cfg.ShowDrawCmdBoundingBoxes) end if ImGui.IsItemHovered() and (cfg.ShowDrawCmdMesh or cfg.ShowDrawCmdBoundingBoxes) then ShowMesh(cfg.ShowDrawCmdMesh, cfg.ShowDrawCmdBoundingBoxes) end
if open then if open then
ImGui.Selectable(string.format("Mesh: ElemCount: %d, VtxOffset: +%d, IdxOffset: +%d", pcmd.ElemCount, pcmd.VtxOffset, pcmd.IdxOffset)) ImGui.Selectable(string.format("Mesh: ElemCount: %d, VtxOffset: +%d, IdxOffset: +%d", pcmd.ElemCount, pcmd.VtxOffset, pcmd.IdxOffset))
@@ -20915,8 +20920,8 @@ function ImGui.DebugNodeTabBar(tab_bar, label)
if is_active and ImGui.IsItemHovered() then if is_active and ImGui.IsItemHovered() then
local dl = FG(tab_bar.Window) local dl = FG(tab_bar.Window)
dl:AddRect(tab_bar.BarRect.Min, tab_bar.BarRect.Max, IM_COL32(255, 255, 0, 255)) dl:AddRect(tab_bar.BarRect.Min, tab_bar.BarRect.Max, IM_COL32(255, 255, 0, 255))
dl:AddLine(ImVec2(tab_bar.ScrollingRectMinX, tab_bar.BarRect.Min.y), ImVec2(tab_bar.ScrollingRectMinX, tab_bar.BarRect.Max.y), IM_COL32(0, 255, 0, 255)) dl:AddLineV(tab_bar.ScrollingRectMinX, tab_bar.BarRect.Min.y, tab_bar.BarRect.Max.y, IM_COL32(0, 255, 0, 255))
dl:AddLine(ImVec2(tab_bar.ScrollingRectMaxX, tab_bar.BarRect.Min.y), ImVec2(tab_bar.ScrollingRectMaxX, tab_bar.BarRect.Max.y), IM_COL32(0, 255, 0, 255)) dl:AddLineV(tab_bar.ScrollingRectMaxX, tab_bar.BarRect.Min.y, tab_bar.BarRect.Max.y, IM_COL32(0, 255, 0, 255))
end end
if open then if open then
for tab_n, tab in tab_bar.Tabs:iter() do for tab_n, tab in tab_bar.Tabs:iter() do
@@ -40606,7 +40611,7 @@ function ImGui.RenderCheckMark(draw_list, pos, col, sz)
draw_list:PathLineTo(p) draw_list:PathLineTo(p)
p.x = bx + third * 2.0; p.y = by - third * 2.0 p.x = bx + third * 2.0; p.y = by - third * 2.0
draw_list:PathLineTo(p) draw_list:PathLineTo(p)
draw_list:PathStroke(col, thickness) draw_list:PathStroke(col, thickness, 16384 --[[ImDrawFlags.AALineEnds]])
end end
-- Render an arrow. 'pos' is position of the arrow tip. half_sz.x is length from base to tip. half_sz.y is length on each side. -- Render an arrow. 'pos' is position of the arrow tip. half_sz.x is length from base to tip. half_sz.y is length on each side.
@@ -40692,7 +40697,7 @@ function ImGui.RenderRectFilledInRangeH(draw_list, rect, col, fill_x0, fill_x1,
end end
end end
draw_list:PathFillConvex(col) draw_list:PathFillConvex(col, 1024 --[[ImDrawFlags.JoinMiter]])
end end
--- @param r_in ImRect --- @param r_in ImRect
@@ -40726,16 +40731,16 @@ end
-- Helper for ColorPicker4() -- Helper for ColorPicker4()
-- NB: This is rather brittle and will show artifact when rounding this enabled if rounded corners overlap multiple cells. Caller currently responsible for avoiding that. -- NB: This is rather brittle and will show artifact when rounding this enabled if rounded corners overlap multiple cells. Caller currently responsible for avoiding that.
-- Spent a non reasonable amount of time trying to getting this right for ColorButton with rounding+anti-aliasing+ImGuiColorEditFlags_HalfAlphaPreview flag + various grid sizes and offsets, and eventually gave up... probably more reasonable to disable rounding altogether. -- Spent a non reasonable amount of time trying to getting this right for ColorButton with rounding+anti-aliasing+ImGuiColorEditFlags_HalfAlphaPreview flag + various grid sizes and offsets, and eventually gave up... probably more reasonable to disable rounding altogether.
-- FIXME: uses ImGui.GetColorU32
--- @param draw_list ImDrawList --- @param draw_list ImDrawList
--- @param p_min ImVec2 --- @param p_min ImVec2
--- @param p_max ImVec2 --- @param p_max ImVec2
--- @param col ImU32 --- @param col ImU32
--- @param alpha float
--- @param grid_step float --- @param grid_step float
--- @param grid_off ImVec2 --- @param grid_off ImVec2
--- @param rounding? float --- @param rounding? float
--- @param flags? ImDrawFlags --- @param flags? ImDrawFlags
function ImGui.RenderColorRectWithAlphaCheckerboard(draw_list, p_min, p_max, col, grid_step, grid_off, rounding, flags) function ImGui.RenderColorRectWithAlphaCheckerboard(draw_list, p_min, p_max, col, alpha, grid_step, grid_off, rounding, flags)
if rounding == nil then rounding = 0.0 end if rounding == nil then rounding = 0.0 end
if flags == nil then flags = 0 end if flags == nil then flags = 0 end
@@ -40744,60 +40749,53 @@ function ImGui.RenderColorRectWithAlphaCheckerboard(draw_list, p_min, p_max, col
end end
if bit32.rshift(bit32.band(col, 4278190080 --[[IM_COL32_A_MASK]]), 24 --[[IM_COL32_A_SHIFT]]) < 0xFF then if bit32.rshift(bit32.band(col, 4278190080 --[[IM_COL32_A_MASK]]), 24 --[[IM_COL32_A_SHIFT]]) < 0xFF then
local col_bg1 = ImGui.GetColorU32(ImStd.ImAlphaBlendColors(IM_COL32(128, 128, 128, 255), col), nil, true) assert(alpha >= 0.0 and alpha <= 1.0)
local col_bg2 = ImGui.GetColorU32(ImStd.ImAlphaBlendColors(IM_COL32(204, 204, 204, 255), col), nil, true) local a_mask = bit32.lshift(ImTrunc(alpha * 255.0), 24 --[[IM_COL32_A_SHIFT]])
draw_list:AddRectFilled(p_min, p_max, col_bg1, rounding, flags) local col_bg1 = bit32.bor(bit32.band(ImStd.ImAlphaBlendColors(IM_COL32(128, 128, 128, 255), col), bit32.bnot(4278190080 --[[IM_COL32_A_MASK]])), a_mask)
local col_bg2 = bit32.bor(bit32.band(ImStd.ImAlphaBlendColors(IM_COL32(204, 204, 204, 255), col), bit32.bnot(4278190080 --[[IM_COL32_A_MASK]])), a_mask)
local dual_layer = (alpha == 1.0) -- Dual layer is faster but incorrect if blending.
if dual_layer then
draw_list:AddRectFilled(p_min, p_max, col_bg1, rounding, flags)
end
local yi = 0 local yi = 0
local y = p_min.y + grid_off.y local y = p_min.y + grid_off.y
local x_start
local x
local cell_flags
while y < p_max.y do while y < p_max.y do
repeat local y1 = ImClamp(ImTrunc(y), p_min.y, p_max.y)
local y1 = ImClamp(y, p_min.y, p_max.y) local y2 = ImMin(ImTrunc(y + grid_step), p_max.y)
local y2 = ImMin(y + grid_step, p_max.y) if y2 > y1 then
local x_start_off = dual_layer and (((yi + 1) % 2) * grid_step) or 0.0
local x_step = dual_layer and (grid_step * 2.0) or grid_step
local xi = 0
local x = p_min.x + grid_off.x + x_start_off
while x < p_max.x do
local x1 = ImClamp(ImTrunc(x), p_min.x, p_max.x)
local x2 = ImMin(ImTrunc(x + grid_step), p_max.x)
if x2 > x1 then
local cell_flags = 256 --[[ImDrawFlags.RoundNone]] -- FIXME: Could use CalcRoundingFlagsForRectInRect()
if y1 <= p_min.y then
if x1 <= p_min.x then cell_flags = bit32.bor(cell_flags, 16 --[[ImDrawFlags.RoundTopLeft]]) end
if x2 >= p_max.x then cell_flags = bit32.bor(cell_flags, 32 --[[ImDrawFlags.RoundTopRight]]) end
end
if y2 >= p_max.y then
if x1 <= p_min.x then cell_flags = bit32.bor(cell_flags, 64 --[[ImDrawFlags.RoundBottomLeft]]) end
if x2 >= p_max.x then cell_flags = bit32.bor(cell_flags, 128 --[[ImDrawFlags.RoundBottomRight]]) end
end
if y2 <= y1 then -- Combine flags
break if flags == 256 --[[ImDrawFlags.RoundNone]] or cell_flags == 256 --[[ImDrawFlags.RoundNone]] then
cell_flags = 256 --[[ImDrawFlags.RoundNone]]
else
cell_flags = bit32.band(cell_flags, flags)
end
local col_bg
if dual_layer then col_bg = col_bg2 elseif (yi + xi) % 2 == 1 then col_bg = col_bg2 else col_bg = col_bg1 end
draw_list:AddRectFilled(ImVec2(x1, y1), ImVec2(x2, y2), col_bg, rounding, cell_flags)
end
x = x + x_step
xi = xi + 1
end
end end
x_start = p_min.x + grid_off.x + ((yi + 1) % 2) * grid_step
x = x_start
while x < p_max.x do
repeat
local x1 = ImClamp(x, p_min.x, p_max.x)
local x2 = ImMin(x + grid_step, p_max.x)
if x2 <= x1 then
break
end
cell_flags = 256 --[[ImDrawFlags.RoundNone]] -- FIXME: Could use CalcRoundingFlagsForRectInRect()
if y1 <= p_min.y then
if x1 <= p_min.x then cell_flags = bit32.bor(cell_flags, 16 --[[ImDrawFlags.RoundTopLeft]]) end
if x2 >= p_max.x then cell_flags = bit32.bor(cell_flags, 32 --[[ImDrawFlags.RoundTopRight]]) end
end
if y2 >= p_max.y then
if x1 <= p_min.x then cell_flags = bit32.bor(cell_flags, 64 --[[ImDrawFlags.RoundBottomLeft]]) end
if x2 >= p_max.x then cell_flags = bit32.bor(cell_flags, 128 --[[ImDrawFlags.RoundBottomRight]]) end
end
-- Combine flags
if flags == 256 --[[ImDrawFlags.RoundNone]] or cell_flags == 256 --[[ImDrawFlags.RoundNone]] then
cell_flags = 256 --[[ImDrawFlags.RoundNone]]
else
cell_flags = bit32.band(cell_flags, flags)
end
draw_list:AddRectFilled(ImVec2(x1, y1), ImVec2(x2, y2), col_bg2, rounding, cell_flags)
until true
x = x + grid_step * 2.0
end
until true
y = y + grid_step y = y + grid_step
yi = yi + 1 yi = yi + 1
end end
@@ -46919,6 +46917,7 @@ function ImGuiContext(shared_font_atlas) -- TODO: tidy up / complete this struct
DisabledAlphaBackup = 0.0, -- Backup for style.Alpha for BeginDisabled() DisabledAlphaBackup = 0.0, -- Backup for style.Alpha for BeginDisabled()
DisabledStackSize = 0, DisabledStackSize = 0,
MixedValueLabel = "-", -- Value replacement when displaying a mixed value.
ItemFlagsStack = ImVector(), -- Stack for PushItemFlag()/PopItemFlag() - inherited by Begin() ItemFlagsStack = ImVector(), -- Stack for PushItemFlag()/PopItemFlag() - inherited by Begin()
GroupStack = ImVector(), -- Stack for BeginGroup()/EndGroup() - not inherited by Begin() GroupStack = ImVector(), -- Stack for BeginGroup()/EndGroup() - not inherited by Begin()
@@ -54113,7 +54112,7 @@ function ImGui.CloseButton(id, pos)
window.DrawList:AddRectFilled(bb.Min, bb.Max, bg_col) window.DrawList:AddRectFilled(bb.Min, bb.Max, bg_col)
end end
local cross_center = bb:GetCenter() - ImVec2(0.5, 0.5) local cross_center = bb:GetCenter()
local cross_extent = g.FontSize * 0.5 * 0.7071 - 1 local cross_extent = g.FontSize * 0.5 * 0.7071 - 1
local cross_col = ImGui.GetColorU32(0 --[[ImGuiCol.Text]]) local cross_col = ImGui.GetColorU32(0 --[[ImGuiCol.Text]])
local cross_thickness = 1.0 -- FIXME-DPI local cross_thickness = 1.0 -- FIXME-DPI
@@ -54123,32 +54122,6 @@ function ImGui.CloseButton(id, pos)
return pressed return pressed
end end
--- @return bool
function ImGui.CollapseButton(id, pos)
local g = GImGui
local window = g.CurrentWindow
local bb = ImRect(pos, pos + ImVec2(g.FontSize, g.FontSize))
local is_clipped = not ImGui.ItemAdd(bb, id)
local pressed, hovered = ImGui.ButtonBehavior(bb, id)
-- Render
if hovered then
window.DrawList:AddRectFilled(bb.Min, bb.Max, ImGui.GetColorU32(23 --[[ImGuiCol.ButtonHovered]]))
end
if window.Collapsed then
ImGui.RenderArrow(window.DrawList, bb.Min, ImGui.GetColorU32(0 --[[ImGuiCol.Text]]), 1 --[[ImGuiDir.Right]], 1)
else
ImGui.RenderArrow(window.DrawList, bb.Min, ImGui.GetColorU32(0 --[[ImGuiCol.Text]]), 3 --[[ImGuiDir.Down]], 1)
end
return pressed
end
--- @param window ImGuiWindow --- @param window ImGuiWindow
--- @param axis ImGuiAxis --- @param axis ImGuiAxis
--- @return ImGuiID --- @return ImGuiID
@@ -55053,7 +55026,7 @@ function ImGui.SeparatorTextEx(id, label, label_end, extra_w)
local sep1_x1 = pos.x local sep1_x1 = pos.x
local sep2_x2 = bb.Max.x local sep2_x2 = bb.Max.x
local seps_y = ImTrunc((bb.Min.y + bb.Max.y) * 0.5 + 0.999) local seps_y = ImTrunc((bb.Min.y + bb.Max.y) * 0.5) + 1.0
local label_avail_w = ImMax(0.0, sep2_x2 - sep1_x1 - padding.x * 2.0) local label_avail_w = ImMax(0.0, sep2_x2 - sep1_x1 - padding.x * 2.0)
local label_pos = ImVec2(pos.x + padding.x + ImMax(0.0, (label_avail_w - label_size.x - extra_w) * style.SeparatorTextAlign.x), pos.y + text_baseline_y) -- FIXME-ALIGN local label_pos = ImVec2(pos.x + padding.x + ImMax(0.0, (label_avail_w - label_size.x - extra_w) * style.SeparatorTextAlign.x), pos.y + text_baseline_y) -- FIXME-ALIGN
@@ -55068,11 +55041,11 @@ function ImGui.SeparatorTextEx(id, label, label_end, extra_w)
local sep2_x1 = label_pos.x + label_size.x + extra_w + style.ItemSpacing.x local sep2_x1 = label_pos.x + label_size.x + extra_w + style.ItemSpacing.x
if sep1_x2 > sep1_x1 and separator_thickness > 0.0 then if sep1_x2 > sep1_x1 and separator_thickness > 0.0 then
window.DrawList:AddLineH(sep1_x1, sep1_x2, seps_y, separator_col, separator_thickness) window.DrawList:AddLineH(sep1_x1, sep1_x2, seps_y, separator_col, separator_thickness, 393216 --[[ImDrawFlags.StrokeCenterBiased]])
end end
if sep2_x2 > sep2_x1 and separator_thickness > 0.0 then if sep2_x2 > sep2_x1 and separator_thickness > 0.0 then
window.DrawList:AddLineH(sep2_x1, sep2_x2, seps_y, separator_col, separator_thickness) window.DrawList:AddLineH(sep2_x1, sep2_x2, seps_y, separator_col, separator_thickness, 393216 --[[ImDrawFlags.StrokeCenterBiased]])
end end
if g.LogEnabled then if g.LogEnabled then
@@ -55086,7 +55059,7 @@ function ImGui.SeparatorTextEx(id, label, label_end, extra_w)
end end
if separator_thickness > 0.0 then if separator_thickness > 0.0 then
window.DrawList:AddLineH(sep1_x1, sep2_x2, seps_y, separator_col, separator_thickness) window.DrawList:AddLineH(sep1_x1, sep2_x2, seps_y, separator_col, separator_thickness, 393216 --[[ImDrawFlags.StrokeCenterBiased]])
end end
end end
end end
@@ -59415,10 +59388,10 @@ function ImGui.InputTextEx(label, hint, buf, buf_size, size_arg, flags, callback
local cursor_is_visible = (not g.IO.ConfigInputTextCursorBlink) or (state.CursorAnim <= 0.0) or (ImFmod(state.CursorAnim, 1.20) <= 0.80) local cursor_is_visible = (not g.IO.ConfigInputTextCursorBlink) or (state.CursorAnim <= 0.0) or (ImFmod(state.CursorAnim, 1.20) <= 0.80)
local cursor_screen_pos = ImTrunc(draw_pos + cursor_offset - draw_scroll) local cursor_screen_pos = ImTrunc(draw_pos + cursor_offset - draw_scroll)
local cursor_screen_rect = ImRect(cursor_screen_pos.x, cursor_screen_pos.y - g.FontSize + 0.5, cursor_screen_pos.x + 1.0, cursor_screen_pos.y - 1.5) local cursor_screen_rect = ImRect(cursor_screen_pos.x, cursor_screen_pos.y - g.FontSize + 1.0, cursor_screen_pos.x + 1.0, cursor_screen_pos.y - 1.0)
if cursor_is_visible and cursor_screen_rect:Overlaps(clip_rect) then if cursor_is_visible and cursor_screen_rect:Overlaps(clip_rect) then
draw_window.DrawList:AddLineV(cursor_screen_rect.Min.x, cursor_screen_rect.Min.y, cursor_screen_rect.Max.y, ImGui.GetColorU32(34 --[[ImGuiCol.InputTextCursor]]), style.InputTextCursorSize) draw_window.DrawList:AddLineV(cursor_screen_rect.Min.x, cursor_screen_rect.Min.y, cursor_screen_rect.Max.y, ImGui.GetColorU32(34 --[[ImGuiCol.InputTextCursor]]), style.InputTextCursorSize, 131072 --[[ImDrawFlags.StrokeInside]])
end end
-- Notify OS of text input position for advanced IME (-1 x offset so that Windows IME can cover our cursor. Bit of an extra nicety.) -- Notify OS of text input position for advanced IME (-1 x offset so that Windows IME can cover our cursor. Bit of an extra nicety.)
@@ -60296,7 +60269,7 @@ function ImGui.ColorPicker4(label, col, flags, ref_col)
if alpha_bar then if alpha_bar then
local alpha = ImSaturate(col[4]) local alpha = ImSaturate(col[4])
local bar1_bb = ImRect(bar1_pos_x, picker_pos.y, bar1_pos_x + bars_width, picker_pos.y + sv_picker_size) local bar1_bb = ImRect(bar1_pos_x, picker_pos.y, bar1_pos_x + bars_width, picker_pos.y + sv_picker_size)
ImGui.RenderColorRectWithAlphaCheckerboard(draw_list, bar1_bb.Min, bar1_bb.Max, 0, bar1_bb:GetWidth() / 2.0, ImVec2(0.0, 0.0)) ImGui.RenderColorRectWithAlphaCheckerboard(draw_list, bar1_bb.Min, bar1_bb.Max, IM_COL32(0, 0, 0, 0), style.Alpha, bar1_bb:GetWidth() / 2.0, ImVec2(0.0, 0.0))
draw_list:AddRectFilledMultiColor(bar1_bb.Min, bar1_bb.Max, user_col32_striped_of_alpha, user_col32_striped_of_alpha, bit32.band(user_col32_striped_of_alpha, bit32.bnot(4278190080 --[[IM_COL32_A_MASK]])), bit32.band(user_col32_striped_of_alpha, bit32.bnot(4278190080 --[[IM_COL32_A_MASK]]))) draw_list:AddRectFilledMultiColor(bar1_bb.Min, bar1_bb.Max, user_col32_striped_of_alpha, user_col32_striped_of_alpha, bit32.band(user_col32_striped_of_alpha, bit32.bnot(4278190080 --[[IM_COL32_A_MASK]])), bit32.band(user_col32_striped_of_alpha, bit32.bnot(4278190080 --[[IM_COL32_A_MASK]])))
local bar1_line_y = IM_ROUND(picker_pos.y + (1.0 - alpha) * sv_picker_size) local bar1_line_y = IM_ROUND(picker_pos.y + (1.0 - alpha) * sv_picker_size)
@@ -60374,36 +60347,45 @@ function ImGui.ColorButton(desc_id, col, flags, size_arg)
local col_rgb_without_alpha = ImVec4(col_rgb.x, col_rgb.y, col_rgb.z, 1.0) local col_rgb_without_alpha = ImVec4(col_rgb.x, col_rgb.y, col_rgb.z, 1.0)
local grid_step = ImMin(size.x, size.y) / 2.99 local grid_step = ImMin(size.x, size.y) / 2.99
local rounding = ImMin(g.Style.FrameRounding, grid_step * 0.5) local rounding = ImMin(g.Style.FrameRounding, grid_step * 0.5)
local bb_inner = ImRect() local is_mixed = bit32.band(g.LastItemData.ItemFlags, 4096 --[[ImGuiItemFlags.MixedValue]]) ~= 0
ImRect_Copy(bb_inner, bb)
local off = 0.0 local backup_alpha = g.Style.Alpha
if bit32.band(flags, 1024 --[[ImGuiColorEditFlags.NoBorder]]) == 0 then if g.DisabledStackSize > 0 then
off = -0.75 g.Style.Alpha = g.DisabledAlphaBackup -- Cancel out effect of BeginDisabled() for color swatches.
bb_inner:Expand(off)
end end
if bit32.band(flags, 16384 --[[ImGuiColorEditFlags.AlphaPreviewHalf]]) ~= 0 and col_rgb.w < 1.0 then if is_mixed then
local mid_x = IM_ROUND((bb_inner.Min.x + bb_inner.Max.x) * 0.5) window.DrawList:AddRectFilled(bb.Min, bb.Max, ImGui.GetColorU32(7 --[[ImGuiCol.FrameBg]]), rounding)
if bit32.band(flags, 8192 --[[ImGuiColorEditFlags.AlphaNoBg]]) == 0 then ImGui.PushStyleColor(0 --[[ImGuiCol.Text]], g.Style.Colors[1 --[[ImGuiCol.TextDisabled]]]) -- ImGuiCol_TextMixedValue
ImGui.RenderColorRectWithAlphaCheckerboard(window.DrawList, ImVec2(bb_inner.Min.x + grid_step, bb_inner.Min.y), bb_inner.Max, ImGui.GetColorU32(col_rgb), grid_step, ImVec2(-grid_step + off, off), rounding, 160 --[[ImDrawFlags.RoundRight]]) if g.MixedValueLabel ~= nil then
else ImGui.RenderTextClipped(ImVec2(bb.Min.x, bb.Min.y + g.Style.FramePadding.y), bb.Max, g.MixedValueLabel, nil, nil, ImVec2(0.5, 0.0))
window.DrawList:AddRectFilled(ImVec2(bb_inner.Min.x + grid_step, bb_inner.Min.y), bb_inner.Max, ImGui.GetColorU32(col_rgb), rounding, 160 --[[ImDrawFlags.RoundRight]])
end end
window.DrawList:AddRectFilled(bb_inner.Min, ImVec2(mid_x, bb_inner.Max.y), ImGui.GetColorU32(col_rgb_without_alpha), rounding, 80 --[[ImDrawFlags.RoundLeft]]) ImGui.PopStyleColor()
elseif bit32.band(flags, 16384 --[[ImGuiColorEditFlags.AlphaPreviewHalf]]) ~= 0 and col_rgb.w < 1.0 then
local mid_x = IM_ROUND((bb.Min.x + bb.Max.x) * 0.5)
if bit32.band(flags, 8192 --[[ImGuiColorEditFlags.AlphaNoBg]]) == 0 then
ImGui.RenderColorRectWithAlphaCheckerboard(window.DrawList, ImVec2(bb.Min.x + grid_step, bb.Min.y), bb.Max, ImGui.ColorConvertFloat4ToU32(col_rgb), g.Style.Alpha, grid_step, ImVec2(-grid_step, 0.0), rounding, 160 --[[ImDrawFlags.RoundRight]])
else
window.DrawList:AddRectFilled(ImVec2(bb.Min.x + grid_step, bb.Min.y), bb.Max, ImGui.GetColorU32(col_rgb), rounding, 160 --[[ImDrawFlags.RoundRight]])
end
window.DrawList:AddRectFilled(bb.Min, ImVec2(mid_x, bb.Max.y), ImGui.GetColorU32(col_rgb_without_alpha), rounding, 80 --[[ImDrawFlags.RoundLeft]])
else else
-- Because GetColorU32() multiplies by the global style Alpha and we don't want to display a checkerboard if the source code had no alpha -- Because GetColorU32() multiplies by the global style Alpha and we don't want to display a checkerboard if the source code had no alpha
local col_source = (bit32.band(flags, 4096 --[[ImGuiColorEditFlags.AlphaOpaque]]) ~= 0) and col_rgb_without_alpha or col_rgb local col_source = (bit32.band(flags, 4096 --[[ImGuiColorEditFlags.AlphaOpaque]]) ~= 0) and col_rgb_without_alpha or col_rgb
if col_source.w < 1.0 and bit32.band(flags, 8192 --[[ImGuiColorEditFlags.AlphaNoBg]]) == 0 then if col_source.w < 1.0 and bit32.band(flags, 8192 --[[ImGuiColorEditFlags.AlphaNoBg]]) == 0 then
ImGui.RenderColorRectWithAlphaCheckerboard(window.DrawList, bb_inner.Min, bb_inner.Max, ImGui.GetColorU32(col_source), grid_step, ImVec2(off, off), rounding) ImGui.RenderColorRectWithAlphaCheckerboard(window.DrawList, bb.Min, bb.Max, ImGui.ColorConvertFloat4ToU32(col_source), g.Style.Alpha, grid_step, ImVec2(0.0, 0.0), rounding)
else else
window.DrawList:AddRectFilled(bb_inner.Min, bb_inner.Max, ImGui.GetColorU32(col_source), rounding) window.DrawList:AddRectFilled(bb.Min, bb.Max, ImGui.GetColorU32(col_source), rounding)
end end
end end
if g.DisabledStackSize > 0 then
g.Style.Alpha = backup_alpha
end
ImGui.RenderNavCursor(bb, id) ImGui.RenderNavCursor(bb, id)
if bit32.band(flags, 1024 --[[ImGuiColorEditFlags.NoBorder]]) == 0 then if bit32.band(flags, 1024 --[[ImGuiColorEditFlags.NoBorder]]) == 0 then
if g.Style.FrameBorderSize > 0.0 then if g.Style.FrameBorderSize > 0.0 then
ImGui.RenderFrameBorder(bb.Min, bb.Max, rounding) ImGui.RenderFrameBorder(bb.Min, bb.Max, rounding)
else else
window.DrawList:AddRect(bb.Min, bb.Max, ImGui.GetColorU32(7 --[[ImGuiCol.FrameBg]]), rounding) -- Color buttons are often in need of some sort of border window.DrawList:AddRect(bb.Min, bb.Max, ImGui.GetColorU32(7 --[[ImGuiCol.FrameBg]]), rounding, 1.0 * ImTrunc(g.Style._MainScale)) -- Color buttons are often in need of some sort of border -- FIXME-DPI
end end
end end
@@ -61086,23 +61068,27 @@ function ImGui.TreeNodeDrawLineToChildNode(target_pos)
-- FIXME: Could this be simplified using new stroke flags? -- FIXME: Could this be simplified using new stroke flags?
local parent_data = g.TreeNodeStack.Data[g.TreeNodeStack.Size] local parent_data = g.TreeNodeStack.Data[g.TreeNodeStack.Size]
local x1 = ImTrunc(parent_data.DrawLinesX1) local half_size = g.Style.TreeLinesSize * 0.5
local x1 = ImTrunc(parent_data.DrawLinesX1 - half_size) + half_size -- Draw line centered at X1, but snap to pixels boundary.
local x2 = ImTrunc(target_pos.x - g.Style.ItemInnerSpacing.x) local x2 = ImTrunc(target_pos.x - g.Style.ItemInnerSpacing.x)
local y = ImTrunc(target_pos.y) local y = ImTrunc(target_pos.y - half_size) + half_size
local rounding = (g.Style.TreeLinesRounding > 0.0) and ImMin(x2 - x1, g.Style.TreeLinesRounding) or 0.0 local rounding = (g.Style.TreeLinesRounding > 0.0) and ImMin(x2 - x1, g.Style.TreeLinesRounding) or 0.0
parent_data.DrawLinesToNodesY2 = ImMax(parent_data.DrawLinesToNodesY2, y - rounding) parent_data.DrawLinesToNodesY2 = ImMax(parent_data.DrawLinesToNodesY2, y - rounding)
if x1 >= x2 then if x1 >= x2 then
return return
end end
if rounding > 0.0 then if rounding > 0.0 and rounding > half_size then
x1 = x1 + 0.5 + rounding x1 = x1 + rounding
window.DrawList:PathArcToFast(ImVec2(x1, y - rounding), rounding, 6, 3) window.DrawList:PathArcToFast(ImVec2(x1, y - rounding), rounding, 6, 3)
if x1 < x2 then if x1 < x2 then
window.DrawList:PathLineTo(ImVec2(x2, y)) window.DrawList:PathLineTo(ImVec2(x2, y))
end end
window.DrawList:PathStroke(ImGui.GetColorU32(55 --[[ImGuiCol.TreeLines]]), g.Style.TreeLinesSize) window.DrawList:PathStroke(ImGui.GetColorU32(55 --[[ImGuiCol.TreeLines]]), g.Style.TreeLinesSize)
else else
window.DrawList:AddLineH(x1, x2, y, ImGui.GetColorU32(55 --[[ImGuiCol.TreeLines]]), g.Style.TreeLinesSize) -- We use AddLine() instead of AddLineH() as we provide coordinates for line center,
-- in order to make the code use same coordinates for both rounded and non-rounded version. (FIXME-OPT)
x1 = x1 + half_size -- Avoid overdraw
window.DrawList:AddLine(ImVec2(x1, y), ImVec2(x2, y), ImGui.GetColorU32(55 --[[ImGuiCol.TreeLines]]), g.Style.TreeLinesSize)
end end
end end
@@ -65084,7 +65070,7 @@ function ImGui.TabItemBackground(draw_list, bb, flags, col)
draw_list:PathArcToFast(ImVec2(bb.Min.x + rounding, y1 + rounding), rounding, 6, 9) draw_list:PathArcToFast(ImVec2(bb.Min.x + rounding, y1 + rounding), rounding, 6, 9)
draw_list:PathArcToFast(ImVec2(bb.Max.x - rounding, y1 + rounding), rounding, 9, 12) draw_list:PathArcToFast(ImVec2(bb.Max.x - rounding, y1 + rounding), rounding, 9, 12)
draw_list:PathLineTo(ImVec2(bb.Max.x, y2)) draw_list:PathLineTo(ImVec2(bb.Max.x, y2))
draw_list:PathStroke(ImGui.GetColorU32(5 --[[ImGuiCol.Border]]), g.Style.TabBorderSize) draw_list:PathStroke(ImGui.GetColorU32(5 --[[ImGuiCol.Border]]), g.Style.TabBorderSize, 393216 --[[ImDrawFlags.StrokeCenterBiased]]) -- Use _StrokeInside?
end end
end end
+325 -325
View File
@@ -13,19 +13,19 @@ polyline stroker (AddPolyline), Lua-native replacements (ImGuiStorage, ImStr*, I
upstream file funcs ported by size similarity stubs upstream file funcs ported by size similarity stubs
imgui.cpp 786 87.4% 93.5% 75.1% 2 imgui.cpp 786 87.4% 93.5% 75.1% 2
imgui_widgets.cpp 308 93.8% 98.7% 78.1% 1 imgui_widgets.cpp 308 93.8% 98.7% 78.4% 1
imgui_draw.cpp 258 81.8% 92.3% 61.0% 2 imgui_draw.cpp 258 81.8% 92.3% 61.1% 2
imgui_tables.cpp 113 96.5% 99.0% 74.0% 0 imgui_tables.cpp 113 96.5% 99.0% 74.0% 0
imgui_demo.cpp 56 100.0% 100.0% 55.8% 0 imgui_demo.cpp 56 100.0% 100.0% 55.8% 0
imgui.h 110 53.6% 37.4% 60.0% 0 imgui.h 110 53.6% 37.4% 60.0% 0
imgui_internal.h 269 62.5% 65.7% 67.6% 1 imgui_internal.h 269 62.5% 65.7% 67.6% 1
TOTAL 1900 83.1% 95.3% 70.3% 6 TOTAL 1900 83.1% 95.3% 70.4% 6
upstream code reproduced (similarity x ported size / all upstream size): 67.0% upstream code reproduced (similarity x ported size / all upstream size): 67.0%
Public API (imgui.h, namespace ImGui) 368 / 376 97.9% Public API (imgui.h, namespace ImGui) 368 / 376 97.9%
Internal API (imgui_internal.h, namespace ImGui) 417 / 443 94.1% Internal API (imgui_internal.h, namespace ImGui) 417 / 443 94.1%
Enum values (imgui.h + imgui_internal.h) 1034 / 1078 95.9% Enum values (imgui.h + imgui_internal.h) 1034 / 1078 95.9%
Struct fields (imgui.h + imgui_internal.h) 1832 / 1926 95.1% Struct fields (imgui.h + imgui_internal.h) 1833 / 1926 95.2%
Legend: [x] ported (sim %) [~] stub [ ] not ported [-] excluded (c++-only / obsolete / os-specific / #if 0 / test-engine) Legend: [x] ported (sim %) [~] stub [ ] not ported [-] excluded (c++-only / obsolete / os-specific / #if 0 / test-engine)
@@ -123,7 +123,7 @@ imgui.cpp
[x] 61% ImGui::ColorConvertHSVtoRGB imgui.lua:14466 [x] 61% ImGui::ColorConvertHSVtoRGB imgui.lua:14466
-- ImGuiStorage -- ImGuiStorage
[x] 69% ImLowerBound imgui_widgets.lua:5186 [x] 69% ImLowerBound imgui_widgets.lua:5160
[ ] PairComparerByID [ ] PairComparerByID
[ ] ImGuiStorage::BuildSortByKey [ ] ImGuiStorage::BuildSortByKey
[ ] ImGuiStorage::GetInt [ ] ImGuiStorage::GetInt
@@ -210,7 +210,7 @@ imgui.cpp
[ ] ImGui::CallContextHooks [ ] ImGui::CallContextHooks
-- MAIN CODE (most of the code! lots of stuff, needs tidying up!) -- MAIN CODE (most of the code! lots of stuff, needs tidying up!)
[x] 11% ImGuiWindow::ImGuiWindow imgui_internal.lua:2842 [x] 11% ImGuiWindow::ImGuiWindow imgui_internal.lua:2843
[-] ImGuiWindow::~ImGuiWindow c++-only [-] ImGuiWindow::~ImGuiWindow c++-only
[x] 74% SetCurrentWindow imgui.lua:10805 [x] 74% SetCurrentWindow imgui.lua:10805
[x] 85% ImGui::GcCompactTransientMiscBuffers imgui.lua:10826 [x] 85% ImGui::GcCompactTransientMiscBuffers imgui.lua:10826
@@ -269,7 +269,7 @@ imgui.cpp
[x] 42% ImGui::PopClipRect imgui.lua:13626 [x] 42% ImGui::PopClipRect imgui.lua:13626
[x] 60% ImGui::RenderDimmedBackgroundBehindWindow imgui.lua:18992 [x] 60% ImGui::RenderDimmedBackgroundBehindWindow imgui.lua:18992
[x] 83% ImGui::FindBottomMostVisibleWindowWithinBeginStack imgui.lua:18965 [x] 83% ImGui::FindBottomMostVisibleWindowWithinBeginStack imgui.lua:18965
[x] 80% ImGui::RenderDimmedBackgrounds imgui.lua:19013 [x] 81% ImGui::RenderDimmedBackgrounds imgui.lua:19013
[x] 84% ImGui::EndFrame imgui.lua:14080 [x] 84% ImGui::EndFrame imgui.lua:14080
[x] 74% ImGui::Render imgui.lua:14191 [x] 74% ImGui::Render imgui.lua:14191
[x] 17% ImGui::CalcTextSize imgui.lua:14264 [x] 17% ImGui::CalcTextSize imgui.lua:14264
@@ -319,8 +319,8 @@ imgui.cpp
[x] 71% ImGui::UpdateWindowManualResize imgui.lua:9799 [x] 71% ImGui::UpdateWindowManualResize imgui.lua:9799
[ ] ClampWindowPos [ ] ClampWindowPos
[x] 95% RenderWindowOuterSingleBorder imgui.lua:10430 [x] 95% RenderWindowOuterSingleBorder imgui.lua:10430
[x] 93% ImGui::RenderWindowOuterBorders imgui.lua:10605 = RenderWindowOuterBorders [x] 94% ImGui::RenderWindowOuterBorders imgui.lua:10605 = RenderWindowOuterBorders
[x] 83% ImGui::RenderWindowDecorations imgui.lua:10474 [x] 84% ImGui::RenderWindowDecorations imgui.lua:10474
[x] 93% ImGui::RenderWindowTitleBarContents imgui.lua:10615 [x] 93% ImGui::RenderWindowTitleBarContents imgui.lua:10615
[x] 85% ImGui::UpdateWindowParentAndRootLinks imgui.lua:10711 [x] 85% ImGui::UpdateWindowParentAndRootLinks imgui.lua:10711
[x] 33% ImGui::UpdateWindowSkipRefresh imgui.lua:10741 [x] 33% ImGui::UpdateWindowSkipRefresh imgui.lua:10741
@@ -850,7 +850,7 @@ imgui.cpp
[x] 92% RenderViewportsThumbnails imgui.lua:18879 [x] 92% RenderViewportsThumbnails imgui.lua:18879
[ ] ViewportComparerByLastFocusedStampCount [ ] ViewportComparerByLastFocusedStampCount
[ ] ImGui::DebugRenderKeyboardPreview [ ] ImGui::DebugRenderKeyboardPreview
[x] 52% ImGui::DebugTextEncoding imgui.lua:20993 [x] 52% ImGui::DebugTextEncoding imgui.lua:20998
[ ] DebugFlashStyleColorStop [ ] DebugFlashStyleColorStop
[ ] ImGui::DebugFlashStyleColor [ ] ImGui::DebugFlashStyleColor
[ ] ImGui::UpdateDebugToolFlashStyleColor [ ] ImGui::UpdateDebugToolFlashStyleColor
@@ -858,27 +858,27 @@ imgui.cpp
[ ] FormatTextureRefForDebugDisplay [ ] FormatTextureRefForDebugDisplay
[x] 52% ImGui::ShowFontAtlas imgui.lua:20292 [x] 52% ImGui::ShowFontAtlas imgui.lua:20292
[x] 84% ImGui::DebugNodeTexture imgui.lua:20259 [x] 84% ImGui::DebugNodeTexture imgui.lua:20259
[x] 44% ImGui::ShowMetricsWindow imgui.lua:21058 [x] 44% ImGui::ShowMetricsWindow imgui.lua:21063
[ ] ImGui::DebugBreakClearData [ ] ImGui::DebugBreakClearData
[ ] ImGui::DebugBreakButtonTooltip [ ] ImGui::DebugBreakButtonTooltip
[ ] ImGui::DebugBreakButton [ ] ImGui::DebugBreakButton
[x] 87% ImGui::DebugNodeColumns imgui.lua:20637 [x] 87% ImGui::DebugNodeColumns imgui.lua:20637
[x] 48% DebugNodeDockNodeFlags imgui.lua:20825 [x] 48% DebugNodeDockNodeFlags imgui.lua:20830
[x] 79% ImGui::DebugNodeDockNode imgui.lua:20842 [x] 79% ImGui::DebugNodeDockNode imgui.lua:20847
[x] 28% ImGui::DebugNodeDrawList imgui.lua:20659 [x] 23% ImGui::DebugNodeDrawList imgui.lua:20659
[ ] ImGui::DebugNodeDrawCmdShowMeshAndBoundingBox [ ] ImGui::DebugNodeDrawCmdShowMeshAndBoundingBox
[ ] CalcFontGlyphSrcOverlapMask [ ] CalcFontGlyphSrcOverlapMask
[x] 60% ImGui::DebugNodeFont imgui.lua:20182 [x] 60% ImGui::DebugNodeFont imgui.lua:20182
[x] 59% ImGui::DebugNodeFontGlyphsForSrcMask imgui.lua:20127 [x] 59% ImGui::DebugNodeFontGlyphsForSrcMask imgui.lua:20127
[x] 89% ImGui::DebugNodeFontGlyph imgui.lua:20113 [x] 89% ImGui::DebugNodeFontGlyph imgui.lua:20113
[x] 37% ImGui::DebugNodeStorage imgui.lua:20647 [x] 37% ImGui::DebugNodeStorage imgui.lua:20647
[x] 68% ImGui::DebugNodeTabBar imgui.lua:20720 [x] 69% ImGui::DebugNodeTabBar imgui.lua:20725
[x] 62% ImGui::DebugNodeViewport imgui.lua:20975 [x] 62% ImGui::DebugNodeViewport imgui.lua:20980
[ ] ImGui::DebugNodePlatformMonitor [ ] ImGui::DebugNodePlatformMonitor
[x] 70% ImGui::DebugNodeWindow imgui.lua:20886 [x] 70% ImGui::DebugNodeWindow imgui.lua:20891
[x] 87% ImGui::DebugNodeWindowSettings imgui.lua:20944 [x] 87% ImGui::DebugNodeWindowSettings imgui.lua:20949
[x] 73% ImGui::DebugNodeWindowsList imgui.lua:20950 [x] 73% ImGui::DebugNodeWindowsList imgui.lua:20955
[x] 67% ImGui::DebugNodeWindowsListByBeginStackParent imgui.lua:20961 [x] 67% ImGui::DebugNodeWindowsListByBeginStackParent imgui.lua:20966
-- DEBUG LOG WINDOW -- DEBUG LOG WINDOW
[x] 5% ImGui::DebugLog imgui.lua:19932 [x] 5% ImGui::DebugLog imgui.lua:19932
@@ -915,17 +915,17 @@ imgui_widgets.cpp
[x] 29% ImGui::Text imgui_widgets.lua:222 [x] 29% ImGui::Text imgui_widgets.lua:222
[x] 60% ImGui::TextV imgui_widgets.lua:208 [x] 60% ImGui::TextV imgui_widgets.lua:208
[x] 30% ImGui::TextColored imgui_widgets.lua:233 [x] 30% ImGui::TextColored imgui_widgets.lua:233
[x] 83% ImGui::TextColoredV imgui_widgets.lua:7447 = ImGui . TextColored(...) [x] 83% ImGui::TextColoredV imgui_widgets.lua:7430 = ImGui . TextColored(...)
[x] 17% ImGui::TextDisabled imgui_widgets.lua:241 [x] 17% ImGui::TextDisabled imgui_widgets.lua:241
[x] 89% ImGui::TextDisabledV imgui_widgets.lua:7448 = ImGui . TextDisabled(...) [x] 89% ImGui::TextDisabledV imgui_widgets.lua:7431 = ImGui . TextDisabled(...)
[x] 10% ImGui::TextWrapped imgui_widgets.lua:250 [x] 10% ImGui::TextWrapped imgui_widgets.lua:250
[x] 91% ImGui::TextWrappedV imgui_widgets.lua:7449 = ImGui . TextWrapped(...) [x] 91% ImGui::TextWrappedV imgui_widgets.lua:7432 = ImGui . TextWrapped(...)
[x] 2% ImGui::TextAligned imgui_widgets.lua:269 [x] 2% ImGui::TextAligned imgui_widgets.lua:269
[x] 67% ImGui::TextAlignedV imgui_widgets.lua:7450 = ImGui . TextAligned(...) [x] 67% ImGui::TextAlignedV imgui_widgets.lua:7433 = ImGui . TextAligned(...)
[x] 4% ImGui::LabelText imgui_widgets.lua:305 [x] 4% ImGui::LabelText imgui_widgets.lua:305
[x] 89% ImGui::LabelTextV imgui_widgets.lua:7451 = ImGui . LabelText(...) [x] 89% ImGui::LabelTextV imgui_widgets.lua:7434 = ImGui . LabelText(...)
[x] 2% ImGui::BulletText imgui_widgets.lua:340 [x] 2% ImGui::BulletText imgui_widgets.lua:340
[x] 77% ImGui::BulletTextV imgui_widgets.lua:7452 = ImGui . BulletText(...) [x] 77% ImGui::BulletTextV imgui_widgets.lua:7435 = ImGui . BulletText(...)
-- Widgets: Main -- Widgets: Main
[x] 85% ImGui::ButtonBehavior imgui_widgets.lua:488 [x] 85% ImGui::ButtonBehavior imgui_widgets.lua:488
@@ -935,333 +935,333 @@ imgui_widgets.cpp
[x] 71% ImGui::InvisibleButton imgui_widgets.lua:828 [x] 71% ImGui::InvisibleButton imgui_widgets.lua:828
[x] 87% ImGui::ArrowButtonEx imgui_widgets.lua:859 [x] 87% ImGui::ArrowButtonEx imgui_widgets.lua:859
[x] 97% ImGui::ArrowButton imgui_widgets.lua:891 [x] 97% ImGui::ArrowButton imgui_widgets.lua:891
[x] 79% ImGui::CloseButton imgui_widgets.lua:900 [x] 80% ImGui::CloseButton imgui_widgets.lua:900
[x] 90% ImGui::CollapseButton imgui.lua:4558 [x] 90% ImGui::CollapseButton imgui.lua:4558
[x] 52% ImGui::GetWindowScrollbarID imgui_widgets.lua:976 [x] 52% ImGui::GetWindowScrollbarID imgui_widgets.lua:950
[x] 90% ImGui::GetWindowScrollbarRect imgui_widgets.lua:989 [x] 90% ImGui::GetWindowScrollbarRect imgui_widgets.lua:963
[x] 99% ImGui::ExtendHitBoxWhenNearViewportEdge imgui_widgets.lua:1012 [x] 99% ImGui::ExtendHitBoxWhenNearViewportEdge imgui_widgets.lua:986
[x] 77% ImGui::Scrollbar imgui_widgets.lua:1189 [x] 77% ImGui::Scrollbar imgui_widgets.lua:1163
[x] 85% ImGui::ScrollbarEx imgui_widgets.lua:1040 [x] 85% ImGui::ScrollbarEx imgui_widgets.lua:1014
[x] 84% ImGui::ImageWithBg imgui_widgets.lua:1214 [x] 84% ImGui::ImageWithBg imgui_widgets.lua:1188
[x] 28% ImGui::Image imgui_widgets.lua:1252 [x] 28% ImGui::Image imgui_widgets.lua:1226
[x] 92% ImGui::ImageButtonEx imgui_widgets.lua:1264 [x] 92% ImGui::ImageButtonEx imgui_widgets.lua:1238
[x] 98% ImGui::ImageButton imgui_widgets.lua:1308 [x] 98% ImGui::ImageButton imgui_widgets.lua:1282
[x] 77% ImGui::Checkbox imgui_widgets.lua:1323 [x] 77% ImGui::Checkbox imgui_widgets.lua:1297
[x] 79% ImGui::CheckboxFlagsT imgui_widgets.lua:1436 = ImGui . CheckboxFlags [x] 79% ImGui::CheckboxFlagsT imgui_widgets.lua:1410 = ImGui . CheckboxFlags
[x] 7% ImGui::CheckboxFlags imgui_widgets.lua:1415 [x] 7% ImGui::CheckboxFlags imgui_widgets.lua:1389
[x] 5% ImGui::RadioButton imgui_widgets.lua:1510 [x] 5% ImGui::RadioButton imgui_widgets.lua:1484
[x] 93% ImGui::ProgressBar imgui_widgets.lua:1522 [x] 93% ImGui::ProgressBar imgui_widgets.lua:1496
[x] 97% ImGui::Bullet imgui_widgets.lua:1585 [x] 97% ImGui::Bullet imgui_widgets.lua:1559
[x] 86% ImGui::TextLink imgui_widgets.lua:1612 [x] 86% ImGui::TextLink imgui_widgets.lua:1586
[x] 95% ImGui::TextLinkOpenURL imgui_widgets.lua:1667 [x] 95% ImGui::TextLinkOpenURL imgui_widgets.lua:1641
-- Widgets: Low-level Layout helpers -- Widgets: Low-level Layout helpers
[x] 82% ImGui::Spacing imgui_widgets.lua:1702 [x] 82% ImGui::Spacing imgui_widgets.lua:1676
[x] 62% ImGui::Dummy imgui_widgets.lua:1711 [x] 62% ImGui::Dummy imgui_widgets.lua:1685
[x] 96% ImGui::NewLine imgui_widgets.lua:1723 [x] 96% ImGui::NewLine imgui_widgets.lua:1697
[x] 100% ImGui::AlignTextToFramePadding imgui_widgets.lua:1743 [x] 100% ImGui::AlignTextToFramePadding imgui_widgets.lua:1717
[x] 87% ImGui::SeparatorEx imgui_widgets.lua:1759 [x] 87% ImGui::SeparatorEx imgui_widgets.lua:1733
[x] 87% ImGui::Separator imgui_widgets.lua:1828 [x] 87% ImGui::Separator imgui_widgets.lua:1802
[x] 94% ImGui::SeparatorTextEx imgui_widgets.lua:1855 [x] 96% ImGui::SeparatorTextEx imgui_widgets.lua:1829
[x] 100% ImGui::SeparatorText imgui_widgets.lua:1916 [x] 100% ImGui::SeparatorText imgui_widgets.lua:1890
[x] 82% ImGui::SplitterBehavior imgui.lua:4592 [x] 82% ImGui::SplitterBehavior imgui.lua:4592
[ ] ShrinkWidthItemComparer [ ] ShrinkWidthItemComparer
[x] 58% ImGui::ShrinkWidths imgui_widgets.lua:10696 [x] 58% ImGui::ShrinkWidths imgui_widgets.lua:10683
-- Widgets: ComboBox -- Widgets: ComboBox
[x] 100% CalcMaxPopupHeightFromItemCount imgui_widgets.lua:1945 [x] 100% CalcMaxPopupHeightFromItemCount imgui_widgets.lua:1919
[x] 81% ImGui::BeginCombo imgui_widgets.lua:1956 [x] 81% ImGui::BeginCombo imgui_widgets.lua:1930
[x] 85% ImGui::BeginComboPopup imgui_widgets.lua:2072 [x] 85% ImGui::BeginComboPopup imgui_widgets.lua:2046
[x] 65% ImGui::EndCombo imgui_widgets.lua:2145 [x] 65% ImGui::EndCombo imgui_widgets.lua:2119
[x] 72% ImGui::BeginComboPreview imgui_widgets.lua:2163 [x] 72% ImGui::BeginComboPreview imgui_widgets.lua:2137
[x] 80% ImGui::EndComboPreview imgui_widgets.lua:2195 [x] 80% ImGui::EndComboPreview imgui_widgets.lua:2169
[x] 36% Items_ArrayGetter imgui_widgets.lua:2223 [x] 36% Items_ArrayGetter imgui_widgets.lua:2197
[x] 41% Items_SingleStringGetter imgui_widgets.lua:2228 [x] 41% Items_SingleStringGetter imgui_widgets.lua:2202
[x] 67% ImGui::Combo imgui_widgets.lua:2271 [x] 67% ImGui::Combo imgui_widgets.lua:2245
-- Data Type and Data Formatting Helpers [Internal] -- Data Type and Data Formatting Helpers [Internal]
[x] 93% ImGui::DataTypeGetInfo imgui_widgets.lua:2371 [x] 93% ImGui::DataTypeGetInfo imgui_widgets.lua:2345
[x] 51% ImGui::DataTypeFormatString imgui_widgets.lua:2381 [x] 51% ImGui::DataTypeFormatString imgui_widgets.lua:2355
[x] 65% ImGui::DataTypeApplyOp imgui_widgets.lua:2409 [x] 65% ImGui::DataTypeApplyOp imgui_widgets.lua:2383
[x] 69% ImGui::DataTypeApplyFromText imgui_widgets.lua:2474 [x] 69% ImGui::DataTypeApplyFromText imgui_widgets.lua:2448
[x] 97% DataTypeCompareT imgui_widgets.lua:2535 [x] 97% DataTypeCompareT imgui_widgets.lua:2509
[x] 47% ImGui::DataTypeCompare imgui_widgets.lua:2544 [x] 47% ImGui::DataTypeCompare imgui_widgets.lua:2518
[x] 75% DataTypeClampT imgui_widgets.lua:2563 [x] 75% DataTypeClampT imgui_widgets.lua:2537
[x] 42% ImGui::DataTypeClamp imgui_widgets.lua:2574 [x] 42% ImGui::DataTypeClamp imgui_widgets.lua:2548
[x] 93% ImGui::DataTypeIsZero imgui_widgets.lua:2590 [x] 93% ImGui::DataTypeIsZero imgui_widgets.lua:2564
[x] 53% GetMinimumStepAtDecimalPrecision imgui_widgets.lua:2601 [x] 53% GetMinimumStepAtDecimalPrecision imgui_widgets.lua:2575
[x] 58% ImGui::RoundScalarWithFormatT imgui_widgets.lua:2619 [x] 58% ImGui::RoundScalarWithFormatT imgui_widgets.lua:2593
-- Widgets: DragScalar, DragFloat, DragInt, etc. -- Widgets: DragScalar, DragFloat, DragInt, etc.
[x] 85% ImGui::DragBehaviorT imgui_widgets.lua:3172 [x] 85% ImGui::DragBehaviorT imgui_widgets.lua:3146
[ ] ShortcutsForCancel [ ] ShortcutsForCancel
[x] 59% ImGui::DragBehavior imgui_widgets.lua:3328 [x] 59% ImGui::DragBehavior imgui_widgets.lua:3302
[x] 74% TempInputIsClampEnabled imgui_widgets.lua:3375 [x] 74% TempInputIsClampEnabled imgui_widgets.lua:3349
[x] 75% ImGui::DragScalar imgui_widgets.lua:3418 [x] 75% ImGui::DragScalar imgui_widgets.lua:3392
[x] 70% ImGui::DragScalarN imgui_widgets.lua:3561 [x] 70% ImGui::DragScalarN imgui_widgets.lua:3535
[x] 52% ImGui::DragFloat imgui_widgets.lua:3531 [x] 52% ImGui::DragFloat imgui_widgets.lua:3505
[x] n/a ImGui::DragFloat2 imgui_widgets.lua:3611 = DragFloatN ( 2 ) [x] n/a ImGui::DragFloat2 imgui_widgets.lua:3585 = DragFloatN ( 2 )
[x] n/a ImGui::DragFloat3 imgui_widgets.lua:3612 = DragFloatN ( 3 ) [x] n/a ImGui::DragFloat3 imgui_widgets.lua:3586 = DragFloatN ( 3 )
[x] n/a ImGui::DragFloat4 imgui_widgets.lua:3613 = DragFloatN ( 4 ) [x] n/a ImGui::DragFloat4 imgui_widgets.lua:3587 = DragFloatN ( 4 )
[x] 67% ImGui::DragFloatRange2 imgui_widgets.lua:3658 [x] 67% ImGui::DragFloatRange2 imgui_widgets.lua:3632
[x] 52% ImGui::DragInt imgui_widgets.lua:3550 [x] 52% ImGui::DragInt imgui_widgets.lua:3524
[x] n/a ImGui::DragInt2 imgui_widgets.lua:3614 = DragIntN ( 2 ) [x] n/a ImGui::DragInt2 imgui_widgets.lua:3588 = DragIntN ( 2 )
[x] n/a ImGui::DragInt3 imgui_widgets.lua:3615 = DragIntN ( 3 ) [x] n/a ImGui::DragInt3 imgui_widgets.lua:3589 = DragIntN ( 3 )
[x] n/a ImGui::DragInt4 imgui_widgets.lua:3616 = DragIntN ( 4 ) [x] n/a ImGui::DragInt4 imgui_widgets.lua:3590 = DragIntN ( 4 )
[x] 67% ImGui::DragIntRange2 imgui_widgets.lua:3662 [x] 67% ImGui::DragIntRange2 imgui_widgets.lua:3636
-- Widgets: SliderScalar, SliderFloat, SliderInt, etc. -- Widgets: SliderScalar, SliderFloat, SliderInt, etc.
[x] 89% ImGui::ScaleRatioFromValueT imgui_widgets.lua:3696 [x] 89% ImGui::ScaleRatioFromValueT imgui_widgets.lua:3670
[x] 89% ImGui::ScaleValueFromRatioT imgui_widgets.lua:3773 [x] 89% ImGui::ScaleValueFromRatioT imgui_widgets.lua:3747
[x] 83% ImGui::SliderBehaviorT imgui_widgets.lua:3861 [x] 83% ImGui::SliderBehaviorT imgui_widgets.lua:3835
[x] 58% ImGui::SliderBehavior imgui_widgets.lua:4040 [x] 58% ImGui::SliderBehavior imgui_widgets.lua:4014
[x] 72% ImGui::SliderScalar imgui_widgets.lua:4093 [x] 72% ImGui::SliderScalar imgui_widgets.lua:4067
[x] 74% ImGui::SliderScalarN imgui_widgets.lua:4208 [x] 74% ImGui::SliderScalarN imgui_widgets.lua:4182
[x] 71% ImGui::SliderFloat imgui_widgets.lua:4284 [x] 71% ImGui::SliderFloat imgui_widgets.lua:4258
[x] 100% ImGui::SliderFloat2 imgui_widgets.lua:4254 [x] 100% ImGui::SliderFloat2 imgui_widgets.lua:4228
[x] 100% ImGui::SliderFloat3 imgui_widgets.lua:4264 [x] 100% ImGui::SliderFloat3 imgui_widgets.lua:4238
[x] 100% ImGui::SliderFloat4 imgui_widgets.lua:4274 [x] 100% ImGui::SliderFloat4 imgui_widgets.lua:4248
[x] 74% ImGui::SliderAngle imgui_widgets.lua:4299 [x] 74% ImGui::SliderAngle imgui_widgets.lua:4273
[x] 71% ImGui::SliderInt imgui_widgets.lua:4320 [x] 71% ImGui::SliderInt imgui_widgets.lua:4294
[x] 95% ImGui::SliderInt2 imgui_widgets.lua:4327 [x] 95% ImGui::SliderInt2 imgui_widgets.lua:4301
[x] 95% ImGui::SliderInt3 imgui_widgets.lua:4331 [x] 95% ImGui::SliderInt3 imgui_widgets.lua:4305
[x] 95% ImGui::SliderInt4 imgui_widgets.lua:4335 [x] 95% ImGui::SliderInt4 imgui_widgets.lua:4309
[x] 80% ImGui::VSliderScalar imgui_widgets.lua:4347 [x] 80% ImGui::VSliderScalar imgui_widgets.lua:4321
[x] 84% ImGui::VSliderFloat imgui_widgets.lua:4423 [x] 84% ImGui::VSliderFloat imgui_widgets.lua:4397
[x] 84% ImGui::VSliderInt imgui_widgets.lua:4436 [x] 84% ImGui::VSliderInt imgui_widgets.lua:4410
-- Widgets: InputScalar, InputFloat, InputInt, etc. -- Widgets: InputScalar, InputFloat, InputInt, etc.
[x] 44% ImParseFormatFindStart imgui_widgets.lua:2661 [x] 44% ImParseFormatFindStart imgui_widgets.lua:2635
[x] 46% ImParseFormatFindEnd imgui_widgets.lua:2679 [x] 46% ImParseFormatFindEnd imgui_widgets.lua:2653
[x] 55% ImParseFormatTrimDecorations imgui_widgets.lua:2706 [x] 55% ImParseFormatTrimDecorations imgui_widgets.lua:2680
[ ] ImParseFormatSanitizeForPrinting [ ] ImParseFormatSanitizeForPrinting
[x] 61% ImParseFormatSanitizeForScanning imgui_widgets.lua:2722 [x] 61% ImParseFormatSanitizeForScanning imgui_widgets.lua:2696
[x] 41% ImAtoi imgui_widgets.lua:2752 [x] 41% ImAtoi imgui_widgets.lua:2726
[x] 55% ImParseFormatPrecision imgui_widgets.lua:2777 [x] 55% ImParseFormatPrecision imgui_widgets.lua:2751
[x] 88% ImGui::TempInputText imgui_widgets.lua:2818 [x] 88% ImGui::TempInputText imgui_widgets.lua:2792
[x] 63% ImGui::TempInputScalar imgui_widgets.lua:2862 [x] 63% ImGui::TempInputScalar imgui_widgets.lua:2836
[x] 63% ImGui::SetNextItemRefVal imgui_widgets.lua:7456 [x] 63% ImGui::SetNextItemRefVal imgui_widgets.lua:7439
[x] 74% ImGui::InputScalar imgui_widgets.lua:2913 [x] 74% ImGui::InputScalar imgui_widgets.lua:2887
[x] 71% ImGui::InputScalarN imgui_widgets.lua:3030 [x] 71% ImGui::InputScalarN imgui_widgets.lua:3004
[x] 65% ImGui::InputFloat imgui_widgets.lua:3118 [x] 65% ImGui::InputFloat imgui_widgets.lua:3092
[x] 95% ImGui::InputFloat2 imgui_widgets.lua:3077 [x] 95% ImGui::InputFloat2 imgui_widgets.lua:3051
[x] 84% ImGui::InputFloat3 imgui_widgets.lua:3071 [x] 84% ImGui::InputFloat3 imgui_widgets.lua:3045
[x] 95% ImGui::InputFloat4 imgui_widgets.lua:3081 [x] 95% ImGui::InputFloat4 imgui_widgets.lua:3055
[x] 66% ImGui::InputInt imgui_widgets.lua:3102 [x] 66% ImGui::InputInt imgui_widgets.lua:3076
[x] 100% ImGui::InputInt2 imgui_widgets.lua:3085 [x] 100% ImGui::InputInt2 imgui_widgets.lua:3059
[x] 100% ImGui::InputInt3 imgui_widgets.lua:3089 [x] 100% ImGui::InputInt3 imgui_widgets.lua:3063
[x] 100% ImGui::InputInt4 imgui_widgets.lua:3093 [x] 100% ImGui::InputInt4 imgui_widgets.lua:3067
[x] 65% ImGui::InputDouble imgui_widgets.lua:3132 [x] 65% ImGui::InputDouble imgui_widgets.lua:3106
-- Widgets: InputText, InputTextMultiline, InputTextWithHint -- Widgets: InputText, InputTextMultiline, InputTextWithHint
[x] 77% ImGui::InputText imgui_widgets.lua:4459 [x] 77% ImGui::InputText imgui_widgets.lua:4433
[x] 80% ImGui::InputTextMultiline imgui_widgets.lua:4481 [x] 80% ImGui::InputTextMultiline imgui_widgets.lua:4455
[x] 77% ImGui::InputTextWithHint imgui_widgets.lua:6305 [x] 77% ImGui::InputTextWithHint imgui_widgets.lua:6279
[x] 87% InputTextCalcTextSize imgui_widgets.lua:4501 [x] 87% InputTextCalcTextSize imgui_widgets.lua:4475
[x] 100% STB_TEXTEDIT_STRINGLEN imgui_widgets.lua:4517 [x] 100% STB_TEXTEDIT_STRINGLEN imgui_widgets.lua:4491
[x] 88% STB_TEXTEDIT_GETCHAR imgui_widgets.lua:4521 [x] 88% STB_TEXTEDIT_GETCHAR imgui_widgets.lua:4495
[x] 61% STB_TEXTEDIT_GETWIDTH imgui_widgets.lua:4527 [x] 61% STB_TEXTEDIT_GETWIDTH imgui_widgets.lua:4501
[x] 86% STB_TEXTEDIT_LAYOUTROW imgui_widgets.lua:4532 [x] 86% STB_TEXTEDIT_LAYOUTROW imgui_widgets.lua:4506
[x] 79% IMSTB_TEXTEDIT_GETNEXTCHARINDEX_IMPL imgui_widgets.lua:4545 [x] 79% IMSTB_TEXTEDIT_GETNEXTCHARINDEX_IMPL imgui_widgets.lua:4519
[x] 70% IMSTB_TEXTEDIT_GETPREVCHARINDEX_IMPL imgui_widgets.lua:4554 [x] 70% IMSTB_TEXTEDIT_GETPREVCHARINDEX_IMPL imgui_widgets.lua:4528
[x] 23% ImCharIsSeparatorW imgui_widgets.lua:4571 [x] 23% ImCharIsSeparatorW imgui_widgets.lua:4545
[x] 66% is_word_boundary_from_right imgui_widgets.lua:4584 [x] 66% is_word_boundary_from_right imgui_widgets.lua:4558
[x] 65% is_word_boundary_from_left imgui_widgets.lua:4603 [x] 65% is_word_boundary_from_left imgui_widgets.lua:4577
[x] 71% STB_TEXTEDIT_MOVEWORDLEFT_IMPL imgui_widgets.lua:4621 [x] 71% STB_TEXTEDIT_MOVEWORDLEFT_IMPL imgui_widgets.lua:4595
[ ] STB_TEXTEDIT_MOVEWORDRIGHT_MAC [ ] STB_TEXTEDIT_MOVEWORDRIGHT_MAC
[ ] STB_TEXTEDIT_MOVEWORDRIGHT_WIN [ ] STB_TEXTEDIT_MOVEWORDRIGHT_WIN
[x] 100% STB_TEXTEDIT_MOVEWORDRIGHT_IMPL imgui_widgets.lua:4653 [x] 100% STB_TEXTEDIT_MOVEWORDRIGHT_IMPL imgui_widgets.lua:4627
[x] 68% STB_TEXTEDIT_MOVELINESTART_IMPL imgui_widgets.lua:4666 [x] 68% STB_TEXTEDIT_MOVELINESTART_IMPL imgui_widgets.lua:4640
[x] 73% STB_TEXTEDIT_MOVELINEEND_IMPL imgui_widgets.lua:4705 [x] 73% STB_TEXTEDIT_MOVELINEEND_IMPL imgui_widgets.lua:4679
[x] 79% STB_TEXTEDIT_DELETECHARS imgui_widgets.lua:4738 [x] 79% STB_TEXTEDIT_DELETECHARS imgui_widgets.lua:4712
[x] 87% STB_TEXTEDIT_INSERTCHARS imgui_widgets.lua:4752 [x] 87% STB_TEXTEDIT_INSERTCHARS imgui_widgets.lua:4726
[x] 81% stb_textedit_replace imgui_widgets.lua:4795 [x] 81% stb_textedit_replace imgui_widgets.lua:4769
[x] 12% ImGuiInputTextState::ImGuiInputTextState imgui_internal.lua:1705 [x] 12% ImGuiInputTextState::ImGuiInputTextState imgui_internal.lua:1705
[-] ImGuiInputTextState::~ImGuiInputTextState c++-only [-] ImGuiInputTextState::~ImGuiInputTextState c++-only
[x] 93% ImGuiInputTextState::OnKeyPressed imgui_widgets.lua:4823 [x] 93% ImGuiInputTextState::OnKeyPressed imgui_widgets.lua:4797
[x] 63% ImGuiInputTextState::OnCharPressed imgui_widgets.lua:4838 [x] 63% ImGuiInputTextState::OnCharPressed imgui_widgets.lua:4812
[x] 100% ImGuiInputTextState::CursorAnimReset imgui_widgets.lua:4850 [x] 100% ImGuiInputTextState::CursorAnimReset imgui_widgets.lua:4824
[x] 85% ImGuiInputTextState::CursorClamp imgui_widgets.lua:4852 [x] 85% ImGuiInputTextState::CursorClamp imgui_widgets.lua:4826
[x] 94% ImGuiInputTextState::HasSelection imgui_widgets.lua:4858 [x] 94% ImGuiInputTextState::HasSelection imgui_widgets.lua:4832
[ ] ImGuiInputTextState::ClearSelection [ ] ImGuiInputTextState::ClearSelection
[ ] ImGuiInputTextState::GetCursorPos [ ] ImGuiInputTextState::GetCursorPos
[ ] ImGuiInputTextState::GetSelectionStart [ ] ImGuiInputTextState::GetSelectionStart
[ ] ImGuiInputTextState::GetSelectionEnd [ ] ImGuiInputTextState::GetSelectionEnd
[ ] ImGuiInputTextState::SetSelection [ ] ImGuiInputTextState::SetSelection
[ ] ImGuiInputTextState::GetPreferredOffsetX [ ] ImGuiInputTextState::GetPreferredOffsetX
[x] 74% ImGuiInputTextState::SelectAll imgui_widgets.lua:4860 [x] 74% ImGuiInputTextState::SelectAll imgui_widgets.lua:4834
[ ] ImGuiInputTextState::ReloadUserBufAndSelectAll [ ] ImGuiInputTextState::ReloadUserBufAndSelectAll
[ ] ImGuiInputTextState::ReloadUserBufAndKeepSelection [ ] ImGuiInputTextState::ReloadUserBufAndKeepSelection
[ ] ImGuiInputTextState::ReloadUserBufAndMoveToEnd [ ] ImGuiInputTextState::ReloadUserBufAndMoveToEnd
[x] 18% ImGuiInputTextCallbackData::ImGuiInputTextCallbackData imgui_h.lua:2468 [x] 18% ImGuiInputTextCallbackData::ImGuiInputTextCallbackData imgui_h.lua:2468
[x] 61% ImGuiInputTextCallbackData::DeleteChars imgui_h.lua:2472 [x] 61% ImGuiInputTextCallbackData::DeleteChars imgui_h.lua:2472
[x] 33% ImGuiInputTextCallbackData::InsertChars imgui_h.lua:2489 [x] 33% ImGuiInputTextCallbackData::InsertChars imgui_h.lua:2489
[x] 92% ImGui::PushPasswordFont imgui_widgets.lua:4869 [x] 92% ImGui::PushPasswordFont imgui_widgets.lua:4843
[x] 98% ImGui::PopPasswordFont imgui_widgets.lua:4884 [x] 98% ImGui::PopPasswordFont imgui_widgets.lua:4858
[x] 80% InputTextFilterCharacter imgui_widgets.lua:4904 [x] 80% InputTextFilterCharacter imgui_widgets.lua:4878
[x] 74% InputTextReconcileUndoState imgui_widgets.lua:5042 [x] 74% InputTextReconcileUndoState imgui_widgets.lua:5016
[x] 86% ImGui::InputTextDeactivateHook imgui_widgets.lua:5084 [x] 86% ImGui::InputTextDeactivateHook imgui_widgets.lua:5058
[x] 74% ImLowerBound imgui_widgets.lua:5186 [x] 74% ImLowerBound imgui_widgets.lua:5160
[x] 55% InputTextLineIndexBuild imgui_widgets.lua:5118 [x] 55% InputTextLineIndexBuild imgui_widgets.lua:5092
[x] 77% InputTextLineIndexGetPosOffset imgui_widgets.lua:5214 [x] 77% InputTextLineIndexGetPosOffset imgui_widgets.lua:5188
[x] 87% ImGui::InputTextEx imgui_widgets.lua:5259 [x] 87% ImGui::InputTextEx imgui_widgets.lua:5233
[ ] ImGui::DebugNodeInputTextState [ ] ImGui::DebugNodeInputTextState
-- Widgets: ColorEdit, ColorPicker, ColorButton, etc. -- Widgets: ColorEdit, ColorPicker, ColorButton, etc.
[x] 54% ImGui::ColorEdit3 imgui_widgets.lua:6683 [x] 54% ImGui::ColorEdit3 imgui_widgets.lua:6657
[x] 88% ColorEditRestoreH imgui_widgets.lua:6329 [x] 88% ColorEditRestoreH imgui_widgets.lua:6303
[x] 87% ColorEditRestoreHS imgui_widgets.lua:6346 [x] 87% ColorEditRestoreHS imgui_widgets.lua:6320
[x] 62% ImGui::ColorEdit4 imgui_widgets.lua:6389 [x] 62% ImGui::ColorEdit4 imgui_widgets.lua:6363
[x] 70% ImGui::ColorPicker3 imgui_widgets.lua:6691 [x] 70% ImGui::ColorPicker3 imgui_widgets.lua:6665
[x] 98% RenderArrowsForVerticalBar imgui_widgets.lua:6719 [x] 98% RenderArrowsForVerticalBar imgui_widgets.lua:6693
[x] 80% ImGui::ColorPicker4 imgui_widgets.lua:6738 [x] 80% ImGui::ColorPicker4 imgui_widgets.lua:6712
[x] 69% ImGui::ColorButton imgui_widgets.lua:7165 [x] 85% ImGui::ColorButton imgui_widgets.lua:7139
[-] ImGui::SetColorEditOptions obsolete [-] ImGui::SetColorEditOptions obsolete
[x] 73% ImGui::ColorTooltip imgui_widgets.lua:7260 [x] 73% ImGui::ColorTooltip imgui_widgets.lua:7243
[x] 72% ImGui::ColorEditOptionsPopup imgui_widgets.lua:7304 [x] 72% ImGui::ColorEditOptionsPopup imgui_widgets.lua:7287
[x] 75% ImGui::ColorPickerOptionsPopup imgui_widgets.lua:7380 [x] 75% ImGui::ColorPickerOptionsPopup imgui_widgets.lua:7363
-- Widgets: TreeNode, CollapsingHeader, etc. -- Widgets: TreeNode, CollapsingHeader, etc.
[x] 78% ImGui::TreeNode imgui_widgets.lua:7465 [x] 78% ImGui::TreeNode imgui_widgets.lua:7448
[x] 89% ImGui::TreeNodeV imgui_widgets.lua:7477 [x] 89% ImGui::TreeNodeV imgui_widgets.lua:7460
[x] 69% ImGui::TreeNodeEx imgui_widgets.lua:7484 [x] 69% ImGui::TreeNodeEx imgui_widgets.lua:7467
[x] 68% ImGui::TreeNodeExV imgui_widgets.lua:7498 [x] 68% ImGui::TreeNodeExV imgui_widgets.lua:7481
[x] 73% ImGui::TreeNodeGetOpen imgui_widgets.lua:7511 [x] 73% ImGui::TreeNodeGetOpen imgui_widgets.lua:7494
[x] 79% ImGui::TreeNodeSetOpen imgui_widgets.lua:7519 [x] 79% ImGui::TreeNodeSetOpen imgui_widgets.lua:7502
[x] 82% ImGui::TreeNodeUpdateNextOpen imgui_widgets.lua:7527 [x] 82% ImGui::TreeNodeUpdateNextOpen imgui_widgets.lua:7510
[x] 86% TreeNodeStoreStackData imgui_widgets.lua:7570 [x] 86% TreeNodeStoreStackData imgui_widgets.lua:7553
[x] 82% ImGui::TreeNodeBehavior imgui_widgets.lua:7597 [x] 82% ImGui::TreeNodeBehavior imgui_widgets.lua:7580
[x] 84% ImGui::TreeNodeDrawLineToChildNode imgui_widgets.lua:7901 [x] 91% ImGui::TreeNodeDrawLineToChildNode imgui_widgets.lua:7884
[x] 98% ImGui::TreeNodeDrawLineToTreePop imgui_widgets.lua:7932 [x] 98% ImGui::TreeNodeDrawLineToTreePop imgui_widgets.lua:7919
[x] 67% ImGui::TreePush imgui_widgets.lua:7964 [x] 67% ImGui::TreePush imgui_widgets.lua:7951
[x] 74% ImGui::TreePushOverrideID imgui_widgets.lua:7972 [x] 74% ImGui::TreePushOverrideID imgui_widgets.lua:7959
[x] 84% ImGui::TreePop imgui_widgets.lua:7980 [x] 84% ImGui::TreePop imgui_widgets.lua:7967
[x] 100% ImGui::GetTreeNodeToLabelSpacing imgui_widgets.lua:8029 [x] 100% ImGui::GetTreeNodeToLabelSpacing imgui_widgets.lua:8016
[x] 77% ImGui::SetNextItemOpen imgui_widgets.lua:8016 [x] 77% ImGui::SetNextItemOpen imgui_widgets.lua:8003
[x] 85% ImGui::SetNextItemStorageID imgui_widgets.lua:8036 [x] 85% ImGui::SetNextItemStorageID imgui_widgets.lua:8023
[x] 81% ImGui::CollapsingHeader imgui_widgets.lua:8055 [x] 81% ImGui::CollapsingHeader imgui_widgets.lua:8042
-- Widgets: Selectable -- Widgets: Selectable
[x] 83% ImGui::Selectable imgui_widgets.lua:8112 [x] 83% ImGui::Selectable imgui_widgets.lua:8099
-- Widgets: Typing-Select support -- Widgets: Typing-Select support
[x] 74% ImGui::GetTypingSelectRequest imgui_widgets.lua:8343 [x] 74% ImGui::GetTypingSelectRequest imgui_widgets.lua:8330
[x] 48% ImStrimatchlen imgui_widgets.lua:8445 [x] 48% ImStrimatchlen imgui_widgets.lua:8432
[x] 95% ImGui::TypingSelectFindMatch imgui_widgets.lua:8468 [x] 95% ImGui::TypingSelectFindMatch imgui_widgets.lua:8455
[x] 88% ImGui::TypingSelectFindNextSingleCharMatch imgui_widgets.lua:8485 [x] 88% ImGui::TypingSelectFindNextSingleCharMatch imgui_widgets.lua:8472
[x] 85% ImGui::TypingSelectFindBestLeadingMatch imgui_widgets.lua:8516 [x] 85% ImGui::TypingSelectFindBestLeadingMatch imgui_widgets.lua:8503
[x] 86% ImGui::DebugNodeTypingSelectState imgui_widgets.lua:8534 [x] 86% ImGui::DebugNodeTypingSelectState imgui_widgets.lua:8521
-- Widgets: Box-Select support -- Widgets: Box-Select support
[x] 67% BoxSelectPreStartDrag imgui_widgets.lua:8555 [x] 67% BoxSelectPreStartDrag imgui_widgets.lua:8542
[x] 89% BoxSelectActivateDrag imgui_widgets.lua:8569 [x] 89% BoxSelectActivateDrag imgui_widgets.lua:8556
[x] 99% BoxSelectDeactivateDrag imgui_widgets.lua:8582 [x] 99% BoxSelectDeactivateDrag imgui_widgets.lua:8569
[x] 81% BoxSelectScrollWithMouseDrag imgui_widgets.lua:8592 [x] 81% BoxSelectScrollWithMouseDrag imgui_widgets.lua:8579
[x] 49% ImGui::BeginBoxSelect imgui_widgets.lua:8629 [x] 49% ImGui::BeginBoxSelect imgui_widgets.lua:8616
[x] 90% ImGui::EndBoxSelect imgui_widgets.lua:8725 [x] 90% ImGui::EndBoxSelect imgui_widgets.lua:8712
-- Widgets: Multi-Select support -- Widgets: Multi-Select support
[x] 74% DebugLogMultiSelectRequests imgui_widgets.lua:8769 [x] 74% DebugLogMultiSelectRequests imgui_widgets.lua:8756
[x] 61% CalcScopeRect imgui_widgets.lua:8777 [x] 61% CalcScopeRect imgui_widgets.lua:8764
[x] 80% ImGui::BeginMultiSelect imgui_widgets.lua:8808 [x] 80% ImGui::BeginMultiSelect imgui_widgets.lua:8795
[x] 83% ImGui::EndMultiSelect imgui_widgets.lua:8955 [x] 83% ImGui::EndMultiSelect imgui_widgets.lua:8942
[x] 73% ImGui::SetNextItemSelectionUserData imgui_widgets.lua:9045 [x] 73% ImGui::SetNextItemSelectionUserData imgui_widgets.lua:9032
[x] 84% ImGui::MultiSelectItemHeader imgui_widgets.lua:9076 [x] 84% ImGui::MultiSelectItemHeader imgui_widgets.lua:9063
[x] 86% ImGui::MultiSelectItemFooter imgui_widgets.lua:9146 [x] 86% ImGui::MultiSelectItemFooter imgui_widgets.lua:9133
[x] 59% ImGui::MultiSelectAddSetAll imgui_widgets.lua:9360 [x] 59% ImGui::MultiSelectAddSetAll imgui_widgets.lua:9347
[x] 31% ImGui::MultiSelectAddSetRange imgui_widgets.lua:9372 [x] 31% ImGui::MultiSelectAddSetRange imgui_widgets.lua:9359
[x] 84% ImGui::DebugNodeMultiSelectState imgui_widgets.lua:9390 [x] 84% ImGui::DebugNodeMultiSelectState imgui_widgets.lua:9377
-- Widgets: Multi-Select helpers -- Widgets: Multi-Select helpers
[x] 46% ImGuiSelectionBasicStorage::ImGuiSelectionBasicStorage imgui_widgets.lua:9435 [x] 46% ImGuiSelectionBasicStorage::ImGuiSelectionBasicStorage imgui_widgets.lua:9422
[x] 61% ImGuiSelectionBasicStorage::Clear imgui_widgets.lua:9447 [x] 61% ImGuiSelectionBasicStorage::Clear imgui_widgets.lua:9434
[x] 53% ImGuiSelectionBasicStorage::Swap imgui_widgets.lua:9454 [x] 53% ImGuiSelectionBasicStorage::Swap imgui_widgets.lua:9441
[x] 57% ImGuiSelectionBasicStorage::Contains imgui_widgets.lua:9462 [x] 57% ImGuiSelectionBasicStorage::Contains imgui_widgets.lua:9449
[x] 12% PairComparerByValueInt imgui_widgets.lua:9467 [x] 12% PairComparerByValueInt imgui_widgets.lua:9454
[x] 26% ImGuiSelectionBasicStorage::GetNextSelectedItem imgui_widgets.lua:9476 [x] 26% ImGuiSelectionBasicStorage::GetNextSelectedItem imgui_widgets.lua:9463
[x] 50% ImGuiSelectionBasicStorage::SetItemSelected imgui_widgets.lua:9507 [x] 50% ImGuiSelectionBasicStorage::SetItemSelected imgui_widgets.lua:9494
[x] 42% ImGuiSelectionBasicStorage_BatchSetItemSelected imgui_widgets.lua:9520 [x] 42% ImGuiSelectionBasicStorage_BatchSetItemSelected imgui_widgets.lua:9507
[~] 0% ImGuiSelectionBasicStorage_BatchFinish imgui_widgets.lua:9535 stub [~] 0% ImGuiSelectionBasicStorage_BatchFinish imgui_widgets.lua:9522 stub
[x] 78% ImGuiSelectionBasicStorage::ApplyRequests imgui_widgets.lua:9554 [x] 78% ImGuiSelectionBasicStorage::ApplyRequests imgui_widgets.lua:9541
[x] 48% ImGuiSelectionExternalStorage::ImGuiSelectionExternalStorage imgui_widgets.lua:9619 [x] 48% ImGuiSelectionExternalStorage::ImGuiSelectionExternalStorage imgui_widgets.lua:9606
[x] 84% ImGuiSelectionExternalStorage::ApplyRequests imgui_widgets.lua:9630 [x] 84% ImGuiSelectionExternalStorage::ApplyRequests imgui_widgets.lua:9617
-- Widgets: ListBox -- Widgets: ListBox
[x] 92% ImGui::BeginListBox imgui_widgets.lua:9663 [x] 92% ImGui::BeginListBox imgui_widgets.lua:9650
[x] 78% ImGui::EndListBox imgui_widgets.lua:9704 [x] 78% ImGui::EndListBox imgui_widgets.lua:9691
[x] 63% ImGui::ListBox imgui_widgets.lua:9719 [x] 63% ImGui::ListBox imgui_widgets.lua:9706
-- Widgets: PlotLines, PlotHistogram -- Widgets: PlotLines, PlotHistogram
[x] 89% ImGui::PlotEx imgui_widgets.lua:9791 [x] 89% ImGui::PlotEx imgui_widgets.lua:9778
[x] 86% ImGuiPlotArrayGetterData::ImGuiPlotArrayGetterData imgui_widgets.lua:9921 [x] 86% ImGuiPlotArrayGetterData::ImGuiPlotArrayGetterData imgui_widgets.lua:9908
[x] 48% Plot_ArrayGetter imgui_widgets.lua:9932 [x] 48% Plot_ArrayGetter imgui_widgets.lua:9919
[x] 41% ImGui::PlotLines imgui_widgets.lua:9946 [x] 41% ImGui::PlotLines imgui_widgets.lua:9933
[x] 41% ImGui::PlotHistogram imgui_widgets.lua:9972 [x] 41% ImGui::PlotHistogram imgui_widgets.lua:9959
-- Widgets: Value helpers -- Widgets: Value helpers
[x] 21% ImGui::Value imgui_widgets.lua:384 [x] 21% ImGui::Value imgui_widgets.lua:384
-- MenuItem, BeginMenu, EndMenu, etc. -- MenuItem, BeginMenu, EndMenu, etc.
[x] 49% ImGuiMenuColumns::Update imgui_widgets.lua:10004 [x] 49% ImGuiMenuColumns::Update imgui_widgets.lua:9991
[x] 77% ImGuiMenuColumns::CalcNextTotalWidth imgui_widgets.lua:10016 [x] 77% ImGuiMenuColumns::CalcNextTotalWidth imgui_widgets.lua:10003
[x] 64% ImGuiMenuColumns::DeclColumns imgui_widgets.lua:10039 [x] 64% ImGuiMenuColumns::DeclColumns imgui_widgets.lua:10026
[x] 91% ImGui::BeginMenuBar imgui_widgets.lua:10052 [x] 91% ImGui::BeginMenuBar imgui_widgets.lua:10039
[x] 92% ImGui::EndMenuBar imgui_widgets.lua:10086 [x] 92% ImGui::EndMenuBar imgui_widgets.lua:10073
[x] 85% ImGui::BeginViewportSideBar imgui_widgets.lua:10149 [x] 85% ImGui::BeginViewportSideBar imgui_widgets.lua:10136
[x] 90% ImGui::BeginMainMenuBar imgui_widgets.lua:10185 [x] 90% ImGui::BeginMainMenuBar imgui_widgets.lua:10172
[x] 90% ImGui::EndMainMenuBar imgui_widgets.lua:10211 [x] 90% ImGui::EndMainMenuBar imgui_widgets.lua:10198
[x] 91% IsRootOfOpenMenuSet imgui_widgets.lua:10227 [x] 91% IsRootOfOpenMenuSet imgui_widgets.lua:10214
[x] 89% ImGui::BeginMenuEx imgui_widgets.lua:10255 [x] 89% ImGui::BeginMenuEx imgui_widgets.lua:10242
[x] 67% ImGui::BeginMenu imgui_widgets.lua:10486 [x] 67% ImGui::BeginMenu imgui_widgets.lua:10473
[x] 92% ImGui::EndMenu imgui_widgets.lua:10492 [x] 92% ImGui::EndMenu imgui_widgets.lua:10479
[x] 85% ImGui::MenuItemEx imgui_widgets.lua:10516 [x] 85% ImGui::MenuItemEx imgui_widgets.lua:10503
[x] 67% ImGui::MenuItem imgui_widgets.lua:10623 [x] 67% ImGui::MenuItem imgui_widgets.lua:10610
-- Widgets: BeginTabBar, EndTabBar, etc. -- Widgets: BeginTabBar, EndTabBar, etc.
[x] 19% ImGuiTabBarSection::ImGuiTabBarSection imgui_widgets.lua:10691 [x] 19% ImGuiTabBarSection::ImGuiTabBarSection imgui_widgets.lua:10678
[x] 16% ImGuiTabBar::ImGuiTabBar imgui_internal.lua:2210 [x] 16% ImGuiTabBar::ImGuiTabBar imgui_internal.lua:2210
[x] 65% TabItemGetSectionIdx imgui_widgets.lua:10658 [x] 65% TabItemGetSectionIdx imgui_widgets.lua:10645
[ ] TabItemComparerBySection [ ] TabItemComparerBySection
[ ] TabItemComparerByBeginOrder [ ] TabItemComparerByBeginOrder
[ ] GetTabBarFromTabBarRef [ ] GetTabBarFromTabBarRef
[ ] GetTabBarRefFromTabBar [ ] GetTabBarRefFromTabBar
[x] 60% ImGui::TabBarFindByID imgui_widgets.lua:10779 [x] 60% ImGui::TabBarFindByID imgui_widgets.lua:10766
[x] 77% ImGui::TabBarRemove imgui_widgets.lua:10785 [x] 77% ImGui::TabBarRemove imgui_widgets.lua:10772
[x] 92% ImGui::BeginTabBar imgui_widgets.lua:10790 [x] 92% ImGui::BeginTabBar imgui_widgets.lua:10777
[x] 82% ImGui::BeginTabBarEx imgui_widgets.lua:10808 [x] 82% ImGui::BeginTabBarEx imgui_widgets.lua:10795
[x] 90% ImGui::EndTabBar imgui_widgets.lua:10872 [x] 90% ImGui::EndTabBar imgui_widgets.lua:10859
[x] 68% TabBarCalcScrollableWidth imgui_widgets.lua:10684 [x] 68% TabBarCalcScrollableWidth imgui_widgets.lua:10671
[x] 81% ImGui::TabBarLayout imgui_widgets.lua:10907 [x] 81% ImGui::TabBarLayout imgui_widgets.lua:10894
[x] 75% ImGui::TabBarCalcTabID imgui_widgets.lua:11178 [x] 75% ImGui::TabBarCalcTabID imgui_widgets.lua:11165
[x] 62% ImGui::TabBarCalcMaxTabWidth imgui_widgets.lua:11188 [x] 62% ImGui::TabBarCalcMaxTabWidth imgui_widgets.lua:11175
[x] 71% ImGui::TabBarFindTabByID imgui_widgets.lua:11192 [x] 71% ImGui::TabBarFindTabByID imgui_widgets.lua:11179
[x] 90% ImGui::TabBarFindTabByOrder imgui_widgets.lua:11204 [x] 90% ImGui::TabBarFindTabByOrder imgui_widgets.lua:11191
[x] 85% ImGui::TabBarFindMostRecentlySelectedTabForActiveWindow imgui_widgets.lua:11216 [x] 85% ImGui::TabBarFindMostRecentlySelectedTabForActiveWindow imgui_widgets.lua:11203
[x] 93% ImGui::TabBarGetCurrentTab imgui_widgets.lua:11227 [x] 93% ImGui::TabBarGetCurrentTab imgui_widgets.lua:11214
[x] 55% ImGui::TabBarGetTabName imgui_widgets.lua:11232 [x] 55% ImGui::TabBarGetTabName imgui_widgets.lua:11219
[x] 89% ImGui::TabBarGetTabPos imgui_widgets.lua:11238 [x] 89% ImGui::TabBarGetTabPos imgui_widgets.lua:11225
[x] 92% ImGui::TabBarAddTab imgui_widgets.lua:11247 [x] 92% ImGui::TabBarAddTab imgui_widgets.lua:11234
[x] 91% ImGui::TabBarRemoveTab imgui_widgets.lua:11264 [x] 91% ImGui::TabBarRemoveTab imgui_widgets.lua:11251
[x] 92% ImGui::TabBarCloseTab imgui_widgets.lua:11273 [x] 92% ImGui::TabBarCloseTab imgui_widgets.lua:11260
[x] 97% ImGui::TabBarScrollClamp imgui_widgets.lua:11291 [x] 97% ImGui::TabBarScrollClamp imgui_widgets.lua:11278
[x] 89% ImGui::TabBarScrollToTab imgui_widgets.lua:11297 [x] 89% ImGui::TabBarScrollToTab imgui_widgets.lua:11284
[x] 67% ImGui::TabBarQueueFocus imgui_widgets.lua:11335 [x] 67% ImGui::TabBarQueueFocus imgui_widgets.lua:11322
[x] 100% ImGui::TabBarQueueReorder imgui_widgets.lua:11344 [x] 100% ImGui::TabBarQueueReorder imgui_widgets.lua:11331
[x] 85% ImGui::TabBarQueueReorderFromMousePos imgui_widgets.lua:11351 [x] 85% ImGui::TabBarQueueReorderFromMousePos imgui_widgets.lua:11338
[x] 64% ImGui::TabBarProcessReorder imgui_widgets.lua:11385 [x] 64% ImGui::TabBarProcessReorder imgui_widgets.lua:11372
[x] 85% ImGui::TabBarScrollingButtons imgui_widgets.lua:11408 [x] 85% ImGui::TabBarScrollingButtons imgui_widgets.lua:11395
[x] 80% ImGui::TabBarTabListPopupButton imgui_widgets.lua:11468 [x] 80% ImGui::TabBarTabListPopupButton imgui_widgets.lua:11455
-- Widgets: BeginTabItem, EndTabItem, etc. -- Widgets: BeginTabItem, EndTabItem, etc.
[x] 78% ImGui::BeginTabItem imgui_widgets.lua:11516 [x] 78% ImGui::BeginTabItem imgui_widgets.lua:11503
[x] 85% ImGui::EndTabItem imgui_widgets.lua:11535 [x] 85% ImGui::EndTabItem imgui_widgets.lua:11522
[x] 81% ImGui::TabItemButton imgui_widgets.lua:11549 [x] 81% ImGui::TabItemButton imgui_widgets.lua:11536
[x] 84% ImGui::TabItemSpacing imgui_widgets.lua:11559 [x] 84% ImGui::TabItemSpacing imgui_widgets.lua:11546
[x] 79% ImGui::TabItemEx imgui_widgets.lua:11570 [x] 79% ImGui::TabItemEx imgui_widgets.lua:11557
[x] 88% ImGui::SetTabItemClosed imgui_widgets.lua:11856 [x] 88% ImGui::SetTabItemClosed imgui_widgets.lua:11843
[x] 79% ImGui::TabItemCalcSize imgui_widgets.lua:11878 [x] 79% ImGui::TabItemCalcSize imgui_widgets.lua:11865
[x] 92% ImGui::TabItemBackground imgui_widgets.lua:11894 [x] 93% ImGui::TabItemBackground imgui_widgets.lua:11881
[x] 86% ImGui::TabItemLabelAndCloseButton imgui_widgets.lua:11915 [x] 86% ImGui::TabItemLabelAndCloseButton imgui_widgets.lua:11902
==================================================================================================== ====================================================================================================
imgui_draw.cpp imgui_draw.cpp
@@ -1314,13 +1314,13 @@ imgui_draw.cpp
[x] 63% ImDrawList::_PathArcToN imgui_draw.lua:6761 [x] 63% ImDrawList::_PathArcToN imgui_draw.lua:6761
[x] 10% ImDrawList::PathArcToFast imgui_draw.lua:6747 [x] 10% ImDrawList::PathArcToFast imgui_draw.lua:6747
[x] 46% ImDrawList::PathArcTo imgui_draw.lua:6787 [x] 46% ImDrawList::PathArcTo imgui_draw.lua:6787
[x] 61% ImDrawList::PathEllipticalArcTo imgui_draw.lua:7384 [x] 61% ImDrawList::PathEllipticalArcTo imgui_draw.lua:7377
[x] 88% ImBezierCubicCalc imgui_draw.lua:7396 [x] 88% ImBezierCubicCalc imgui_draw.lua:7389
[x] 89% ImBezierQuadraticCalc imgui_draw.lua:7402 [x] 89% ImBezierQuadraticCalc imgui_draw.lua:7395
[x] 85% PathBezierCubicCurveToCasteljau imgui_draw.lua:7409 [x] 85% PathBezierCubicCurveToCasteljau imgui_draw.lua:7402
[x] 90% PathBezierQuadraticCurveToCasteljau imgui_draw.lua:7427 [x] 90% PathBezierQuadraticCurveToCasteljau imgui_draw.lua:7420
[x] 91% ImDrawList::PathBezierCubicCurveTo imgui_draw.lua:7441 [x] 91% ImDrawList::PathBezierCubicCurveTo imgui_draw.lua:7434
[x] 90% ImDrawList::PathBezierQuadraticCurveTo imgui_draw.lua:7453 [x] 90% ImDrawList::PathBezierQuadraticCurveTo imgui_draw.lua:7446
[x] 8% ImDrawList::PathRect imgui_draw.lua:5234 [x] 8% ImDrawList::PathRect imgui_draw.lua:5234
[x] 46% ImDrawList::_AddLine imgui_draw.lua:5366 [x] 46% ImDrawList::_AddLine imgui_draw.lua:5366
[x] 4% ImDrawList::AddLine imgui_draw.lua:5375 [x] 4% ImDrawList::AddLine imgui_draw.lua:5375
@@ -1364,7 +1364,7 @@ imgui_draw.cpp
[ ] ImTriangulator::FlipNodeList [ ] ImTriangulator::FlipNodeList
[ ] ImTriangulator::IsEar [ ] ImTriangulator::IsEar
[ ] ImTriangulator::ReclassifyNode [ ] ImTriangulator::ReclassifyNode
[x] 17% ImDrawList::AddConcavePolyFilled imgui_draw.lua:7467 [x] 17% ImDrawList::AddConcavePolyFilled imgui_draw.lua:7460
-- ImDrawListSplitter -- ImDrawListSplitter
[x] 58% ImDrawListSplitter::ClearFreeMemory imgui_draw.lua:4201 [x] 58% ImDrawListSplitter::ClearFreeMemory imgui_draw.lua:4201
@@ -1556,14 +1556,14 @@ imgui_draw.cpp
-- ImGui Internal Render Helpers -- ImGui Internal Render Helpers
[x] 58% ImGui::RenderArrow imgui_draw.lua:7100 [x] 58% ImGui::RenderArrow imgui_draw.lua:7100
[x] 88% ImGui::RenderBullet imgui_draw.lua:7132 [x] 88% ImGui::RenderBullet imgui_draw.lua:7132
[x] 63% ImGui::RenderCheckMark imgui_draw.lua:7144 [x] 66% ImGui::RenderCheckMark imgui_draw.lua:7144
[x] 90% ImGui::RenderArrowPointingAt imgui_draw.lua:7169 [x] 90% ImGui::RenderArrowPointingAt imgui_draw.lua:7169
[x] 93% ImGui::RenderArrowDockMenu imgui.lua:4551 [x] 93% ImGui::RenderArrowDockMenu imgui.lua:4551
[x] 100% ImAcos01 imgui_draw.lua:7182 [x] 100% ImAcos01 imgui_draw.lua:7182
[x] 95% ImGui::RenderRectFilledInRangeH imgui_draw.lua:7198 [x] 95% ImGui::RenderRectFilledInRangeH imgui_draw.lua:7198
[x] 80% ImGui::RenderRectFilledWithHole imgui_draw.lua:7362 [x] 80% ImGui::RenderRectFilledWithHole imgui_draw.lua:7355
[x] 81% ImGui::CalcRoundingFlagsForRectInRect imgui_draw.lua:7253 [x] 81% ImGui::CalcRoundingFlagsForRectInRect imgui_draw.lua:7253
[x] 70% ImGui::RenderColorRectWithAlphaCheckerboard imgui_draw.lua:7289 [x] 79% ImGui::RenderColorRectWithAlphaCheckerboard imgui_draw.lua:7289
-- Decompression code -- Decompression code
[ ] stb_decompress_length [ ] stb_decompress_length
@@ -1697,8 +1697,8 @@ imgui_tables.cpp
-- Tables: Debugging -- Tables: Debugging
[ ] DebugNodeTableGetSizingPolicyDesc [ ] DebugNodeTableGetSizingPolicyDesc
[x] 16% ImGui::DebugNodeTable imgui.lua:20778 [x] 16% ImGui::DebugNodeTable imgui.lua:20783
[x] 69% ImGui::DebugNodeTableSettings imgui.lua:20760 [x] 69% ImGui::DebugNodeTableSettings imgui.lua:20765
-- Columns, BeginColumns, EndColumns, etc. -- Columns, BeginColumns, EndColumns, etc.
[x] 24% ImGui::SetWindowClipRectBeforeSetChannel imgui_tables.lua:2070 [x] 24% ImGui::SetWindowClipRectBeforeSetChannel imgui_tables.lua:2070
@@ -1955,7 +1955,7 @@ imgui.h
[ ] IM_MSVC_RUNTIME_CHECKS_RESTORE::HSV [ ] IM_MSVC_RUNTIME_CHECKS_RESTORE::HSV
-- Multi-Select API flags and structures (ImGuiMultiSelectFlags, ImGuiSelectionRequestType, ImGuiSelectionRequest, ImGuiMultiSelectIO, ImGuiSelectionBasicStorage) -- Multi-Select API flags and structures (ImGuiMultiSelectFlags, ImGuiSelectionRequestType, ImGuiSelectionRequest, ImGuiMultiSelectIO, ImGuiSelectionBasicStorage)
[x] 100% ImGuiSelectionBasicStorage::GetStorageIdFromIndex imgui_widgets.lua:9516 [x] 100% ImGuiSelectionBasicStorage::GetStorageIdFromIndex imgui_widgets.lua:9503
-- Drawing API (ImDrawCmd, ImDrawIdx, ImDrawVert, ImDrawChannel, ImDrawListSplitter, ImDrawFlags, ImDrawList, ImDrawData) -- Drawing API (ImDrawCmd, ImDrawIdx, ImDrawVert, ImDrawChannel, ImDrawListSplitter, ImDrawFlags, ImDrawList, ImDrawData)
[x] 14% ImDrawCmd::ImDrawCmd imgui_h.lua:507 [x] 14% ImDrawCmd::ImDrawCmd imgui_h.lua:507
@@ -1969,7 +1969,7 @@ imgui.h
[x] 16% ImDrawList::PathLineTo imgui_internal.lua:1033 [x] 16% ImDrawList::PathLineTo imgui_internal.lua:1033
[x] 48% ImDrawList::PathLineToMergeDuplicate imgui_internal.lua:1043 [x] 48% ImDrawList::PathLineToMergeDuplicate imgui_internal.lua:1043
[x] 94% ImDrawList::PathFillConvex imgui_internal.lua:1053 [x] 94% ImDrawList::PathFillConvex imgui_internal.lua:1053
[x] 94% ImDrawList::PathFillConcave imgui_draw.lua:7508 [x] 94% ImDrawList::PathFillConcave imgui_draw.lua:7501
[x] 75% ImDrawList::PathStroke imgui_internal.lua:1061 [x] 75% ImDrawList::PathStroke imgui_internal.lua:1061
[x] 89% ImDrawList::ChannelsSplit imgui_draw.lua:4377 [x] 89% ImDrawList::ChannelsSplit imgui_draw.lua:4377
[x] 80% ImDrawList::ChannelsMerge imgui_draw.lua:4378 [x] 80% ImDrawList::ChannelsMerge imgui_draw.lua:4378
@@ -2073,7 +2073,7 @@ imgui_internal.h
[ ] ImModPositive [ ] ImModPositive
[x] 100% ImDot imgui_internal.lua:453 [x] 100% ImDot imgui_internal.lua:453
[x] 98% ImRotate imgui_internal.lua:447 [x] 98% ImRotate imgui_internal.lua:447
[x] 100% ImLinearSweep imgui_widgets.lua:10652 [x] 100% ImLinearSweep imgui_widgets.lua:10639
[x] 100% ImLinearRemapClamp imgui_internal.lua:399 [x] 100% ImLinearRemapClamp imgui_internal.lua:399
[x] 97% ImMul imgui_internal.lua:460 [x] 97% ImMul imgui_internal.lua:460
[ ] ImIsFloatAboveGuaranteedIntegerPrecision [ ] ImIsFloatAboveGuaranteedIntegerPrecision
@@ -2177,7 +2177,7 @@ imgui_internal.h
[ ] ImGuiPackedDate::SubtractMonths [ ] ImGuiPackedDate::SubtractMonths
-- ImDrawList support -- ImDrawList support
[x] 27% ImDrawDataBuilder::ImDrawDataBuilder imgui_internal.lua:3015 [x] 27% ImDrawDataBuilder::ImDrawDataBuilder imgui_internal.lua:3016
-- Style support -- Style support
[ ] ImGuiStyleVarInfo::GetVarPtr [ ] ImGuiStyleVarInfo::GetVarPtr
@@ -2185,7 +2185,7 @@ imgui_internal.h
-- Widgets support: flags, enums, data structures -- Widgets support: flags, enums, data structures
[x] 21% ImGuiComboPreviewData::ImGuiComboPreviewData imgui_internal.lua:1665 [x] 21% ImGuiComboPreviewData::ImGuiComboPreviewData imgui_internal.lua:1665
[x] 12% ImGuiMenuColumns::ImGuiMenuColumns imgui_internal.lua:2682 [x] 12% ImGuiMenuColumns::ImGuiMenuColumns imgui_internal.lua:2683
[x] 20% ImGuiInputTextDeactivatedState::ImGuiInputTextDeactivatedState imgui_internal.lua:1751 [x] 20% ImGuiInputTextDeactivatedState::ImGuiInputTextDeactivatedState imgui_internal.lua:1751
[ ] ImGuiInputTextDeactivatedState::ClearFreeMemory [ ] ImGuiInputTextDeactivatedState::ClearFreeMemory
[ ] ImGuiInputTextState::ClearText [ ] ImGuiInputTextState::ClearText
@@ -2200,10 +2200,10 @@ imgui_internal.h
[ ] ImGuiPtrOrIndex::ImGuiPtrOrIndex [ ] ImGuiPtrOrIndex::ImGuiPtrOrIndex
-- Popup support -- Popup support
[x] 36% ImGuiPopupData::ImGuiPopupData imgui_internal.lua:3569 [x] 36% ImGuiPopupData::ImGuiPopupData imgui_internal.lua:3570
-- Inputs support -- Inputs support
[x] 9% ImGuiInputEvent::ImGuiInputEvent imgui_internal.lua:3363 [x] 9% ImGuiInputEvent::ImGuiInputEvent imgui_internal.lua:3364
[x] 73% ImGuiKeyRoutingData::ImGuiKeyRoutingData imgui_internal.lua:1772 [x] 73% ImGuiKeyRoutingData::ImGuiKeyRoutingData imgui_internal.lua:1772
[x] 10% ImGuiKeyRoutingTable::ImGuiKeyRoutingTable imgui_internal.lua:1799 [x] 10% ImGuiKeyRoutingTable::ImGuiKeyRoutingTable imgui_internal.lua:1799
[ ] ImGuiKeyRoutingTable::Clear [ ] ImGuiKeyRoutingTable::Clear
@@ -2252,18 +2252,18 @@ imgui_internal.h
[x] 20% ImGuiDockContext::ImGuiDockContext imgui.lua:1040 [x] 20% ImGuiDockContext::ImGuiDockContext imgui.lua:1040
-- Viewport support -- Viewport support
[x] 36% ImGuiViewportP::ImGuiViewportP imgui_internal.lua:3102 [x] 36% ImGuiViewportP::ImGuiViewportP imgui_internal.lua:3103
[-] ImGuiViewportP::~ImGuiViewportP c++-only [-] ImGuiViewportP::~ImGuiViewportP c++-only
[x] 78% ImGuiViewportP::ClearRequestFlags imgui_internal.lua:3057 [x] 78% ImGuiViewportP::ClearRequestFlags imgui_internal.lua:3058
[x] 94% ImGuiViewportP::CalcWorkRectPos imgui_internal.lua:3064 [x] 94% ImGuiViewportP::CalcWorkRectPos imgui_internal.lua:3065
[x] 98% ImGuiViewportP::CalcWorkRectSize imgui_internal.lua:3068 [x] 98% ImGuiViewportP::CalcWorkRectSize imgui_internal.lua:3069
[x] 87% ImGuiViewportP::UpdateWorkRect imgui_internal.lua:3073 [x] 87% ImGuiViewportP::UpdateWorkRect imgui_internal.lua:3074
[x] 92% ImGuiViewportP::GetMainRect imgui_internal.lua:3080 [x] 92% ImGuiViewportP::GetMainRect imgui_internal.lua:3081
[x] 92% ImGuiViewportP::GetWorkRect imgui_internal.lua:3087 [x] 92% ImGuiViewportP::GetWorkRect imgui_internal.lua:3088
[x] 96% ImGuiViewportP::GetBuildWorkRect imgui_internal.lua:3094 [x] 96% ImGuiViewportP::GetBuildWorkRect imgui_internal.lua:3095
-- Settings support -- Settings support
[x] 18% ImGuiWindowSettings::ImGuiWindowSettings imgui_internal.lua:2649 [x] 18% ImGuiWindowSettings::ImGuiWindowSettings imgui_internal.lua:2650
[ ] ImGuiWindowSettings::GetName [ ] ImGuiWindowSettings::GetName
[x] 13% ImGuiSettingsHandler::ImGuiSettingsHandler imgui_h.lua:2898 [x] 13% ImGuiSettingsHandler::ImGuiSettingsHandler imgui_h.lua:2898
@@ -2277,9 +2277,9 @@ imgui_internal.h
[ ] ImGuiContextHook::ImGuiContextHook [ ] ImGuiContextHook::ImGuiContextHook
-- ImGuiWindowTempData, ImGuiWindow -- ImGuiWindowTempData, ImGuiWindow
[x] 92% ImGuiWindow::Rect imgui_internal.lua:2823 [x] 92% ImGuiWindow::Rect imgui_internal.lua:2824
[x] 84% ImGuiWindow::TitleBarRect imgui_internal.lua:2829 [x] 84% ImGuiWindow::TitleBarRect imgui_internal.lua:2830
[x] 91% ImGuiWindow::MenuBarRect imgui_internal.lua:2835 [x] 91% ImGuiWindow::MenuBarRect imgui_internal.lua:2836
-- Tab bar, Tab item support -- Tab bar, Tab item support
[x] 50% ImGuiTabItem::ImGuiTabItem imgui_internal.lua:2191 [x] 50% ImGuiTabItem::ImGuiTabItem imgui_internal.lua:2191
@@ -2309,7 +2309,7 @@ imgui_internal.h
[ ] GetPixelDensity [ ] GetPixelDensity
[x] 55% GetRoundedFontSize imgui_internal.lua:658 [x] 55% GetRoundedFontSize imgui_internal.lua:658
[x] 15% GetForegroundDrawList imgui.lua:13675 [x] 15% GetForegroundDrawList imgui.lua:13675
[x] 80% LocalizeGetMsg imgui_internal.lua:3673 [x] 80% LocalizeGetMsg imgui_internal.lua:3674
[ ] ScrollToBringRectIntoView [ ] ScrollToBringRectIntoView
[ ] GetItemStatusFlags [ ] GetItemStatusFlags
[ ] GetActiveID [ ] GetActiveID
@@ -2338,22 +2338,22 @@ imgui_internal.h
[x] 91% GetBoxSelectState imgui_internal.lua:2065 [x] 91% GetBoxSelectState imgui_internal.lua:2065
[x] 95% GetMultiSelectState imgui_internal.lua:2068 [x] 95% GetMultiSelectState imgui_internal.lua:2068
[ ] GetCurrentTabBar [ ] GetCurrentTabBar
[x] 35% TabBarGetTabOrder imgui_widgets.lua:11210 [x] 35% TabBarGetTabOrder imgui_widgets.lua:11197
[-] RenderNavHighlight obsolete [-] RenderNavHighlight obsolete
[x] 100% TempInputIsActive imgui_internal.lua:3680 [x] 100% TempInputIsActive imgui_internal.lua:3681
[x] 88% GetInputTextState imgui_internal.lua:3688 [x] 88% GetInputTextState imgui_internal.lua:3689
[ ] IsItemActiveAsInputText [ ] IsItemActiveAsInputText
[x] 80% SetNextItemColorMarker imgui_internal.lua:1083 [x] 80% SetNextItemColorMarker imgui_internal.lua:1083
-- ImFontLoader -- ImFontLoader
[x] 6% ImFontLoader::ImFontLoader imgui_internal.lua:3164 [x] 6% ImFontLoader::ImFontLoader imgui_internal.lua:3165
-- ImFontAtlas internal API -- ImFontAtlas internal API
[-] operator== c++-only [-] operator== c++-only
[-] operator!= c++-only [-] operator!= c++-only
[x] 75% ImFontAtlasRectId_GetIndex imgui_internal.lua:3216 [x] 75% ImFontAtlasRectId_GetIndex imgui_internal.lua:3217
[x] 62% ImFontAtlasRectId_GetGeneration imgui_internal.lua:3220 [x] 62% ImFontAtlasRectId_GetGeneration imgui_internal.lua:3221
[x] 77% ImFontAtlasRectId_Make imgui_internal.lua:3225 [x] 77% ImFontAtlasRectId_Make imgui_internal.lua:3226
[x] 18% ImFontAtlasBuilder::ImFontAtlasBuilder imgui_internal.lua:1184 [x] 18% ImFontAtlasBuilder::ImFontAtlasBuilder imgui_internal.lua:1184
==================================================================================================== ====================================================================================================
@@ -2527,7 +2527,7 @@ Struct fields (name found in the port / total; missing listed). Field names are
ImGuiBoxSelectState 16 / 16 ImGuiBoxSelectState 16 / 16
ImGuiColorMod 2 / 2 ImGuiColorMod 2 / 2
ImGuiComboPreviewData 6 / 9 missing: BackupWorkRectMaxX, BackupContentRectMaxX, WithinPreview ImGuiComboPreviewData 6 / 9 missing: BackupWorkRectMaxX, BackupContentRectMaxX, WithinPreview
ImGuiContext 312 / 338 missing: TestEngineHookItems, CurrentPixelDensity, TestEngine, InputEventsTrail, MixedValueLabel, DebugBreakInShortcutRouting, DebugLocateId, NavJustMovedToIsInit, DragDropPayloadBufHeap, DragDropPayloadBufLocal, ClipboardHandlerData, SessionDate, DemoMarkerCallback, DebugLogIndex, DebugLogSkippedErrors, DebugLocateFrames, DebugBreakInLocateId, DebugBreakKeyChord, DebugItemPickerActive, DebugItemPickerMouseButton, DebugItemPickerBreakId, DebugFlashStyleColorTime, DebugFlashStyleColorBackup, DebugDrawIdConflictsAliveCount, DebugDrawIdConflictsHighlightSet, TempKeychordName ImGuiContext 313 / 338 missing: TestEngineHookItems, CurrentPixelDensity, TestEngine, InputEventsTrail, DebugBreakInShortcutRouting, DebugLocateId, NavJustMovedToIsInit, DragDropPayloadBufHeap, DragDropPayloadBufLocal, ClipboardHandlerData, SessionDate, DemoMarkerCallback, DebugLogIndex, DebugLogSkippedErrors, DebugLocateFrames, DebugBreakInLocateId, DebugBreakKeyChord, DebugItemPickerActive, DebugItemPickerMouseButton, DebugItemPickerBreakId, DebugFlashStyleColorTime, DebugFlashStyleColorBackup, DebugDrawIdConflictsAliveCount, DebugDrawIdConflictsHighlightSet, TempKeychordName
ImGuiContextHook 2 / 5 missing: HookId, Owner, Callback ImGuiContextHook 2 / 5 missing: HookId, Owner, Callback
ImGuiDataTypeInfo 4 / 4 ImGuiDataTypeInfo 4 / 4
ImGuiDataTypeStorage 1 / 1 ImGuiDataTypeStorage 1 / 1
+12 -7
View File
@@ -10459,7 +10459,7 @@ local function RenderWindowOuterBorders(window)
if g.Style.FrameBorderSize > 0 and (bit32.band(window.Flags, ImGuiWindowFlags.NoTitleBar) == 0) and not window.DockIsActive then if g.Style.FrameBorderSize > 0 and (bit32.band(window.Flags, ImGuiWindowFlags.NoTitleBar) == 0) and not window.DockIsActive then
local y = window.Pos.y + window.TitleBarHeight - 1 local y = window.Pos.y + window.TitleBarHeight - 1
window.DrawList:AddLineH(window.Pos.x + border_size * 0.5, window.Pos.x + window.Size.x - border_size * 0.5, y, border_col, g.Style.FrameBorderSize) window.DrawList:AddLineH(window.Pos.x + border_size, window.Pos.x + window.Size.x - border_size, y, border_col, g.Style.FrameBorderSize, ImDrawFlags.StrokeCenterBiased)
end end
end end
@@ -10540,7 +10540,7 @@ local function RenderWindowDecorations(window, title_bar_rect, title_bar_is_high
menu_bar_rect:ClipWith(window:Rect()) -- Soft clipping, in particular child window don't have minimum size covering the menu bar so this is useful for them. menu_bar_rect:ClipWith(window:Rect()) -- Soft clipping, in particular child window don't have minimum size covering the menu bar so this is useful for them.
window.DrawList:AddRectFilled(menu_bar_rect.Min, menu_bar_rect.Max, ImGui.GetColorU32(ImGuiCol.MenuBarBg), (bit32.band(flags, ImGuiWindowFlags.NoTitleBar) ~= 0) and window_rounding or 0.0, ImDrawFlags.RoundTop) window.DrawList:AddRectFilled(menu_bar_rect.Min, menu_bar_rect.Max, ImGui.GetColorU32(ImGuiCol.MenuBarBg), (bit32.band(flags, ImGuiWindowFlags.NoTitleBar) ~= 0) and window_rounding or 0.0, ImDrawFlags.RoundTop)
if style.FrameBorderSize > 0.0 and menu_bar_rect.Max.y < window.Pos.y + window.Size.y then if style.FrameBorderSize > 0.0 and menu_bar_rect.Max.y < window.Pos.y + window.Size.y then
window.DrawList:AddLineH(menu_bar_rect.Min.x + window_border_size * 0.5, menu_bar_rect.Max.x - window_border_size * 0.5, menu_bar_rect.Max.y, ImGui.GetColorU32(ImGuiCol.Border), style.FrameBorderSize) window.DrawList:AddLineH(menu_bar_rect.Min.x + window_border_size, menu_bar_rect.Max.x - window_border_size, menu_bar_rect.Max.y, ImGui.GetColorU32(ImGuiCol.Border), style.FrameBorderSize, ImDrawFlags.StrokeCenterBiased)
end end
end end
@@ -19039,7 +19039,7 @@ function ImGui.RenderDimmedBackgrounds()
window.DrawList:ChannelsMerge() window.DrawList:ChannelsMerge()
if window.DrawList.CmdBuffer.Size == 0 then window.DrawList:AddDrawCmd() end if window.DrawList.CmdBuffer.Size == 0 then window.DrawList:AddDrawCmd() end
window.DrawList:PushClipRect(viewport.Pos, viewport.Pos + viewport.Size) window.DrawList:PushClipRect(viewport.Pos, viewport.Pos + viewport.Size)
window.DrawList:AddRect(bb.Min, bb.Max, ImGui.GetColorU32(ImGuiCol.NavWindowingHighlight, g.NavWindowingHighlightAlpha), window.WindowRounding, 0, 3.0) -- FIXME-DPI window.DrawList:AddRect(bb.Min, bb.Max, ImGui.GetColorU32(ImGuiCol.NavWindowingHighlight, g.NavWindowingHighlightAlpha), window.WindowRounding, 3.0) -- FIXME-DPI
window.DrawList:PopClipRect() window.DrawList:PopClipRect()
end end
end end
@@ -20685,8 +20685,7 @@ function ImGui.DebugNodeDrawList(window, viewport, draw_list, label)
else else
local cr = pcmd.ClipRect local cr = pcmd.ClipRect
local open = ImGui.TreeNode(cmd_n, "DrawCmd:%5d tris, Tex %s, ClipRect (%4.0f,%4.0f)-(%4.0f,%4.0f)", math.floor(pcmd.ElemCount / 3), tostring(pcmd.TexRef and (pcmd.TexRef._TexID or pcmd.TexRef._TexData)), cr.x, cr.y, cr.z, cr.w) local open = ImGui.TreeNode(cmd_n, "DrawCmd:%5d tris, Tex %s, ClipRect (%4.0f,%4.0f)-(%4.0f,%4.0f)", math.floor(pcmd.ElemCount / 3), tostring(pcmd.TexRef and (pcmd.TexRef._TexID or pcmd.TexRef._TexData)), cr.x, cr.y, cr.z, cr.w)
local function ShowMesh(show_mesh, show_aabb) local function ShowMeshImpl(show_mesh, show_aabb)
if not fg_draw_list then return end
local clip_rect = ImRect(cr.x, cr.y, cr.z, cr.w) local clip_rect = ImRect(cr.x, cr.y, cr.z, cr.w)
local vtxs_rect = ImRect(FLT_MAX, FLT_MAX, -FLT_MAX, -FLT_MAX) local vtxs_rect = ImRect(FLT_MAX, FLT_MAX, -FLT_MAX, -FLT_MAX)
local base = pcmd.IdxOffset local base = pcmd.IdxOffset
@@ -20705,6 +20704,12 @@ function ImGui.DebugNodeDrawList(window, viewport, draw_list, label)
fg_draw_list:AddRect(ImTrunc(vtxs_rect.Min), ImTrunc(vtxs_rect.Max), IM_COL32(0, 255, 255, 255)) -- In cyan: bounding box of triangles fg_draw_list:AddRect(ImTrunc(vtxs_rect.Min), ImTrunc(vtxs_rect.Max), IM_COL32(0, 255, 255, 255)) -- In cyan: bounding box of triangles
end end
end end
local function ShowMesh(show_mesh, show_aabb) -- DebugNodeDrawCmdShowMeshAndBoundingBox()
if not fg_draw_list then return end
fg_draw_list:PushDrawFlag(ImDrawFlags.AALines, false) -- Disable AA on triangle outlines is more readable for very large and thin triangles.
ShowMeshImpl(show_mesh, show_aabb)
fg_draw_list:PopDrawFlag()
end
if ImGui.IsItemHovered() and (cfg.ShowDrawCmdMesh or cfg.ShowDrawCmdBoundingBoxes) then ShowMesh(cfg.ShowDrawCmdMesh, cfg.ShowDrawCmdBoundingBoxes) end if ImGui.IsItemHovered() and (cfg.ShowDrawCmdMesh or cfg.ShowDrawCmdBoundingBoxes) then ShowMesh(cfg.ShowDrawCmdMesh, cfg.ShowDrawCmdBoundingBoxes) end
if open then if open then
ImGui.Selectable(string.format("Mesh: ElemCount: %d, VtxOffset: +%d, IdxOffset: +%d", pcmd.ElemCount, pcmd.VtxOffset, pcmd.IdxOffset)) ImGui.Selectable(string.format("Mesh: ElemCount: %d, VtxOffset: +%d, IdxOffset: +%d", pcmd.ElemCount, pcmd.VtxOffset, pcmd.IdxOffset))
@@ -20733,8 +20738,8 @@ function ImGui.DebugNodeTabBar(tab_bar, label)
if is_active and ImGui.IsItemHovered() then if is_active and ImGui.IsItemHovered() then
local dl = FG(tab_bar.Window) local dl = FG(tab_bar.Window)
dl:AddRect(tab_bar.BarRect.Min, tab_bar.BarRect.Max, IM_COL32(255, 255, 0, 255)) dl:AddRect(tab_bar.BarRect.Min, tab_bar.BarRect.Max, IM_COL32(255, 255, 0, 255))
dl:AddLine(ImVec2(tab_bar.ScrollingRectMinX, tab_bar.BarRect.Min.y), ImVec2(tab_bar.ScrollingRectMinX, tab_bar.BarRect.Max.y), IM_COL32(0, 255, 0, 255)) dl:AddLineV(tab_bar.ScrollingRectMinX, tab_bar.BarRect.Min.y, tab_bar.BarRect.Max.y, IM_COL32(0, 255, 0, 255))
dl:AddLine(ImVec2(tab_bar.ScrollingRectMaxX, tab_bar.BarRect.Min.y), ImVec2(tab_bar.ScrollingRectMaxX, tab_bar.BarRect.Max.y), IM_COL32(0, 255, 0, 255)) dl:AddLineV(tab_bar.ScrollingRectMaxX, tab_bar.BarRect.Min.y, tab_bar.BarRect.Max.y, IM_COL32(0, 255, 0, 255))
end end
if open then if open then
for tab_n, tab in tab_bar.Tabs:iter() do for tab_n, tab in tab_bar.Tabs:iter() do
+45 -52
View File
@@ -7157,7 +7157,7 @@ function ImGui.RenderCheckMark(draw_list, pos, col, sz)
draw_list:PathLineTo(p) draw_list:PathLineTo(p)
p.x = bx + third * 2.0; p.y = by - third * 2.0 p.x = bx + third * 2.0; p.y = by - third * 2.0
draw_list:PathLineTo(p) draw_list:PathLineTo(p)
draw_list:PathStroke(col, thickness) draw_list:PathStroke(col, thickness, ImDrawFlags.AALineEnds)
end end
-- Render an arrow. 'pos' is position of the arrow tip. half_sz.x is length from base to tip. half_sz.y is length on each side. -- Render an arrow. 'pos' is position of the arrow tip. half_sz.x is length from base to tip. half_sz.y is length on each side.
@@ -7243,7 +7243,7 @@ function ImGui.RenderRectFilledInRangeH(draw_list, rect, col, fill_x0, fill_x1,
end end
end end
draw_list:PathFillConvex(col) draw_list:PathFillConvex(col, ImDrawFlags.JoinMiter)
end end
--- @param r_in ImRect --- @param r_in ImRect
@@ -7277,16 +7277,16 @@ end
-- Helper for ColorPicker4() -- Helper for ColorPicker4()
-- NB: This is rather brittle and will show artifact when rounding this enabled if rounded corners overlap multiple cells. Caller currently responsible for avoiding that. -- NB: This is rather brittle and will show artifact when rounding this enabled if rounded corners overlap multiple cells. Caller currently responsible for avoiding that.
-- Spent a non reasonable amount of time trying to getting this right for ColorButton with rounding+anti-aliasing+ImGuiColorEditFlags_HalfAlphaPreview flag + various grid sizes and offsets, and eventually gave up... probably more reasonable to disable rounding altogether. -- Spent a non reasonable amount of time trying to getting this right for ColorButton with rounding+anti-aliasing+ImGuiColorEditFlags_HalfAlphaPreview flag + various grid sizes and offsets, and eventually gave up... probably more reasonable to disable rounding altogether.
-- FIXME: uses ImGui.GetColorU32
--- @param draw_list ImDrawList --- @param draw_list ImDrawList
--- @param p_min ImVec2 --- @param p_min ImVec2
--- @param p_max ImVec2 --- @param p_max ImVec2
--- @param col ImU32 --- @param col ImU32
--- @param alpha float
--- @param grid_step float --- @param grid_step float
--- @param grid_off ImVec2 --- @param grid_off ImVec2
--- @param rounding? float --- @param rounding? float
--- @param flags? ImDrawFlags --- @param flags? ImDrawFlags
function ImGui.RenderColorRectWithAlphaCheckerboard(draw_list, p_min, p_max, col, grid_step, grid_off, rounding, flags) function ImGui.RenderColorRectWithAlphaCheckerboard(draw_list, p_min, p_max, col, alpha, grid_step, grid_off, rounding, flags)
if rounding == nil then rounding = 0.0 end if rounding == nil then rounding = 0.0 end
if flags == nil then flags = 0 end if flags == nil then flags = 0 end
@@ -7295,60 +7295,53 @@ function ImGui.RenderColorRectWithAlphaCheckerboard(draw_list, p_min, p_max, col
end end
if bit32.rshift(bit32.band(col, IM_COL32_A_MASK), IM_COL32_A_SHIFT) < 0xFF then if bit32.rshift(bit32.band(col, IM_COL32_A_MASK), IM_COL32_A_SHIFT) < 0xFF then
local col_bg1 = ImGui.GetColorU32(ImStd.ImAlphaBlendColors(IM_COL32(128, 128, 128, 255), col), nil, true) IM_ASSERT(alpha >= 0.0 and alpha <= 1.0)
local col_bg2 = ImGui.GetColorU32(ImStd.ImAlphaBlendColors(IM_COL32(204, 204, 204, 255), col), nil, true) local a_mask = bit32.lshift(ImTrunc(alpha * 255.0), IM_COL32_A_SHIFT)
draw_list:AddRectFilled(p_min, p_max, col_bg1, rounding, flags) local col_bg1 = bit32.bor(bit32.band(ImStd.ImAlphaBlendColors(IM_COL32(128, 128, 128, 255), col), bit32.bnot(IM_COL32_A_MASK)), a_mask)
local col_bg2 = bit32.bor(bit32.band(ImStd.ImAlphaBlendColors(IM_COL32(204, 204, 204, 255), col), bit32.bnot(IM_COL32_A_MASK)), a_mask)
local dual_layer = (alpha == 1.0) -- Dual layer is faster but incorrect if blending.
if dual_layer then
draw_list:AddRectFilled(p_min, p_max, col_bg1, rounding, flags)
end
local yi = 0 local yi = 0
local y = p_min.y + grid_off.y local y = p_min.y + grid_off.y
local x_start
local x
local cell_flags
while y < p_max.y do while y < p_max.y do
repeat local y1 = ImClamp(ImTrunc(y), p_min.y, p_max.y)
local y1 = ImClamp(y, p_min.y, p_max.y) local y2 = ImMin(ImTrunc(y + grid_step), p_max.y)
local y2 = ImMin(y + grid_step, p_max.y) if y2 > y1 then
local x_start_off = dual_layer and (((yi + 1) % 2) * grid_step) or 0.0
local x_step = dual_layer and (grid_step * 2.0) or grid_step
local xi = 0
local x = p_min.x + grid_off.x + x_start_off
while x < p_max.x do
local x1 = ImClamp(ImTrunc(x), p_min.x, p_max.x)
local x2 = ImMin(ImTrunc(x + grid_step), p_max.x)
if x2 > x1 then
local cell_flags = ImDrawFlags.RoundNone -- FIXME: Could use CalcRoundingFlagsForRectInRect()
if y1 <= p_min.y then
if x1 <= p_min.x then cell_flags = bit32.bor(cell_flags, ImDrawFlags.RoundTopLeft) end
if x2 >= p_max.x then cell_flags = bit32.bor(cell_flags, ImDrawFlags.RoundTopRight) end
end
if y2 >= p_max.y then
if x1 <= p_min.x then cell_flags = bit32.bor(cell_flags, ImDrawFlags.RoundBottomLeft) end
if x2 >= p_max.x then cell_flags = bit32.bor(cell_flags, ImDrawFlags.RoundBottomRight) end
end
if y2 <= y1 then -- Combine flags
break if flags == ImDrawFlags.RoundNone or cell_flags == ImDrawFlags.RoundNone then
cell_flags = ImDrawFlags.RoundNone
else
cell_flags = bit32.band(cell_flags, flags)
end
local col_bg
if dual_layer then col_bg = col_bg2 elseif (yi + xi) % 2 == 1 then col_bg = col_bg2 else col_bg = col_bg1 end
draw_list:AddRectFilled(ImVec2(x1, y1), ImVec2(x2, y2), col_bg, rounding, cell_flags)
end
x = x + x_step
xi = xi + 1
end
end end
x_start = p_min.x + grid_off.x + ((yi + 1) % 2) * grid_step
x = x_start
while x < p_max.x do
repeat
local x1 = ImClamp(x, p_min.x, p_max.x)
local x2 = ImMin(x + grid_step, p_max.x)
if x2 <= x1 then
break
end
cell_flags = ImDrawFlags.RoundNone -- FIXME: Could use CalcRoundingFlagsForRectInRect()
if y1 <= p_min.y then
if x1 <= p_min.x then cell_flags = bit32.bor(cell_flags, ImDrawFlags.RoundTopLeft) end
if x2 >= p_max.x then cell_flags = bit32.bor(cell_flags, ImDrawFlags.RoundTopRight) end
end
if y2 >= p_max.y then
if x1 <= p_min.x then cell_flags = bit32.bor(cell_flags, ImDrawFlags.RoundBottomLeft) end
if x2 >= p_max.x then cell_flags = bit32.bor(cell_flags, ImDrawFlags.RoundBottomRight) end
end
-- Combine flags
if flags == ImDrawFlags.RoundNone or cell_flags == ImDrawFlags.RoundNone then
cell_flags = ImDrawFlags.RoundNone
else
cell_flags = bit32.band(cell_flags, flags)
end
draw_list:AddRectFilled(ImVec2(x1, y1), ImVec2(x2, y2), col_bg2, rounding, cell_flags)
until true
x = x + grid_step * 2.0
end
until true
y = y + grid_step y = y + grid_step
yi = yi + 1 yi = yi + 1
end end
+1
View File
@@ -2508,6 +2508,7 @@ function ImGuiContext(shared_font_atlas) -- TODO: tidy up / complete this struct
DisabledAlphaBackup = 0.0, -- Backup for style.Alpha for BeginDisabled() DisabledAlphaBackup = 0.0, -- Backup for style.Alpha for BeginDisabled()
DisabledStackSize = 0, DisabledStackSize = 0,
MixedValueLabel = "-", -- Value replacement when displaying a mixed value.
ItemFlagsStack = ImVector(), -- Stack for PushItemFlag()/PopItemFlag() - inherited by Begin() ItemFlagsStack = ImVector(), -- Stack for PushItemFlag()/PopItemFlag() - inherited by Begin()
GroupStack = ImVector(), -- Stack for BeginGroup()/EndGroup() - not inherited by Begin() GroupStack = ImVector(), -- Stack for BeginGroup()/EndGroup() - not inherited by Begin()
+43 -56
View File
@@ -934,7 +934,7 @@ function ImGui.CloseButton(id, pos)
window.DrawList:AddRectFilled(bb.Min, bb.Max, bg_col) window.DrawList:AddRectFilled(bb.Min, bb.Max, bg_col)
end end
local cross_center = bb:GetCenter() - ImVec2(0.5, 0.5) local cross_center = bb:GetCenter()
local cross_extent = g.FontSize * 0.5 * 0.7071 - 1 local cross_extent = g.FontSize * 0.5 * 0.7071 - 1
local cross_col = ImGui.GetColorU32(ImGuiCol.Text) local cross_col = ImGui.GetColorU32(ImGuiCol.Text)
local cross_thickness = 1.0 -- FIXME-DPI local cross_thickness = 1.0 -- FIXME-DPI
@@ -944,32 +944,6 @@ function ImGui.CloseButton(id, pos)
return pressed return pressed
end end
--- @return bool
function ImGui.CollapseButton(id, pos)
local g = GImGui
local window = g.CurrentWindow
local bb = ImRect(pos, pos + ImVec2(g.FontSize, g.FontSize))
local is_clipped = not ImGui.ItemAdd(bb, id)
local pressed, hovered = ImGui.ButtonBehavior(bb, id)
-- Render
if hovered then
window.DrawList:AddRectFilled(bb.Min, bb.Max, ImGui.GetColorU32(ImGuiCol.ButtonHovered))
end
if window.Collapsed then
ImGui.RenderArrow(window.DrawList, bb.Min, ImGui.GetColorU32(ImGuiCol.Text), ImGuiDir.Right, 1)
else
ImGui.RenderArrow(window.DrawList, bb.Min, ImGui.GetColorU32(ImGuiCol.Text), ImGuiDir.Down, 1)
end
return pressed
end
--- @param window ImGuiWindow --- @param window ImGuiWindow
--- @param axis ImGuiAxis --- @param axis ImGuiAxis
--- @return ImGuiID --- @return ImGuiID
@@ -1874,7 +1848,7 @@ function ImGui.SeparatorTextEx(id, label, label_end, extra_w)
local sep1_x1 = pos.x local sep1_x1 = pos.x
local sep2_x2 = bb.Max.x local sep2_x2 = bb.Max.x
local seps_y = ImTrunc((bb.Min.y + bb.Max.y) * 0.5 + 0.999) local seps_y = ImTrunc((bb.Min.y + bb.Max.y) * 0.5) + 1.0
local label_avail_w = ImMax(0.0, sep2_x2 - sep1_x1 - padding.x * 2.0) local label_avail_w = ImMax(0.0, sep2_x2 - sep1_x1 - padding.x * 2.0)
local label_pos = ImVec2(pos.x + padding.x + ImMax(0.0, (label_avail_w - label_size.x - extra_w) * style.SeparatorTextAlign.x), pos.y + text_baseline_y) -- FIXME-ALIGN local label_pos = ImVec2(pos.x + padding.x + ImMax(0.0, (label_avail_w - label_size.x - extra_w) * style.SeparatorTextAlign.x), pos.y + text_baseline_y) -- FIXME-ALIGN
@@ -1889,11 +1863,11 @@ function ImGui.SeparatorTextEx(id, label, label_end, extra_w)
local sep2_x1 = label_pos.x + label_size.x + extra_w + style.ItemSpacing.x local sep2_x1 = label_pos.x + label_size.x + extra_w + style.ItemSpacing.x
if sep1_x2 > sep1_x1 and separator_thickness > 0.0 then if sep1_x2 > sep1_x1 and separator_thickness > 0.0 then
window.DrawList:AddLineH(sep1_x1, sep1_x2, seps_y, separator_col, separator_thickness) window.DrawList:AddLineH(sep1_x1, sep1_x2, seps_y, separator_col, separator_thickness, ImDrawFlags.StrokeCenterBiased)
end end
if sep2_x2 > sep2_x1 and separator_thickness > 0.0 then if sep2_x2 > sep2_x1 and separator_thickness > 0.0 then
window.DrawList:AddLineH(sep2_x1, sep2_x2, seps_y, separator_col, separator_thickness) window.DrawList:AddLineH(sep2_x1, sep2_x2, seps_y, separator_col, separator_thickness, ImDrawFlags.StrokeCenterBiased)
end end
if g.LogEnabled then if g.LogEnabled then
@@ -1907,7 +1881,7 @@ function ImGui.SeparatorTextEx(id, label, label_end, extra_w)
end end
if separator_thickness > 0.0 then if separator_thickness > 0.0 then
window.DrawList:AddLineH(sep1_x1, sep2_x2, seps_y, separator_col, separator_thickness) window.DrawList:AddLineH(sep1_x1, sep2_x2, seps_y, separator_col, separator_thickness, ImDrawFlags.StrokeCenterBiased)
end end
end end
end end
@@ -6236,10 +6210,10 @@ function ImGui.InputTextEx(label, hint, buf, buf_size, size_arg, flags, callback
local cursor_is_visible = (not g.IO.ConfigInputTextCursorBlink) or (state.CursorAnim <= 0.0) or (ImFmod(state.CursorAnim, 1.20) <= 0.80) local cursor_is_visible = (not g.IO.ConfigInputTextCursorBlink) or (state.CursorAnim <= 0.0) or (ImFmod(state.CursorAnim, 1.20) <= 0.80)
local cursor_screen_pos = ImTrunc(draw_pos + cursor_offset - draw_scroll) local cursor_screen_pos = ImTrunc(draw_pos + cursor_offset - draw_scroll)
local cursor_screen_rect = ImRect(cursor_screen_pos.x, cursor_screen_pos.y - g.FontSize + 0.5, cursor_screen_pos.x + 1.0, cursor_screen_pos.y - 1.5) local cursor_screen_rect = ImRect(cursor_screen_pos.x, cursor_screen_pos.y - g.FontSize + 1.0, cursor_screen_pos.x + 1.0, cursor_screen_pos.y - 1.0)
if cursor_is_visible and cursor_screen_rect:Overlaps(clip_rect) then if cursor_is_visible and cursor_screen_rect:Overlaps(clip_rect) then
draw_window.DrawList:AddLineV(cursor_screen_rect.Min.x, cursor_screen_rect.Min.y, cursor_screen_rect.Max.y, ImGui.GetColorU32(ImGuiCol.InputTextCursor), style.InputTextCursorSize) draw_window.DrawList:AddLineV(cursor_screen_rect.Min.x, cursor_screen_rect.Min.y, cursor_screen_rect.Max.y, ImGui.GetColorU32(ImGuiCol.InputTextCursor), style.InputTextCursorSize, ImDrawFlags.StrokeInside)
end end
-- Notify OS of text input position for advanced IME (-1 x offset so that Windows IME can cover our cursor. Bit of an extra nicety.) -- Notify OS of text input position for advanced IME (-1 x offset so that Windows IME can cover our cursor. Bit of an extra nicety.)
@@ -7117,7 +7091,7 @@ function ImGui.ColorPicker4(label, col, flags, ref_col)
if alpha_bar then if alpha_bar then
local alpha = ImSaturate(col[4]) local alpha = ImSaturate(col[4])
local bar1_bb = ImRect(bar1_pos_x, picker_pos.y, bar1_pos_x + bars_width, picker_pos.y + sv_picker_size) local bar1_bb = ImRect(bar1_pos_x, picker_pos.y, bar1_pos_x + bars_width, picker_pos.y + sv_picker_size)
ImGui.RenderColorRectWithAlphaCheckerboard(draw_list, bar1_bb.Min, bar1_bb.Max, 0, bar1_bb:GetWidth() / 2.0, ImVec2(0.0, 0.0)) ImGui.RenderColorRectWithAlphaCheckerboard(draw_list, bar1_bb.Min, bar1_bb.Max, IM_COL32(0, 0, 0, 0), style.Alpha, bar1_bb:GetWidth() / 2.0, ImVec2(0.0, 0.0))
draw_list:AddRectFilledMultiColor(bar1_bb.Min, bar1_bb.Max, user_col32_striped_of_alpha, user_col32_striped_of_alpha, bit32.band(user_col32_striped_of_alpha, bit32.bnot(IM_COL32_A_MASK)), bit32.band(user_col32_striped_of_alpha, bit32.bnot(IM_COL32_A_MASK))) draw_list:AddRectFilledMultiColor(bar1_bb.Min, bar1_bb.Max, user_col32_striped_of_alpha, user_col32_striped_of_alpha, bit32.band(user_col32_striped_of_alpha, bit32.bnot(IM_COL32_A_MASK)), bit32.band(user_col32_striped_of_alpha, bit32.bnot(IM_COL32_A_MASK)))
local bar1_line_y = IM_ROUND(picker_pos.y + (1.0 - alpha) * sv_picker_size) local bar1_line_y = IM_ROUND(picker_pos.y + (1.0 - alpha) * sv_picker_size)
@@ -7195,36 +7169,45 @@ function ImGui.ColorButton(desc_id, col, flags, size_arg)
local col_rgb_without_alpha = ImVec4(col_rgb.x, col_rgb.y, col_rgb.z, 1.0) local col_rgb_without_alpha = ImVec4(col_rgb.x, col_rgb.y, col_rgb.z, 1.0)
local grid_step = ImMin(size.x, size.y) / 2.99 local grid_step = ImMin(size.x, size.y) / 2.99
local rounding = ImMin(g.Style.FrameRounding, grid_step * 0.5) local rounding = ImMin(g.Style.FrameRounding, grid_step * 0.5)
local bb_inner = ImRect() local is_mixed = bit32.band(g.LastItemData.ItemFlags, ImGuiItemFlags.MixedValue) ~= 0
ImRect_Copy(bb_inner, bb)
local off = 0.0 local backup_alpha = g.Style.Alpha
if bit32.band(flags, ImGuiColorEditFlags.NoBorder) == 0 then if g.DisabledStackSize > 0 then
off = -0.75 g.Style.Alpha = g.DisabledAlphaBackup -- Cancel out effect of BeginDisabled() for color swatches.
bb_inner:Expand(off)
end end
if bit32.band(flags, ImGuiColorEditFlags.AlphaPreviewHalf) ~= 0 and col_rgb.w < 1.0 then if is_mixed then
local mid_x = IM_ROUND((bb_inner.Min.x + bb_inner.Max.x) * 0.5) window.DrawList:AddRectFilled(bb.Min, bb.Max, ImGui.GetColorU32(ImGuiCol.FrameBg), rounding)
if bit32.band(flags, ImGuiColorEditFlags.AlphaNoBg) == 0 then ImGui.PushStyleColor(ImGuiCol.Text, g.Style.Colors[ImGuiCol.TextDisabled]) -- ImGuiCol_TextMixedValue
ImGui.RenderColorRectWithAlphaCheckerboard(window.DrawList, ImVec2(bb_inner.Min.x + grid_step, bb_inner.Min.y), bb_inner.Max, ImGui.GetColorU32(col_rgb), grid_step, ImVec2(-grid_step + off, off), rounding, ImDrawFlags.RoundRight) if g.MixedValueLabel ~= nil then
else ImGui.RenderTextClipped(ImVec2(bb.Min.x, bb.Min.y + g.Style.FramePadding.y), bb.Max, g.MixedValueLabel, nil, nil, ImVec2(0.5, 0.0))
window.DrawList:AddRectFilled(ImVec2(bb_inner.Min.x + grid_step, bb_inner.Min.y), bb_inner.Max, ImGui.GetColorU32(col_rgb), rounding, ImDrawFlags.RoundRight)
end end
window.DrawList:AddRectFilled(bb_inner.Min, ImVec2(mid_x, bb_inner.Max.y), ImGui.GetColorU32(col_rgb_without_alpha), rounding, ImDrawFlags.RoundLeft) ImGui.PopStyleColor()
elseif bit32.band(flags, ImGuiColorEditFlags.AlphaPreviewHalf) ~= 0 and col_rgb.w < 1.0 then
local mid_x = IM_ROUND((bb.Min.x + bb.Max.x) * 0.5)
if bit32.band(flags, ImGuiColorEditFlags.AlphaNoBg) == 0 then
ImGui.RenderColorRectWithAlphaCheckerboard(window.DrawList, ImVec2(bb.Min.x + grid_step, bb.Min.y), bb.Max, ImGui.ColorConvertFloat4ToU32(col_rgb), g.Style.Alpha, grid_step, ImVec2(-grid_step, 0.0), rounding, ImDrawFlags.RoundRight)
else
window.DrawList:AddRectFilled(ImVec2(bb.Min.x + grid_step, bb.Min.y), bb.Max, ImGui.GetColorU32(col_rgb), rounding, ImDrawFlags.RoundRight)
end
window.DrawList:AddRectFilled(bb.Min, ImVec2(mid_x, bb.Max.y), ImGui.GetColorU32(col_rgb_without_alpha), rounding, ImDrawFlags.RoundLeft)
else else
-- Because GetColorU32() multiplies by the global style Alpha and we don't want to display a checkerboard if the source code had no alpha -- Because GetColorU32() multiplies by the global style Alpha and we don't want to display a checkerboard if the source code had no alpha
local col_source = (bit32.band(flags, ImGuiColorEditFlags.AlphaOpaque) ~= 0) and col_rgb_without_alpha or col_rgb local col_source = (bit32.band(flags, ImGuiColorEditFlags.AlphaOpaque) ~= 0) and col_rgb_without_alpha or col_rgb
if col_source.w < 1.0 and bit32.band(flags, ImGuiColorEditFlags.AlphaNoBg) == 0 then if col_source.w < 1.0 and bit32.band(flags, ImGuiColorEditFlags.AlphaNoBg) == 0 then
ImGui.RenderColorRectWithAlphaCheckerboard(window.DrawList, bb_inner.Min, bb_inner.Max, ImGui.GetColorU32(col_source), grid_step, ImVec2(off, off), rounding) ImGui.RenderColorRectWithAlphaCheckerboard(window.DrawList, bb.Min, bb.Max, ImGui.ColorConvertFloat4ToU32(col_source), g.Style.Alpha, grid_step, ImVec2(0.0, 0.0), rounding)
else else
window.DrawList:AddRectFilled(bb_inner.Min, bb_inner.Max, ImGui.GetColorU32(col_source), rounding) window.DrawList:AddRectFilled(bb.Min, bb.Max, ImGui.GetColorU32(col_source), rounding)
end end
end end
if g.DisabledStackSize > 0 then
g.Style.Alpha = backup_alpha
end
ImGui.RenderNavCursor(bb, id) ImGui.RenderNavCursor(bb, id)
if bit32.band(flags, ImGuiColorEditFlags.NoBorder) == 0 then if bit32.band(flags, ImGuiColorEditFlags.NoBorder) == 0 then
if g.Style.FrameBorderSize > 0.0 then if g.Style.FrameBorderSize > 0.0 then
ImGui.RenderFrameBorder(bb.Min, bb.Max, rounding) ImGui.RenderFrameBorder(bb.Min, bb.Max, rounding)
else else
window.DrawList:AddRect(bb.Min, bb.Max, ImGui.GetColorU32(ImGuiCol.FrameBg), rounding) -- Color buttons are often in need of some sort of border window.DrawList:AddRect(bb.Min, bb.Max, ImGui.GetColorU32(ImGuiCol.FrameBg), rounding, 1.0 * ImTrunc(g.Style._MainScale)) -- Color buttons are often in need of some sort of border -- FIXME-DPI
end end
end end
@@ -7907,23 +7890,27 @@ function ImGui.TreeNodeDrawLineToChildNode(target_pos)
-- FIXME: Could this be simplified using new stroke flags? -- FIXME: Could this be simplified using new stroke flags?
local parent_data = g.TreeNodeStack.Data[g.TreeNodeStack.Size] local parent_data = g.TreeNodeStack.Data[g.TreeNodeStack.Size]
local x1 = ImTrunc(parent_data.DrawLinesX1) local half_size = g.Style.TreeLinesSize * 0.5
local x1 = ImTrunc(parent_data.DrawLinesX1 - half_size) + half_size -- Draw line centered at X1, but snap to pixels boundary.
local x2 = ImTrunc(target_pos.x - g.Style.ItemInnerSpacing.x) local x2 = ImTrunc(target_pos.x - g.Style.ItemInnerSpacing.x)
local y = ImTrunc(target_pos.y) local y = ImTrunc(target_pos.y - half_size) + half_size
local rounding = (g.Style.TreeLinesRounding > 0.0) and ImMin(x2 - x1, g.Style.TreeLinesRounding) or 0.0 local rounding = (g.Style.TreeLinesRounding > 0.0) and ImMin(x2 - x1, g.Style.TreeLinesRounding) or 0.0
parent_data.DrawLinesToNodesY2 = ImMax(parent_data.DrawLinesToNodesY2, y - rounding) parent_data.DrawLinesToNodesY2 = ImMax(parent_data.DrawLinesToNodesY2, y - rounding)
if x1 >= x2 then if x1 >= x2 then
return return
end end
if rounding > 0.0 then if rounding > 0.0 and rounding > half_size then
x1 = x1 + 0.5 + rounding x1 = x1 + rounding
window.DrawList:PathArcToFast(ImVec2(x1, y - rounding), rounding, 6, 3) window.DrawList:PathArcToFast(ImVec2(x1, y - rounding), rounding, 6, 3)
if x1 < x2 then if x1 < x2 then
window.DrawList:PathLineTo(ImVec2(x2, y)) window.DrawList:PathLineTo(ImVec2(x2, y))
end end
window.DrawList:PathStroke(ImGui.GetColorU32(ImGuiCol.TreeLines), g.Style.TreeLinesSize) window.DrawList:PathStroke(ImGui.GetColorU32(ImGuiCol.TreeLines), g.Style.TreeLinesSize)
else else
window.DrawList:AddLineH(x1, x2, y, ImGui.GetColorU32(ImGuiCol.TreeLines), g.Style.TreeLinesSize) -- We use AddLine() instead of AddLineH() as we provide coordinates for line center,
-- in order to make the code use same coordinates for both rounded and non-rounded version. (FIXME-OPT)
x1 = x1 + half_size -- Avoid overdraw
window.DrawList:AddLine(ImVec2(x1, y), ImVec2(x2, y), ImGui.GetColorU32(ImGuiCol.TreeLines), g.Style.TreeLinesSize)
end end
end end
@@ -11905,7 +11892,7 @@ function ImGui.TabItemBackground(draw_list, bb, flags, col)
draw_list:PathArcToFast(ImVec2(bb.Min.x + rounding, y1 + rounding), rounding, 6, 9) draw_list:PathArcToFast(ImVec2(bb.Min.x + rounding, y1 + rounding), rounding, 6, 9)
draw_list:PathArcToFast(ImVec2(bb.Max.x - rounding, y1 + rounding), rounding, 9, 12) draw_list:PathArcToFast(ImVec2(bb.Max.x - rounding, y1 + rounding), rounding, 9, 12)
draw_list:PathLineTo(ImVec2(bb.Max.x, y2)) draw_list:PathLineTo(ImVec2(bb.Max.x, y2))
draw_list:PathStroke(ImGui.GetColorU32(ImGuiCol.Border), g.Style.TabBorderSize) draw_list:PathStroke(ImGui.GetColorU32(ImGuiCol.Border), g.Style.TabBorderSize, ImDrawFlags.StrokeCenterBiased) -- Use _StrokeInside?
end end
end end
+1 -1
View File
@@ -4,4 +4,4 @@ set -e
cd "$(dirname "$0")/../../.." cd "$(dirname "$0")/../../.."
python3 tools/bundle.py --target love >/dev/null python3 tools/bundle.py --target love >/dev/null
nix-shell -p luajit --run "luajit tools/test/love/t_drawhash.lua 150 Widgets,Basic && luajit tools/test/love/t_drawhash.lua 150 all && luajit tools/test/love/t_examples.lua" nix-shell -p luajit --run "luajit tools/test/love/t_drawhash.lua 150 Widgets,Basic && luajit tools/test/love/t_drawhash.lua 150 all && luajit tools/test/love/t_examples.lua"
echo "expected (Luau, tools/test/scripts/t_drawhash.luau): 1746012297 / 1639427837" echo "expected (Luau, tools/test/scripts/t_drawhash.luau): 154977593 / 62816915"