package com.badlogic.gdx.tests.extensions;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.assets.loaders.FileHandleResolver;
import com.badlogic.gdx.assets.loaders.resolvers.InternalFileHandleResolver;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGeneratorLoader;
import com.badlogic.gdx.graphics.g2d.freetype.FreetypeFontLoader;
import com.badlogic.gdx.graphics.g2d.freetype.FreetypeFontLoader.FreeTypeFontLoaderParameter;
import com.badlogic.gdx.tests.utils.GdxTest;
public class FreeTypeFontLoaderTest extends GdxTest {
AssetManager manager;
SpriteBatch batch;
@Override
public void create () {
manager = new AssetManager();
// set the loaders for the generator and the fonts themselves
FileHandleResolver resolver = new InternalFileHandleResolver();
manager.setLoader(FreeTypeFontGenerator.class, new FreeTypeFontGeneratorLoader(resolver));
manager.setLoader(BitmapFont.class, ".ttf", new FreetypeFontLoader(resolver));
// load to fonts via the generator (implicitely done by the FreetypeFontLoader).
// Note: you MUST specify a FreetypeFontGenerator defining the ttf font file name and the size
// of the font to be generated. The names of the fonts are arbitrary and are not pointing
// to a file on disk!
FreeTypeFontLoaderParameter size1Params = new FreeTypeFontLoaderParameter();
size1Params.fontFileName = "data/arial.ttf";
size1Params.fontParameters.size = 10;
manager.load("size10.ttf", BitmapFont.class, size1Params);
FreeTypeFontLoaderParameter size2Params = new FreeTypeFontLoaderParameter();
size2Params.fontFileName = "data/arial.ttf";
size2Params.fontParameters.size = 20;
manager.load("size20.ttf", BitmapFont.class, size2Params);
// we also load a "normal" font generated via Hiero
manager.load("data/default.fnt", BitmapFont.class);
batch = new SpriteBatch();
}
@Override
public void render () {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
if (manager.update() && manager.isLoaded("size10.ttf")) {
batch.begin();
manager.get("size10.ttf", BitmapFont.class).draw(batch, "First font!", 20, 20);
manager.get("size20.ttf", BitmapFont.class).draw(batch, "Second font!", 20, 50);
manager.get("data/default.fnt", BitmapFont.class).draw(batch, "Default font!", 20, 100);
batch.end();
}
if (Gdx.input.justTouched() && manager.isLoaded("size10.ttf")) {
// unload all the things and check if they really get disposed properly
manager.unload("size10.ttf");
manager.finishLoading();
if (manager.isLoaded("size10.ttf")) throw new RuntimeException("broken");
if (!manager.isLoaded("size20.ttf")) throw new RuntimeException("broken");
manager.unload("size20.ttf");
manager.finishLoading();
if (manager.isLoaded("size10.ttf")) throw new RuntimeException("broken");
if (manager.isLoaded("size20.ttf")) throw new RuntimeException("broken");
}
}
@Override
public void dispose () {
manager.dispose();
batch.dispose();
}
}