xref: /inferno-os/include/freetype.h (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
1*37da2899SCharles.Forsyth /*
2*37da2899SCharles.Forsyth  * interface to libfreetype without recourse to the real freetype headers
3*37da2899SCharles.Forsyth  * which would otherwise require full-blown CPP
4*37da2899SCharles.Forsyth  */
5*37da2899SCharles.Forsyth 
6*37da2899SCharles.Forsyth typedef struct FTfaceinfo FTfaceinfo;
7*37da2899SCharles.Forsyth struct FTfaceinfo {
8*37da2899SCharles.Forsyth 	int	nfaces;
9*37da2899SCharles.Forsyth 	int	index;
10*37da2899SCharles.Forsyth 	int	style;
11*37da2899SCharles.Forsyth 	int	height;
12*37da2899SCharles.Forsyth 	int	ascent;
13*37da2899SCharles.Forsyth 	char*	familyname;
14*37da2899SCharles.Forsyth 	char*	stylename;
15*37da2899SCharles.Forsyth };
16*37da2899SCharles.Forsyth 
17*37da2899SCharles.Forsyth typedef struct FTface FTface;
18*37da2899SCharles.Forsyth struct FTface {
19*37da2899SCharles.Forsyth 	void*	ft_lib;
20*37da2899SCharles.Forsyth 	void*	ft_face;
21*37da2899SCharles.Forsyth };
22*37da2899SCharles.Forsyth 
23*37da2899SCharles.Forsyth typedef struct FTglyph FTglyph;
24*37da2899SCharles.Forsyth struct FTglyph {
25*37da2899SCharles.Forsyth 	int	top;
26*37da2899SCharles.Forsyth 	int	left;
27*37da2899SCharles.Forsyth 	int	advx;
28*37da2899SCharles.Forsyth 	int	advy;
29*37da2899SCharles.Forsyth 	int	height;
30*37da2899SCharles.Forsyth 	int	width;
31*37da2899SCharles.Forsyth 	int	bpr;
32*37da2899SCharles.Forsyth 	uchar*	bitmap;
33*37da2899SCharles.Forsyth };
34*37da2899SCharles.Forsyth 
35*37da2899SCharles.Forsyth typedef struct FTmatrix FTmatrix;
36*37da2899SCharles.Forsyth struct FTmatrix {
37*37da2899SCharles.Forsyth 	int	a;
38*37da2899SCharles.Forsyth 	int	b;
39*37da2899SCharles.Forsyth 	int	c;
40*37da2899SCharles.Forsyth 	int	d;
41*37da2899SCharles.Forsyth };
42*37da2899SCharles.Forsyth 
43*37da2899SCharles.Forsyth typedef struct FTvector FTvector;
44*37da2899SCharles.Forsyth struct FTvector {
45*37da2899SCharles.Forsyth 	int	dx;
46*37da2899SCharles.Forsyth 	int	dy;
47*37da2899SCharles.Forsyth };
48*37da2899SCharles.Forsyth 
49*37da2899SCharles.Forsyth extern	char*	ftnewface(char *, int, FTface*, FTfaceinfo*);
50*37da2899SCharles.Forsyth extern	char*	ftloadmemface(void*, int, int, FTface*, FTfaceinfo*);
51*37da2899SCharles.Forsyth extern	char*	ftsetcharsize(FTface, int, int, int, FTfaceinfo*);
52*37da2899SCharles.Forsyth extern	void		ftsettransform(FTface, FTmatrix*, FTvector*);
53*37da2899SCharles.Forsyth extern	int		fthaschar(FTface,int);
54*37da2899SCharles.Forsyth extern	char*	ftloadglyph(FTface, int, FTglyph*);
55*37da2899SCharles.Forsyth extern	void		ftdoneface(FTface);
56