Search in sources :

Example 16 with Font

use of org.terasology.rendering.assets.font.Font in project Terasology by MovingBlocks.

the class UIScrollingText method updateYValues.

/**
 * Updates the Y values of the text shown in this {@code UIScrollingText} each frame
 * or initialises them if they are empty.
 *
 * @param canvas The {@code Canvas} on which this {@code UIScrollingText} is drawn
 */
private void updateYValues(Canvas canvas) {
    if (!textY.isEmpty()) {
        for (Entry<String, Integer> entry : textY.entrySet()) {
            textY.put(entry.getKey(), entry.getValue() - step);
        }
    } else {
        String[] parsed = getText().split("\\r?\\n", -1);
        Font font = canvas.getCurrentStyle().getFont();
        int y = canvas.size().y + lineSpacing;
        for (String line : parsed) {
            textY.put(line, y);
            y += font.getHeight(line) + lineSpacing;
        }
    }
}
Also used : Font(org.terasology.rendering.assets.font.Font)

Example 17 with Font

use of org.terasology.rendering.assets.font.Font in project Terasology by MovingBlocks.

the class UIScrollingText method getPreferredContentSize.

/**
 * Retrieves the preferred content size of this {@code UIScrollingText}.
 * This is the minimum size this layout will take, given no space restrictions.
 *
 * @param canvas The {@code Canvas} on which this {@code UIScrollingText} is drawn
 * @param areaHint A {@link Vector2i} representing the available space for this {@code UIScrollingText}
 * @return A {@code Vector2i} representing the preferred content size of this {@code UIScrollingText}
 */
@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);
}
Also used : Font(org.terasology.rendering.assets.font.Font)

Example 18 with Font

use of org.terasology.rendering.assets.font.Font in project Terasology by MovingBlocks.

the class UIText method drawCursor.

/**
 * Draws the cursor in the text field.
 *
 * @param canvas The canvas on which the widget resides
 */
protected void drawCursor(Canvas canvas) {
    if (blinkCounter < BLINK_RATE) {
        Font font = canvas.getCurrentStyle().getFont();
        String beforeCursor = text.get();
        if (getCursorPosition() < text.get().length()) {
            beforeCursor = beforeCursor.substring(0, getCursorPosition());
        }
        List<String> lines = TextLineBuilder.getLines(font, beforeCursor, canvas.size().x);
        // TODO: Support different alignments
        int lastLineWidth = font.getWidth(lines.get(lines.size() - 1));
        Rect2i region = Rect2i.createFromMinAndSize(lastLineWidth, (lines.size() - 1) * font.getLineHeight(), 1, font.getLineHeight());
        canvas.drawTexture(cursorTexture, region, canvas.getCurrentStyle().getTextColor());
    }
}
Also used : Rect2i(org.terasology.math.geom.Rect2i) Font(org.terasology.rendering.assets.font.Font)

Example 19 with Font

use of org.terasology.rendering.assets.font.Font in project Terasology by MovingBlocks.

the class TextFlowRenderable method splitAt.

@Override
public FlowRenderable.SplitResult<TextFlowRenderable> splitAt(TextRenderStyle defaultRenderStyle, int width) {
    Font font = getTextRenderStyle(defaultRenderStyle).getFont(hyperlink != null);
    if (!text.contains("\n")) {
        int wholeTextWidth = font.getWidth(text);
        if (wholeTextWidth <= width) {
            return new SplitResult<>(this, null);
        }
    }
    int spaceWidth = font.getWidth(' ');
    boolean first = true;
    int usedSpace = 0;
    StringBuilder before = new StringBuilder();
    StringBuilder after = new StringBuilder();
    boolean appendingToBefore = true;
    String[] lines = text.split("\n");
    String[] words = lines[0].split(" ");
    for (String word : words) {
        if (appendingToBefore) {
            if (!first) {
                usedSpace += spaceWidth;
                before.append(" ");
            }
            usedSpace += font.getWidth(word);
            if (usedSpace > width) {
                if (before.length() == 0) {
                    return new SplitResult<>(null, this);
                } else {
                    appendingToBefore = false;
                    after.append(word);
                }
            } else {
                before.append(word);
            }
            first = false;
        } else {
            after.append(" ");
            after.append(word);
        }
    }
    if (lines[0].endsWith(" ")) {
        after.append(" ");
    }
    after = trimLeft(after);
    boolean firstLine = true;
    for (int i = 1; i < lines.length; i++) {
        if (!firstLine || after.length() > 0) {
            after.append("\n");
        }
        after.append(lines[i]);
        firstLine = false;
    }
    String beforeText = trimRight(before).toString();
    String afterText = after.toString();
    if (afterText.isEmpty()) {
        return new SplitResult<>(new TextFlowRenderable(beforeText, textRenderStyle, hyperlink), null);
    } else {
        return new SplitResult<>(new TextFlowRenderable(beforeText, textRenderStyle, hyperlink), new TextFlowRenderable(afterText, textRenderStyle, hyperlink));
    }
}
Also used : Font(org.terasology.rendering.assets.font.Font)

Example 20 with Font

use of org.terasology.rendering.assets.font.Font in project Terasology by MovingBlocks.

the class LwjglGraphics method registerCoreAssetTypes.

@Override
public void registerCoreAssetTypes(ModuleAwareAssetTypeManager assetTypeManager) {
    // cast lambdas explicitly to avoid inconsistent compiler behavior wrt. type inference
    assetTypeManager.registerCoreAssetType(Font.class, (AssetFactory<Font, FontData>) FontImpl::new, "fonts");
    assetTypeManager.registerCoreAssetType(Texture.class, (AssetFactory<Texture, TextureData>) (urn, assetType, data) -> (new OpenGLTexture(urn, assetType, data, this)), "textures", "fonts");
    assetTypeManager.registerCoreFormat(Texture.class, new PNGTextureFormat(Texture.FilterMode.NEAREST, path -> {
        if (path.getName(1).toString().equals(ModuleAssetDataProducer.OVERRIDE_FOLDER)) {
            return path.getName(3).toString().equals("textures");
        } else {
            return path.getName(2).toString().equals("textures");
        }
    }));
    assetTypeManager.registerCoreFormat(Texture.class, new PNGTextureFormat(Texture.FilterMode.LINEAR, path -> {
        if (path.getName(1).toString().equals(ModuleAssetDataProducer.OVERRIDE_FOLDER)) {
            return path.getName(3).toString().equals("fonts");
        } else {
            return path.getName(2).toString().equals("fonts");
        }
    }));
    assetTypeManager.registerCoreAssetType(Shader.class, (AssetFactory<Shader, ShaderData>) GLSLShader::new, "shaders");
    assetTypeManager.registerCoreAssetType(Material.class, (AssetFactory<Material, MaterialData>) GLSLMaterial::new, "materials");
    assetTypeManager.registerCoreAssetType(Mesh.class, (AssetFactory<Mesh, MeshData>) (urn, assetType, data) -> new OpenGLMesh(urn, assetType, bufferPool, data), "mesh");
    assetTypeManager.registerCoreAssetType(SkeletalMesh.class, (AssetFactory<SkeletalMesh, SkeletalMeshData>) (urn, assetType, data) -> new OpenGLSkeletalMesh(urn, assetType, data, bufferPool), "skeletalMesh");
    assetTypeManager.registerCoreAssetType(MeshAnimation.class, (AssetFactory<MeshAnimation, MeshAnimationData>) MeshAnimationImpl::new, "animations");
    assetTypeManager.registerCoreAssetType(Atlas.class, (AssetFactory<Atlas, AtlasData>) Atlas::new, "atlas");
    assetTypeManager.registerCoreAssetType(Subtexture.class, (AssetFactory<Subtexture, SubtextureData>) Subtexture::new);
}
Also used : RenderingSubsystemFactory(org.terasology.engine.subsystem.RenderingSubsystemFactory) MeshData(org.terasology.rendering.assets.mesh.MeshData) LoggerFactory(org.slf4j.LoggerFactory) Config(org.terasology.config.Config) LWJGLException(org.lwjgl.LWJGLException) ByteBuffer(java.nio.ByteBuffer) FontData(org.terasology.rendering.assets.font.FontData) Material(org.terasology.rendering.assets.material.Material) PNGTextureFormat(org.terasology.rendering.assets.texture.PNGTextureFormat) ImageIO(javax.imageio.ImageIO) Atlas(org.terasology.rendering.assets.atlas.Atlas) GL11(org.lwjgl.opengl.GL11) TextureUtil(org.terasology.rendering.assets.texture.TextureUtil) Context(org.terasology.context.Context) ModuleAwareAssetTypeManager(org.terasology.assets.module.ModuleAwareAssetTypeManager) BufferedImage(java.awt.image.BufferedImage) ShaderManager(org.terasology.rendering.ShaderManager) RenderingConfig(org.terasology.config.RenderingConfig) SubtextureData(org.terasology.rendering.assets.texture.subtexture.SubtextureData) GameState(org.terasology.engine.modes.GameState) ShaderData(org.terasology.rendering.assets.shader.ShaderData) Queues(com.google.common.collect.Queues) List(java.util.List) LwjglCanvasRenderer(org.terasology.rendering.nui.internal.LwjglCanvasRenderer) DisplayDevice(org.terasology.engine.subsystem.DisplayDevice) Font(org.terasology.rendering.assets.font.Font) Subtexture(org.terasology.rendering.assets.texture.subtexture.Subtexture) TextureData(org.terasology.rendering.assets.texture.TextureData) GameEngine(org.terasology.engine.GameEngine) ModuleAssetDataProducer(org.terasology.assets.module.ModuleAssetDataProducer) ShaderManagerLwjgl(org.terasology.rendering.ShaderManagerLwjgl) Texture(org.terasology.rendering.assets.texture.Texture) GameThread(org.terasology.engine.GameThread) org.lwjgl.opengl(org.lwjgl.opengl) MeshAnimationData(org.terasology.rendering.assets.animation.MeshAnimationData) Lists(com.google.common.collect.Lists) MaterialData(org.terasology.rendering.assets.material.MaterialData) Mesh(org.terasology.rendering.assets.mesh.Mesh) Shader(org.terasology.rendering.assets.shader.Shader) CanvasRenderer(org.terasology.rendering.nui.internal.CanvasRenderer) Logger(org.slf4j.Logger) MeshAnimationImpl(org.terasology.rendering.assets.animation.MeshAnimationImpl) SkeletalMeshData(org.terasology.rendering.assets.skeletalmesh.SkeletalMeshData) BlockingDeque(java.util.concurrent.BlockingDeque) AssetFactory(org.terasology.assets.AssetFactory) MeshAnimation(org.terasology.rendering.assets.animation.MeshAnimation) IOException(java.io.IOException) SkeletalMesh(org.terasology.rendering.assets.skeletalmesh.SkeletalMesh) FontImpl(org.terasology.rendering.assets.font.FontImpl) org.terasology.rendering.opengl(org.terasology.rendering.opengl) Consumer(java.util.function.Consumer) AtlasData(org.terasology.rendering.assets.atlas.AtlasData) PNGTextureFormat(org.terasology.rendering.assets.texture.PNGTextureFormat) Atlas(org.terasology.rendering.assets.atlas.Atlas) FontData(org.terasology.rendering.assets.font.FontData) SkeletalMeshData(org.terasology.rendering.assets.skeletalmesh.SkeletalMeshData) Mesh(org.terasology.rendering.assets.mesh.Mesh) SkeletalMesh(org.terasology.rendering.assets.skeletalmesh.SkeletalMesh) Material(org.terasology.rendering.assets.material.Material) SkeletalMesh(org.terasology.rendering.assets.skeletalmesh.SkeletalMesh) Shader(org.terasology.rendering.assets.shader.Shader) Texture(org.terasology.rendering.assets.texture.Texture) Font(org.terasology.rendering.assets.font.Font) MeshData(org.terasology.rendering.assets.mesh.MeshData) SkeletalMeshData(org.terasology.rendering.assets.skeletalmesh.SkeletalMeshData) ShaderData(org.terasology.rendering.assets.shader.ShaderData) AtlasData(org.terasology.rendering.assets.atlas.AtlasData) TextureData(org.terasology.rendering.assets.texture.TextureData) SubtextureData(org.terasology.rendering.assets.texture.subtexture.SubtextureData) MeshAnimation(org.terasology.rendering.assets.animation.MeshAnimation) MeshAnimationData(org.terasology.rendering.assets.animation.MeshAnimationData) MaterialData(org.terasology.rendering.assets.material.MaterialData) Subtexture(org.terasology.rendering.assets.texture.subtexture.Subtexture)

Aggregations

Font (org.terasology.rendering.assets.font.Font)21 Rect2i (org.terasology.math.geom.Rect2i)5 Material (org.terasology.rendering.assets.material.Material)4 Mesh (org.terasology.rendering.assets.mesh.Mesh)4 IOException (java.io.IOException)3 AssetFactory (org.terasology.assets.AssetFactory)3 ModuleAwareAssetTypeManager (org.terasology.assets.module.ModuleAwareAssetTypeManager)3 Context (org.terasology.context.Context)3 Vector2i (org.terasology.math.geom.Vector2i)3 MeshAnimation (org.terasology.rendering.assets.animation.MeshAnimation)3 MeshAnimationData (org.terasology.rendering.assets.animation.MeshAnimationData)3 MeshAnimationImpl (org.terasology.rendering.assets.animation.MeshAnimationImpl)3 Atlas (org.terasology.rendering.assets.atlas.Atlas)3 AtlasData (org.terasology.rendering.assets.atlas.AtlasData)3 FontData (org.terasology.rendering.assets.font.FontData)3 FontImpl (org.terasology.rendering.assets.font.FontImpl)3 MaterialData (org.terasology.rendering.assets.material.MaterialData)3 MeshData (org.terasology.rendering.assets.mesh.MeshData)3 Shader (org.terasology.rendering.assets.shader.Shader)3 ShaderData (org.terasology.rendering.assets.shader.ShaderData)3