@Override public Vector2i getPreferredContentSize(Canvas canvas, Vector2i sizeHint) { Vector2i pf = canvas.calculatePreferredSize(content); return new Vector2i(preferredWidth == null ? pf.x : preferredWidth, preferredHeight == null ? pf.y : preferredHeight); }
public void calculatePreferredSize(Canvas canvas, Vector2i sizeHint) { minimumSize = canvas.calculatePreferredSize(widget); minimumSize.x = Math.min(sizeHint.x, minimumSize.x); minimumSize.y = Math.min(sizeHint.y, minimumSize.y); preferredSize = new Vector2i(Math.max(sizeHint.x, minimumSize.x), Math.max(sizeHint.y, minimumSize.y)); }
@Override public Vector2i getPreferredContentSize(Canvas canvas, Vector2i sizeHint) { Vector2i result = new Vector2i(); int filledWidth = 0; int filledHeight = 0; for (UIWidget widget : contents) { Vector2i size = canvas.calculatePreferredSize(widget); if (filledWidth != 0 && filledWidth + size.x > sizeHint.x) { result.x = Math.max(result.x, filledWidth); result.y += filledHeight; filledWidth = size.x; filledHeight = size.y; } else { filledWidth += size.x; filledHeight = Math.max(filledHeight, size.y); } } result.x = Math.max(result.x, filledWidth); result.y += filledHeight; return result; }
@Override public void onDraw(Canvas canvas) { int filledWidth = 0; int filledHeight = 0; int heightOffset = 0; for (UIWidget widget : contents) { Vector2i size = canvas.calculatePreferredSize(widget); if (filledWidth != 0 && filledWidth + size.x > canvas.size().x) { heightOffset += filledHeight; filledWidth = 0; filledHeight = 0; } canvas.drawWidget(widget, Rect2i.createFromMinAndSize(filledWidth, heightOffset, size.x, size.y)); filledWidth += size.x; filledHeight = Math.max(filledHeight, size.y); } }
@Override public Vector2i getPreferredContentSize(Canvas canvas, Vector2i sizeHint) { int numSlots = getNumSlots(); if (numSlots == 0 || cells.isEmpty()) { return Vector2i.zero(); } Vector2i cellSize = canvas.calculatePreferredSize(cells.get(0)); if (cellSize.getX() == 0 || cellSize.getY() == 0) { return Vector2i.zero(); } int horizontalCells = Math.min(Math.min(maxHorizontalCells, numSlots), sizeHint.getX() / cellSize.getX()); int verticalCells = ((numSlots - 1) / horizontalCells) + 1; return new Vector2i(horizontalCells * cellSize.x, verticalCells * cellSize.y); }
@Override public void onDraw(Canvas canvas) { int numSlots = getNumSlots(); if (numSlots == 0 || cells.isEmpty()) { return; } Vector2i cellSize = canvas.calculatePreferredSize(cells.get(0)); if (cellSize.getX() == 0 || cellSize.getY() == 0) { return; } canvas.addInteractionRegion(interactionListener); int horizontalCells = Math.max(1, Math.min(maxHorizontalCells, canvas.size().getX() / cellSize.getX())); for (int i = 0; i < numSlots && i < cells.size(); ++i) { int horizPos = i % horizontalCells; int vertPos = i / horizontalCells; canvas.drawWidget(cells.get(i), Rect2i.createFromMinAndSize(horizPos * cellSize.x, vertPos * cellSize.y, cellSize.x, cellSize.y)); } }
@Override public void onDraw(Canvas canvas) { canvas.addInteractionRegion(mainListener); Vector2i currentPosition = null; int currentWidth = 0; for (UIList<AbstractContextMenuItem> level : menuWidgets) { if (level.isVisible()) { if (currentPosition == null) { currentPosition = new Vector2i(position); } else { currentPosition.addX(currentWidth); } Rect2i region = Rect2i.createFromMinAndSize(currentPosition, canvas.calculatePreferredSize(level)); double percentageThreshold = 0.9; if (region.maxY() > canvas.getRegion().height() * percentageThreshold) { region = Rect2i.createFromMinAndMax(region.minX(), region.minY() - (region.maxY() - canvas.getRegion().height()) - (int) (canvas.getRegion().height() * (1 - percentageThreshold)), region.maxX(), canvas.getRegion().height()); } currentWidth = canvas.calculatePreferredSize(level).getX() - 8; canvas.drawWidget(level, region); } } }
@Override public void onDraw(Canvas canvas) { UIStyle style = canvas.getCurrentStyle(); Vector2i attachmentSize = canvas.calculatePreferredSize(attachment); attachmentSize.add(style.getMargin().getTotals());