@Override public Vector2i copy(Vector2i value) { return new Vector2i(value); } }
@Override public Vector2i getMaxContentSize(Canvas canvas) { return new Vector2i(Integer.MAX_VALUE, Integer.MAX_VALUE); }
@Override public Vector2i getMaxContentSize(Canvas canvas) { return new Vector2i(Integer.MAX_VALUE, Integer.MAX_VALUE); }
@Override public Vector2i getPreferredContentSize(Canvas canvas, Vector2i areaHint) { return new Vector2i(size); } }
@Override public Vector2i deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { JsonArray jsonArray = json.getAsJsonArray(); return new Vector2i(jsonArray.get(0).getAsInt(), jsonArray.get(1).getAsInt()); } }
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 calculatePreferredSize(UIWidget widget) { return calculateRestrictedSize(widget, new Vector2i(LARGE_INT, LARGE_INT)); }
@Override public Vector2i getSize(List<String> lines) { int height = getLineHeight() * lines.size(); int width = 0; for (String line : lines) { width = Math.max(width, getWidth(line)); } return new Vector2i(width, height); }
@Override public Vector2i getPreferredContentSize(Canvas canvas, Vector2i sizeHint) { if (icon != null) { TextureRegion texture = icon.get(); if (texture != null) { return texture.size(); } } return new Vector2i(); }
@Test public void testLineCoordinatesIntersection() { // Test several preset intersecting lines assertEquals(new Line.LineCoordinates(new Vector2i(10, 30), new Vector2i(30, 20)), Line.getLineCoordinates(0, 40, 40, 0, Rect2i.EMPTY, cropRegion)); assertEquals(new Line.LineCoordinates(new Vector2i(10, 25), new Vector2i(30, 25)), Line.getLineCoordinates(5, 25, 35, 25, Rect2i.EMPTY, cropRegion)); assertEquals(new Line.LineCoordinates(new Vector2i(20, 20), new Vector2i(20, 30)), Line.getLineCoordinates(20, 5, 20, 35, Rect2i.EMPTY, cropRegion)); assertEquals(new Line.LineCoordinates(new Vector2i(20, 25), new Vector2i(30, 30)), Line.getLineCoordinates(20, 25, 40, 40, Rect2i.EMPTY, cropRegion)); }
@Override public boolean processMouseRelease(MouseInput button, Vector2i pos) { if (clickedRegion != null) { Vector2i relPos = new Vector2i(pos); relPos.sub(clickedRegion.region.min()); clickedRegion.listener.onMouseRelease(new NUIMouseReleaseEvent(mouse, keyboard, relPos, button)); clickedRegion = null; return true; } return false; }
@Override public Vector2i getPreferredContentSize(Canvas canvas, Vector2i sizeHint) { int[] bounds = {0, 0, canvas.size().x, canvas.size().y}; layoutContainer(canvas, bounds); return new Vector2i(grid.getWidth()[1], grid.getHeight()[1]); }
@Override public Vector2i getPreferredSize(ModuleSelectionInfo value, Canvas canvas) { String text = getString(value); return new Vector2i(canvas.getCurrentStyle().getFont().getWidth(text), canvas.getCurrentStyle().getFont().getLineHeight()); } });
@Override public Vector2i getPreferredSize(ModuleSelectionInfo value, Canvas canvas) { String text = getString(value); return new Vector2i(canvas.getCurrentStyle().getFont().getWidth(text), canvas.getCurrentStyle().getFont().getLineHeight()); } });
@Override public Vector2i getPreferredSize(WorldInfo value, Canvas canvas) { String text = value.getCustomTitle(); return new Vector2i(canvas.getCurrentStyle().getFont().getWidth(text), canvas.getCurrentStyle().getFont().getLineHeight()); } });
@Override public Vector2i calculateMaximumSize(UIWidget widget) { if (widget == null) { return new Vector2i(Integer.MAX_VALUE, Integer.MAX_VALUE); } String family = (widget.getFamily() != null) ? widget.getFamily() : state.family; UIStyle elementStyle = state.skin.getStyleFor(family, widget.getClass(), UIWidget.BASE_PART, widget.getMode()); try (SubRegion ignored = subRegionForWidget(widget, getRegion(), false)) { return applyStyleToSize(elementStyle.getMargin().grow(widget.getMaxContentSize(this)), elementStyle); } }
@Test public void testScaling() throws Exception { zoomableLayout.onDraw(canvas); //world size scaled to fit ratio of screen size - world size now 200 x 100 assertEquals(zoomableLayout.getWindowSize(), new Vector2f(WORLD_WIDTH * 2, WORLD_HEIGHT)); assertEquals(zoomableLayout.getScreenSize(), new Vector2i(CANVAS_WIDTH, CANVAS_HEIGHT)); assertEquals(zoomableLayout.getPixelSize(), new Vector2f(CANVAS_WIDTH / (WORLD_WIDTH * 2), CANVAS_HEIGHT / WORLD_HEIGHT)); //coordinates on widgets scaled down by half verify(canvas).drawWidget(item1, Rect2i.createFromMinAndMax(new Vector2i(ceilToInt(pos1.x / 2), ceilToInt(pos1.y / 2)), new Vector2i(ceilToInt((pos1.x + size1.x) / 2), ceilToInt((pos1.y + size1.y) / 2)))); verify(canvas).drawWidget(item2, Rect2i.createFromMinAndMax(new Vector2i(ceilToInt(pos2.x / 2), ceilToInt(pos2.y / 2)), new Vector2i(ceilToInt((pos2.x + size2.x) / 2), ceilToInt((pos2.y + size2.y) / 2)))); verify(canvas).drawWidget(item3, Rect2i.createFromMinAndMax(new Vector2i(ceilToInt(pos3.x / 2), ceilToInt(pos3.y / 2)), new Vector2i(ceilToInt((pos3.x + size3.x) / 2), ceilToInt((pos3.y + size3.y) / 2)))); }
private float[] getSubset(float[] fullData, Rect2i fullRegion, Rect2i subRegion) { if (subRegion.sizeX() != fullRegion.sizeX() || subRegion.sizeY() != fullRegion.sizeY()) { float[] result = new float[subRegion.sizeX() * subRegion.sizeY()]; Vector2i offset = new Vector2i(subRegion.minX() - fullRegion.minX(), subRegion.minY() - fullRegion.minY()); for (int y = 0; y < subRegion.sizeY(); ++y) { System.arraycopy(fullData, offset.getX() + fullRegion.sizeX() * (y + offset.getY()), result, subRegion.sizeX() * y, subRegion.sizeX()); } return result; } else { return fullData; } }