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