95 lines
2.7 KiB
C
95 lines
2.7 KiB
C
|
/*
|
||
|
** Copyright 1991,1992, Silicon Graphics, Inc.
|
||
|
** All Rights Reserved.
|
||
|
**
|
||
|
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
|
||
|
** the contents of this file may not be disclosed to third parties, copied or
|
||
|
** duplicated in any form, in whole or in part, without the prior written
|
||
|
** permission of Silicon Graphics, Inc.
|
||
|
**
|
||
|
** RESTRICTED RIGHTS LEGEND:
|
||
|
** Use, duplication or disclosure by the Government is subject to restrictions
|
||
|
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||
|
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||
|
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||
|
** rights reserved under the Copyright Laws of the United States.
|
||
|
**
|
||
|
** $Revision: 1.8 $
|
||
|
** $Date: 1993/08/31 16:23:06 $
|
||
|
*/
|
||
|
#include "precomp.h"
|
||
|
#pragma hdrstop
|
||
|
|
||
|
#include "devlock.h"
|
||
|
|
||
|
#ifdef NT
|
||
|
void APIPRIVATE __glim_Bitmap(GLsizei w, GLsizei h, GLfloat xOrig, GLfloat yOrig,
|
||
|
GLfloat xMove, GLfloat yMove, const GLubyte *bitmap,
|
||
|
GLboolean _IsDlist)
|
||
|
#else
|
||
|
void APIPRIVATE __glim_Bitmap(GLsizei w, GLsizei h, GLfloat xOrig, GLfloat yOrig,
|
||
|
GLfloat xMove, GLfloat yMove, const GLubyte *bitmap)
|
||
|
#endif
|
||
|
{
|
||
|
__GL_SETUP();
|
||
|
GLuint beginMode;
|
||
|
BOOL bResetViewportAdj = FALSE;
|
||
|
|
||
|
beginMode = gc->beginMode;
|
||
|
if (beginMode != __GL_NOT_IN_BEGIN) {
|
||
|
if (beginMode == __GL_NEED_VALIDATE) {
|
||
|
(*gc->procs.validate)(gc);
|
||
|
gc->beginMode = __GL_NOT_IN_BEGIN;
|
||
|
__glim_Bitmap(w,h,xOrig,yOrig,
|
||
|
xMove,yMove,bitmap,_IsDlist);
|
||
|
return;
|
||
|
} else {
|
||
|
__glSetError(GL_INVALID_OPERATION);
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#ifdef NT
|
||
|
if (((__GLGENcontext *)gc)->pMcdState)
|
||
|
{
|
||
|
// MCD does not hook glBitmap, so we go straight to the
|
||
|
// simulations. Therefore, if we are grabbing the device
|
||
|
// lock lazily, we need to grab it now.
|
||
|
|
||
|
if (!glsrvLazyGrabSurfaces((__GLGENcontext *)gc,
|
||
|
RENDER_LOCK_FLAGS))
|
||
|
return;
|
||
|
|
||
|
// We may need to temporarily reset the viewport adjust values
|
||
|
// before calling simulations. If GenMcdResetViewportAdj returns
|
||
|
// TRUE, the viewport is changed and we need restore later with
|
||
|
// VP_NOBIAS.
|
||
|
|
||
|
bResetViewportAdj = GenMcdResetViewportAdj(gc, VP_FIXBIAS);
|
||
|
}
|
||
|
|
||
|
if (_IsDlist)
|
||
|
{
|
||
|
const __GLbitmap *glbitmap = (const __GLbitmap *) bitmap;
|
||
|
(*gc->procs.renderBitmap)(gc, glbitmap, (const GLubyte *) (glbitmap+1));
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
#endif
|
||
|
if ((w < 0) || (h < 0)) {
|
||
|
__glSetError(GL_INVALID_VALUE);
|
||
|
return;
|
||
|
}
|
||
|
(*gc->procs.bitmap)(gc, w, h, xOrig, yOrig, xMove, yMove, bitmap);
|
||
|
#ifdef NT
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
// Restore viewport values if needed.
|
||
|
|
||
|
if (bResetViewportAdj)
|
||
|
{
|
||
|
GenMcdResetViewportAdj(gc, VP_NOBIAS);
|
||
|
}
|
||
|
}
|