// Copyright (c) Mark J. Kilgard, 1997. // This program is freely distributable without licensing fees and is // provided without guarantee or warrantee expressed or implied. // This program is -not- in the public domain. #ifndef __TEXFONT_H__ #define __TEXFONT_H__ #include "boinc_gl.h" #ifdef __cplusplus extern "C" { #endif #define TXF_FORMAT_BYTE 0 #define TXF_FORMAT_BITMAP 1 #define TXF_NUM_FONT 28 extern const char *font_names []; typedef struct { unsigned short c; // Potentially support 16-bit glyphs. unsigned char width; unsigned char height; signed char xoffset; signed char yoffset; signed char advance; char dummy; // Space holder for alignment reasons. short x; short y; } TexGlyphInfo; typedef struct { GLfloat t0[2]; GLshort v0[2]; GLfloat t1[2]; GLshort v1[2]; GLfloat t2[2]; GLshort v2[2]; GLfloat t3[2]; GLshort v3[2]; GLfloat advance; } TexGlyphVertexInfo; typedef struct { GLuint texobj; int tex_width; int tex_height; int max_ascent; int max_descent; int num_glyphs; int min_glyph; int range; unsigned char *teximage; TexGlyphInfo *tgi; TexGlyphVertexInfo *tgvi; TexGlyphVertexInfo **lut; } TexFont; extern char *txfErrorString(void); extern TexFont *txfLoadFont(const char *filename); extern void txfUnloadFont(TexFont * txf); extern GLuint CreateTexFont( TexFont * txf, GLuint texobj, GLboolean setupMipmaps); extern void txfBindFontTexture(TexFont * txf); extern void txfGetStringMetrics( TexFont * txf, char *string, int len, int *width, int *max_ascent, int *max_descent); extern void txfRenderGlyph( TexFont * txf, int c); extern void txfRenderString( TexFont * txf, char *string, int len); extern void txfRenderFancyString( TexFont * txf, char *string, int len); #ifdef __cplusplus } // extern "C" #endif #endif // __TEXFONT_H__