mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-16 20:38:06 +02:00
83 lines
2.6 KiB
C++
83 lines
2.6 KiB
C++
/***********************************************************
|
|
* Copyright (C) 1997, Be Inc. Copyright (C) 1999, Jake Hamby.
|
|
*
|
|
* This program is freely distributable without licensing fees
|
|
* and is provided without guarantee or warrantee expressed or
|
|
* implied. This program is -not- in the public domain.
|
|
*
|
|
*
|
|
* FILE: glutDstr.cpp
|
|
*
|
|
* DESCRIPTION: convert display string into a Be options variable
|
|
***********************************************************/
|
|
|
|
/***********************************************************
|
|
* Headers
|
|
***********************************************************/
|
|
#include <GL/glut.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
#include "glutint.h"
|
|
#include "glutState.h"
|
|
|
|
/***********************************************************
|
|
* FUNCTION: glutInitDisplayString
|
|
*
|
|
* DESCRIPTION: sets the display string variable
|
|
***********************************************************/
|
|
void APIENTRY
|
|
glutInitDisplayString(const char *string)
|
|
{
|
|
if (gState.displayString) {
|
|
free(gState.displayString);
|
|
}
|
|
if (string) {
|
|
gState.displayString = strdup(string);
|
|
if (!gState.displayString)
|
|
__glutFatalError("out of memory.");
|
|
} else
|
|
gState.displayString = NULL;
|
|
}
|
|
|
|
/***********************************************************
|
|
* FUNCTION: __glutConvertDisplayModeFromString
|
|
*
|
|
* DESCRIPTION: converts the current display mode into a BGLView
|
|
* display mode, printing warnings as appropriate.
|
|
*
|
|
* PARAMETERS: if options is non-NULL, the current display mode is
|
|
* returned in it.
|
|
*
|
|
* RETURNS: 1 if the current display mode is possible, else 0
|
|
***********************************************************/
|
|
int __glutConvertDisplayModeFromString(unsigned long *options) {
|
|
ulong newoptions = 0;
|
|
|
|
char *word = strtok(gState.displayString, " \t");
|
|
do {
|
|
char *cstr = strpbrk(word, "=><!~");
|
|
if(cstr)
|
|
*cstr = '\0';
|
|
// this is the most minimal possible parser. scan for
|
|
// options that we support, and add them to newoptions
|
|
// this will certainly cause it to accept things that we
|
|
// don't actually support, but if we don't support it, the
|
|
// program's probably not going to work anyway.
|
|
if(!strcmp(word, "alpha")) {
|
|
newoptions |= BGL_ALPHA;
|
|
} else if((!strcmp(word, "acc")) || (!strcmp(word, "acca"))) {
|
|
newoptions |= BGL_ACCUM;
|
|
} else if(!strcmp(word, "depth")) {
|
|
newoptions |= BGL_DEPTH;
|
|
} else if(!strcmp(word, "double")) {
|
|
newoptions |= BGL_DOUBLE;
|
|
} else if(!strcmp(word, "stencil")) {
|
|
newoptions |= BGL_STENCIL;
|
|
}
|
|
} while((word = strtok(0, " \t")) != 0);
|
|
|
|
if (options)
|
|
*options = newoptions;
|
|
|
|
return 1; // assume we support it
|
|
}
|