/* * nvtexfont-priv.h * * Copyright (c) 2003 - 2012 NVIDIA Corporation. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * * This software is based upon texfont, with consent from Mark J. Kilgard, * provided under the following terms: * * 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. */ 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; } NVTexfontGlyphInfo; struct _NVTexfontRasterFont { 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; NVTexfontGlyphInfo *tgi; int *lut; GLfloat *st; GLshort *vert; }; struct _NVTexfontVectorFont { unsigned char *vertices; int *offsets; int *counts; unsigned char *widths; int vertNo; GLboolean antialias; GLuint vbo; }; typedef struct { float r, g, b; float scaleX, scaleY; float x, y; } nvtexfontState; /* byte swap a 32-bit value */ #define SWAPL(x, n) { \ n = ((char *) (x))[0];\ ((char *) (x))[0] = ((char *) (x))[3];\ ((char *) (x))[3] = n;\ n = ((char *) (x))[1];\ ((char *) (x))[1] = ((char *) (x))[2];\ ((char *) (x))[2] = n; } /* byte swap a short */ #define SWAPS(x, n) { \ n = ((char *) (x))[0];\ ((char *) (x))[0] = ((char *) (x))[1];\ ((char *) (x))[1] = n; } #define VERT_ARRAY 0 #define TEX_ARRAY 1 #define FONT_HEIGHT_RATIO (1.0f/33.0f) extern void initShaders(void); extern void deinitShaders(void); extern GLuint rasterProg, vectorProg; extern char *lastError;