/* ** Copyright 1995-2095, 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. */ /****************************************************************************** __GLSwriteStream ******************************************************************************/ typedef struct { FILE *channel; __GLSstring name; GLboolean created; GLboolean opened; GLSwriteFunc writeFunc; } __GLSwriteStream; extern __GLSwriteStream* __glsWriteStream_create( const GLubyte *inName, GLboolean inAppend ); extern __GLSwriteStream* __glsWriteStream_destroy(__GLSwriteStream *inStream); extern size_t __glsWriteStream_getByteCount(const __GLSwriteStream *inStream); /****************************************************************************** __GLSwriter ******************************************************************************/ typedef struct __GLSwriter __GLSwriter; struct __GLSwriter { GLboolean (*alloc)( __GLSwriter *inoutWriter, size_t inWordCount ); GLboolean (*beginCommand)( __GLSwriter *inoutWriter, GLSopcode inOpcode, size_t inByteCount ); void (*endCommand)( __GLSwriter *inoutWriter ); void (*nextList)( __GLSwriter *inoutWriter ); GLboolean (*padWordCount)( __GLSwriter *inoutWriter, GLboolean inCountMod2 ); void (*putGLSenum)( __GLSwriter *inoutWriter, GLSenum inVal ); void (*putGLSimageFlags)( __GLSwriter *inoutWriter, GLbitfield inVal ); void (*putGLSopcode)( __GLSwriter *inoutWriter, GLSopcode inVal ); void (*putGLattribMask)( __GLSwriter *inoutWriter, GLbitfield inVal ); void (*putGLbitvs)( __GLSwriter *inoutWriter, GLboolean inItemSwap, GLint inItemLeftShift, GLint inStrideDataItems, GLint inStridePadItems, GLint inStrideCount, const GLubyte *inVec ); void (*putGLblendingFactor)( __GLSwriter *inoutWriter, GLenum inVal ); void (*putGLboolean)( __GLSwriter *inoutWriter, GLboolean inVal ); void (*putGLbooleanv)( __GLSwriter *inoutWriter, GLuint inCount, const GLboolean *inVec ); void (*putGLbooleanvs)( __GLSwriter *inoutWriter, GLboolean inItemSwap, GLint inStride1DataItems, GLint inStride1PadBytes, GLint inStride1Count, GLint inStride2PadBytes, GLint inStride2Count, const GLboolean *inVec ); void (*putGLbyte)( __GLSwriter *inoutWriter, GLbyte inVal ); void (*putGLbytev)( __GLSwriter *inoutWriter, GLuint inCount, const GLbyte *inVec ); void (*putGLbytevs)( __GLSwriter *inoutWriter, GLboolean inItemSwap, GLint inStride1DataItems, GLint inStride1PadBytes, GLint inStride1Count, GLint inStride2PadBytes, GLint inStride2Count, const GLbyte *inVec ); void (*putGLcharv)( __GLSwriter *inoutWriter, GLuint inCount, const GLubyte *inVec ); void (*putGLclearBufferMask)( __GLSwriter *inoutWriter, GLbitfield inVal ); void (*putGLdouble)( __GLSwriter *inoutWriter, GLdouble inVal ); void (*putGLdoubleOrGLenum)( __GLSwriter *inoutWriter, GLenum inParam, GLdouble inVal ); void (*putGLdoubleOrGLenumv)( __GLSwriter *inoutWriter, GLenum inParam, GLuint inCount, const GLdouble *inVec ); void (*putGLdoublem)( __GLSwriter *inoutWriter, const GLdouble *inMat ); void (*putGLdoublev)( __GLSwriter *inoutWriter, GLuint inCount, const GLdouble *inVec ); void (*putGLdoublevs)( __GLSwriter *inoutWriter, GLboolean inItemSwap, GLint inStride1DataItems, GLint inStride1PadBytes, GLint inStride1Count, GLint inStride2PadBytes, GLint inStride2Count, const GLdouble *inVec ); void (*putGLdrawBufferMode)( __GLSwriter *inoutWriter, GLenum inVal ); void (*putGLenum)( __GLSwriter *inoutWriter, GLenum inVal ); void (*putGLfloat)( __GLSwriter *inoutWriter, GLfloat inVal ); void (*putGLfloatOrGLenum)( __GLSwriter *inoutWriter, GLenum inParam, GLfloat inVal ); void (*putGLfloatOrGLenumv)( __GLSwriter *inoutWriter, GLenum inParam, GLuint inCount, const GLfloat *inVec ); void (*putGLfloatm)( __GLSwriter *inoutWriter, const GLfloat *inMat ); void (*putGLfloatv)( __GLSwriter *inoutWriter, GLuint inCount, const GLfloat *inVec ); void (*putGLfloatvs)( __GLSwriter *inoutWriter, GLboolean inItemSwap, GLint inStride1DataItems, GLint inStride1PadBytes, GLint inStride1Count, GLint inStride2PadBytes, GLint inStride2Count, const GLfloat *inVec ); void (*putGLint)( __GLSwriter *inoutWriter, GLint inVal ); void (*putGLintOrGLSenum)( __GLSwriter *inoutWriter, GLenum inParam, GLint inVal ); void (*putGLintOrGLenum)( __GLSwriter *inoutWriter, GLenum inParam, GLint inVal ); void (*putGLintOrGLenumv)( __GLSwriter *inoutWriter, GLenum inParam, GLuint inCount, const GLint *inVec ); void (*putGLintv)( __GLSwriter *inoutWriter, GLuint inCount, const GLint *inVec ); void (*putGLintvs)( __GLSwriter *inoutWriter, GLboolean inItemSwap, GLint inStride1DataItems, GLint inStride1PadBytes, GLint inStride1Count, GLint inStride2PadBytes, GLint inStride2Count, const GLint *inVec ); void (*putGLlong)( __GLSwriter *inoutWriter, GLlong inVal ); void (*putGLlongv)( __GLSwriter *inoutWriter, GLuint inCount, const GLlong *inVec ); void (*putGLoutArg)( __GLSwriter *inoutWriter, GLuint inIndex, const GLvoid *inVal ); void (*putGLshort)( __GLSwriter *inoutWriter, GLshort inVal ); void (*putGLshortv)( __GLSwriter *inoutWriter, GLuint inCount, const GLshort *inVec ); void (*putGLshortvs)( __GLSwriter *inoutWriter, GLboolean inItemSwap, GLint inStride1DataItems, GLint inStride1PadBytes, GLint inStride1Count, GLint inStride2PadBytes, GLint inStride2Count, const GLshort *inVec ); void (*putGLstencilOp)( __GLSwriter *inoutWriter, GLenum inVal ); void (*putGLtextureComponentCount)( __GLSwriter *inoutWriter, GLint inVal ); void (*putGLubyte)( __GLSwriter *inoutWriter, GLubyte inVal ); void (*putGLubytev)( __GLSwriter *inoutWriter, GLuint inCount, const GLubyte *inVec ); void (*putGLubytevs)( __GLSwriter *inoutWriter, GLboolean inItemSwap, GLint inStride1DataItems, GLint inStride1PadBytes, GLint inStride1Count, GLint inStride2PadBytes, GLint inStride2Count, const GLubyte *inVec ); void (*putGLuint)( __GLSwriter *inoutWriter, GLuint inVal ); void (*putGLuinthex)( __GLSwriter *inoutWriter, GLuint inVal ); void (*putGLuintv)( __GLSwriter *inoutWriter, GLuint inCount, const GLuint *inVec ); void (*putGLuintvs)( __GLSwriter *inoutWriter, GLboolean inItemSwap, GLint inStride1DataItems, GLint inStride1PadBytes, GLint inStride1Count, GLint inStride2PadBytes, GLint inStride2Count, const GLuint *inVec ); void (*putGLulong)( __GLSwriter *inoutWriter, GLulong inVal ); void (*putGLulonghex)( __GLSwriter *inoutWriter, GLulong inVal ); void (*putGLulongv)( __GLSwriter *inoutWriter, GLuint inCount, const GLulong *inVec ); void (*putGLushort)( __GLSwriter *inoutWriter, GLushort inVal ); void (*putGLushorthex)( __GLSwriter *inoutWriter, GLushort inVal ); void (*putGLushortv)( __GLSwriter *inoutWriter, GLuint inCount, const GLushort *inVec ); void (*putGLushortvs)( __GLSwriter *inoutWriter, GLboolean inItemSwap, GLint inStride1DataItems, GLint inStride1PadBytes, GLint inStride1Count, GLint inStride2PadBytes, GLint inStride2Count, const GLushort *inVec ); GLubyte *bufPtr; GLubyte *bufTail; GLSopcode commandOpcode; GLubyte *commandHead; GLubyte *commandTail; GLboolean contextCreated; __GLScontextStream *contextStream; GLboolean error; GLubyte *externBuf; GLubyte *externBufHead; __GLSwriteStream *externStream; GLint paramCount; __GLSbinCommandHead_large *prevCommand; __GLScontextStreamBlock *startBlock; size_t startOffset; GLSenum type; size_t wordCount; }; extern __GLSwriter* __glsWriter_create( const GLubyte *inStreamName, GLSenum inStreamType, GLbitfield inWriteFlags ); extern __GLSwriter* __glsWriter_destroy(__GLSwriter *inWriter); extern GLboolean __glsWriter_flush(__GLSwriter *inoutWriter); extern void __glsWriter_putListv( __GLSwriter *inoutWriter, GLenum inType, GLint inCount, const GLvoid *inVec ); extern void __glsWriter_putPixelv( __GLSwriter *inoutWriter, GLenum inFormat, GLenum inType, GLint inWidth, GLint inHeight, const GLvoid *inVec ); // DrewB - Always enabled for 1.1 support extern void __glsWriter_putVertexv( __GLSwriter *inoutWriter, GLint inSize, GLenum inType, GLint inStride, GLint inCount, const GLvoid *inVec ); /****************************************************************************** __GLSwriter binary ******************************************************************************/ extern void __glsWriter_initDispatch_bin( __GLSwriter *inoutWriter, GLSenum inStreamType ); /****************************************************************************** __GLSwriter text ******************************************************************************/ extern void __glsWriter_initDispatch_text( __GLSwriter *inoutWriter );