Initiate game mode support

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37820 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Philippe Houdoin 2010-07-30 11:57:26 +00:00
parent ff973abc41
commit a5d4249c2e
7 changed files with 168 additions and 43 deletions

View File

@ -20,7 +20,7 @@ MergeObject <opengl>glut.o :
glutCursor.cpp
glutMenu.cpp
glutDstr.cpp
# glutGameMode.cpp
glutGameMode.cpp
beos_x11.cpp
# C sources

View File

@ -0,0 +1,101 @@
/*
* Copyright 2010, Haiku Inc.
* Authors:
* Philippe Houdoin <phoudoin %at% haiku-os %dot% org>
*
* Distributed under the terms of the MIT License.
*/
#include <GL/glut.h>
#include "glutint.h"
#include "glutState.h"
#include "glutBlocker.h"
#include <stdio.h>
void APIENTRY
glutGameModeString(const char *string)
{
// TODO
}
int APIENTRY
glutEnterGameMode(void)
{
// TODO
return 0;
}
void APIENTRY
glutLeaveGameMode(void)
{
// TODO
}
int APIENTRY
glutGameModeGet(GLenum pname)
{
int ret = -1;
switch( pname ) {
case GLUT_GAME_MODE_ACTIVE:
ret = gState.gameMode != NULL;
break;
case GLUT_GAME_MODE_POSSIBLE:
// TODO
break;
case GLUT_GAME_MODE_WIDTH:
if (gState.gameMode)
ret = gState.gameMode->width;
break;
case GLUT_GAME_MODE_HEIGHT:
if (gState.gameMode)
ret = gState.gameMode->height;
break;
case GLUT_GAME_MODE_PIXEL_DEPTH:
if (gState.gameMode)
ret = gState.gameMode->pixelDepth;
break;
case GLUT_GAME_MODE_REFRESH_RATE:
if (gState.gameMode)
ret = gState.gameMode->refreshRate;
break;
case GLUT_GAME_MODE_DISPLAY_CHANGED:
// TODO
break;
default:
__glutWarning( "Unknown gamemode get: %d", pname );
break;
}
return ret;
}
void APIENTRY
glutForceJoystickFunc(void)
{
/*
Forces a joystick poll and callback.
Forces the OpenGLUT joystick code to poll your
joystick(s) and to call your joystick callbacks
with the result. The operation completes, including
callbacks, before glutForceJoystickFunc() returns.
See also glutJoystickFunc()
*/
// TODO
}

View File

@ -0,0 +1,21 @@
/*
* Copyright 2010, Haiku Inc.
* Authors:
* Philippe Houdoin <phoudoin %at% haiku-os %dot% org>
*
* Distributed under the terms of the MIT License.
*/
#include <GL/glut.h>
/*! All information needed for game mode and
subwindows (handled as similarly as possible).
*/
class GlutGameMode {
public:
int width;
int height;
int pixelDepth;
int refreshRate;
};

View File

@ -17,8 +17,10 @@
***********************************************************/
#include <GL/glut.h>
#include <Application.h>
#include "glutWindow.h"
#include "glutMenu.h"
#include "glutGameMode.h"
/***********************************************************
* CLASS: GlutState
@ -45,7 +47,7 @@ struct GlutState {
int modifierKeys; // only valid during keyboard callback
int keyRepeatMode; // global repeat
bool gameMode; // game mode is active
GlutGameMode* gameMode;
bool debug; // call glGetError
bool quitAll; // quit
@ -57,14 +59,15 @@ struct GlutState {
initWidth = initHeight = 300;
displayMode = GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH;
displayString = 0;
currentWindow = 0;
currentMenu = 0;
windowList = 0;
currentWindow = NULL;
currentMenu = NULL;
windowList = NULL;
windowListSize = 0;
idle = 0;
menuStatus = 0;
modifierKeys = ~0;
keyRepeatMode = GLUT_KEY_REPEAT_DEFAULT;
gameMode = NULL;
debug = quitAll = false;
}
};

View File

@ -103,16 +103,16 @@ GlutWindow::GlutWindow(GlutWindow *nparent, const char *name,
// clear callbacks
display = __glutDefaultDisplay;
reshape = __glutDefaultReshape;
mouse = 0;
motion = 0;
passive = 0;
entry = 0;
keyboard = 0;
keyboardUp = 0;
visibility = 0;
special = 0;
specialUp = 0;
windowStatus = 0;
mouse = NULL;
motion = NULL;
passive = NULL;
entry = NULL;
keyboard = NULL;
keyboardUp = NULL;
visibility = NULL;
special = NULL;
specialUp = NULL;
windowStatus = NULL;
// clear event counters
anyevents = 1;

View File

@ -125,7 +125,7 @@ static struct name_address_pair glut_functions[] = {
{ "glutWindowStatusFunc", (const GLUTproc) glutWindowStatusFunc },
{ "glutKeyboardUpFunc", (const GLUTproc) glutKeyboardUpFunc },
{ "glutSpecialUpFunc", (const GLUTproc) glutSpecialUpFunc },
// { "glutJoystickFunc", (const GLUTproc) glutJoystickFunc },
{ "glutJoystickFunc", (const GLUTproc) glutJoystickFunc },
{ "glutSetColor", (const GLUTproc) glutSetColor },
{ "glutGetColor", (const GLUTproc) glutGetColor },
{ "glutCopyColormap", (const GLUTproc) glutCopyColormap },
@ -167,11 +167,11 @@ static struct name_address_pair glut_functions[] = {
{ "glutReportErrors", (const GLUTproc) glutReportErrors },
{ "glutIgnoreKeyRepeat", (const GLUTproc) glutIgnoreKeyRepeat },
{ "glutSetKeyRepeat", (const GLUTproc) glutSetKeyRepeat },
// { "glutForceJoystickFunc", (const GLUTproc) glutForceJoystickFunc },
// { "glutGameModeString", (const GLUTproc) glutGameModeString },
// { "glutEnterGameMode", (const GLUTproc) glutEnterGameMode },
// { "glutLeaveGameMode", (const GLUTproc) glutLeaveGameMode },
// { "glutGameModeGet", (const GLUTproc) glutGameModeGet },
{ "glutForceJoystickFunc", (const GLUTproc) glutForceJoystickFunc },
{ "glutGameModeString", (const GLUTproc) glutGameModeString },
{ "glutEnterGameMode", (const GLUTproc) glutEnterGameMode },
{ "glutLeaveGameMode", (const GLUTproc) glutLeaveGameMode },
{ "glutGameModeGet", (const GLUTproc) glutGameModeGet },
{ NULL, NULL }
};