diff options
Diffstat (limited to 'src/glut/dos/init.c')
-rw-r--r-- | src/glut/dos/init.c | 223 |
1 files changed, 223 insertions, 0 deletions
diff --git a/src/glut/dos/init.c b/src/glut/dos/init.c new file mode 100644 index 000000000..3a98dcf0a --- /dev/null +++ b/src/glut/dos/init.c @@ -0,0 +1,223 @@ +/* + * 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 <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#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) +{ +} |