aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Render/Font.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/Render/Font.h')
-rw-r--r--src/libjin/Render/Font.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/libjin/Render/Font.h b/src/libjin/Render/Font.h
new file mode 100644
index 0000000..f2a57ed
--- /dev/null
+++ b/src/libjin/Render/Font.h
@@ -0,0 +1,61 @@
+#ifndef __JIN_FONT_H
+#define __JIN_FONT_H
+#include "../modules.h"
+#if JIN_MODULES_RENDER
+
+#include "drawable.h"
+#include "3rdparty/stb/stb_truetype.h"
+#include "../math/quad.h"
+
+namespace jin
+{
+namespace render
+{
+ /**
+ * Usage of stb_truetype.h here might be a little
+ * bit dummy. Implementation of Font is referring
+ * to stb_truetype.h L243~284. I basicly copy it:)
+ */
+ class Font: public Drawable
+ {
+ public:
+
+ Font();
+
+ /**
+ * load ttf font data from .ttf
+ */
+ void loadf(const char* file);
+
+ /**
+ * load ttf font data from memory
+ */
+ void loadb(const unsigned char* data);
+
+ /**
+ * render text to screen
+ */
+ void render(
+ const char* str, // rendered text
+ float x, float y, // render position
+ int fheight, // font size
+ int spacing, // font spacing
+ int lheight // line height
+ );
+
+ void box(const char* str, int fheight, int spacing, int lheight, int* w, int * h);
+
+ private:
+
+ /**
+ * ASCII 32(space)..126(~) is 95 glyphs
+ */
+ stbtt_bakedchar cdata[96];
+
+ };
+
+}
+}
+
+#endif // JIN_MODULES_RENDER
+#endif \ No newline at end of file