/*******************************************************************************
 * Copyright 2011 See AUTHORS file.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/

package com.badlogic.gdx.tests.extensions;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
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.FreeTypeFontGenerator.FreeTypeFontParameter;
import com.badlogic.gdx.tests.utils.GdxTest;

/** Shows how to use fonts for languages other than english. Note that only alphabets with a humble amount of glyphs can be used
 * (100 is about the maximum we'd recommend). All western languages fit into that category, some asian languages might work as
 * well, e.g. Korean. Any right-to-left languages like arabic won't work, neither do languages like Japanese or Chinese due to
 * their huge amount of glyphs which don't fit into a single texture.
 * </p>
 * 
 * Note that you don't have to use the FreeType extension for this, you can generate fonts with Hiero as well. The FreeType
 * extension allows you to generate fonts at runtime for different screen densities. It is not portable to GWT!
 * </p>
 * 
 * For each script examplified below we only use a few characters from the respective alphabet. You'll have to pass in a string
 * containing all the printable characters of that language that you want to use!
 * 
 * @author mzechner */
public class InternationalFontsTest extends GdxTest {
	OrthographicCamera cam;
	SpriteBatch batch;
	BitmapFont koreanFont;
	BitmapFont cyrillicFont;
	BitmapFont thaiFont;

	@Override
	public void create () {
		FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("data/unbom.ttf"));

		FreeTypeFontParameter parameter = new FreeTypeFontParameter();
		parameter.size = 18;
		parameter.characters = "한국어/조선�?";

		koreanFont = generator.generateFont(parameter);
		generator.dispose();

		parameter.characters = FreeTypeFontGenerator.DEFAULT_CHARS;

		generator = new FreeTypeFontGenerator(Gdx.files.internal("data/russkij.ttf"));
		cyrillicFont = generator.generateFont(parameter);
		generator.dispose();

		parameter.characters = "วรณยุ�?ต์";

		generator = new FreeTypeFontGenerator(Gdx.files.internal("data/garuda.ttf"));
		thaiFont = generator.generateFont(parameter);
		generator.dispose();

		batch = new SpriteBatch();

		cam = new OrthographicCamera();
		cam.setToOrtho(false, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
		cam.update();
	}

	@Override
	public void render () {
		Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

		batch.setProjectionMatrix(cam.combined);
		batch.begin();
		koreanFont.draw(batch, "한국어/조선�?", 0, 22);
		cyrillicFont.draw(batch, "cyrillic text", 0, 44);
		thaiFont.draw(batch, "วรรณยุ�?ต์", 0, 66);
		batch.end();
	}

	@Override
	public void resize (int width, int height) {
		cam.setToOrtho(false, width, height);
	}

}
