• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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