blob: 8b0df48243c35ab08a9b2bb0eaef67bfdc672202 [file] [log] [blame]
package com.badlogic.gdx.graphics.g2d.freetype;
import com.badlogic.gdx.assets.AssetDescriptor;
import com.badlogic.gdx.assets.AssetLoaderParameters;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.assets.loaders.AsynchronousAssetLoader;
import com.badlogic.gdx.assets.loaders.FileHandleResolver;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.BitmapFont.BitmapFontData;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeBitmapFontData;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeFontParameter;
import com.badlogic.gdx.utils.Array;
/**
* Creates {@link BitmapFont} instances from FreeType font files. Requires a {@link FreeTypeFontLoaderParameter} to be
* passed to {@link AssetManager#load(String, Class, AssetLoaderParameters)} which specifies the name of the TTF
* file as well the parameters used to generate the BitmapFont (size, characters, etc.)
*/
public class FreetypeFontLoader extends AsynchronousAssetLoader<BitmapFont, FreetypeFontLoader.FreeTypeFontLoaderParameter>{
public FreetypeFontLoader (FileHandleResolver resolver) {
super(resolver);
}
public static class FreeTypeFontLoaderParameter extends AssetLoaderParameters<BitmapFont>{
/** the name of the TTF file to be used to load the font **/
public String fontFileName;
/** the parameters used to generate the font, e.g. size, characters, etc. **/
public FreeTypeFontParameter fontParameters = new FreeTypeFontParameter();
}
@Override
public void loadAsync (AssetManager manager, String fileName, FileHandle file, FreeTypeFontLoaderParameter parameter) {
if(parameter == null) throw new RuntimeException("FreetypeFontParameter must be set in AssetManager#load to point at a TTF file!");
}
@Override
public BitmapFont loadSync (AssetManager manager, String fileName, FileHandle file, FreeTypeFontLoaderParameter parameter) {
if(parameter == null) throw new RuntimeException("FreetypeFontParameter must be set in AssetManager#load to point at a TTF file!");
FreeTypeFontGenerator generator = manager.get(parameter.fontFileName + ".gen", FreeTypeFontGenerator.class);
BitmapFont font = generator.generateFont(parameter.fontParameters);
return font;
}
@Override
public Array<AssetDescriptor> getDependencies (String fileName, FileHandle file, FreeTypeFontLoaderParameter parameter) {
Array<AssetDescriptor> deps = new Array<AssetDescriptor>();
deps.add(new AssetDescriptor<FreeTypeFontGenerator>(parameter.fontFileName + ".gen", FreeTypeFontGenerator.class));
return deps;
}
}