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.h132
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