public Rect BuildRow(ImGui gui, TData element, float startX = 0f) { contentGui = gui; var x = innerPadding.left; var rowColor = SchemeColor.None; var textColor = rowColor; using (var group = gui.EnterFixedPositioning(width, 0f, innerPadding, textColor)) { foreach (var column in columns) { if (column.width < column.minWidth) { column.width = column.minWidth; } @group.SetManualRect(new Rect(x, 0, column.width, 0f), RectAllocator.LeftRow); column.build(gui, element); x += column.width + spacing; } } var rect = gui.lastRect; var bottom = gui.lastRect.Bottom; if (gui.isBuilding) { gui.DrawRectangle(new Rect(startX, bottom - 0.1f, x - startX, 0.1f), SchemeColor.Grey); } return(rect); }
public void BuildHeader(ImGui gui) { var spacing = innerPadding.left + innerPadding.right; var x = 0f; var topSeparator = gui.AllocateRect(0f, 0.1f); var y = gui.statePosition.Y; using (var group = gui.EnterFixedPositioning(0f, 1f, innerPadding)) { foreach (var column in columns) { if (column.width < column.minWidth) { column.width = column.minWidth; } var rect = new Rect(x, y, column.width, 0f); group.SetManualRectRaw(rect, RectAllocator.LeftRow); gui.BuildText(column.header); rect.Bottom = gui.statePosition.Y; x += column.width + spacing; if (!column.isFixedSize) { BuildHeaderResizer(gui, column, new Rect(x - 0.7f, y, 1f, 2.2f)); } if (column.menuBuilder != null) { var menuRect = new Rect(rect.Right - 1.7f, rect.Y + 0.3f, 1.5f, 1.5f); if (gui.isBuilding) { gui.DrawIcon(menuRect, Icon.DropDown, SchemeColor.BackgroundText); } if (gui.BuildButton(menuRect, SchemeColor.None, SchemeColor.Grey) == ImGuiUtils.Event.Click) { gui.ShowDropDown(menuRect, column.menuBuilder, new Padding(1f)); } } } } width = x + 0.2f - spacing; var separator = gui.AllocateRect(x, 0.1f); if (gui.isBuilding) { topSeparator.Width = separator.Width = width; gui.DrawRectangle(topSeparator, SchemeColor.GreyAlt); gui.DrawRectangle(separator, SchemeColor.GreyAlt); //DrawVerticalGrid(gui, topSeparator.Bottom, separator.Top, SchemeColor.GreyAlt); } }