Number5
Visualisierung 2 Project - Florian Schober (0828151, f.schober@live.com), Andreas Walch (0926780, walch.andreas89@gmail.com)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Font.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "Sprite.hpp"
4 
8 struct Glyph
9 {
10  vec2 texCoord1;
11  vec2 texCoord2;
12  vec2 size;
13  vec2 advance;
14  vec2 location;
15 };
16 
20 class Font
21 {
22  typedef map<char, Glyph> glyph_map;
23 
25  string m_name;
26  uint m_size;
27  uvec2 m_atlasSize;
28  vector<char> m_atlasData;
29  uint m_atlas;
31  float m_lineHeight;
33  friend class TextRenderer;
34 
35  public:
40  float lineHeight() const { return m_lineHeight; }
41 
42  private:
47  void prepare(string const & text);
48 
49  public:
58  Font(TextRenderer* textRenderer, string const & fontName, const uint fontSize);
62  virtual ~Font();
63 
73  void draw(string const & text, vec4 const & color, vec2 position, HAlign hAlign = HAlign::Left, VAlign vAlign = VAlign::Bottom, vec2 const & scale = vec2(1,1));
79  vec2 measure(string const & text);
80 };
81 
82 
83 
84 
89 {
90  typedef map<string,unique_ptr<Font>> font_map;
91 
93  FT_Library m_ftLib;
97  vector<vec4> m_vertices;
100  GLuint m_vao;
102  friend class Font;
103 
104  private:
108  void drawBuffer();
109 
110  public:
119  virtual ~TextRenderer();
120 
128  Font* getFont(string const & name, uint const size);
129 
134  void begin();
139  void end();
140 };
void prepare(string const &text)
Definition: Font.cpp:148
VAlign
Definition: Sprite.hpp:20
Definition: Font.hpp:20
font_map m_fonts
Definition: Font.hpp:94
virtual ~TextRenderer()
Definition: Font.cpp:249
void begin()
Definition: Font.cpp:269
TextRenderer * m_textRenderer
Definition: Font.hpp:24
void draw(string const &text, vec4 const &color, vec2 position, HAlign hAlign=HAlign::Left, VAlign vAlign=VAlign::Bottom, vec2 const &scale=vec2(1, 1))
Definition: Font.cpp:185
glyph_map m_glyphs
Definition: Font.hpp:30
Definition: Shader.hpp:8
uint m_atlas
Definition: Font.hpp:29
GLuint m_vao
Definition: Font.hpp:100
map< string, unique_ptr< Font > > font_map
Definition: Font.hpp:90
virtual ~Font()
Definition: Font.cpp:122
Font(TextRenderer *textRenderer, string const &fontName, const uint fontSize)
Definition: Font.cpp:4
vec2 location
Definition: Font.hpp:14
Font * getFont(string const &name, uint const size)
Definition: Font.cpp:256
map< char, Glyph > glyph_map
Definition: Font.hpp:22
TextRenderer(Application *app)
Definition: Font.cpp:218
Application * m_app
Definition: Font.hpp:92
void end()
Definition: Font.cpp:277
HAlign
Definition: Sprite.hpp:11
float lineHeight() const
Definition: Font.hpp:40
GLuint m_verticesBuffer
Definition: Font.hpp:99
vec2 texCoord1
Definition: Font.hpp:10
uint m_size
Definition: Font.hpp:26
vec2 size
Definition: Font.hpp:12
Shader * m_shader
Definition: Font.hpp:95
string m_name
Definition: Font.hpp:25
vec2 texCoord2
Definition: Font.hpp:11
vector< char > m_atlasData
Definition: Font.hpp:28
vec2 advance
Definition: Font.hpp:13
vec2 measure(string const &text)
Definition: Font.cpp:126
vector< vec4 > m_vertices
Definition: Font.hpp:97
uvec2 m_atlasSize
Definition: Font.hpp:27
FT_Library m_ftLib
Definition: Font.hpp:93
Definition: Font.hpp:8
float m_lineHeight
Definition: Font.hpp:31
void drawBuffer()
Definition: Font.cpp:283