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