text: /*
   * Mesa 3-D graphics library
   * Version:  6.1
   * 
   * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
   * 
   * Permission is hereby granted, free of charge, to any person obtaining a
   * copy of this software and associated documentation files (the "Software"),
   * to deal in the Software without restriction, including without limitation
   * the rights to use, copy, modify, merge, publish, distribute, sublicense,
   * and/or sell copies of the Software, and to permit persons to whom the
   * Software is furnished to do so, subject to the following conditions:
   * 
   * The above copyright notice and this permission notice shall be included
   * in all copies or substantial portions of the Software.
   * 
   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
   * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
   * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
   * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
   * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   */
  
  /*
   * DOS/DJGPP device driver for Mesa
   *
   *  Author: Daniel Borca
   *  Email : dborca@users.sourceforge.net
   *  Web   : http://www.geocities.com/dborca
   */
  
  
  #ifndef DMESA_H_included
  #define DMESA_H_included
  
  #define DMESA_MAJOR_VERSION 6
  #define DMESA_MINOR_VERSION 5
  
  /* Sample Usage:
   *
   * 1. Call DMesaCreateVisual() to initialize graphics.
   * 2. Call DMesaCreateContext() to create a DMesa rendering context.
   * 3. Call DMesaCreateBuffer() to define the window.
   * 4. Call DMesaMakeCurrent() to bind the DMesaBuffer to a DMesaContext.
   * 5. Make gl* calls to render your graphics.
   * 6. Use DMesaSwapBuffers() when double buffering to swap front/back buffers.
   * 7. Before exiting, destroy DMesaBuffer, DMesaContext and DMesaVisual.
   */
  
  typedef struct dmesa_context *DMesaContext;
  typedef struct dmesa_visual *DMesaVisual;
  typedef struct dmesa_buffer *DMesaBuffer;
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  /*
   * Create a new Visual and set graphics mode.
   */
  DMesaVisual DMesaCreateVisual (GLint width,        /* X res */
                                 GLint height,       /* Y res */
                                 GLint colDepth,     /* BPP */
                                 GLint refresh,      /* refresh rate: 0=default */
                                 GLboolean dbFlag,   /* double-buffered */
                                 GLboolean rgbFlag,  /* RGB mode */
                                 GLint alphaSize,    /* requested bits/alpha */
                                 GLint depthSize,    /* requested bits/depth */
                                 GLint stencilSize,  /* requested bits/stencil */
                                 GLint accumSize);   /* requested bits/accum */
  
  /*
   * Destroy Visual and restore screen.
   */
  void DMesaDestroyVisual (DMesaVisual v);
  
  
  
  /*
   * Create a new Context for rendering.
   */
  DMesaContext DMesaCreateContext (DMesaVisual visual, DMesaContext share);
  
  /*
   * Destroy Context.
   */
  void DMesaDestroyContext (DMesaContext c);
  
  /*
   * Return a handle to the current context.
   */
  DMesaContext DMesaGetCurrentContext (void);
  
  
  
  /*
   * Create a new Buffer (window).
   */
  DMesaBuffer DMesaCreateBuffer (DMesaVisual visual,
                                 GLint xpos, GLint ypos,
                                 GLint width, GLint height);
  
  /*
   * Destroy Buffer.
   */
  void DMesaDestroyBuffer (DMesaBuffer b);
  
  /*
   * Return a handle to the current buffer.
   */
  DMesaBuffer DMesaGetCurrentBuffer (void);
  
  /*
   * Swap the front and back buffers for the given Buffer.
   * No action is taken if the buffer is not double buffered.
   */
  void DMesaSwapBuffers (DMesaBuffer b);
  
  /*
   * Bind Buffer to Context and make the Context the current one.
   */
  GLboolean DMesaMakeCurrent (DMesaContext c, DMesaBuffer b);
  
  
  
  /*
   * Move/Resize current Buffer.
   */
  GLboolean DMesaMoveBuffer (GLint xpos, GLint ypos);
  GLboolean DMesaResizeBuffer (GLint width, GLint height);
  
  /*
   * Set palette index, using normalized values.
   */
  void DMesaSetCI (int ndx, GLfloat red, GLfloat green, GLfloat blue);
  
  /*
   * DMesa functions
   */
  typedef void (*DMesaProc) ();
  DMesaProc DMesaGetProcAddress (const char *name);
  
  /*
   * DMesa state retrieval.
   */
  #define DMESA_GET_SCREEN_SIZE 0x0100
  #define DMESA_GET_DRIVER_CAPS 0x0200
  #define DMESA_GET_VIDEO_MODES 0x0300
  #define DMESA_GET_BUFFER_ADDR 0x0400
  
  #define DMESA_DRIVER_DBL_BIT 0x1 /* double-buffered */
  #define DMESA_DRIVER_YUP_BIT 0x2 /* lower-left window origin */
  int DMesaGetIntegerv (GLenum pname, GLint *params);
  
  #ifdef __cplusplus
  }
  #endif
  
  #endif
  