private float[] mapExpand(float[] keyData, Rect2i fullRegion) { float[] fullData = new float[fullRegion.size().x * fullRegion.size().y]; int samplesX = fullRegion.size().x / sampleRate + 1; int samplesY = fullRegion.size().y / sampleRate + 1; for (int y = 0; y < samplesY - 1; y++) { for (int x = 0; x < samplesX - 1; x++) { float q11 = keyData[x + y * samplesX]; float q21 = keyData[x + 1 + y * samplesX]; float q12 = keyData[x + (y + 1) * samplesX]; float q22 = keyData[(x + 1) + (y + 1) * samplesX]; for (int innerY = 0; innerY < sampleRate; ++innerY) { for (int innerX = 0; innerX < sampleRate; ++innerX) { fullData[x * sampleRate + innerX + fullRegion.size().x * (y * sampleRate + innerY)] = TeraMath.biLerp(q11, q21, q12, q22, (float) innerX / sampleRate, (float) innerY / sampleRate); } } } } return fullData; }
private float[] getSubset(float[] fullData, Rect2i fullRegion, Rect2i subRegion) { if (subRegion.size().x != fullRegion.size().x || subRegion.size().y != fullRegion.size().y) { float[] result = new float[subRegion.size().x * subRegion.size().y]; Vector2i offset = new Vector2i(subRegion.minX() - fullRegion.minX(), subRegion.minY() - fullRegion.minY()); for (int y = 0; y < subRegion.size().y; ++y) { System.arraycopy(fullData, offset.getX() + fullRegion.size().x * (y + offset.getY()), result, subRegion.size().x * y, subRegion.size().x); } return result; } else { return fullData; } }
public BaseObjectFacet2D(Region3i targetRegion, Border3D border, Class<T> objectType) { super(targetRegion, border); Vector2i size = getRelativeRegion().size(); this.data = (T[]) Array.newInstance(objectType, size.x * size.y); }
public BaseFieldFacet2D(Region3i targetRegion, Border3D border) { super(targetRegion, border); Vector2i size = getRelativeRegion().size(); this.data = new float[size.x * size.y]; }
public BaseBooleanFieldFacet2D(Region3i targetRegion, Border3D border) { super(targetRegion, border); Vector2i size = getRelativeRegion().size(); data = new boolean[size.x * size.y]; }
@Override public Vector2i getPreferredContentSize(Canvas canvas, Vector2i sizeHint) { return canvas.getRegion().size(); }
@Override public Vector2i getPreferredContentSize(Canvas canvas, Vector2i sizeHint) { return sectionRegion == null ? Vector2i.zero() : sectionRegion.size(); }
private float[] getKeyValues(Rect2i fullRegion) { int xDim = fullRegion.size().x / sampleRate + 1; int yDim = fullRegion.size().y / sampleRate + 1; float[] fullData = new float[xDim * yDim]; for (int y = 0; y < yDim; y++) { for (int x = 0; x < xDim; x++) { int actualX = x * sampleRate + fullRegion.minX(); int actualY = y * sampleRate + fullRegion.minY(); fullData[x + y * xDim] = source.noise(zoom.x * actualX, zoom.y * actualY); } } return fullData; }
@Override public PersistedData serialize(Rect2i value, SerializationContext context) { if (value == null) { return context.createNull(); } else { Map<String, PersistedData> map = Maps.newLinkedHashMap(); map.put(MIN_FIELD, context.create(value.min(), Vector2i.class)); map.put(SIZE_FIELD, context.create(value.size(), Vector2i.class)); return context.create(map); } }
@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); } }
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); }
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 drawWidget(UIWidget element, Rect2i region) { if (element == null || !element.isVisible()) { return; } if (nuiManager.getFocus() == element) { focusDrawn = true; } String family = (element.getFamily() != null) ? element.getFamily() : state.family; UISkin skin = (element.getSkin() != null) ? element.getSkin() : state.skin; UIStyle newStyle = skin.getStyleFor(family, element.getClass(), UIWidget.BASE_PART, element.getMode()); Rect2i regionArea; try (SubRegion ignored = subRegionForWidget(element, region, false)) { regionArea = applyStyleToSize(region, newStyle, calculateMaximumSize(element)); } try (SubRegion ignored = subRegionForWidget(element, regionArea, false)) { if (element.isSkinAppliedByCanvas()) { drawBackground(); try (SubRegion withMargin = subRegionForWidget(element, newStyle.getMargin().shrink(Rect2i.createFromMinAndSize(Vector2i.zero(), regionArea.size())), false)) { drawStyledWidget(element); } } else { drawStyledWidget(element); } } }
switch (mode) { case TILED: { TextureCacheKey key = new TextureCacheKey(texture.size(), absoluteRegion.size()); usedTextures.add(key); mesh = cachedTextures.get(key);
TextureCacheKey key = new TextureCacheKey(textureSize, region.size(), border, tile); usedTextures.add(key); Mesh mesh = cachedTextures.get(key);