1 /*
2  * Copyright (C) Volition, Inc. 1999.  All rights reserved.
3  *
4  * All source code herein is the property of Volition, Inc. You may not sell
5  * or otherwise commercially exploit the source or things you created based on the
6  * source.
7  *
8 */
9 
10 
11 
12 #ifndef _FONT_H
13 #define _FONT_H
14 
15 #include "globalincs/pstypes.h"
16 
17 #define MAX_FONTS 5
18 
19 #define FONT_VERSION 0
20 #define WIDEST_DIGIT	"4"  // the widest number character
21 #define WIDEST_CHAR	"W"  // the widest character
22 
23 typedef struct font_char {
24 	int				spacing;
25 	int				byte_width;
26 	int				offset;
27 	short				kerning_entry;
28 	short				user_data;
29 } font_char;
30 
31 typedef struct font_kernpair {
32 	char				c1,c2;
33 	signed char		offset;
34 } font_kernpair;
35 
36 typedef struct font {
37 	char				filename[MAX_FILENAME_LEN];
38 	int				id;			// Should be 'VFNT'
39 	int				version;			// font version
40 	int				num_chars;
41 	int				first_ascii;
42 	int				w;
43 	int				h;
44 	int				num_kern_pairs;
45 	int				kern_data_size;
46 	int				char_data_size;
47 	int				pixel_data_size;
48 	font_kernpair	*kern_data;
49 	font_char		*char_data;
50 	ubyte				*pixel_data;
51 
52 	// Data for 3d cards
53 	int				bitmap_id;			// A bitmap representing the font data
54 	int				bm_w, bm_h;			// Bitmap width and height
55 	ubyte				*bm_data;			// The actual font data
56 	int				*bm_u;				// U offset of each character
57 	int				*bm_v;				// V offset of each character
58 
59 } font;
60 
61 extern int Num_fonts;
62 extern font Fonts[MAX_FONTS];
63 extern font *Current_font;
64 
65 #define FONT1				0				// font01.vf
66 #define FONT2				1				// font02.vf
67 #define FONT3				2				// font03.vf
68 
69 // extern definitions for basic font functions
70 extern void gr_stuff_first_font(char *first_font, size_t first_font_size);
71 extern int gr_get_current_fontnum();
72 extern int gr_get_fontnum(char *filename);
73 extern void gr_set_font(int fontnum);
74 
75 void gr_print_timestamp(int x, int y, fix timestamp, int resize_mode);
76 char *gr_force_fit_string(char *str, int max_str, int max_width);
77 void gr_font_init();
78 void gr_font_close();
79 
80 extern font *Current_font;
81 extern int get_char_width(ubyte c1,ubyte c2,int *width,int *spacing);
82 extern int get_centered_x(const char *s, bool scaled);
83 
84 #endif
85