@Override public Vector2f scaleForRegion(Rect2i region, int actualWidth, int actualHeight) { float scale = Math.max((float) region.width() / actualWidth, (float) region.height() / actualHeight); return new Vector2f(actualWidth * scale, actualHeight * scale); }
@Override public Vector2f scaleForRegion(Rect2i region, int actualWidth, int actualHeight) { float scale = Math.min((float) region.width() / actualWidth, (float) region.height() / actualHeight); return new Vector2f(actualWidth * scale, actualHeight * scale); }
@Override public Vector2f scaleForRegion(Rect2i region, int actualWidth, int actualHeight) { return new Vector2f(region.width(), region.height()); }
@Override public Vector2i size() { return new Vector2i(state.drawRegion.width(), state.drawRegion.height()); }
@Override public Rect2i getRegion() { return Rect2i.createFromMinAndSize(0, 0, state.drawRegion.width(), state.drawRegion.height()); }
/** * Given a region, gets the start position for the alignment * * @param region * @return */ public int getStart(Rect2i region) { return region.minX() + getOffset(0, region.width()); }
@Override public Vector2f scaleForRegion(Rect2i region, int actualWidth, int actualHeight) { return new Vector2f(region.width(), region.height()); }
public Rect2i getRelativeRegion() { return Rect2i.createFromMinAndSize(0, 0, drawRegion.width(), drawRegion.height()); } }
@Override public Rect2i animateRegion(Rect2i rc) { if (scale == 0.0) { // this should cover most of the cases return rc; } int left = (int) (direction.getHorzScale() * scale * rc.width()); int top = (int) (direction.getVertScale() * scale * rc.height()); return Rect2i.createFromMinAndSize(left, top, rc.width(), rc.height()); }
@Override public void onDraw(Canvas canvas) { if (!contents.isEmpty()) { Rect2i region = canvas.getRegion(); Rect2i buttonRegion = Rect2i.createFromMinAndSize(region.minX(), region.minY(), region.width(), tabBarHeight); Rect2i boxRegion = Rect2i.createFromMinAndMax(region.minX(), region.minY() + tabBarHeight, region.width(), region.height()); canvas.drawWidget(contents.get(currentTab), boxRegion); canvas.drawWidget(buttonLayout, buttonRegion); } }
public void onDraw(Canvas canvas) { Rect2i region = canvas.getRegion(); inputPort.updateRect(); canvas.drawWidget(inputPort, Rect2i.createFromMinAndMax( (int) (inputPort.rect.minX() / 10.f * region.width()), (int) (inputPort.rect.minY() / 5.f * region.height()), (int) (inputPort.rect.maxX() / 10.f * region.width()), (int) (inputPort.rect.maxY() / 5.f * region.height()))); for (Port port : ports) { port.updateRect(); canvas.drawWidget(port, Rect2i.createFromMinAndMax( (int) (port.rect.minX() / 10.f * region.width()), (int) (port.rect.minY() / 5.f * region.height()), (int) (port.rect.maxX() / 10.f * region.width()), (int) (port.rect.maxY() / 5.f * region.height()))); } }
private Rect2i applyStyleToSize(Rect2i region, UIStyle style, Vector2i maxSize) { if (region.isEmpty()) { return region; } Vector2i size = applyStyleToSize(region.size(), style); size.x = Math.min(size.x, maxSize.x); size.y = Math.min(size.y, maxSize.y); int minX = region.minX() + style.getHorizontalAlignment().getOffset(size.x, region.width()); int minY = region.minY() + style.getVerticalAlignment().getOffset(size.y, region.height()); return Rect2i.createFromMinAndSize(minX, minY, size.x, size.y); }
public static Rect2i relativeToAbsolute(Rect2i region, Rect2i baseRegion) { return Rect2i.createFromMinAndSize(region.minX() + baseRegion.minX(), region.minY() + baseRegion.minY(), region.width(), region.height()); }
public Rect2i shrink(org.terasology.math.geom.Rect2i region) { return Rect2i.createFromMinAndSize(region.minX() + getLeft(), region.minY() + getTop(), region.width() - getTotalWidth(), region.height() - getTotalHeight()); }
@Override public void drawMaterialAt(Material material, Rect2i drawRegion) { glPushMatrix(); glTranslatef(drawRegion.minX(), drawRegion.minY(), 0f); glScalef(drawRegion.width(), drawRegion.height(), 1); billboard.render(); glPopMatrix(); }
public Rect2i grow(org.terasology.math.geom.Rect2i region) { // Note protection against overflow of the size return Rect2i.createFromMinAndSize(region.minX() - getLeft(), region.minY() - getTop(), TeraMath.addClampAtMax(region.width(), getTotalWidth()), TeraMath.addClampAtMax(region.height(), getTotalHeight())); } }
private Rect2i applyStyleToSize(Rect2i region, UIStyle style) { if (region.isEmpty()) { return region; } Vector2i size = applyStyleToSize(region.size(), style); int minX = region.minX() + style.getHorizontalAlignment().getOffset(size.x, region.width()); int minY = region.minY() + style.getVerticalAlignment().getOffset(size.y, region.height()); return Rect2i.createFromMinAndSize(minX, minY, size.x, size.y); }
private void drawNode(Canvas canvas, Rect2i nodeRegion, Tree<T> node, TreeViewListenerSet listenerSet) { canvas.drawBackground(nodeRegion); itemRenderer.draw(node.getValue(), canvas, canvas.getCurrentStyle().getMargin().shrink(nodeRegion)); // Add the top listener. canvas.addInteractionRegion(listenerSet.getTopListener(), itemRenderer.getTooltip(node.getValue()), Rect2i.createFromMinAndSize(nodeRegion.minX(), nodeRegion.minY(), nodeRegion.width(), nodeRegion.height() / 3)); // Add the central listener. canvas.addInteractionRegion(listenerSet.getCenterListener(), itemRenderer.getTooltip(node.getValue()), Rect2i.createFromMinAndSize(nodeRegion.minX(), nodeRegion.minY() + nodeRegion.height() / 3, nodeRegion.width(), nodeRegion.height() / 3)); int heightOffset = nodeRegion.height() - 3 * (nodeRegion.height() / 3); // Add the bottom listener. canvas.addInteractionRegion(listenerSet.getBottomListener(), itemRenderer.getTooltip(node.getValue()), Rect2i.createFromMinAndSize(nodeRegion.minX(), nodeRegion.minY() + 2 * nodeRegion.height() / 3, nodeRegion.width(), heightOffset + nodeRegion.height() / 3)); }
/** * 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)); } }
@Test public void testRelativeToAbsolute() { Rect2i relativeRegion = Rect2i.createFromMinAndMax(5, 10, 20, 15); assertEquals(Line.relativeToAbsolute(relativeRegion, cropRegion), Rect2i.createFromMinAndSize(cropRegion.minX() + relativeRegion.minX(), cropRegion.minY() + relativeRegion.minY(), relativeRegion.width(), relativeRegion.height())); }