1 2 package com.badlogic.gdx.tests.extensions; 3 4 import com.badlogic.gdx.Gdx; 5 import com.badlogic.gdx.assets.AssetManager; 6 import com.badlogic.gdx.assets.loaders.FileHandleResolver; 7 import com.badlogic.gdx.assets.loaders.resolvers.InternalFileHandleResolver; 8 import com.badlogic.gdx.graphics.GL20; 9 import com.badlogic.gdx.graphics.g2d.BitmapFont; 10 import com.badlogic.gdx.graphics.g2d.SpriteBatch; 11 import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator; 12 import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGeneratorLoader; 13 import com.badlogic.gdx.graphics.g2d.freetype.FreetypeFontLoader; 14 import com.badlogic.gdx.graphics.g2d.freetype.FreetypeFontLoader.FreeTypeFontLoaderParameter; 15 import com.badlogic.gdx.tests.utils.GdxTest; 16 17 public class FreeTypeFontLoaderTest extends GdxTest { 18 AssetManager manager; 19 SpriteBatch batch; 20 21 @Override create()22 public void create () { 23 manager = new AssetManager(); 24 25 // set the loaders for the generator and the fonts themselves 26 FileHandleResolver resolver = new InternalFileHandleResolver(); 27 manager.setLoader(FreeTypeFontGenerator.class, new FreeTypeFontGeneratorLoader(resolver)); 28 manager.setLoader(BitmapFont.class, ".ttf", new FreetypeFontLoader(resolver)); 29 30 // load to fonts via the generator (implicitely done by the FreetypeFontLoader). 31 // Note: you MUST specify a FreetypeFontGenerator defining the ttf font file name and the size 32 // of the font to be generated. The names of the fonts are arbitrary and are not pointing 33 // to a file on disk! 34 FreeTypeFontLoaderParameter size1Params = new FreeTypeFontLoaderParameter(); 35 size1Params.fontFileName = "data/arial.ttf"; 36 size1Params.fontParameters.size = 10; 37 manager.load("size10.ttf", BitmapFont.class, size1Params); 38 39 FreeTypeFontLoaderParameter size2Params = new FreeTypeFontLoaderParameter(); 40 size2Params.fontFileName = "data/arial.ttf"; 41 size2Params.fontParameters.size = 20; 42 manager.load("size20.ttf", BitmapFont.class, size2Params); 43 44 // we also load a "normal" font generated via Hiero 45 manager.load("data/default.fnt", BitmapFont.class); 46 47 batch = new SpriteBatch(); 48 } 49 50 @Override render()51 public void render () { 52 Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 53 if (manager.update() && manager.isLoaded("size10.ttf")) { 54 batch.begin(); 55 manager.get("size10.ttf", BitmapFont.class).draw(batch, "First font!", 20, 20); 56 manager.get("size20.ttf", BitmapFont.class).draw(batch, "Second font!", 20, 50); 57 manager.get("data/default.fnt", BitmapFont.class).draw(batch, "Default font!", 20, 100); 58 batch.end(); 59 } 60 61 if (Gdx.input.justTouched() && manager.isLoaded("size10.ttf")) { 62 // unload all the things and check if they really get disposed properly 63 manager.unload("size10.ttf"); 64 manager.finishLoading(); 65 if (manager.isLoaded("size10.ttf")) throw new RuntimeException("broken"); 66 if (!manager.isLoaded("size20.ttf")) throw new RuntimeException("broken"); 67 68 manager.unload("size20.ttf"); 69 manager.finishLoading(); 70 if (manager.isLoaded("size10.ttf")) throw new RuntimeException("broken"); 71 if (manager.isLoaded("size20.ttf")) throw new RuntimeException("broken"); 72 } 73 } 74 75 @Override dispose()76 public void dispose () { 77 manager.dispose(); 78 batch.dispose(); 79 } 80 } 81