@Override public void paintDebugCell(int x, int y, int width, int height) { debugRects.add(Rect2i.createFromMinAndSize(x, y, width, height)); }
@Override public Rect2i getRegion() { return Rect2i.createFromMinAndSize(0, 0, state.drawRegion.width(), state.drawRegion.height()); }
/** * Draws the widget with neither a horizontal or vertical scrollbar. * <p> * If the widget is too large in either axis, it will be cropped * * @param canvas The canvas to use * @param availableSize The available size for the layout */ private void drawWithNeither(Canvas canvas, Vector2i availableSize) { canvas.drawWidget(content, Rect2i.createFromMinAndSize(Vector2i.zero(), availableSize)); }
@Override public Rect2i getPixelRegion() { return Rect2i.createFromMinAndSize(0, 0, getWidth(), getHeight()); }
@Override public void preRender() { interactionRegions.clear(); Vector2i size = renderer.getTargetSize(); size.x = (int) (size.x / uiScale); size.y = (int) (size.y / uiScale); state = new CanvasState(null, Rect2i.createFromMinAndSize(0, 0, size.x, size.y)); renderer.preRender(); renderer.crop(state.cropRegion); focusDrawn = false; }
@Test public void testEncompass() { // encompass self assertTrue(Rect2i.createFromMinAndSize(5, 5, 47, 57).contains(Rect2i.createFromMinAndSize(5, 5, 47, 57))); assertTrue(Rect2i.createFromMinAndSize(5, 5, 47, 57).contains(Rect2i.createFromMinAndSize(45, 35, 5, 20))); assertTrue(Rect2i.createFromMinAndSize(5, 5, 47, 57).contains(Rect2i.createFromMinAndSize(50, 60, 2, 2))); assertFalse(Rect2i.createFromMinAndSize(5, 5, 47, 57).contains(Rect2i.createFromMinAndSize(50, 60, 3, 2))); assertFalse(Rect2i.createFromMinAndSize(5, 5, 47, 57).contains(Rect2i.createFromMinAndSize(50, 60, 2, 3))); }
@Test public void testOverlap() { assertTrue(Rect2i.createFromMinAndSize(5, 5, 472, 17).overlaps(Rect2i.createFromMinAndSize(5, 5, 1, 16))); }
private SubRegionFBOImpl(ResourceUrn uri, BaseVector2i size) { previousState = state; fbo = renderer.getFBO(uri, size); state = new CanvasState(state, Rect2i.createFromMinAndSize(new Vector2i(), size)); fbo.bindFrame(); }
@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); }
@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 Rect2i deserialize(PersistedData data, DeserializationContext context) { if (!data.isNull() && data.isValueMap()) { PersistedDataMap map = data.getAsValueMap(); Vector2i min = context.deserializeAs(map.get(MIN_FIELD), Vector2i.class); Vector2i size = context.deserializeAs(map.get(SIZE_FIELD), Vector2i.class); return Rect2i.createFromMinAndSize(min, size); } return null; }
@Override public void render(Canvas canvas, Rect2i bounds, TextRenderStyle defaultRenderStyle) { TextRenderStyle safeRenderStyle = getTextRenderStyle(defaultRenderStyle); Font font = safeRenderStyle.getFont(hyperlink != null); int lineHeight = font.getLineHeight(); Rect2i bottomBounds = Rect2i.createFromMinAndSize(bounds.minX(), bounds.maxY() - lineHeight, bounds.sizeX(), lineHeight); canvas.drawTextRaw(text, font, safeRenderStyle.getColor(hyperlink != null), bottomBounds); }
@Override public Rect2i getPixelRegion() { return Rect2i.createFromMinAndSize(TeraMath.floorToInt(subregion.minX() * texture.getWidth()), TeraMath.floorToInt(subregion.minY() * texture.getHeight()), getWidth(), getHeight()); }
@Override public Rect2i getPixelRegion() { return Rect2i.createFromMinAndSize(TeraMath.floorToInt(region.minX() * texture.getWidth()), TeraMath.floorToInt(region.minY() * texture.getHeight()), getWidth(), getHeight()); } }
@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); } }
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); }
@Override public void onDraw(Canvas canvas) { Rect2i clearButtonRegion = Rect2i.createFromMinAndSize(0, 0, 30, canvas.size().y); lastWidth = canvas.size().x - clearButtonRegion.size().x; if (isEnabled()) { canvas.addInteractionRegion(interactionListener, Rect2i.createFromMinAndMax(0, 0, canvas.size().x, canvas.size().y)); canvas.addInteractionRegion(clearInteractionListener, Rect2i.createFromMinAndMax(canvas.size().x, 0, canvas.size().x + clearButtonRegion.size().x, canvas.size().y)); } drawAll(canvas, canvas.size().x - clearButtonRegion.size().x); } }
@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())); }