1 2 package com.badlogic.gdx.tests; 3 4 import com.badlogic.gdx.Gdx; 5 import com.badlogic.gdx.assets.AssetManager; 6 import com.badlogic.gdx.assets.loaders.BitmapFontLoader.BitmapFontParameter; 7 import com.badlogic.gdx.graphics.Color; 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.tests.utils.GdxTest; 12 import com.badlogic.gdx.utils.Array; 13 import com.badlogic.gdx.utils.reflect.ClassReflection; 14 15 public class BitmapFontAtlasRegionTest extends GdxTest { 16 private SpriteBatch batch; 17 private AssetManager assets; 18 19 private BitmapFont[] fonts; 20 private String[] testStrings; 21 22 private static final String FONT_1 = "data/default.fnt"; 23 private static final String FONT_2 = "data/font.fnt"; 24 private static final String FONT_3 = "data/verdana39.fnt"; 25 private static final String ATLAS = "data/atlased-fonts.txt"; 26 27 @Override create()28 public void create () { 29 this.batch = new SpriteBatch(); 30 this.assets = new AssetManager(); 31 32 BitmapFontParameter params = new BitmapFontParameter(); 33 params.atlasName = ATLAS; 34 35 this.assets.load(FONT_1, BitmapFont.class, params); 36 this.assets.load(FONT_2, BitmapFont.class, params); 37 this.assets.load(FONT_3, BitmapFont.class, params); 38 this.assets.finishLoading(); 39 40 this.fonts = new BitmapFont[3]; 41 this.fonts[0] = assets.get(FONT_1); 42 this.fonts[1] = assets.get(FONT_2); 43 this.fonts[2] = assets.get(FONT_3); 44 45 this.fonts[0].setColor(Color.RED); 46 this.fonts[1].setColor(Color.BLUE); 47 this.fonts[2].setColor(Color.GREEN); 48 this.testStrings = new String[] {"I'm loaded from an atlas!", "I, too, am loaded from an atlas", "I'm with stupid ^"}; 49 50 Gdx.gl.glClearColor(1, 1, 1, 1); 51 } 52 53 @Override render()54 public void render () { 55 Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 56 57 batch.begin(); 58 59 for (int i = 0; i < fonts.length; ++i) { 60 fonts[i].draw(batch, testStrings[i], 16, 16 + 48 * i); 61 } 62 63 batch.end(); 64 } 65 66 @Override dispose()67 public void dispose () { 68 Array<String> loaded = this.assets.getAssetNames(); 69 70 this.assets.dispose(); 71 this.batch.dispose(); 72 73 String name = ClassReflection.getSimpleName(this.getClass()); 74 for (int i = 0; i < loaded.size; ++i) { 75 String asset = loaded.get(i); 76 if (this.assets.isLoaded(asset)) { 77 Gdx.app.error(name, asset + " not properly disposed of!"); 78 } else { 79 Gdx.app.log(name, asset + " disposed of OK"); 80 } 81 } 82 } 83 } 84