//======================================================================== // GLFW - An OpenGL framework // Platform: Any // API version: 3.0 // WWW: http://www.glfw.org/ //------------------------------------------------------------------------ // Copyright (c) 2002-2006 Marcus Geelnard // Copyright (c) 2006-2010 Camilla Berglund // // This software is provided 'as-is', without any express or implied // warranty. In no event will the authors be held liable for any damages // arising from the use of this software. // // Permission is granted to anyone to use this software for any purpose, // including commercial applications, and to alter it and redistribute it // freely, subject to the following restrictions: // // 1. The origin of this software must not be misrepresented; you must not // claim that you wrote the original software. If you use this software // in a product, an acknowledgment in the product documentation would // be appreciated but is not required. // // 2. Altered source versions must be plainly marked as such, and must not // be misrepresented as being the original software. // // 3. This notice may not be removed or altered from any source // distribution. // //======================================================================== #ifndef _internal_h_ #define _internal_h_ //======================================================================== // GLFWGLOBAL is a macro that places all global variables in the init.c // module (all other modules reference global variables as 'extern') //======================================================================== #if defined(_init_c_) #define GLFWGLOBAL #else #define GLFWGLOBAL extern #endif //======================================================================== // Input handling definitions //======================================================================== // Internal key and button state/action definitions #define GLFW_STICK 2 //------------------------------------------------------------------------ // Window opening hints (set by glfwOpenWindowHint) // A bucket of semi-random stuff bunched together for historical reasons // This is used only by the platform independent code and only to store // parameters passed to us by glfwOpenWindowHint //------------------------------------------------------------------------ typedef struct { int refreshRate; int accumRedBits; int accumGreenBits; int accumBlueBits; int accumAlphaBits; int auxBuffers; int stereo; int windowNoResize; int samples; int glMajor; int glMinor; int glForward; int glDebug; int glProfile; } _GLFWhints; //------------------------------------------------------------------------ // Platform specific definitions goes in platform.h (which also includes // glfw.h) //------------------------------------------------------------------------ #include "platform.h" //------------------------------------------------------------------------ // Parameters relating to the creation of the context and window but not // directly related to the properties of the framebuffer // This is used to pass window and context creation parameters from the // platform independent code to the platform specific code //------------------------------------------------------------------------ typedef struct { int mode; int refreshRate; int windowNoResize; int glMajor; int glMinor; int glForward; int glDebug; int glProfile; } _GLFWwndconfig; //------------------------------------------------------------------------ // Framebuffer configuration descriptor, i.e. buffers and their sizes // Also a platform specific ID used to map back to the actual backend APIs // This is used to pass framebuffer parameters from the platform independent // code to the platform specific code, and also to enumerate and select // available framebuffer configurations //------------------------------------------------------------------------ typedef struct { int redBits; int greenBits; int blueBits; int alphaBits; int depthBits; int stencilBits; int accumRedBits; int accumGreenBits; int accumBlueBits; int accumAlphaBits; int auxBuffers; int stereo; int samples; GLFWintptr platformID; } _GLFWfbconfig; //======================================================================== // System independent global variables (GLFW internals) //======================================================================== // Flag indicating if GLFW has been initialized #if defined(_init_c_) int _glfwInitialized = 0; #else GLFWGLOBAL int _glfwInitialized; #endif //======================================================================== // Prototypes for platform specific implementation functions //======================================================================== // Init/terminate int _glfwPlatformInit(void); int _glfwPlatformTerminate(void); // Enable/Disable void _glfwPlatformEnableSystemKeys(void); void _glfwPlatformDisableSystemKeys(void); // Fullscreen int _glfwPlatformGetVideoModes(GLFWvidmode* list, int maxcount); void _glfwPlatformGetDesktopMode(GLFWvidmode* mode); // OpenGL extensions int _glfwPlatformExtensionSupported(const char* extension); void* _glfwPlatformGetProcAddress(const char* procname); // Joystick int _glfwPlatformGetJoystickParam(int joy, int param); int _glfwPlatformGetJoystickPos(int joy, float* pos, int numaxes); int _glfwPlatformGetJoystickButtons(int joy, unsigned char* buttons, int numbuttons); // Time double _glfwPlatformGetTime(void); void _glfwPlatformSetTime(double time); // Window management int _glfwPlatformOpenWindow(int width, int height, const _GLFWwndconfig* wndconfig, const _GLFWfbconfig* fbconfig); void _glfwPlatformCloseWindow(void); void _glfwPlatformSetWindowTitle(const char* title); void _glfwPlatformSetWindowSize(int width, int height); void _glfwPlatformSetWindowPos(int x, int y); void _glfwPlatformIconifyWindow(void); void _glfwPlatformRestoreWindow(void); void _glfwPlatformSwapBuffers(void); void _glfwPlatformSwapInterval(int interval); void _glfwPlatformRefreshWindowParams(void); void _glfwPlatformPollEvents(void); void _glfwPlatformWaitEvents(void); void _glfwPlatformHideMouseCursor(void); void _glfwPlatformShowMouseCursor(void); void _glfwPlatformSetMouseCursorPos(int x, int y); //======================================================================== // Prototypes for platform independent internal functions //======================================================================== // Window management (window.c) void _glfwClearWindowHints(void); // Input handling (window.c) void _glfwClearInput(void); void _glfwInputDeactivation(void); void _glfwInputKey(int key, int action); void _glfwInputChar(int character, int action); void _glfwInputMouseClick(int button, int action); // OpenGL extensions (glext.c) void _glfwParseGLVersion(int* major, int* minor, int* rev); int _glfwStringInExtensionString(const char* string, const GLubyte* extensions); // Framebuffer configs const _GLFWfbconfig* _glfwChooseFBConfig(const _GLFWfbconfig* desired, const _GLFWfbconfig* alternatives, unsigned int count); #endif // _internal_h_