Line data Source code
1 : #ifndef RENDERTEXT_H_
2 : #define RENDERTEXT_H_
3 : struct font
4 : {
5 : struct charinfo
6 : {
7 : float x, y, w, h, offsetx, offsety, advance;
8 : int tex;
9 :
10 : };
11 :
12 : std::string name;
13 : std::vector<Texture *> texs;
14 : std::vector<charinfo> chars;
15 : int charoffset, defaultw, defaulth, scale;
16 : float bordermin, bordermax, outlinemin, outlinemax;
17 :
18 2 : font() {}
19 6 : ~font()
20 : {
21 6 : }
22 : };
23 :
24 : #define FONTH (curfont->scale)
25 :
26 : extern font *curfont;
27 :
28 0 : inline int fontwidth()
29 : {
30 0 : return FONTH/2;
31 : }
32 : constexpr int minreswidth = 640,
33 : minresheight = 480;
34 :
35 : extern float textscale;
36 :
37 : extern void reloadfonts();
38 :
39 0 : inline void setfont(font *f)
40 : {
41 0 : if(f)
42 : {
43 0 : curfont = f;
44 : }
45 0 : }
46 :
47 : extern bool setfont(const char *name);
48 : extern void pushfont();
49 : extern bool popfont();
50 : extern void gettextres(int &w, int &h);
51 :
52 : extern float text_widthf(const char *str);
53 : extern void text_boundsf(const char *str, float &width, float &height, int maxwidth = -1);
54 : extern int text_visible(const char *str, float hitx, float hity, int maxwidth);
55 : extern void text_posf(const char *str, int cursor, float &cx, float &cy, int maxwidth);
56 :
57 0 : inline int text_width(const char *str)
58 : {
59 0 : return static_cast<int>(std::ceil(text_widthf(str)));
60 : }
61 : #endif
|