Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
glut_bitmap.c
/* 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. */ |
#if defined(__APPLE__) |
#include "glut.h" |
#include "macx_utilities.h" |
#else |
#include "glutint.h" |
#endif |
#include "glutbitmap.h" |
void APIENTRY |
glutBitmapCharacter(GLUTbitmapFont font, int c) |
{ |
const BitmapCharRec *ch; |
BitmapFontPtr fontinfo; |
GLint swapbytes, lsbfirst, rowlength; |
GLint 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. */ |
glGetIntegerv(GL_UNPACK_SWAP_BYTES, &swapbytes); |
glGetIntegerv(GL_UNPACK_LSB_FIRST, &lsbfirst); |
glGetIntegerv(GL_UNPACK_ROW_LENGTH, &rowlength); |
glGetIntegerv(GL_UNPACK_SKIP_ROWS, &skiprows); |
glGetIntegerv(GL_UNPACK_SKIP_PIXELS, &skippixels); |
glGetIntegerv(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, lsbfirst); |
glPixelStorei(GL_UNPACK_ROW_LENGTH, rowlength); |
glPixelStorei(GL_UNPACK_SKIP_ROWS, skiprows); |
glPixelStorei(GL_UNPACK_SKIP_PIXELS, skippixels); |
glPixelStorei(GL_UNPACK_ALIGNMENT, alignment); |
} |
} |
Copyright © 2008 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2008-02-08