@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); }
/** * Provides the "start" edge for the alignment - so for TOP it is the top edge, for BOTTOM it is the bottom edge * @param region * @return Where placement in the region begins for the alignment. */ public int getStart(Rect2i region) { return region.minY() + getOffset(0, region.height()); } }
@Override public Rect2i getRegion() { return Rect2i.createFromMinAndSize(0, 0, state.drawRegion.width(), state.drawRegion.height()); }
@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 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()); }
private void addTiles(MeshBuilder builder, Rect2i drawRegion, Rect2f subDrawRegion, Vector2i textureSize, Rect2f subTextureRegion) { int tileW = textureSize.x; int tileH = textureSize.y; int horizTiles = TeraMath.fastAbs((drawRegion.width() - 1) / tileW) + 1; int vertTiles = TeraMath.fastAbs((drawRegion.height() - 1) / tileH) + 1; int offsetX = (drawRegion.width() - horizTiles * tileW) / 2; int offsetY = (drawRegion.height() - vertTiles * tileH) / 2; for (int tileY = 0; tileY < vertTiles; tileY++) { for (int tileX = 0; tileX < horizTiles; tileX++) { int left = offsetX + tileW * tileX; int top = offsetY + tileH * tileY; float vertLeft = subDrawRegion.minX() + subDrawRegion.width() * Math.max((float) left / drawRegion.width(), 0); float vertTop = subDrawRegion.minY() + subDrawRegion.height() * Math.max((float) top / drawRegion.height(), 0); float vertRight = subDrawRegion.minX() + subDrawRegion.width() * Math.min((float) (left + tileW) / drawRegion.width(), 1); float vertBottom = subDrawRegion.minY() + subDrawRegion.height() * Math.min((float) (top + tileH) / drawRegion.height(), 1); float texCoordLeft = subTextureRegion.minX() + subTextureRegion.width() * (Math.max(left, 0) - left) / tileW; float texCoordTop = subTextureRegion.minY() + subTextureRegion.height() * (Math.max(top, 0) - top) / tileH; float texCoordRight = subTextureRegion.minX() + subTextureRegion.width() * (Math.min(left + tileW, drawRegion.width()) - left) / tileW; float texCoordBottom = subTextureRegion.minY() + subTextureRegion.height() * (Math.min(top + tileH, drawRegion.height()) - top) / tileH; addRectPoly(builder, vertLeft, vertTop, vertRight, vertBottom, texCoordLeft, texCoordTop, texCoordRight, texCoordBottom); } } }
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)); }
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()))); } }
@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); } }
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); }
@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())); }