2 #ifndef _YI_TEXT_ENGINE_H_ 3 #define _YI_TEXT_ENGINE_H_ 12 #include <glm/gtc/type_ptr.hpp> 14 class CYIGenericFontRegistry;
18 class CYITextRenderer;
25 #define YI_TEXT_LEFT 0x00000001 26 #define YI_TEXT_CENTER_H 0x00000002 27 #define YI_TEXT_RIGHT 0x00000004 28 #define YI_TEXT_ELLIPSES 0x00000008 29 #define YI_TEXT_MULTILINE 0x00000010 30 #define YI_TEXT_USER_WIDTH 0x00000020 31 #define YI_TEXT_FONT_TABLES 0x00000040 147 bool Init(uint16_t nMaxFonts, uint16_t uFontAtlasSize);
149 bool IsInitialized();
151 std::unique_ptr<CYITextLayout> CreateTextLayout()
const;
160 ssize_t GetFontIdFromNameAndStyle(
const CYIString &fontName,
const CYIString &fontStyleName,
bool bIgnoreCase =
false)
const;
166 std::vector<CYIString> GetFontStyles(
ssize_t nFontID)
const;
169 std::vector<CYIString> GetFontStyles(
const CYIString &fontFamilyName)
const;
172 std::vector<CYIString> ReadFontStyles(
const CYIString &url)
const;
175 std::vector<CYIString> ReadFontStyles(
const uint8_t *pFontData, uint32_t uDataSize)
const;
193 ssize_t AddFont(
const uint8_t *pFontData, uint32_t uDataSize);
199 uint32_t GetNumFonts();
208 const glm::vec2 &vRenderOffset,
224 uint32_t GetCharacterIndex(
ssize_t nFontID, uint32_t uChar)
const;
233 int32_t GetIndexOfPosition(
const CYITextLayout *pTextLayout,
float fX,
float fY,
float fHorizontalPixelRatio,
float fVerticalPixelRatio)
const;
239 YI_FLOAT_RECT GetRectForTextRange(
const CYITextLayout *pTextLayout, int32_t nStartIndex, int32_t nEndIndex,
float fHorizontalPixelRatio,
float fVerticalPixelRatio)
const;
261 CYITextRenderer * GetTextRenderer();
267 uint16_t GetFontAtlasSize()
const;
288 std::vector<YI_FONT_INFO> m_fontsInfo;
290 CYITextRenderer *m_pTextRenderer;
295 std::map<YI_TEXT_RENDER_INFO, std::weak_ptr<const CYITextLayout>> m_layoutCacheMap;
297 uint16_t m_uFontAtlasSize;
300 std::map<CYIString, ssize_t> m_fontFamilyCache;
302 CYIGenericFontRegistry *m_pGenericFontRegistry;
309 #endif // _YI_TEXT_ENGINE_H_ static const float g_fLineSpacingFactor
Definition: YiTextEngine.h:140
ssize_t nFontID
Definition: YiTextEngine.h:78
Definition: YiTextEngine.h:62
CYIColor Color
Definition: YiTextEngine.h:85
#define YI_DISALLOW_COPY_AND_ASSIGN(TypeName)
Delete the copy constructor and assignment operator (and consequently the move constructor as well) ...
Definition: YiPredef.h:114
uint32_t uFlags
Definition: YiTextEngine.h:105
Definition: YiTextEngine.h:63
float fHeightAboveBase
Definition: YiTextEngine.h:35
Container class for Unicode strings. Conceptually, a CYIString object is a sequence of Unicode charac...
Definition: YiString.h:35
static const uint32_t g_uTextEllipsisCodepointIndex
Definition: YiTextEngine.h:135
Class for text rendering.
Definition: YiTextEngine.h:129
Definition: YiTextEngine.h:33
Definition: YiAbstractTextAtlas.h:15
uint32_t uLastCodepointIndex
Definition: YiTextEngine.h:88
The core bitmap container class used by You.i Engine.
Definition: YiBitmap.h:20
std::vector< YI_TEXT_STYLE > styles
Definition: YiTextEngine.h:111
bool operator!=(const CYIVariant &rLHS, const CYIVariant &rRHS)
Supported types: Int, String, Float, FloatVector and Quaternion.
Definition: YiTextEngine.h:64
CYIString family
Definition: YiTextEngine.h:49
float fYScale
Definition: YiTextEngine.h:107
Definition: YiTextEngine.h:57
Class for a text atlas.
Definition: YiTextAtlas.h:15
CYIString name
Definition: YiTextEngine.h:48
Definition: YiTextEngine.h:44
float fTrueBaseOffset
Definition: YiTextEngine.h:37
Abstract class for a text atlas.
Definition: YiAbstractTextAtlas.h:29
Definition: YiTextEngine.h:74
YI_FLOAT_RECT rect
Definition: YiTextEngine.h:108
Definition: YiPredef.h:273
Class for a signed distance field text atlas.
Definition: YiSDFTextAtlas.h:22
float fKerning
Definition: YiTextEngine.h:84
Base class for abstracting the layout for text.
Definition: YiTextLayout.h:33
CYIString filename
Definition: YiTextEngine.h:47
float fFontSize
Definition: YiTextEngine.h:79
CYIString style
Definition: YiTextEngine.h:50
float fOffsetX
Definition: YiTextEngine.h:106
Definition: YiTextEngine.h:70
CYIString text
Definition: YiTextEngine.h:109
Definition: YiTextEngine.h:65
YI_FONT_STYLE
Definition: YiTextEngine.h:60
bool operator==(YI_TEXT_HEIGHT const &other) const
float fBaselineShift
Definition: YiTextEngine.h:82
Definition: YiTextEngine.h:71
YI_TEXT_LINE_STYLE
Definition: YiTextEngine.h:68
bool operator<(YI_TEXT_HEIGHT const &other) const
float fLeading
Definition: YiTextEngine.h:80
int ssize_t
Definition: YiPredefWin32.h:133
float fLowercaseLHeightAboveBase
Definition: YiTextEngine.h:38
YI_SCRIPT_MODE
Definition: YiTextEngine.h:53
ssize_t nEngineID
Definition: YiTextEngine.h:46
Struct used to pass information when rendering text.
Definition: YiTextEngine.h:97
A class used to represent a color value.
Definition: YiColor.h:31
Definition: YiTextEngine.h:56
float fTracking
Definition: YiTextEngine.h:83
Definition: YiTextEngine.h:55
YI_SCRIPT_MODE eScriptMode
Definition: YiTextEngine.h:81
float fHeightBelowBase
Definition: YiTextEngine.h:36
YI_TEXT_LINE_STYLE eTextLineStyle
Definition: YiTextEngine.h:86