Guiliani  Version 2.5 revision 7293 (documentation build 13)
FntWrapGLFontAtlas.h
1/*
2* Copyright (C) TES Electronic Solutions GmbH,
3* All Rights Reserved.
4* Contact: info@guiliani.de
5*
6* This file is part of the Guiliani HMI framework
7* for the development of graphical user interfaces on embedded systems.
8*/
9
10#ifndef __FNTWRAP_GL_FONTATLAS__H__
11#define __FNTWRAP_GL_FONTATLAS__H__
12
13//FreeType includes
14#include "ft2build.h"
15#include FT_GLYPH_H
16
17#include "eC_Types.h"
18#include "eC_TArray.h"
19#include "GUIFontResource.h"
20
24{
25public:
28 {
30 m_uiUnicode(0xFFFF),
31 m_iGlyphXPos(0),
32 m_iGlyphYPos(0),
35 m_uiXAdvance(0),
36 m_uiXPos(0),
37 m_uiYPos(0)
38 {}
39
40 eC_UInt m_uiUnicode;
41 eC_Int m_iGlyphXPos;
42 eC_Int m_iGlyphYPos;
45 eC_UInt m_uiXAdvance;
46 eC_UInt m_uiXPos;
47 eC_UInt m_uiYPos;
48 };
49
55 const FontResource_t& reFontID,
56 const eC_UInt& uiNumberOfRows);
57
60
66 FontAtlasRecord_t GetChar(const eC_UInt &uiUnicode);
67
71 inline eC_Int GetHeight() const { return m_iFontHeight; }
72
76 inline eC_Int GetAscender() const { return m_iAscender; }
77
81 inline eC_Int GetDescender() const { return m_iDescender; }
82
86 inline eC_Int GetInternalLeading() const { return m_iInternalLeading; }
87
91 eC_UInt GetTextureID() const { return m_uiTextureID; }
92
96 eC_UInt GetTextureWidth() const { return m_uiTextureWidth; }
97
101 eC_UInt GetTextureHeight() const { return m_uiTextureHeight; }
102
106 virtual void* GetFace() = 0;
107
108protected:
113 virtual FontAtlasRecord_t AddGlyph(const eC_UInt &uiUnicode) = 0;
114
122 const eC_Int& iTextureWidth,
123 const eC_Int& iTextureHeight,
124 const eC_UInt& uiLastTextureID = 0);
125
129 void DeleteTexture(const eC_UInt& uiTextureID);
130
143 const eC_UInt& uiUnicode,
144 const eC_UInt& uiWidth,
145 const eC_Int& iGlyphXPos,
146 const eC_Int& iGlyphYPos,
147 const eC_Int& iGlyphWidth,
148 const eC_Int& iGlyphHeight,
149 const eC_UInt& uiXPos,
150 const eC_UInt& uiYPos);
151
152private:
158 eC_Int FindChar(const eC_UInt &uiUnicode);
159
164 void Swap(
165 FontAtlasRecord_t *pPosA,
166 FontAtlasRecord_t *pPosB);
167
170 void Sort();
171
175
178 CFntWrapGLFontAtlas& operator=(const CFntWrapGLFontAtlas& kSource);
179
180protected:
182 eC_Int m_iAscender;
187
194
195 eC_TArray<FontAtlasRecord_t> m_asGlyphCache;
198};
199#endif
Helper Macros in Guiliani
FontResource_t
List of font resource ids.
Definition: GUIFontResource.h:54
Definition: FntWrapGLFontAtlas.h:24
eC_UInt m_uiTextureID
texture-id for the atlas
Definition: FntWrapGLFontAtlas.h:191
eC_UInt GetTextureHeight() const
Definition: FntWrapGLFontAtlas.h:101
eC_Int m_iAscender
ascender
Definition: FntWrapGLFontAtlas.h:182
eC_TArray< FontAtlasRecord_t > m_asGlyphCache
The dynamic cache array.
Definition: FntWrapGLFontAtlas.h:195
eC_UInt m_uiRemainingSpace
remaining pixels of storage for current row
Definition: FntWrapGLFontAtlas.h:190
eC_Int GetDescender() const
Definition: FntWrapGLFontAtlas.h:81
eC_UInt m_uiCurrentFillRow
current row for new characters
Definition: FntWrapGLFontAtlas.h:189
eC_UInt GetTextureID() const
Definition: FntWrapGLFontAtlas.h:91
eC_UInt m_uiTotalNumberOfRows
number of rows which can be used for storage
Definition: FntWrapGLFontAtlas.h:188
eC_UInt InsertGlyphInformation(const eC_UInt &uiUnicode, const eC_UInt &uiWidth, const eC_Int &iGlyphXPos, const eC_Int &iGlyphYPos, const eC_Int &iGlyphWidth, const eC_Int &iGlyphHeight, const eC_UInt &uiXPos, const eC_UInt &uiYPos)
virtual void * GetFace()=0
eC_Bool m_bArrayNeedsSorting
Flag indicating that the internal array of stored characters needs to be sorted.
Definition: FntWrapGLFontAtlas.h:197
void DeleteTexture(const eC_UInt &uiTextureID)
eC_Int m_iFontHeight
height of font
Definition: FntWrapGLFontAtlas.h:186
CFntWrapGLFontAtlas(const FontResource_t &reFontID, const eC_UInt &uiNumberOfRows)
eC_Int GetAscender() const
Definition: FntWrapGLFontAtlas.h:76
virtual FontAtlasRecord_t AddGlyph(const eC_UInt &uiUnicode)=0
FontAtlasRecord_t GetChar(const eC_UInt &uiUnicode)
eC_Int m_iDescender
descender
Definition: FntWrapGLFontAtlas.h:183
virtual ~CFntWrapGLFontAtlas()
eC_UInt CreateTexture(const eC_Int &iTextureWidth, const eC_Int &iTextureHeight, const eC_UInt &uiLastTextureID=0)
eC_UInt m_uiTextureHeight
height of generated texture
Definition: FntWrapGLFontAtlas.h:193
eC_UInt m_uiTextureWidth
width of generated texture
Definition: FntWrapGLFontAtlas.h:192
eC_Int m_iFontWidth
width of font
Definition: FntWrapGLFontAtlas.h:185
eC_Int m_iInternalLeading
internal leading
Definition: FntWrapGLFontAtlas.h:184
eC_UInt m_uiNumberOfCachedGlyphs
number of cached glyphs
Definition: FntWrapGLFontAtlas.h:196
eC_UInt GetTextureWidth() const
Definition: FntWrapGLFontAtlas.h:96
eC_Int GetHeight() const
Definition: FntWrapGLFontAtlas.h:71
FontResource_t m_eFontID
id of loaded font
Definition: FntWrapGLFontAtlas.h:181
eC_Int GetInternalLeading() const
Definition: FntWrapGLFontAtlas.h:86
Struct representing one character inside the cache array.
Definition: FntWrapGLFontAtlas.h:28
eC_UInt m_uiXAdvance
x-advance of glyph
Definition: FntWrapGLFontAtlas.h:45
eC_UInt m_uiXPos
x-corretion of glyph
Definition: FntWrapGLFontAtlas.h:46
eC_UInt m_uiYPos
y-correction of lgyph
Definition: FntWrapGLFontAtlas.h:47
eC_Int m_iGlyphXPos
x-position of glyph in atlas
Definition: FntWrapGLFontAtlas.h:41
eC_Int m_iGlyphYPos
y-position of glyph in atlas
Definition: FntWrapGLFontAtlas.h:42
eC_Int m_iGlyphWidth
width of glyph
Definition: FntWrapGLFontAtlas.h:43
eC_UInt m_uiUnicode
codepoint for glyph
Definition: FntWrapGLFontAtlas.h:40
eC_Int m_iGlyphHeight
height of glyph
Definition: FntWrapGLFontAtlas.h:44