aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Graphics/Font/je_page.h
blob: d887c9bf43ce05c303c55aad723aaf7e5c7721db (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
#ifndef __LIBJIN_PAGE_H
#define __LIBJIN_PAGE_H

#include "../../math/je_vector2.hpp"

#include "je_font.h"

namespace jin
{
	namespace graphics
	{

		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
		{
			Font* font;
			std::vector<GlyphArrayDrawInfo> glyphinfolist;
			std::vector<GlyphVertex> glyphvertices;
			math::Vector2<int> size;
		};

	} // namespace graphics
} // namespace jin 

#endif