use of org.terasology.math.geom.Rect2i in project Terasology by MovingBlocks.
the class CanvasImpl method drawTextureRawBordered.
@Override
public void drawTextureRawBordered(TextureRegion texture, Rect2i region, Border border, boolean tile, float ux, float uy, float uw, float uh) {
if (!state.cropRegion.overlaps(relativeToAbsolute(region))) {
return;
}
Rect2i absoluteRegion = relativeToAbsolute(region);
Rect2i cropRegion = absoluteRegion.intersect(state.cropRegion);
if (!cropRegion.isEmpty()) {
if (state.drawOnTop) {
drawOnTopOperations.add(new DrawBorderedTextureOperation(texture, absoluteRegion, border, tile, cropRegion, ux, uy, uw, uh, state.getAlpha()));
} else {
renderer.drawTextureBordered(texture, absoluteRegion, border, tile, ux, uy, uw, uh, state.getAlpha());
}
}
}
use of org.terasology.math.geom.Rect2i in project Terasology by MovingBlocks.
the class CanvasImpl method drawTextRawShadowed.
@Override
public void drawTextRawShadowed(String text, Font font, Color color, Color shadowColor, boolean underline, Rect2i region, HorizontalAlign hAlign, VerticalAlign vAlign) {
Rect2i absoluteRegion = relativeToAbsolute(region);
Rect2i cropRegion = absoluteRegion.intersect(state.cropRegion);
if (!cropRegion.isEmpty()) {
if (state.drawOnTop) {
drawOnTopOperations.add(new DrawTextOperation(text, font, hAlign, vAlign, absoluteRegion, cropRegion, color, shadowColor, state.getAlpha(), underline));
} else {
renderer.drawText(text, font, hAlign, vAlign, absoluteRegion, color, shadowColor, state.getAlpha(), underline);
}
}
}
use of org.terasology.math.geom.Rect2i in project Terasology by MovingBlocks.
the class CanvasImpl method drawMaterial.
@Override
public void drawMaterial(Material material, Rect2i region) {
if (material.isRenderable()) {
Rect2i drawRegion = relativeToAbsolute(region);
if (!state.cropRegion.overlaps(drawRegion)) {
return;
}
material.setFloat("alpha", state.getAlpha());
material.bindTextures();
renderer.drawMaterialAt(material, drawRegion);
}
}
use of org.terasology.math.geom.Rect2i in project Terasology by MovingBlocks.
the class Line method getLineCoordinates.
public static LineCoordinates getLineCoordinates(int startX, int startY, int endX, int endY, Rect2i baseRegion, Rect2i cropRegion) {
Rect2i region = Rect2i.createFromMinAndMax(Math.min(startX, endX), Math.min(startY, endY), Math.max(startX, endX), Math.max(startY, endY));
Rect2i absoluteRegion = relativeToAbsolute(region, baseRegion);
Rect2i finalRegion = cropRegion.intersect(absoluteRegion);
if (!finalRegion.isEmpty()) {
int sx = startX > endX ? finalRegion.maxX() : finalRegion.minX();
int sy = startY > endY ? finalRegion.maxY() : finalRegion.minY();
int ex = startX > endX ? finalRegion.minX() : finalRegion.maxX();
int ey = startY > endY ? finalRegion.minY() : finalRegion.maxY();
return new LineCoordinates(new Vector2i(sx, sy), new Vector2i(ex, ey));
} else {
return null;
}
}
use of org.terasology.math.geom.Rect2i in project Terasology by MovingBlocks.
the class LwjglCanvasRenderer method drawText.
@Override
public void drawText(String text, Font font, HorizontalAlign hAlign, VerticalAlign vAlign, Rect2i absoluteRegion, Color color, Color shadowColor, float alpha, boolean underlined) {
TextCacheKey key = new TextCacheKey(text, font, absoluteRegion.width(), hAlign, color, shadowColor, underlined);
usedText.add(key);
Map<Material, Mesh> fontMesh = cachedText.get(key);
List<String> lines = TextLineBuilder.getLines(font, text, absoluteRegion.width());
if (fontMesh != null) {
for (Mesh mesh : fontMesh.values()) {
if (mesh.isDisposed()) {
fontMesh = null;
break;
}
}
}
if (fontMesh == null) {
fontMesh = fontMeshBuilder.createTextMesh(font, lines, absoluteRegion.width(), hAlign, color, shadowColor, underlined);
cachedText.put(key, fontMesh);
}
Vector2i offset = new Vector2i(absoluteRegion.minX(), absoluteRegion.minY());
offset.y += vAlign.getOffset(lines.size() * font.getLineHeight(), absoluteRegion.height());
fontMesh.entrySet().stream().filter(entry -> entry.getKey().isRenderable()).forEach(entry -> {
entry.getKey().bindTextures();
entry.getKey().setFloat4(CROPPING_BOUNDARIES_PARAM, requestedCropRegion.minX(), requestedCropRegion.maxX(), requestedCropRegion.minY(), requestedCropRegion.maxY());
entry.getKey().setFloat2("offset", offset.x, offset.y);
entry.getKey().setFloat("alpha", alpha);
entry.getValue().render();
});
}
Aggregations