use of org.terasology.rendering.assets.font.Font 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();
});
}
use of org.terasology.rendering.assets.font.Font in project Terasology by MovingBlocks.
the class StringTextIconRenderer method getPreferredSize.
@Override
public Vector2i getPreferredSize(T value, Canvas canvas) {
Font font = canvas.getCurrentStyle().getFont();
String text = getString(value);
TextureRegion texture = getTexture(value);
if (texture == null) {
List<String> lines = TextLineBuilder.getLines(font, text, canvas.size().x);
return font.getSize(lines);
} else {
int iconWidth = marginLeft + texture.getWidth() + marginRight;
List<String> lines = TextLineBuilder.getLines(font, text, canvas.size().x - iconWidth);
return font.getSize(lines).addX(iconWidth);
}
}
use of org.terasology.rendering.assets.font.Font in project Terasology by MovingBlocks.
the class StringTextRenderer method getPreferredSize.
@Override
public Vector2i getPreferredSize(T value, Canvas canvas) {
Font font = canvas.getCurrentStyle().getFont();
String text = getString(value);
if (wrap) {
List<String> lines = TextLineBuilder.getLines(font, text, canvas.size().x);
return font.getSize(lines);
} else {
return new Vector2i(font.getWidth(text), font.getLineHeight());
}
}
use of org.terasology.rendering.assets.font.Font in project Terasology by MovingBlocks.
the class UIButton method getPreferredContentSize.
/**
* Retrieves the preferred content size of the {@code UIButton}.
* This is the minimum size this layout will take, given no space restrictions.
*
* @param canvas The {@code Canvas} on which the {@code UIButton} is drawn
* @param areaHint A {@link Vector2i} representing the available space for this {@code UIButton}
* @return A {@link Vector2i} representing the preferred content size of the {@code UIButton}
*/
@Override
public Vector2i getPreferredContentSize(Canvas canvas, Vector2i areaHint) {
Font font = canvas.getCurrentStyle().getFont();
List<String> lines = TextLineBuilder.getLines(font, text.get(), areaHint.getX());
return font.getSize(lines);
}
use of org.terasology.rendering.assets.font.Font in project Terasology by MovingBlocks.
the class UILabel method getPreferredContentSize.
@Override
public Vector2i getPreferredContentSize(Canvas canvas, Vector2i areaHint) {
Font font = canvas.getCurrentStyle().getFont();
List<String> lines = TextLineBuilder.getLines(font, getText(), areaHint.x);
return font.getSize(lines);
}
Aggregations