diff options
Diffstat (limited to 'src/libjin/Graphics/Font/je_ttf.h')
-rw-r--r-- | src/libjin/Graphics/Font/je_ttf.h | 156 |
1 files changed, 155 insertions, 1 deletions
diff --git a/src/libjin/Graphics/Font/je_ttf.h b/src/libjin/Graphics/Font/je_ttf.h index e4314fe..9acb07e 100644 --- a/src/libjin/Graphics/Font/je_ttf.h +++ b/src/libjin/Graphics/Font/je_ttf.h @@ -34,32 +34,81 @@ namespace JinEngine class TTFData { public: + + /// + /// + /// static TTFData* createTTFData(const unsigned char* data, unsigned int size); + /// + /// + /// ~TTFData(); + /// + /// + /// TTF* createTTF(unsigned ttfsize); + /// + /// + /// void pushTTFsize(unsigned ttfsize); + + /// + /// + /// void popTTFsize(); + /// + /// + /// Channel* getCodepointBitmapAlpha(unsigned int codepoint, int* width, int* height, int* xoff, int* yoff) const; + + /// + /// + /// Color* getCodepointBitmap(unsigned int codepoint, int* width, int* height, int* xoff, int* yoff) const; + /// + /// + /// void getVMetrics(int* baseline, int* descent); + + /// + /// + /// void getHMetrics(unsigned int codepoint, int* advanceWidth, int* leftSideBearing); private: + + /// + /// + /// static const unsigned int FONT_SIZE = 12; + /// + /// + /// TTFData(const unsigned char* data, unsigned int size); + /// + /// + /// stbtt_fontinfo info; + + /// + /// + /// struct { unsigned char* data; unsigned int size; } raw; + + /// + /// + /// std::vector<float> scales; }; @@ -69,18 +118,43 @@ namespace JinEngine public: //static TTF* createTTF(TTFData* ttfData, unsigned ttfSzie); + /// + /// + /// Page* typeset(const Text& text, int lineheight, int spacing = 0) override; + + /// + /// + /// Page* typeset(const Content& text, int lineheight, int spacing = 0) override; + /// + /// + /// void print(const Text& text, int x, int y, int lineheight, int spacing = 0) override; + + /// + /// + /// void print(const Content& text, int x, int y, int lineheight, int spacing = 0) override; + + /// + /// + /// void print(const Page* page, int x, int y) override; + /// + /// + /// ~TTF(); private: + friend class TTFData; + /// + /// + /// struct TTFGlyph { GLuint atlas; @@ -94,34 +168,114 @@ namespace JinEngine unsigned int width, height; }; + /// + /// + /// static const int TEXTURE_SIZE_LEVELS_COUNT = 7; + + /// + /// + /// static const int TEXTURE_SIZE_LEVEL_MAX = TEXTURE_SIZE_LEVELS_COUNT - 1; + + /// + /// + /// static const int TEXTURE_WIDTHS[TEXTURE_SIZE_LEVELS_COUNT]; + + /// + /// + /// static const int TEXTURE_HEIGHTS[TEXTURE_SIZE_LEVELS_COUNT]; + /// + /// + /// TTF(TTFData* ttf, Codepoint ttfSize); + /// + /// + /// void estimateSize(); + + /// + /// + /// GLuint createAtlas(); + + /// + /// + /// TTFGlyph& bakeGlyph(Codepoint character); + + /// + /// + /// TTFGlyph& findGlyph(Codepoint character); + /// + /// + /// int getCharWidth(int c); + + /// + /// + /// int getCharHeight(int c); + /// + /// + /// int getTextWidth(const Content& text, int spacing = 0); + + /// + /// + /// int getTextHeight(const Content& text, int lineheight); + + /// + /// + /// void getTextBox(const Content& text, int* w, int* h, int lineheight, int spacing = 0); + /// + /// + /// int textureWidth; + + /// + /// + /// int textureHeight; + + /// + /// + /// std::vector<GLuint> atlases; + + /// + /// + /// std::map<Codepoint, TTFGlyph> glyphs; + + /// + /// + /// TTFData* ttf; + + /// + /// + /// int baseline; + + /// + /// + /// int descent; - /* cursor helped render to texture */ + /// + /// + /// Math::Vector2<float> cursor; }; |