From af3cd3ff34ef5da884b2c673afe1321f0cf372e7 Mon Sep 17 00:00:00 2001 From: ennewalker Date: Tue, 15 Jul 2008 04:07:07 +0000 Subject: Large tiles-related changes. Platform-specific rendering removed and replaced with SDL/OpenGL. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6550 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/tilefont.h | 71 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 crawl-ref/source/tilefont.h (limited to 'crawl-ref/source/tilefont.h') diff --git a/crawl-ref/source/tilefont.h b/crawl-ref/source/tilefont.h new file mode 100644 index 0000000000..5d8939a9a9 --- /dev/null +++ b/crawl-ref/source/tilefont.h @@ -0,0 +1,71 @@ +/* + * File: tilefont.h + * Created by: ennewalker on Sat Jan 5 01:33:53 2008 UTC + * + * Modified for Crawl Reference by $Author: ennewalker $ on $Date: 2008-03-07 $ + */ + +#ifndef TILEFONT_H +#define TILEFONT_H + +#include "AppHdr.h" +#include "externs.h" +#include "tiletex.h" + +// This class handles loading FreeType2 fonts and rendering them via OpenGL. + +// TODO enne - Fonts could be made better by: +// +// * handling kerning +// +// * the possibility of streaming this class in and out so that Crawl doesn't +// have to link against FreeType2 or be forced do as much processing at +// load time. + +class FTFont +{ +public: + FTFont(); + virtual ~FTFont(); + + bool load_font(const char *font_name, unsigned int font_size); + + // render just text + void render_textblock(unsigned int x, unsigned int y, + unsigned char *chars, unsigned char *colours, + unsigned int width, unsigned int height, + bool drop_shadow = false); + + // render text + background box + void render_string(unsigned int x, unsigned int y, const char *text, + const coord_def &min_pos, const coord_def &max_pos, + unsigned char font_colour, bool drop_shadow = false, + unsigned char box_alpha = 0, + unsigned char box_colour = 0, unsigned int outline = 0); + + unsigned int char_width() const { return m_max_advance.x; } + unsigned int char_height() const { return m_max_advance.y; } + +protected: + struct GlyphInfo + { + // offset before drawing glyph; can be negative + int offset; + + // per-glyph horizontal advance + int advance; + + bool renderable; + }; + GlyphInfo *m_glyphs; + + // cached value of the maximum advance from m_advance + coord_def m_max_advance; + + // minimum offset (likely negative) + int m_min_offset; + + GenericTexture m_tex; +}; + +#endif -- cgit v1.2.3-54-g00ecf