/* * DOS/DJGPP Mesa Utility Toolkit * Version: 1.0 * * Copyright (C) 2005 Daniel Borca 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 * DANIEL BORCA 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. */ #include #include #include #include #include "internal.h" char *__glutProgramName = NULL; GLUTvisual _glut_visual = { 16, 8, 16, 8, 16, /* bpp, alpha, depth, stencil, accum */ { 0, 0 }, 0, /* geometry */ 0 /* flags */ }; GLUTdefault _glut_default = { 0, 0, /* glutInitWindowPosition */ 300, 300, /* glutInitWindowSize */ 0 /* glutInitDisplayMode */ }; GLuint _glut_fps = 0; static char *init_string; void _glut_fatal (char *format,...) { va_list args; va_start(args, format); fprintf(stderr, "GLUT: Fatal Error in %s: ", __glutProgramName ? __glutProgramName : "(unamed)"); vfprintf(stderr, format, args); va_end(args); putc('\n', stderr); exit(1); } /* strdup is actually not a standard ANSI C or POSIX routine * so implement a private one for GLUT. */ static char * _glut_strdup (const char *string) { if (string != NULL) { int len = strlen(string) + 1; char *p = malloc(len); if (p != NULL) { return strcpy(p, string); } } return NULL; } void APIENTRY glutInit (int *argc, char **argv) { char *str; const char *env; if ((env = getenv("DMESA_GLUT_BPP")) != NULL) { _glut_visual.bpp = atoi(env); } if ((env = getenv("DMESA_GLUT_ALPHA")) != NULL) { _glut_visual.alpha = atoi(env); } if ((env = getenv("DMESA_GLUT_DEPTH")) != NULL) { _glut_visual.depth = atoi(env); } if ((env = getenv("DMESA_GLUT_STENCIL")) != NULL) { _glut_visual.stencil = atoi(env); } if ((env = getenv("DMESA_GLUT_ACCUM")) != NULL) { _glut_visual.accum = atoi(env); } if ((env = getenv("DMESA_GLUT_REFRESH")) != NULL) { _glut_visual.refresh = atoi(env); } /* Determine program name. */ str = strrchr(argv[0], '/'); if (str == NULL) { str = argv[0]; } else { str++; } __glutProgramName = _glut_strdup(str); /* check if GLUT_FPS env var is set */ if ((env = getenv("GLUT_FPS")) != NULL) { if ((_glut_fps = atoi(env)) <= 0) { _glut_fps = 5000; /* 5000 milliseconds */ } } /* Initialize timer */ glutGet(GLUT_ELAPSED_TIME); } void APIENTRY glutInitDisplayMode (unsigned int mode) { _glut_default.mode = mode; } void APIENTRY glutInitWindowPosition (int x, int y) { _glut_default.x = x; _glut_default.y = y; } void APIENTRY glutInitWindowSize (int width, int height) { _glut_default.width = width; _glut_default.height = height; } void APIENTRY glutInitDisplayString (const char *string) { init_string = _glut_strdup(string); } void APIENTRY glutSetOption (GLenum pname, int value) { switch (pname) { case GLUT_INIT_WINDOW_X: _glut_default.x = value; break; case GLUT_INIT_WINDOW_Y: _glut_default.y = value; break; } } void APIENTRY glutForceJoystickFunc (void) { } void APIENTRY glutIgnoreKeyRepeat (int ignore) { } void APIENTRY glutSetKeyRepeat (int repeatMode) { } void APIENTRY glutVideoPan (int x, int y, int w, int h) { } int APIENTRY glutVideoResizeGet( GLenum eWhat ) { return 0; } void APIENTRY glutSetupVideoResizing (void) { } void APIENTRY glutStopVideoResizing (void) { } void APIENTRY glutVideoResize (int x, int y, int w, int h) { }