aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/graphics/fonts/page.h
blob: 0a9b5e253fcdceceb423c7f75fb1d49c4f2beaec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#ifndef __JE_PAGE_H__
#define __JE_PAGE_H__

#include "../../math/vector2.hpp"

#include "font.h"

namespace JinEngine
{
	namespace Graphics
	{
		namespace Fonts
		{

			class Font;

			/// 
			/// Glyphs data to be rendered.
			/// 
			struct GlyphVertex
			{
				int x, y;   ///< screen coordinates
				float u, v; ///< normalized texture uv
			};

			/// 
			/// Glyphs info for reducing draw call.
			/// 
			struct GlyphArrayDrawInfo
			{
				GLuint texture;	 ///< atlas
				unsigned int start; ///< glyph vertex indecies
				unsigned int count; ///< glyph vertex count 
			};

			/// 
			/// Page to be rendered. 
			/// 
			/// A page is a pre-rendered text struct for reducing draw call. Each page 
			/// keeps a font pointer which should not be changed.
			/// 
			struct Page : public Object
			{
				Font* font;
				std::vector<GlyphArrayDrawInfo> glyphinfolist;
				std::vector<GlyphVertex> glyphvertices;
				Math::Vector2<int> size;
			};

		} // namespace Fonts
	} // namespace Graphics
} // namespace JinEngine 

#endif // __JE_PAGE_H__