diff options
author | chai <chaifix@163.com> | 2018-10-19 08:36:44 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-10-19 08:36:44 +0800 |
commit | 7d5f055547e70fa93ee9ac944e62f8d657b9dc55 (patch) | |
tree | 081782a1541854db4b8eb69c4b43081f52711286 /src/libjin/Graphics/Font/TTF.h | |
parent | 02dd1f38008594048f0e28bad01e7c6d18844198 (diff) |
*修改文件名
Diffstat (limited to 'src/libjin/Graphics/Font/TTF.h')
-rw-r--r-- | src/libjin/Graphics/Font/TTF.h | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/src/libjin/Graphics/Font/TTF.h b/src/libjin/Graphics/Font/TTF.h deleted file mode 100644 index 88ddfd6..0000000 --- a/src/libjin/Graphics/Font/TTF.h +++ /dev/null @@ -1,132 +0,0 @@ -#ifndef __LIBJINTTF_H -#define __LIBJIN_TTF_H -#include "../../configuration.h" -#if LIBJIN_MODULES_RENDER - -#include <vector> -#include <map> - -#include "../../3rdparty/stb/stb_truetype.h" -#include "../../math/quad.h" -#include "../Color.h" -#include "../drawable.h" - -#include "Page.h" -#include "Font.h" -#include "Text.h" - -namespace jin -{ - namespace graphics - { - - class TTF; - - // - // TTFData - // |- TTF(14px) - // |- TTF(15px) - // . - // . - // . - // - 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; - - }; - - class TTF : public Font - { - 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; - // normalized coordinates - struct Bbox - { - float x, y; - float w, h; - } bbox; - // glyph size in pixel - 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; - - }; - - } // namespace graphics -} // namespace jin - -#endif // LIBJIN_MODULES_RENDER -#endif // __LIBJIN_FONT_H
\ No newline at end of file |