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#include "glutWindow.h"
21#include "glutMenu.h"
22
23/***********************************************************
24 *	CLASS:	GlutState
25 *
26 *	DESCRIPTION:	all the global state variables
27 ***********************************************************/
28struct GlutState {
29	BApplication *display;
30	thread_id appthread;
31
32	int initX, initY;			// initial window position
33	int initWidth, initHeight;	// initial window size
34	unsigned int displayMode;	// initial display mode
35	char *displayString;		// verbose display mode
36
37	GlutWindow *currentWindow;	// current window
38	GlutMenu *currentMenu;		// current menu
39
40	GlutWindow **windowList;	// array of pointers to windows
41	int windowListSize;			// size of window list
42
43	GLUTidleCB idle;				// idle callback
44	GLUTmenuStatusCB menuStatus;	// menu status callback
45	int modifierKeys;				// only valid during keyboard callback
46
47	bool debug;					// call glGetError
48	bool quitAll;				// quit
49
50	GlutState() {
51		display = 0;
52		appthread = 0;
53		initX = initY = -1;
54		initWidth = initHeight = 300;
55		displayMode = GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH;
56		displayString = 0;
57		currentWindow = 0;
58		currentMenu = 0;
59		windowList = 0;
60		windowListSize = 0;
61		idle = 0;
62		menuStatus = 0;
63		modifierKeys = ~0;
64		debug = quitAll = false;
65	}
66};
67
68/***********************************************************
69 *	Global variable (declared in glutInit.cpp)
70 ***********************************************************/
71extern GlutState gState;
72