/* Copyright (c) Mark J. Kilgard, 1994. */ /* 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. */ #include "glutbitmap.h" void APIENTRY glutBitmapCharacter(GLUTbitmapFont font, int c) { const BitmapCharRec *ch; BitmapFontPtr fontinfo; GLfloat swapbytes, lsbfirst, rowlength; GLfloat skiprows, skippixels, alignment; #if defined(_WIN32) fontinfo = (BitmapFontPtr) __glutFont(font); #else fontinfo = (BitmapFontPtr) font; #endif if (c < fontinfo->first || c >= fontinfo->first + fontinfo->num_chars) return; ch = fontinfo->ch[c - fontinfo->first]; if (ch) { /* Save current modes. */ /* glGetFloatv(GL_UNPACK_SWAP_BYTES, &swapbytes); */ /* glGetFloatv(GL_UNPACK_LSB_FIRST, &lsbfirst); */ /* glGetFloatv(GL_UNPACK_ROW_LENGTH, &rowlength); */ /* glGetFloatv(GL_UNPACK_SKIP_ROWS, &skiprows); */ /* glGetFloatv(GL_UNPACK_SKIP_PIXELS, &skippixels); */ glGetFloatv(GL_UNPACK_ALIGNMENT, &alignment); /* Little endian machines (DEC Alpha for example) could benefit from setting GL_UNPACK_LSB_FIRST to GL_TRUE instead of GL_FALSE, but this would require changing the generated bitmaps too. */ /* glPixelStorei(GL_UNPACK_SWAP_BYTES, GL_FALSE); */ /* glPixelStorei(GL_UNPACK_LSB_FIRST, GL_FALSE); */ /* glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); */ /* glPixelStorei(GL_UNPACK_SKIP_ROWS, 0); */ /* glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); */ glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glBitmap(ch->width, ch->height, ch->xorig, ch->yorig, ch->advance, 0, ch->bitmap); /* Restore saved modes. */ /* glPixelStorei(GL_UNPACK_SWAP_BYTES, swapbytes); */ /* glPixelStorei(GL_UNPACK_LSB_FIRST, (int)lsbfirst); */ /* glPixelStorei(GL_UNPACK_ROW_LENGTH, (int)rowlength); */ /* glPixelStorei(GL_UNPACK_SKIP_ROWS, skiprows); */ /* glPixelStorei(GL_UNPACK_SKIP_PIXELS, skippixels); */ glPixelStorei(GL_UNPACK_ALIGNMENT, (int)alignment); } }