1/***********************************************************
2 *      Copyright (C) 1997, Be Inc.  Copyright (C) 1999, Jake Hamby.
3 *
4 * This program is freely distributable without licensing fees
5 * and is provided without guarantee or warrantee expressed or
6 * implied. This program is -not- in the public domain.
7 *
8 *
9 *  FILE:	glutState.h
10 *
11 *	DESCRIPTION:	the global state for GLUT
12 *		(takes the place of glutint.h in the C version)
13 ***********************************************************/
14
15/***********************************************************
16 *	Headers
17 ***********************************************************/
18#include <GL/glut.h>
19#include <Application.h>
20
21#include "glutWindow.h"
22#include "glutMenu.h"
23#include "glutGameMode.h"
24
25/***********************************************************
26 *	CLASS:	GlutState
27 *
28 *	DESCRIPTION:	all the global state variables
29 ***********************************************************/
30struct GlutState {
31	BApplication *display;
32	thread_id appthread;
33
34	int initX, initY;			// initial window position
35	int initWidth, initHeight;	// initial window size
36	unsigned int displayMode;	// initial display mode
37	char *displayString;		// verbose display mode
38
39	GlutWindow *currentWindow;	// current window
40	GlutMenu *currentMenu;		// current menu
41
42	GlutWindow **windowList;	// array of pointers to windows
43	int windowListSize;			// size of window list
44
45	GLUTidleCB idle;				// idle callback
46	GLUTmenuStatusCB menuStatus;	// menu status callback
47	int modifierKeys;				// only valid during keyboard callback
48	int keyRepeatMode;				// global repeat
49
50	GlutGameMode gameMode;
51
52	bool debug;					// call glGetError
53	bool quitAll;				// quit
54
55	GlutState() {
56		display = 0;
57		appthread = 0;
58		initX = initY = -1;
59		initWidth = initHeight = 300;
60		displayMode = GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH;
61		displayString = 0;
62		currentWindow = NULL;
63		currentMenu = NULL;
64		windowList = NULL;
65		windowListSize = 0;
66		idle = 0;
67		menuStatus = 0;
68		modifierKeys = ~0;
69		keyRepeatMode = GLUT_KEY_REPEAT_DEFAULT;
70		debug = quitAll = false;
71	}
72};
73
74/***********************************************************
75 *	Global variable (declared in glutInit.cpp)
76 ***********************************************************/
77extern GlutState gState;
78