1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
//
// "$Id$"
//
// Font definitions for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2018 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
// http://www.fltk.org/COPYING.php
//
// Please report all bugs and problems on the following page:
//
// http://www.fltk.org/str.php
//
#ifndef FL_ANDROID_GRAPHICS_FONT_H
#define FL_ANDROID_GRAPHICS_FONT_H
#include "Fl_Android_Graphics_Driver.H"
#include "stb_truetype.h"
class Fl_Android_Bytemap
{
public:
Fl_Android_Bytemap();
~Fl_Android_Bytemap();
public:
int pWidth, pHeight, pStride, pXOffset, pYOffset;
unsigned char *pBytes;
};
class Fl_Android_Font_Source
{
private:
stbtt_fontinfo pFont;
uint8_t *pFileBuffer;
const char *pName;
Fl_Font pFontIndex;
public:
Fl_Android_Font_Source(const char *fname, Fl_Font fnum);
void load_font();
Fl_Android_Bytemap *get_bytemap(uint32_t c, int size);
float get_advance(uint32_t c, Fl_Fontsize size);
};
class Fl_Android_Font_Descriptor : public Fl_Font_Descriptor
{
private:
Fl_Android_Font_Source *pFontSource;
Fl_Font pFontIndex;
public:
Fl_Android_Font_Descriptor(const char *fname, Fl_Android_Font_Source *fsrc, Fl_Font fnum, Fl_Fontsize size);
float get_advance(uint32_t c);
Fl_Android_Bytemap *get_bytemap(uint32_t c);
Fl_Android_Font_Source *get_font_source() { return pFontSource; }
};
#if 0
fl_fonts array is managed by core?!
/** Some platforms may need to implement this to support fonts */
virtual Fl_Fontdesc* calc_fl_fonts(void) {return NULL;}
typedef int Fl_Fontsize;
class Fl_Font_Descriptor;
struct Fl_Fontdesc;
/* This class is not part of FLTK's public API.
Platforms usually define a derived class called Fl_XXX_Font_Descriptor
containing extra platform-specific data/functions.
This is a class for an actual system font, with junk to
help choose it and info on character sizes. Each Fl_Fontdesc has a
linked list of these. These are created the first time each system
font/size combination is used.
*/
class Fl_Font_Descriptor {
public:
/** linked list for this Fl_Fontdesc */
Fl_Font_Descriptor *next;
Fl_Fontsize size; /**< font size */
Fl_Font_Descriptor(const char* fontname, Fl_Fontsize size);
FL_EXPORT ~Fl_Font_Descriptor() {}
short ascent, descent, q_width;
unsigned int listbase;// base of display list, 0 = none
};
// This struct is not part of FLTK's public API.
struct Fl_Fontdesc {
const char *name;
char fontname[128]; // "Pretty" font name
Fl_Font_Descriptor *first; // linked list of sizes of this style
};
#endif
#if 0
// Two internal fltk data structures:
//
// Fl_Fontdesc: an entry into the fl_font() table. There is one of these
// for each fltk font number.
//
#ifndef FL_FONT_
#define FL_FONT_
#include <config.h>
#if 0
class Fl_GDI_Font_Descriptor : public Fl_Font_Descriptor {
public:
HFONT fid;
int *width[64];
TEXTMETRIC metr;
int angle;
FL_EXPORT Fl_GDI_Font_Descriptor(const char* fontname, Fl_Fontsize size);
# if HAVE_GL
char glok[64];
# endif // HAVE_GL
FL_EXPORT ~Fl_GDI_Font_Descriptor();
};
#endif
extern FL_EXPORT Fl_Fontdesc *fl_fonts; // the table
#endif
#endif
#endif // FL_ANDROID_GRAPHICS_FONT_H
//
// End of "$Id$".
//
|