about summary refs log tree commit diff
path: root/src/engine/external/glfw/lib/enable.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/external/glfw/lib/enable.c')
-rw-r--r--src/engine/external/glfw/lib/enable.c295
1 files changed, 295 insertions, 0 deletions
diff --git a/src/engine/external/glfw/lib/enable.c b/src/engine/external/glfw/lib/enable.c
new file mode 100644
index 00000000..6231a1f9
--- /dev/null
+++ b/src/engine/external/glfw/lib/enable.c
@@ -0,0 +1,295 @@
+//========================================================================

+// GLFW - An OpenGL framework

+// File:        enable.c

+// Platform:    Any

+// API version: 2.6

+// WWW:         http://glfw.sourceforge.net

+//------------------------------------------------------------------------

+// Copyright (c) 2002-2006 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.

+//

+//========================================================================

+

+#include "internal.h"

+

+

+//************************************************************************

+//****                  GLFW internal functions                       ****

+//************************************************************************

+

+//========================================================================

+// Enable (show) mouse cursor

+//========================================================================

+

+static void _glfwEnableMouseCursor( void )

+{

+    int CenterPosX, CenterPosY;

+

+    if( !_glfwWin.Opened || !_glfwWin.MouseLock )

+    {

+        return;

+    }

+

+    // Show mouse cursor

+    _glfwPlatformShowMouseCursor();

+

+    CenterPosX = _glfwWin.Width / 2;

+    CenterPosY = _glfwWin.Height / 2;

+

+    if( CenterPosX != _glfwInput.MousePosX || CenterPosY != _glfwInput.MousePosY )

+    {

+	_glfwPlatformSetMouseCursorPos( CenterPosX, CenterPosY );

+

+	_glfwInput.MousePosX = CenterPosX;

+	_glfwInput.MousePosY = CenterPosY;

+

+	if( _glfwWin.MousePosCallback )

+	{

+	    _glfwWin.MousePosCallback( _glfwInput.MousePosX, 

+				       _glfwInput.MousePosY );

+	}

+    }

+

+    // From now on the mouse is unlocked

+    _glfwWin.MouseLock = GL_FALSE;

+}

+

+//========================================================================

+// Disable (hide) mouse cursor

+//========================================================================

+

+static void _glfwDisableMouseCursor( void )

+{

+    if( !_glfwWin.Opened || _glfwWin.MouseLock )

+    {

+        return;

+    }

+

+    // Hide mouse cursor

+    _glfwPlatformHideMouseCursor();

+

+    // Move cursor to the middle of the window

+    _glfwPlatformSetMouseCursorPos( _glfwWin.Width>>1,

+                                    _glfwWin.Height>>1 );

+

+    // From now on the mouse is locked

+    _glfwWin.MouseLock = GL_TRUE;

+}

+

+

+//========================================================================

+// _glfwEnableStickyKeys() - Enable sticky keys

+// _glfwDisableStickyKeys() - Disable sticky keys

+//========================================================================

+

+static void _glfwEnableStickyKeys( void )

+{

+    _glfwInput.StickyKeys = 1;

+}

+

+static void _glfwDisableStickyKeys( void )

+{

+    int i;

+

+    _glfwInput.StickyKeys = 0;

+

+    // Release all sticky keys

+    for( i = 0; i <= GLFW_KEY_LAST; i ++ )

+    {

+        if( _glfwInput.Key[ i ] == 2 )

+        {

+            _glfwInput.Key[ i ] = 0;

+        }

+    }

+}

+

+

+//========================================================================

+// _glfwEnableStickyMouseButtons() - Enable sticky mouse buttons

+// _glfwDisableStickyMouseButtons() - Disable sticky mouse buttons

+//========================================================================

+

+static void _glfwEnableStickyMouseButtons( void )

+{

+    _glfwInput.StickyMouseButtons = 1;

+}

+

+static void _glfwDisableStickyMouseButtons( void )

+{

+    int i;

+

+    _glfwInput.StickyMouseButtons = 0;

+

+    // Release all sticky mouse buttons

+    for( i = 0; i <= GLFW_MOUSE_BUTTON_LAST; i ++ )

+    {

+        if( _glfwInput.MouseButton[ i ] == 2 )

+        {

+            _glfwInput.MouseButton[ i ] = 0;

+        }

+    }

+}

+

+

+//========================================================================

+// _glfwEnableSystemKeys() - Enable system keys

+// _glfwDisableSystemKeys() - Disable system keys

+//========================================================================

+

+static void _glfwEnableSystemKeys( void )

+{

+    if( !_glfwWin.SysKeysDisabled )

+    {

+        return;

+    }

+

+    _glfwPlatformEnableSystemKeys();

+

+    // Indicate that system keys are no longer disabled

+    _glfwWin.SysKeysDisabled = GL_FALSE;

+}

+

+static void _glfwDisableSystemKeys( void )

+{

+    if( _glfwWin.SysKeysDisabled )

+    {

+        return;

+    }

+

+    _glfwPlatformDisableSystemKeys();

+

+    // Indicate that system keys are now disabled

+    _glfwWin.SysKeysDisabled = GL_TRUE;

+}

+

+

+//========================================================================

+// _glfwEnableKeyRepeat() - Enable key repeat

+// _glfwDisableKeyRepeat() - Disable key repeat

+//========================================================================

+

+static void _glfwEnableKeyRepeat( void )

+{

+    _glfwInput.KeyRepeat = 1;

+}

+

+static void _glfwDisableKeyRepeat( void )

+{

+    _glfwInput.KeyRepeat = 0;

+}

+

+

+//========================================================================

+// _glfwEnableAutoPollEvents() - Enable automatic event polling

+// _glfwDisableAutoPollEvents() - Disable automatic event polling

+//========================================================================

+

+static void _glfwEnableAutoPollEvents( void )

+{

+    _glfwWin.AutoPollEvents = 1;

+}

+

+static void _glfwDisableAutoPollEvents( void )

+{

+    _glfwWin.AutoPollEvents = 0;

+}

+

+

+

+//************************************************************************

+//****                    GLFW user functions                         ****

+//************************************************************************

+

+//========================================================================

+// glfwEnable() - Enable certain GLFW/window/system functions.

+//========================================================================

+

+GLFWAPI void GLFWAPIENTRY glfwEnable( int token )

+{

+    // Is GLFW initialized?

+    if( !_glfwInitialized )

+    {

+        return;

+    }

+

+    switch( token )

+    {

+    case GLFW_MOUSE_CURSOR:

+        _glfwEnableMouseCursor();

+        break;

+    case GLFW_STICKY_KEYS:

+        _glfwEnableStickyKeys();

+        break;

+    case GLFW_STICKY_MOUSE_BUTTONS:

+        _glfwEnableStickyMouseButtons();

+        break;

+    case GLFW_SYSTEM_KEYS:

+        _glfwEnableSystemKeys();

+        break;

+    case GLFW_KEY_REPEAT:

+        _glfwEnableKeyRepeat();

+        break;

+    case GLFW_AUTO_POLL_EVENTS:

+        _glfwEnableAutoPollEvents();

+        break;

+    default:

+        break;

+    }

+}

+

+

+//========================================================================

+// glfwDisable() - Disable certain GLFW/window/system functions.

+//========================================================================

+

+GLFWAPI void GLFWAPIENTRY glfwDisable( int token )

+{

+    // Is GLFW initialized?

+    if( !_glfwInitialized )

+    {

+        return;

+    }

+

+    switch( token )

+    {

+    case GLFW_MOUSE_CURSOR:

+        _glfwDisableMouseCursor();

+        break;

+    case GLFW_STICKY_KEYS:

+        _glfwDisableStickyKeys();

+        break;

+    case GLFW_STICKY_MOUSE_BUTTONS:

+        _glfwDisableStickyMouseButtons();

+        break;

+    case GLFW_SYSTEM_KEYS:

+        _glfwDisableSystemKeys();

+        break;

+    case GLFW_KEY_REPEAT:

+        _glfwDisableKeyRepeat();

+        break;

+    case GLFW_AUTO_POLL_EVENTS:

+        _glfwDisableAutoPollEvents();

+        break;

+    default:

+        break;

+    }

+}

+