|
|
|
@ -68,32 +68,6 @@ static void clearScrollOffsets(void) |
|
|
|
|
////// GLFW internal API //////
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
//========================================================================
|
|
|
|
|
// Reset all window hints to their default values
|
|
|
|
|
//========================================================================
|
|
|
|
|
|
|
|
|
|
void _glfwSetDefaultWindowHints(void) |
|
|
|
|
{ |
|
|
|
|
memset(&_glfwLibrary.hints, 0, sizeof(_glfwLibrary.hints)); |
|
|
|
|
|
|
|
|
|
// The default is OpenGL with minimum version 1.0
|
|
|
|
|
_glfwLibrary.hints.clientAPI = GLFW_OPENGL_API; |
|
|
|
|
_glfwLibrary.hints.glMajor = 1; |
|
|
|
|
_glfwLibrary.hints.glMinor = 0; |
|
|
|
|
|
|
|
|
|
// The default is to show the window and allow window resizing
|
|
|
|
|
_glfwLibrary.hints.resizable = GL_TRUE; |
|
|
|
|
_glfwLibrary.hints.visible = GL_TRUE; |
|
|
|
|
|
|
|
|
|
// The default is 24 bits of color, 24 bits of depth and 8 bits of stencil
|
|
|
|
|
_glfwLibrary.hints.redBits = 8; |
|
|
|
|
_glfwLibrary.hints.greenBits = 8; |
|
|
|
|
_glfwLibrary.hints.blueBits = 8; |
|
|
|
|
_glfwLibrary.hints.depthBits = 24; |
|
|
|
|
_glfwLibrary.hints.stencilBits = 8; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//========================================================================
|
|
|
|
|
// Register window focus events
|
|
|
|
|
//========================================================================
|
|
|
|
@ -107,8 +81,8 @@ void _glfwInputWindowFocus(_GLFWwindow* window, GLboolean activated) |
|
|
|
|
|
|
|
|
|
_glfwLibrary.activeWindow = window; |
|
|
|
|
|
|
|
|
|
if (_glfwLibrary.windowFocusCallback) |
|
|
|
|
_glfwLibrary.windowFocusCallback(window, activated); |
|
|
|
|
if (window->windowFocusCallback) |
|
|
|
|
window->windowFocusCallback(window, activated); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
@ -133,8 +107,8 @@ void _glfwInputWindowFocus(_GLFWwindow* window, GLboolean activated) |
|
|
|
|
|
|
|
|
|
_glfwLibrary.activeWindow = NULL; |
|
|
|
|
|
|
|
|
|
if (_glfwLibrary.windowFocusCallback) |
|
|
|
|
_glfwLibrary.windowFocusCallback(window, activated); |
|
|
|
|
if (window->windowFocusCallback) |
|
|
|
|
window->windowFocusCallback(window, activated); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -162,8 +136,8 @@ void _glfwInputWindowSize(_GLFWwindow* window, int width, int height) |
|
|
|
|
window->width = width; |
|
|
|
|
window->height = height; |
|
|
|
|
|
|
|
|
|
if (_glfwLibrary.windowSizeCallback) |
|
|
|
|
_glfwLibrary.windowSizeCallback(window, width, height); |
|
|
|
|
if (window->windowSizeCallback) |
|
|
|
|
window->windowSizeCallback(window, width, height); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -178,8 +152,8 @@ void _glfwInputWindowIconify(_GLFWwindow* window, int iconified) |
|
|
|
|
|
|
|
|
|
window->iconified = iconified; |
|
|
|
|
|
|
|
|
|
if (_glfwLibrary.windowIconifyCallback) |
|
|
|
|
_glfwLibrary.windowIconifyCallback(window, iconified); |
|
|
|
|
if (window->windowIconifyCallback) |
|
|
|
|
window->windowIconifyCallback(window, iconified); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -199,8 +173,8 @@ void _glfwInputWindowVisibility(_GLFWwindow* window, int visible) |
|
|
|
|
|
|
|
|
|
void _glfwInputWindowDamage(_GLFWwindow* window) |
|
|
|
|
{ |
|
|
|
|
if (_glfwLibrary.windowRefreshCallback) |
|
|
|
|
_glfwLibrary.windowRefreshCallback(window); |
|
|
|
|
if (window->windowRefreshCallback) |
|
|
|
|
window->windowRefreshCallback(window); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -210,8 +184,8 @@ void _glfwInputWindowDamage(_GLFWwindow* window) |
|
|
|
|
|
|
|
|
|
void _glfwInputWindowCloseRequest(_GLFWwindow* window) |
|
|
|
|
{ |
|
|
|
|
if (_glfwLibrary.windowCloseCallback) |
|
|
|
|
window->closeRequested = _glfwLibrary.windowCloseCallback(window); |
|
|
|
|
if (window->windowCloseCallback) |
|
|
|
|
window->closeRequested = window->windowCloseCallback(window); |
|
|
|
|
else |
|
|
|
|
window->closeRequested = GL_TRUE; |
|
|
|
|
} |
|
|
|
@ -274,9 +248,6 @@ GLFWAPI GLFWwindow glfwCreateWindow(int width, int height, |
|
|
|
|
wndconfig.monitor = (_GLFWmonitor*) monitor; |
|
|
|
|
wndconfig.share = (_GLFWwindow*) share; |
|
|
|
|
|
|
|
|
|
// Reset to default values for the next call
|
|
|
|
|
_glfwSetDefaultWindowHints(); |
|
|
|
|
|
|
|
|
|
// Check the OpenGL bits of the window config
|
|
|
|
|
if (!_glfwIsValidContextConfig(&wndconfig)) |
|
|
|
|
return GL_FALSE; |
|
|
|
@ -369,6 +340,38 @@ GLFWAPI GLFWwindow glfwCreateWindow(int width, int height, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//========================================================================
|
|
|
|
|
// Reset all window hints to their default values
|
|
|
|
|
//========================================================================
|
|
|
|
|
|
|
|
|
|
void glfwDefaultWindowHints(void) |
|
|
|
|
{ |
|
|
|
|
if (!_glfwInitialized) |
|
|
|
|
{ |
|
|
|
|
_glfwSetError(GLFW_NOT_INITIALIZED, NULL); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
memset(&_glfwLibrary.hints, 0, sizeof(_glfwLibrary.hints)); |
|
|
|
|
|
|
|
|
|
// The default is OpenGL with minimum version 1.0
|
|
|
|
|
_glfwLibrary.hints.clientAPI = GLFW_OPENGL_API; |
|
|
|
|
_glfwLibrary.hints.glMajor = 1; |
|
|
|
|
_glfwLibrary.hints.glMinor = 0; |
|
|
|
|
|
|
|
|
|
// The default is to show the window and allow window resizing
|
|
|
|
|
_glfwLibrary.hints.resizable = GL_TRUE; |
|
|
|
|
_glfwLibrary.hints.visible = GL_TRUE; |
|
|
|
|
|
|
|
|
|
// The default is 24 bits of color, 24 bits of depth and 8 bits of stencil
|
|
|
|
|
_glfwLibrary.hints.redBits = 8; |
|
|
|
|
_glfwLibrary.hints.greenBits = 8; |
|
|
|
|
_glfwLibrary.hints.blueBits = 8; |
|
|
|
|
_glfwLibrary.hints.depthBits = 24; |
|
|
|
|
_glfwLibrary.hints.stencilBits = 8; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//========================================================================
|
|
|
|
|
// Set hints for creating the window
|
|
|
|
|
//========================================================================
|
|
|
|
@ -819,15 +822,17 @@ GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow handle) |
|
|
|
|
// Set callback function for window size changes
|
|
|
|
|
//========================================================================
|
|
|
|
|
|
|
|
|
|
GLFWAPI void glfwSetWindowSizeCallback(GLFWwindowsizefun cbfun) |
|
|
|
|
GLFWAPI void glfwSetWindowSizeCallback(GLFWwindow handle, GLFWwindowsizefun cbfun) |
|
|
|
|
{ |
|
|
|
|
_GLFWwindow* window = (_GLFWwindow*) handle; |
|
|
|
|
|
|
|
|
|
if (!_glfwInitialized) |
|
|
|
|
{ |
|
|
|
|
_glfwSetError(GLFW_NOT_INITIALIZED, NULL); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
_glfwLibrary.windowSizeCallback = cbfun; |
|
|
|
|
window->windowSizeCallback = cbfun; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -835,15 +840,17 @@ GLFWAPI void glfwSetWindowSizeCallback(GLFWwindowsizefun cbfun) |
|
|
|
|
// Set callback function for window close events
|
|
|
|
|
//========================================================================
|
|
|
|
|
|
|
|
|
|
GLFWAPI void glfwSetWindowCloseCallback(GLFWwindowclosefun cbfun) |
|
|
|
|
GLFWAPI void glfwSetWindowCloseCallback(GLFWwindow handle, GLFWwindowclosefun cbfun) |
|
|
|
|
{ |
|
|
|
|
_GLFWwindow* window = (_GLFWwindow*) handle; |
|
|
|
|
|
|
|
|
|
if (!_glfwInitialized) |
|
|
|
|
{ |
|
|
|
|
_glfwSetError(GLFW_NOT_INITIALIZED, NULL); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
_glfwLibrary.windowCloseCallback = cbfun; |
|
|
|
|
window->windowCloseCallback = cbfun; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -851,15 +858,17 @@ GLFWAPI void glfwSetWindowCloseCallback(GLFWwindowclosefun cbfun) |
|
|
|
|
// Set callback function for window refresh events
|
|
|
|
|
//========================================================================
|
|
|
|
|
|
|
|
|
|
GLFWAPI void glfwSetWindowRefreshCallback(GLFWwindowrefreshfun cbfun) |
|
|
|
|
GLFWAPI void glfwSetWindowRefreshCallback(GLFWwindow handle, GLFWwindowrefreshfun cbfun) |
|
|
|
|
{ |
|
|
|
|
_GLFWwindow* window = (_GLFWwindow*) handle; |
|
|
|
|
|
|
|
|
|
if (!_glfwInitialized) |
|
|
|
|
{ |
|
|
|
|
_glfwSetError(GLFW_NOT_INITIALIZED, NULL); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
_glfwLibrary.windowRefreshCallback = cbfun; |
|
|
|
|
window->windowRefreshCallback = cbfun; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -867,15 +876,17 @@ GLFWAPI void glfwSetWindowRefreshCallback(GLFWwindowrefreshfun cbfun) |
|
|
|
|
// Set callback function for window focus events
|
|
|
|
|
//========================================================================
|
|
|
|
|
|
|
|
|
|
GLFWAPI void glfwSetWindowFocusCallback(GLFWwindowfocusfun cbfun) |
|
|
|
|
GLFWAPI void glfwSetWindowFocusCallback(GLFWwindow handle, GLFWwindowfocusfun cbfun) |
|
|
|
|
{ |
|
|
|
|
_GLFWwindow* window = (_GLFWwindow*) handle; |
|
|
|
|
|
|
|
|
|
if (!_glfwInitialized) |
|
|
|
|
{ |
|
|
|
|
_glfwSetError(GLFW_NOT_INITIALIZED, NULL); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
_glfwLibrary.windowFocusCallback = cbfun; |
|
|
|
|
window->windowFocusCallback = cbfun; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -883,15 +894,17 @@ GLFWAPI void glfwSetWindowFocusCallback(GLFWwindowfocusfun cbfun) |
|
|
|
|
// Set callback function for window iconification events
|
|
|
|
|
//========================================================================
|
|
|
|
|
|
|
|
|
|
GLFWAPI void glfwSetWindowIconifyCallback(GLFWwindowiconifyfun cbfun) |
|
|
|
|
GLFWAPI void glfwSetWindowIconifyCallback(GLFWwindow handle, GLFWwindowiconifyfun cbfun) |
|
|
|
|
{ |
|
|
|
|
_GLFWwindow* window = (_GLFWwindow*) handle; |
|
|
|
|
|
|
|
|
|
if (!_glfwInitialized) |
|
|
|
|
{ |
|
|
|
|
_glfwSetError(GLFW_NOT_INITIALIZED, NULL); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
_glfwLibrary.windowIconifyCallback = cbfun; |
|
|
|
|
window->windowIconifyCallback = cbfun; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|