@Override public Vector2i getPreferredContentSize(Canvas canvas, Vector2i sizeHint) { return canvas.calculateRestrictedSize(icon, sizeHint); }
/** * Draws the widget * * @param canvas The canvas to draw on. */ public void onDraw(Canvas canvas) { canvas.getRegion(); canvas.drawTexture(sectionTexture, sectionRegion); if (icon != null) { canvas.drawTexture(icon, innerRegion); } if (text != null) { canvas.drawText(text, innerRegion); } if (isSelected) { canvas.drawTexture(selectedTexture, sectionRegion); if (widget != null) { canvas.drawWidget(widget, infoRegion); } } }
@Override public void onDraw(Canvas canvas) { canvas.setPart(SLIDER); canvas.drawBackground(); canvas.setPart(TICKER); String display = getDisplayText(); int tickerWidth = canvas.getCurrentStyle().getFont().getWidth(display); tickerWidth += canvas.getCurrentStyle().getMargin().getTotalWidth(); sliderWidth = canvas.size().x - tickerWidth; int drawLocation = pixelOffsetFor(getValue(), sliderWidth); Rect2i tickerRegion = Rect2i.createFromMinAndSize(drawLocation, 0, tickerWidth, canvas.size().y); try (SubRegion ignored = canvas.subRegion(tickerRegion, false)) { canvas.drawBackground(); canvas.drawText(display); if (isEnabled()) { canvas.addInteractionRegion(tickerListener); } } }
@Override public void onDraw(Canvas canvas) { if (contents != null) { canvas.drawWidget(contents, canvas.getRegion()); } }
private void drawButton(Canvas canvas, Rect2i buttonRegion, ExpandButtonInteractionListener listener) { canvas.drawBackground(buttonRegion); canvas.addInteractionRegion(listener, buttonRegion); }
@Override public void onDraw(Canvas canvas) { canvas.drawBackground(); try (SubRegion ignored = canvas.subRegion(canvas.getCurrentStyle().getMargin().shrink(canvas.getRegion()), false)) { if (selection.get() != null) { optionRenderer.draw(selection.get(), canvas); canvas.setPart(LIST); canvas.setDrawOnTop(true); Font font = canvas.getCurrentStyle().getFont(); Border itemMargin = canvas.getCurrentStyle().getMargin(); int height = (font.getLineHeight() + itemMargin.getTotalHeight()) * options.get().size() + canvas.getCurrentStyle().getBackgroundBorder().getTotalHeight(); canvas.addInteractionRegion(mainListener, Rect2i.createFromMinAndSize(0, 0, canvas.size().x, canvas.size().y + height)); Rect2i location = Rect2i.createFromMinAndSize(0, canvas.size().y, canvas.size().x, height); canvas.drawBackground(location); canvas.setPart(LIST_ITEM); canvas.setMode(HOVER_MODE); } else if (i==highlighted && TabbingManager.focusedWidget != null && TabbingManager.focusedWidget.equals(this)) { canvas.setMode(HOVER_MODE); } else { canvas.setMode(DEFAULT_MODE); Rect2i itemRegion = Rect2i.createFromMinAndSize(0, canvas.size().y + itemHeight * i, canvas.size().x, itemHeight); canvas.drawBackground(itemRegion); optionRenderer.draw(options.get().get(i), canvas, itemMargin.shrink(itemRegion)); canvas.addInteractionRegion(optionListeners.get(i), itemRegion);
@Override public void onDraw(Canvas canvas) { for (HUDElement element : elementsLookup.values()) { int minX = TeraMath.floorToInt(element.region.minX() * canvas.size().x); int minY = TeraMath.floorToInt(element.region.minY() * canvas.size().y); int sizeX = TeraMath.floorToInt(element.region.width() * canvas.size().x); int sizeY = TeraMath.floorToInt(element.region.height() * canvas.size().y); Rect2i region = Rect2i.createFromMinAndSize(minX, minY, sizeX, sizeY); canvas.drawWidget(element.widget, region); } }
/** * Draw the widget with just a horizontal scrollbar. * <p> * If the content doesn't fit in the vertical axis, it will be cropped * * @param canvas The canvas to draw on * @param availableSize The available size for the layout. Does not include scrollbar size * @param contentSize The size of the widget to draw */ private void drawWithJustHorizontal(Canvas canvas, Vector2i availableSize, Vector2i contentSize) { Rect2i contentRegion = Rect2i.createFromMinAndSize(Vector2i.zero(), availableSize); canvas.addInteractionRegion(scrollListener); horizontalBar.setRange(contentSize.x - contentRegion.width()); int scrollbarHeight = canvas.calculateRestrictedSize(verticalBar, availableSize).y; canvas.drawWidget(horizontalBar, Rect2i.createFromMinAndSize( new Vector2i(0, availableSize.y), new Vector2i(availableSize.x, scrollbarHeight))); try (SubRegion ignored = canvas.subRegion(contentRegion, true)) { canvas.drawWidget(content, Rect2i.createFromMinAndSize(-horizontalBar.getValue(), 0, contentSize.x, availableSize.y)); } }
@Override public void onDraw(Canvas canvas) { UIStyle style = canvas.getCurrentStyle(); Vector2i attachmentSize = canvas.calculatePreferredSize(attachment); attachmentSize.add(style.getMargin().getTotals()); break; top = TeraMath.clamp(top, 0, canvas.size().y - attachmentSize.y); int left; switch (style.getHorizontalAlignment()) { break; left = TeraMath.clamp(left, 0, canvas.size().x - attachmentSize.x); try (SubRegion ignored = canvas.subRegion(Rect2i.createFromMinAndSize(left, top, attachmentSize.x, attachmentSize.y), false)) { canvas.drawBackground(); canvas.drawWidget(attachment, style.getBackgroundBorder().shrink(canvas.getRegion()));
@Override public void onDraw(Canvas canvas) { if (vertical) { canvas.setPart("sliderVertical"); } else { canvas.setPart("sliderHorizontal"); } canvas.drawBackground(); canvas.addInteractionRegion(sliderListener); canvas.setPart("handle"); if (vertical) { sliderSize = canvas.size().y - canvas.getCurrentStyle().getFixedHeight(); } else { sliderSize = canvas.size().x - canvas.getCurrentStyle().getFixedWidth(); } if (sliderSize > handleSize) { int drawLocation = pixelOffsetFor(getValue()); Rect2i handleRegion; if (vertical) { handleSize = canvas.getCurrentStyle().getFixedHeight(); handleRegion = Rect2i.createFromMinAndSize(0, drawLocation, canvas.getCurrentStyle().getFixedWidth(), handleSize); } else { handleSize = canvas.getCurrentStyle().getFixedWidth(); handleRegion = Rect2i.createFromMinAndSize(drawLocation, 0, handleSize, canvas.getCurrentStyle().getFixedHeight()); } canvas.drawBackground(handleRegion); canvas.addInteractionRegion(handleListener, handleRegion); } }
@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) { Vector2i canvasSize = canvas.size(); Vector2i contentSize = canvas.calculateRestrictedSize(content, canvasSize); int horizontalScrollbarHeight = canvas.calculateRestrictedSize(horizontalBar, canvasSize).y; int verticalScrollbarWidth = canvas.calculateRestrictedSize(verticalBar, canvasSize).x;
Rect2i scrollableArea = Rect2i.createFromMinAndSize(0, canvas.size().y, canvas.size().x, height - itemMargin.getBottom()); int scrollbarWidth = canvas.calculateRestrictedSize(verticalBar, new Vector2i(canvas.size().x, canvas.size().y)).x; int scrollbarHeight = frame.size().y - itemMargin.getTop(); int availableWidth = frame.size().x - scrollbarWidth; canvas.drawWidget(verticalBar, scrollbarRegion); try (SubRegion ignored = canvas.subRegion(scrollableArea, true)) { drawItem(canvas, itemMargin, i, itemRegion);
@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 void onDraw(Canvas canvas) { if (getIcon() != null) { canvas.drawTexture(getIcon()); } else if (getMesh() != null && getMeshTexture() != null) { Quat4f rot = new Quat4f(TeraMath.PI / 6, -TeraMath.PI / 12, 0); canvas.drawMesh(getMesh(), getMeshTexture(), canvas.getRegion(), rot, new Vector3f(), 1.0f); } if (getQuantity() > 1) { canvas.drawText(Integer.toString(getQuantity())); } List<TooltipLine> tooltipLines = tooltip.getList(); if (tooltipLines != null && !tooltipLines.isEmpty()) { canvas.addInteractionRegion(listener); } }
@Override public void draw(T value, Canvas canvas) { // Drawing the icon TextureRegion texture = getTexture(value); if (texture != null) { if (marginTop + texture.getHeight() + marginBottom > canvas.size().y) { // Icon does not fit within the canvas - vertically shrinking it int iconHeight = canvas.size().y - marginTop - marginBottom; canvas.drawTexture(texture, Rect2i.createFromMinAndSize(marginLeft, marginTop, texture.getWidth(), iconHeight)); } else { // Icon fits within the canvas - vertically centering it int iconVerticalPosition = (canvas.size().y - texture.getHeight()) / 2; canvas.drawTexture(texture, Rect2i.createFromMinAndSize(marginLeft, iconVerticalPosition, texture.getWidth(), texture.getHeight())); } } // Drawing the text, adjusting for icon width String text = getString(value); int iconWidth; if (texture != null) { iconWidth = marginLeft + texture.getWidth() + marginRight; } else { iconWidth = 0; } Rect2i textRegion = Rect2i.createFromMinAndSize(iconWidth, 0, canvas.getRegion().width() - iconWidth, canvas.getRegion().height()); canvas.drawText(text, textRegion); }
@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); } } }
/** * Handles how the widget is drawn. * * @param canvas The canvas on which the widget resides. */ @Override public void onDraw(Canvas canvas) { lastWidth = canvas.size().x; if (isEnabled()) { canvas.addInteractionRegion(interactionListener, canvas.getRegion()); } drawAll(canvas, canvas.size().x); }
@Override public void onDraw(Canvas canvas) { canvas.setPart(ICON_PART); if (icon != null && getMaxValue() > 0) { Vector2i iconSize = getIconSize(canvas); for (int i = 0; i < maxIcons; ++i) { Rect2i iconRegion = Rect2i.createFromMinAndSize(offset, iconSize); canvas.drawBackground(iconRegion); if (ratio - i >= 0.5f) { canvas.drawTexture(icon, iconRegion); } else if (ratio - i > 0f) { switch (halfIconMode) { halfSize.x /= 2; halfSize.y /= 2; canvas.drawTexture(icon, Rect2i.createFromMinAndSize(new Vector2i(offset.x + halfSize.x / 2, offset.y + halfSize.y / 2), halfSize)); break; case SPLIT: canvas.drawTextureRaw(icon, Rect2i.createFromMinAndSize(offset, new Vector2i(iconSize.x / 2, iconSize.y)), ScaleMode.STRETCH, 0f, 0f, (float) (iconSize.x / 2) / iconSize.x, 1.0f); break; default: canvas.drawTexture(icon, iconRegion); break; if (offset.x + iconSize.x > canvas.size().x) { offset.x = 0;
@Override public void onDraw(Canvas canvas) { if (content != null) { canvas.drawWidget(content); } }