/****************************************************************************
*
*                      Mesa bindings for SciTech MGL
*
*                   Copyright (C) 1996 SciTech Software.
*                           All rights reserved.
*
* Filename:     mglmesa.h
* Version:      Revision: 1.1.1.1
*
* Language:     ANSI C
* Environment:  Any
*
* Description:  Header file for the Mesa/OpenGL interface bindings for the
*               SciTech MGL graphics library. Uses the MGL internal
*               device context structures to get direct access to the
*               high performance MGL rasterization functions for maximum
*               performance. Utilizes the VESA VBE/AF Accelerator Functions
*               via the MGL's accelerated device driver functions, as well
*               as basic DirectDraw accelerated functions provided by the
*               MGL.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*
****************************************************************************/

#ifndef __MGLMESA_H
#define __MGLMESA_H

#include "mgraph.h"

/*------------------------- Function Prototypes ---------------------------*/

#ifdef  __cplusplus
extern "C" {            /* Use "C" linkage when in C++ mode */
#endif

#ifndef __WINDOWS__
#define GLAPIENTRY
#endif

#ifdef  __WINDOWS__
bool    GLAPIENTRY MGLMesaInitDLL(MGLCallbacks *cb,char *version);
#endif
void    GLAPIENTRY MGLMesaChooseVisual(MGLDC *dc,MGLVisual *visual);
bool    GLAPIENTRY MGLMesaSetVisual(MGLDC *dc,MGLVisual *visual);
bool    GLAPIENTRY MGLMesaCreateContext(MGLDC *dc,bool forceMemDC);
void    GLAPIENTRY MGLMesaDestroyContext(MGLDC *dc);
void    GLAPIENTRY MGLMesaMakeCurrent(MGLDC *dc);
void    GLAPIENTRY MGLMesaSwapBuffers(MGLDC *dc,bool waitVRT);

/* Palette manipulation support. The reason we provide palette manipulation
 * routines is so that when rendering in double buffered modes with a
 * software backbuffer, the palette for the backbuffer is kept consistent
 * with the hardware front buffer.
 */

void    GLAPIENTRY MGLMesaSetPaletteEntry(MGLDC *dc,int entry,uchar red,uchar green,uchar blue);
void    GLAPIENTRY MGLMesaSetPalette(MGLDC *dc,palette_t *pal,int numColors,int startIndex);
void    GLAPIENTRY MGLMesaRealizePalette(MGLDC *dc,int numColors,int startIndex,int waitVRT);

#ifdef  __cplusplus
}                       /* End of "C" linkage for C++   */
#endif  /* __cplusplus */

#endif  /* __MGLMESA_H */