2025-04-27 07:49:33 -04:00

243 lines
5.8 KiB
C

/*
** Copyright 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.
*/
#define PATH_NONE 0
#define PATH_ALIAS 1
#define PATH_ALPHA 2
#define PATH_BLEND 4
#define PATH_DEPTH 8
#define PATH_DITHER 16
#define PATH_FOG 32
#define PATH_LOGICOP 64
#define PATH_SHADE 128
#define PATH_STENCIL 256
#define PATH_STIPPLE 512
#define PATH_TOTAL 10
enum {
PATHOP_INIT_DEFAULT = 1,
PATHOP_INIT_GARBAGE,
PATHOP_INIT_CUSTOM,
PATHOP_SET,
PATHOP_REPORT
};
enum {
PATHTEST_UNLOCKED = 1,
PATHTEST_LOCKED
};
typedef struct _aliasPathStateRec {
struct {
long data1[2];
} true;
struct {
long data1; /* enable/disable */
} current;
long lock;
} aliasPathStateRec;
typedef struct _alphaPathStateRec {
struct {
GLenum data1[2];
GLenum data2[20];
GLfloat data3[2];
} true;
struct {
GLenum data1; /* enable/disable */
GLenum data2; /* function */
GLfloat data3; /* reference */
} current;
long lock;
} alphaPathStateRec;
typedef struct _blendPathStateRec {
struct {
GLenum data1[2];
GLenum data2[20];
GLenum data3[20];
} true;
struct {
GLenum data1; /* enable/disable */
GLenum data2; /* src function */
GLenum data3; /* dest function */
} current;
long lock;
} blendPathStateRec;
typedef struct _depthPathStateRec {
struct {
GLenum data1[2];
GLdouble data2[2];
GLdouble data3[2];
GLdouble data4[2];
GLenum data5[20];
} true;
struct {
GLenum data1; /* enable/disable */
GLdouble data2; /* clear value */
GLdouble data3; /* min range */
GLdouble data4; /* max range */
GLenum data5; /* function */
} current;
long lock;
} depthPathStateRec;
typedef struct _ditherPathStateRec {
struct {
GLenum data1[2];
} true;
struct {
GLenum data1; /* enable/disable */
} current;
long lock;
} ditherPathStateRec;
typedef struct _fogPathStateRec {
struct {
GLenum data1[2];
GLfloat data2[4][2];
GLfloat data3[2];
GLfloat data4[2];
GLfloat data5[2];
GLfloat data6[2];
GLenum data7[20];
} true;
struct {
GLenum data1; /* enable/disable */
GLfloat data2[4]; /* color */
GLfloat data3; /* index */
GLfloat data4; /* density */
GLfloat data5; /* start */
GLfloat data6; /* end */
GLenum data7; /* mode */
} current;
long lock;
} fogPathStateRec;
typedef struct _logicOpPathStateRec {
struct {
GLenum data1[2];
GLenum data2[20];
} true;
struct {
GLenum data1; /* enable/disable */
GLenum data2; /* function */
} current;
long lock;
} logicOpPathStateRec;
typedef struct _shadePathStateRec {
struct {
GLenum data1[20];
} true;
struct {
GLenum data1; /* mode */
} current;
long lock;
} shadePathStateRec;
typedef struct _stencilPathStateRec {
struct {
GLenum data1[2];
GLint data2[2];
GLuint data3[2];
GLenum data4[20];
GLint data5[2];
GLuint data6[2];
GLenum data7[20];
GLenum data8[20];
GLenum data9[20];
} true;
struct {
GLenum data1; /* enable/disable */
GLint data2; /* clear value */
GLuint data3; /* write mask */
GLenum data4; /* function */
GLint data5; /* reference */
GLuint data6; /* mask */
GLenum data7; /* op1 */
GLenum data8; /* op2 */
GLenum data9; /* op3 */
} current;
long lock;
} stencilPathStateRec;
typedef struct _stipplePathStateRec {
struct {
GLenum data1[2];
GLint data2[2];
GLushort data3[2];
GLubyte data4[2];
} true;
struct {
GLenum data1; /* enable/disable */
GLint data2; /* line repeat */
GLushort data3; /* line stipple */
GLubyte data4[128]; /* polygon stipple */
} current;
long lock;
} stipplePathStateRec;
typedef struct _pathStateRec {
void (*Func[PATH_TOTAL])(void);
aliasPathStateRec alias;
alphaPathStateRec alpha;
blendPathStateRec blend;
depthPathStateRec depth;
ditherPathStateRec dither;
fogPathStateRec fog;
logicOpPathStateRec logicOp;
shadePathStateRec shade;
stencilPathStateRec stencil;
stipplePathStateRec stipple;
long op;
} pathStateRec;
extern pathStateRec paths;
extern void PathAlias(void);
extern void PathAlpha(void);
extern void PathBlend(void);
extern void PathDepth(void);
extern void PathDither(void);
extern void PathFog(void);
extern void PathLogicOp(void);
extern void PathShade(void);
extern void PathStencil(void);
extern void PathStipple(void);
extern GLenum PathGetList(GLenum *);
extern GLubyte PathGetRange_uchar(GLubyte *);
extern GLbyte PathGetRange_char(GLbyte *);
extern GLushort PathGetRange_ushort(GLushort *);
extern GLshort PathGetRange_short(GLshort *);
extern GLuint PathGetRange_ulong(GLuint *);
extern GLint PathGetRange_long(GLint *);
extern GLfloat PathGetRange_float(GLfloat *);
extern GLdouble PathGetRange_double(GLdouble *);
extern long PathGetToggle(void);
extern void PathInit1(unsigned long);
extern void PathInit2(long, unsigned long);
extern void PathInit3(long, unsigned long);
extern void PathInit4(void);
extern void PathReport(void);