aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Graphics/Font/TTF.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/Graphics/Font/TTF.h')
-rw-r--r--src/libjin/Graphics/Font/TTF.h214
1 files changed, 107 insertions, 107 deletions
diff --git a/src/libjin/Graphics/Font/TTF.h b/src/libjin/Graphics/Font/TTF.h
index 804cd9d..fc2eca3 100644
--- a/src/libjin/Graphics/Font/TTF.h
+++ b/src/libjin/Graphics/Font/TTF.h
@@ -17,115 +17,115 @@
namespace jin
{
-namespace graphics
-{
+ namespace graphics
+ {
- class TTF;
+ 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;
-
- };
-
-} // graphics
+ /**
+ * 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;
+
+ };
+
+ } // graphics
} // jin
#endif // LIBJIN_MODULES_RENDER