/* ** 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); } }