• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*******************************************************************************
2  * Copyright 2011 See AUTHORS file.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  ******************************************************************************/
16 
17 package com.badlogic.gdx.tests;
18 
19 import com.badlogic.gdx.Gdx;
20 import com.badlogic.gdx.graphics.Color;
21 import com.badlogic.gdx.graphics.GL20;
22 import com.badlogic.gdx.graphics.g2d.BitmapFont;
23 import com.badlogic.gdx.graphics.g2d.GlyphLayout;
24 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
25 import com.badlogic.gdx.graphics.g2d.TextureAtlas;
26 import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
27 import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;
28 import com.badlogic.gdx.tests.utils.GdxTest;
29 
30 public class BitmapFontMetricsTest extends GdxTest {
31 	private SpriteBatch spriteBatch;
32 	private TextureAtlas atlas;
33 	private BitmapFont font, smallFont;
34 	private ShapeRenderer renderer;
35 
36 	@Override
create()37 	public void create () {
38 		spriteBatch = new SpriteBatch();
39 		atlas = new TextureAtlas("data/pack");
40 		smallFont = new BitmapFont();
41 		font = new BitmapFont(Gdx.files.internal("data/verdana39.fnt"), atlas.findRegion("verdana39"), false);
42 		font = new BitmapFont(Gdx.files.internal("data/arial-32-pad.fnt"), false);
43 		renderer = new ShapeRenderer();
44 		renderer.setProjectionMatrix(spriteBatch.getProjectionMatrix());
45 	}
46 
47 	@Override
render()48 	public void render () {
49 		// red.a = (red.a + Gdx.graphics.getDeltaTime() * 0.1f) % 1;
50 
51 		int viewHeight = Gdx.graphics.getHeight();
52 
53 		Gdx.gl.glClearColor(1, 1, 1, 1);
54 		Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
55 		spriteBatch.begin();
56 
57 		// String text = "Sphinx of black quartz, judge my vow.";
58 		String text = "Sphinx of black quartz.";
59 		font.setColor(Color.RED);
60 
61 		float x = 100, y = 100;
62 		float alignmentWidth;
63 
64 		smallFont.setColor(Color.BLACK);
65 		smallFont.draw(spriteBatch, "draw position", 20, viewHeight - 0);
66 		smallFont.setColor(Color.BLUE);
67 		smallFont.draw(spriteBatch, "bounds", 20, viewHeight - 20);
68 		smallFont.setColor(Color.MAGENTA);
69 		smallFont.draw(spriteBatch, "baseline", 20, viewHeight - 40);
70 		smallFont.setColor(Color.GREEN);
71 		smallFont.draw(spriteBatch, "x height", 20, viewHeight - 60);
72 		smallFont.setColor(Color.CYAN);
73 		smallFont.draw(spriteBatch, "ascent", 20, viewHeight - 80);
74 		smallFont.setColor(Color.RED);
75 		smallFont.draw(spriteBatch, "descent", 20, viewHeight - 100);
76 		smallFont.setColor(Color.ORANGE);
77 		smallFont.draw(spriteBatch, "line height", 20, viewHeight - 120);
78 		smallFont.setColor(Color.LIGHT_GRAY);
79 		smallFont.draw(spriteBatch, "cap height", 20, viewHeight - 140);
80 
81 		font.setColor(Color.BLACK);
82 		GlyphLayout layout = font.draw(spriteBatch, text, x, y);
83 
84 		spriteBatch.end();
85 
86 		renderer.begin(ShapeType.Filled);
87 		renderer.setColor(Color.BLACK);
88 		renderer.rect(x - 3, y - 3, 6, 6);
89 		renderer.end();
90 
91 		float baseline = y - font.getCapHeight();
92 		renderer.begin(ShapeType.Line);
93 		renderer.setColor(Color.LIGHT_GRAY);
94 		renderer.line(0, y, 9999, y);
95 		renderer.setColor(Color.MAGENTA);
96 		renderer.line(0, baseline, 9999, baseline);
97 		renderer.setColor(Color.GREEN);
98 		renderer.line(0, baseline + font.getXHeight(), 9999, baseline + font.getXHeight());
99 		renderer.setColor(Color.CYAN);
100 		renderer.line(0, y + font.getAscent(), 9999, y + font.getAscent());
101 		renderer.setColor(Color.RED);
102 		renderer.line(0, baseline + font.getDescent(), 9999, baseline + font.getDescent());
103 		renderer.setColor(Color.ORANGE);
104 		renderer.line(0, y - font.getLineHeight(), 9999, y - font.getLineHeight());
105 		renderer.end();
106 
107 		renderer.begin(ShapeType.Line);
108 		renderer.setColor(Color.BLUE);
109 		renderer.rect(x, y, layout.width, -layout.height);
110 		renderer.end();
111 	}
112 
113 	@Override
dispose()114 	public void dispose () {
115 		spriteBatch.dispose();
116 		renderer.dispose();
117 		font.dispose();
118 		atlas.dispose();
119 	}
120 }
121