You.i Engine
YiAbstractTextAtlas.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_ABSTRACT_TEXT_ATLAS_H_
3 #define _YI_ABSTRACT_TEXT_ATLAS_H_
4 
6 
11 
16 {
18 
19  int32_t nFontSize;
20 
21  uint32_t uGlyphID;
22 
23  uint32_t uTextureIndex;
24 };
25 
30 {
31 public:
33  virtual ~CYIAbstractTextAtlas();
34 
39  virtual bool CreateNewFontAtlas(uint32_t uWidth, uint32_t uHeight) = 0;
40 
51  virtual void SetRegion(ssize_t nID, void *pReference, YI_REGION Region, const uint8_t *pData, const int32_t nStride) override = 0;
52 
56  virtual YI_TEXTURE_DETAILS *GetTexture(ssize_t nID, void *pReference) override;
57 
62  int32_t GetGlyphPadding() const;
63 
67  bool AddGlyph(const uint32_t uGlyphWidth, const uint32_t uGlyphHeight, YI_GLYPH_DETAILS *pGlyphDetails, const uint8_t *pData, const int32_t nStride);
68 
69 protected:
73  void SetGlyphPadding(int32_t nGlyphPadding);
74 
75  /*
76  \details This function is called in GetTexture to determine whether the requested glyph matches
77  a glyph which already exists in the atlas. Implementations should use this to compare whether the
78  requested glyph matches the existing candidate glyph based on their own criteria.
79 
80  The default implementation compares font size, glyph ID, and font ID.
81  */
82  virtual bool CompareGlyphDetails(YI_GLYPH_DETAILS *pLeft, YI_GLYPH_DETAILS *pRight) const;
83 
84 private:
85  int32_t m_nGlyphPadding;
86 };
87 
90 #endif
Class for a texture atlas.
Definition: YiTextureAtlas.h:53
Definition: YiAbstractTextAtlas.h:15
Definition: YiTextureAtlas.h:42
uint32_t uGlyphID
Definition: YiAbstractTextAtlas.h:21
Abstract class for a text atlas.
Definition: YiAbstractTextAtlas.h:29
int32_t nFontSize
Definition: YiAbstractTextAtlas.h:19
uint32_t uTextureIndex
Definition: YiAbstractTextAtlas.h:23
int ssize_t
Definition: YiPredefWin32.h:133
ssize_t uFontID
Definition: YiAbstractTextAtlas.h:17
Definition: YiTextureAtlas.h:20