2 #ifndef _YI_TEXT_ENGINE_H_ 3 #define _YI_TEXT_ENGINE_H_ 10 #include <glm/gtc/type_ptr.hpp> 14 #include <unordered_map> 18 class CYIGenericFontRegistry;
23 class CYITextRenderer;
127 void SetBasicPosition(
size_t logicalPosition);
136 void SetPosition(
size_t logicalPosition,
bool alignWithPreviousCharacter);
141 bool IsAlignedWithPreviousCharacter()
const;
146 size_t GetLogicalPosition()
const;
151 void SetIsAbsoluteStart();
156 void SetIsAbsoluteEnd(
size_t characterCount);
161 bool IsAbsoluteStart()
const;
166 bool IsAbsoluteEnd()
const;
171 size_t m_logicalPosition;
172 bool m_alignWithPreviousCharacter;
173 bool m_isAbsoluteStart;
174 bool m_isAbsoluteEnd;
213 RenderInfo(
Flags flags,
float offsetX,
float yScale,
const YI_FLOAT_RECT &rect, int32_t numberOfLines,
bool adjustsFontSizeToFit,
float minimumFontScale,
const CYIString &text,
const std::vector<TextStyle> &styles,
float fontSizeForCachingGlyphBitmap = -1,
GlyphsBitmapPrefetchMode prefetchMode =
GlyphsBitmapPrefetchMode::NoPrefetch);
250 operator bool()
const;
274 bool Init(uint16_t maxFonts,
const std::map<CYITextEngine::TextType, uint16_t> &textAtlasSizes);
303 std::vector<CYIString>
ReadFontStyles(
const uint8_t *pFontData, uint32_t dataSize)
const;
358 const glm::vec2 &renderOffset,
399 bool SetTextAtlas(std::unique_ptr<CYITextAtlas> pAtlas);
419 std::unique_ptr<CYITextLayout>
GetTextLayout(
const RenderInfo &textInfo,
const std::function<std::unique_ptr<CYITextLayout>()> &textLayoutFactory =
nullptr)
const;
440 std::unique_ptr<CYITextLayout> CreateTextLayout()
const;
445 std::vector<FontInfo> m_fontsInfo;
447 std::unique_ptr<CYITextRenderer> m_pTextRenderer;
449 std::unique_ptr<CYITextAtlas> m_pTextAtlas;
450 std::unique_ptr<CYISDFTextAtlas> m_pSDFTextAtlas;
453 std::vector<uint16_t> m_textAtlasSizes;
456 mutable std::unordered_map<CYIString, ssize_t> m_fontFamilyCache;
458 std::unique_ptr<CYIGenericFontRegistry> m_pGenericFontRegistry;
470 static const bool enable =
true;
473 #endif // _YI_TEXT_ENGINE_H_
size_t GetCharacterIndex(ssize_t fontID, uint32_t character) const
uint32_t GetNumFonts() const
CYITextEngine::PositionInString GetIndexOfPosition(const CYITextLayout *pTextLayout, float x, float y, float horizontalPixelRatio, float verticalPixelRatio) const
#define YI_DISALLOW_COPY_AND_ASSIGN(TypeName)
Delete the copy constructor and assignment operator (and consequently the move constructor as well) ...
Definition: YiPredef.h:71
ssize_t FindFontByFamilyName(const CYIString &fontFamilyName, FontStyle fontStyle=FontStyle::Regular) const
Struct used to pass information when rendering text.
Definition: YiTextEngine.h:210
float trueBaseOffset
Definition: YiTextEngine.h:98
Definition: YiTextEngine.h:105
float fontSize
Definition: YiTextEngine.h:191
std::vector< TextStyle > styles
Definition: YiTextEngine.h:230
float tracking
Definition: YiTextEngine.h:196
ssize_t AddFont(const CYIString &url)
float lowercaseLHeightAboveBase
Definition: YiTextEngine.h:99
bool SetSDFTextAtlas(std::unique_ptr< CYISDFTextAtlas > pAtlas)
Container class for Unicode strings. Conceptually, a CYIString object is a sequence of Unicode charac...
Definition: YiString.h:32
CYISDFTextAtlas * GetSDFTextAtlas() const
LineStyle
Definition: YiTextEngine.h:88
Definition: YiTextEngine.h:94
Class for text rendering.
Definition: YiTextEngine.h:35
Definition: YiAbstractTextAtlas.h:15
float heightBelowBase
Definition: YiTextEngine.h:97
bool IsInitialized() const
ssize_t fontID
Definition: YiTextEngine.h:190
YI_FLOAT_RECT GetRectForTextRange(const CYITextLayout *pTextLayout, size_t startIndex, size_t endIndex, float horizontalPixelRatio, float verticalPixelRatio) const
const CYIRuntimeTypeInfo & GetDefaultTextNodeType() const
long long ssize_t
Definition: YiPredefWindows.h:21
Flags
Definition: YiTextEngine.h:38
bool SetTextAtlas(std::unique_ptr< CYITextAtlas > pAtlas)
size_t lastCodepointIndex
Definition: YiTextEngine.h:201
RenderResult RenderText(const CYITextLayout *pTextLayout, CYIBitmap *pDestination, const RenderInfo &textRenderInfo, const glm::vec2 &renderOffset, const YI_FLOAT_RECT *pTextExtents=nullptr)
CYIColor Color
Definition: YiTextEngine.h:198
The core bitmap container class used by You.i Engine.
Definition: YiBitmap.h:20
Flags flags
Definition: YiTextEngine.h:218
bool adjustsFontSizeToFit
Definition: YiTextEngine.h:223
static const size_t s_textEllipsisCodepointIndex
Definition: YiTextEngine.h:259
bool operator==(const CYIHTTPHeader &lhs, const CYIHTTPHeader &rhs)
TextType
Definition: YiTextEngine.h:56
A struct used to enable bitmask operators for an enum class type.
Definition: YiEnumBitmaskOperators.h:26
bool AddPregeneratedTextData(const CYIString &path)
float fontSizeForCachingGlyphBitmap
Definition: YiTextEngine.h:227
CYIString name
Definition: YiTextEngine.h:109
bool IsFontInFile(const CYIString &familyName, const CYIString &styleName, const CYIString &url) const
CYIString style
Definition: YiTextEngine.h:111
ssize_t GetFontId(const CYIString &fontName) const
std::unique_ptr< CYITextLayout > GetTextLayout(const RenderInfo &textInfo, const std::function< std::unique_ptr< CYITextLayout >()> &textLayoutFactory=nullptr) const
Definition: YiTextEngine.h:186
float unadjustedFontSize
Definition: YiTextEngine.h:192
bool Init(uint16_t maxFonts, const std::map< CYITextEngine::TextType, uint16_t > &textAtlasSizes)
std::unique_ptr< CYITextSceneNode > CreateTextSceneNode() const
float leading
Definition: YiTextEngine.h:193
Class for a text atlas.
Definition: YiTextAtlas.h:16
CYITextAtlas * GetTextAtlas() const
int32_t numberOfLines
Definition: YiTextEngine.h:222
Abstract class for a text atlas.
Definition: YiAbstractTextAtlas.h:29
uint16_t GetTextAtlasSize(CYITextEngine::TextType textAtlasType=CYITextEngine::TextType::All) const
CYIString text
Definition: YiTextEngine.h:225
TextHeight GetTextHeight(ssize_t fontID, float fontSize) const
std::vector< CYIString > ReadFontStyles(const CYIString &url) const
Definition: YiRectangle.h:61
A scene node type that renders text.
Definition: YiTextSceneNode.h:79
Class for a signed distance field text atlas.
Definition: YiSDFTextAtlas.h:22
ssize_t engineID
Definition: YiTextEngine.h:107
Base class for abstracting the layout for text.
Definition: YiTextLayout.h:22
const FontInfo & GetFontInfo(ssize_t fontID) const
static const float s_lineSpacingFactor
Definition: YiTextEngine.h:264
The abstract runtime representation of a C++ type.
Definition: YiRtti.h:58
float yScale
Definition: YiTextEngine.h:220
Definition: YiTextEngine.h:117
void SetDefaultTextNodeType(const CYIRuntimeTypeInfo &nodeType)
int32_t RenderGlyphIntoAtlas(YI_GLYPH_DETAILS *pGlyph, CYIAbstractTextAtlas *pAtlas)
CYITextRenderer * GetTextRenderer() const
float minimumFontScale
Definition: YiTextEngine.h:224
GlyphsBitmapPrefetchMode
Definition: YiTextEngine.h:66
float heightAboveBase
Definition: YiTextEngine.h:96
uint32_t renderedGlyphsCount
Definition: YiTextEngine.h:253
bool operator!=(const CYIHTTPHeader &lhs, const CYIHTTPHeader &rhs)
YI_FLOAT_RECT rect
Definition: YiTextEngine.h:221
bool succeeded
Definition: YiTextEngine.h:252
A class used to represent a color value.
Definition: YiColor.h:37
float kerning
Definition: YiTextEngine.h:197
ScriptMode scriptMode
Definition: YiTextEngine.h:194
ssize_t GetFontIdFromNameAndStyle(const CYIString &fontName, const CYIString &fontStyleName, bool ignoreCase=false) const
std::vector< CYIString > GetFontStyles(ssize_t fontID) const
float offsetX
Definition: YiTextEngine.h:219
LineStyle textLineStyle
Definition: YiTextEngine.h:199
TrimmingMode
Enumeration for behavior of trimming whitespace from lines of text.
Definition: YiTextEngine.h:180
ScriptMode
Definition: YiTextEngine.h:73
CYIString family
Definition: YiTextEngine.h:110
ssize_t AddFontWithOverrides(const CYIString &url, const CYIString &fontName, const CYIString &fontFamily, const CYIString &fontStyle)
Definition: YiTextEngine.h:247
GlyphsBitmapPrefetchMode prefetchMode
Definition: YiTextEngine.h:228
FontStyle
Definition: YiTextEngine.h:80
bool operator<(const CYIColor &lhs, const CYIColor &rhs)
CYIString filename
Definition: YiTextEngine.h:108
float baselineShift
Definition: YiTextEngine.h:195