1/*
2libdrawtext - a simple library for fast text rendering in OpenGL
3Copyright (C) 2011-2012 John Tsiombikas <nuclear@member.fsf.org>
4
5This program is free software: you can redistribute it and/or modify
6it under the terms of the GNU Lesser General Public License as published by
7the Free Software Foundation, either version 3 of the License, or
8(at your option) any later version.
9
10This program is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU Lesser General Public License for more details.
14
15You should have received a copy of the GNU Lesser General Public License
16along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18#pragma once
19
20struct glyph {
21 int code;
22 float x, y, width, height;
23 /* normalized coords [0, 1] */
24 float nx, ny, nwidth, nheight;
25 float orig_x, orig_y;
26 float advance;
27 struct glyph *next;
28};
29
30struct dtx_glyphmap {
31 int ptsize;
32
33 int xsz, ysz;
34 unsigned char *pixels;
35 unsigned int tex;
36
37 int cstart, cend; /* character range */
38 int crange;
39
40 float line_advance;
41
42 struct glyph *glyphs;
43 struct dtx_glyphmap *next;
44};
45
46// refers to a particular type of font
47struct dtx_font {
48 // freetype FT_Face
49 void *face;
50
51 // active glyphmap
52 struct dtx_glyphmap *gmaps;
53
54 // cache of the last active glyphmap
55 struct dtx_glyphmap *last_gmap;
56};
57
58int dtx_interpolation;
59struct dtx_font *dtx_font;
60int dtx_font_sz;
61
62
63#define fperror(str) \
64 fprintf(stderr, "%s: %s: %s\n", __FUNCTION__, (str), strerror(errno))
65