/*
===========================================================================
Copyright (C) 1997-2006 Id Software, Inc.

This file is part of Quake 2 Tools source code.

Quake 2 Tools source code is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.

Quake 2 Tools source code is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Quake 2 Tools source code; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
===========================================================================
*/

// This .h file contains constants, typedefs, etc. for Intergraph
// extensions to OpenGL.  These extensions are:
//
//            Multiple Palette Extension
//            Texture Object Extension

#define GL_INGR_multiple_palette        1
#define GL_EXT_texture_object           1


// New constants and typedefs for the Multiple Palette Extension
#define GL_PALETTE_INGR                 0x80c0
#define GL_MAX_PALETTES_INGR            0x80c1
#define GL_MAX_PALETTE_ENTRIES_INGR     0x80c2
#define GL_CURRENT_PALETTE_INGR         0x80c3
#define GL_PALETTE_WRITEMASK_INGR       0x80c4
#define GL_CURRENT_RASTER_PALETTE_INGR	0x80c5
#define GL_PALETTE_CLEAR_VALUE_INGR	0x80c6

// Function prototypes for the Multiple Palette Extension routines
typedef void (APIENTRY *PALETTEFUNCPTR)(GLuint);
typedef void (APIENTRY *PALETTEMASKFUNCPTR)(GLboolean);
typedef void (APIENTRY *WGLLOADPALETTEFUNCPTR)(GLuint, GLsizei, GLuint *);
typedef void (APIENTRY *CLEARPALETTEFUNCPTR)(GLuint);


// New Constants and typedefs for the Texture Object Extension
#define GL_TEXTURE_PRIORITY_EXT         0x8066
#define GL_TEXTURE_RESIDENT_EXT         0x8067
#define GL_TEXTURE_1D_BINDING_EXT       0x8068
#define GL_TEXTURE_2D_BINDING_EXT       0x8069

// Function prototypes for the Texture Object Extension routines
typedef GLboolean (APIENTRY *ARETEXRESFUNCPTR)(GLsizei, const GLuint *,
                    const GLboolean *);
typedef void (APIENTRY *BINDTEXFUNCPTR)(GLenum, GLuint);
typedef void (APIENTRY *DELTEXFUNCPTR)(GLsizei, const GLuint *);
typedef void (APIENTRY *GENTEXFUNCPTR)(GLsizei, GLuint *);
typedef GLboolean (APIENTRY *ISTEXFUNCPTR)(GLuint);
typedef void (APIENTRY *PRIORTEXFUNCPTR)(GLsizei, const GLuint *,
                    const GLclampf *);


/* OpenGL ExtEscape escape function constants */
#ifndef OPENGL_GETINFO
#define OPENGL_GETINFO  4353        /* for OpenGL ExtEscape */
#endif

// OPENGL_GETINFO ExtEscape sub-escape numbers.  They are defined by
// Microsoft.

#ifndef OPENGL_GETINFO_DRVNAME

#define OPENGL_GETINFO_DRVNAME  0


// Input structure for OPENGL_GETINFO ExtEscape.

typedef struct _OPENGLGETINFO
{
    ULONG   ulSubEsc;
} OPENGLGETINFO, *POPENGLGETINFO;


// Output structure for OPENGL_GETINFO_DRVNAME ExtEscape.

typedef struct _GLDRVNAMERET
{
    ULONG   ulVersion;              // must be 1 for this version
    ULONG   ulDriverVersion;        // driver specific version number
    WCHAR   awch[MAX_PATH+1];
} GLDRVNAMERET, *PGLDRVNAMERET;

#endif


