\r
/* -- PRIVATE FUNCTIONS --------------------------------------------------- */\r
\r
+extern void fghSetCursor ( SFG_Window *window, int cursorID );\r
+extern void fghWarpPointer ( int x, int y );\r
+\r
#if TARGET_HOST_POSIX_X11 || TARGET_HOST_MAC_OSX || TARGET_HOST_SOLARIS\r
#include <X11/cursorfont.h>\r
\r
#endif\r
\r
\r
-#if TARGET_HOST_MS_WINDOWS\r
-static void fghSetCursor ( SFG_Window *window, int cursorID )\r
-{\r
- /*\r
- * Joe Krahn is re-writing the following code.\r
- */\r
- /* Set the cursor AND change it for this window class. */\r
-#if !defined(__MINGW64__) && _MSC_VER <= 1200\r
-# define MAP_CURSOR(a,b) \\r
- case a: \\r
- SetCursor( LoadCursor( NULL, b ) ); \\r
- SetClassLong( window->Window.Handle, \\r
- GCL_HCURSOR, \\r
- ( LONG )LoadCursor( NULL, b ) ); \\r
- break;\r
- /* Nuke the cursor AND change it for this window class. */\r
-# define ZAP_CURSOR(a,b) \\r
- case a: \\r
- SetCursor( NULL ); \\r
- SetClassLong( window->Window.Handle, \\r
- GCL_HCURSOR, ( LONG )NULL ); \\r
- break;\r
-#else\r
-# define MAP_CURSOR(a,b) \\r
- case a: \\r
- SetCursor( LoadCursor( NULL, b ) ); \\r
- SetClassLongPtr( window->Window.Handle, \\r
- GCLP_HCURSOR, \\r
- ( LONG )( LONG_PTR )LoadCursor( NULL, b ) ); \\r
- break;\r
- /* Nuke the cursor AND change it for this window class. */\r
-# define ZAP_CURSOR(a,b) \\r
- case a: \\r
- SetCursor( NULL ); \\r
- SetClassLongPtr( window->Window.Handle, \\r
- GCLP_HCURSOR, ( LONG )( LONG_PTR )NULL ); \\r
- break;\r
-#endif\r
-\r
- switch( cursorID )\r
- {\r
- MAP_CURSOR( GLUT_CURSOR_RIGHT_ARROW, IDC_ARROW );\r
- MAP_CURSOR( GLUT_CURSOR_LEFT_ARROW, IDC_ARROW );\r
- MAP_CURSOR( GLUT_CURSOR_INFO, IDC_HELP );\r
- MAP_CURSOR( GLUT_CURSOR_DESTROY, IDC_CROSS );\r
- MAP_CURSOR( GLUT_CURSOR_HELP, IDC_HELP );\r
- MAP_CURSOR( GLUT_CURSOR_CYCLE, IDC_SIZEALL );\r
- MAP_CURSOR( GLUT_CURSOR_SPRAY, IDC_CROSS );\r
- MAP_CURSOR( GLUT_CURSOR_WAIT, IDC_WAIT );\r
- MAP_CURSOR( GLUT_CURSOR_TEXT, IDC_IBEAM );\r
- MAP_CURSOR( GLUT_CURSOR_CROSSHAIR, IDC_CROSS );\r
- MAP_CURSOR( GLUT_CURSOR_UP_DOWN, IDC_SIZENS );\r
- MAP_CURSOR( GLUT_CURSOR_LEFT_RIGHT, IDC_SIZEWE );\r
- MAP_CURSOR( GLUT_CURSOR_TOP_SIDE, IDC_ARROW ); /* XXX ToDo */\r
- MAP_CURSOR( GLUT_CURSOR_BOTTOM_SIDE, IDC_ARROW ); /* XXX ToDo */\r
- MAP_CURSOR( GLUT_CURSOR_LEFT_SIDE, IDC_ARROW ); /* XXX ToDo */\r
- MAP_CURSOR( GLUT_CURSOR_RIGHT_SIDE, IDC_ARROW ); /* XXX ToDo */\r
- MAP_CURSOR( GLUT_CURSOR_TOP_LEFT_CORNER, IDC_SIZENWSE );\r
- MAP_CURSOR( GLUT_CURSOR_TOP_RIGHT_CORNER, IDC_SIZENESW );\r
- MAP_CURSOR( GLUT_CURSOR_BOTTOM_RIGHT_CORNER, IDC_SIZENWSE );\r
- MAP_CURSOR( GLUT_CURSOR_BOTTOM_LEFT_CORNER, IDC_SIZENESW );\r
- MAP_CURSOR( GLUT_CURSOR_INHERIT, IDC_ARROW ); /* XXX ToDo */\r
- ZAP_CURSOR( GLUT_CURSOR_NONE, NULL );\r
- MAP_CURSOR( GLUT_CURSOR_FULL_CROSSHAIR, IDC_CROSS ); /* XXX ToDo */\r
-\r
- default:\r
- fgError( "Unknown cursor type: %d", cursorID );\r
- break;\r
- }\r
-}\r
-\r
-\r
-static void fghWarpPointer ( int x, int y )\r
-{\r
- POINT coords;\r
- coords.x = x;\r
- coords.y = y;\r
-\r
- /* ClientToScreen() translates {coords} for us. */\r
- ClientToScreen( fgStructure.CurrentWindow->Window.Handle, &coords );\r
- SetCursorPos( coords.x, coords.y );\r
-}\r
-#endif\r
-\r
-\r
/* -- INTERNAL FUNCTIONS ---------------------------------------------------- */\r
void fgSetCursor ( SFG_Window *window, int cursorID )\r
{\r
+/*\r
+ * freeglut_cursor_mswin.c\r
+ *\r
+ * The Windows-specific mouse cursor related stuff.\r
+ *\r
+ * Copyright (c) 2012 Stephen J. Baker. All Rights Reserved.\r
+ * Written by John F. Fay, <fayjf@sourceforge.net>\r
+ * Creation date: Thu Jan 19, 2012\r
+ *\r
+ * Permission is hereby granted, free of charge, to any person obtaining a\r
+ * copy of this software and associated documentation files (the "Software"),\r
+ * to deal in the Software without restriction, including without limitation\r
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
+ * and/or sell copies of the Software, and to permit persons to whom the\r
+ * Software is furnished to do so, subject to the following conditions:\r
+ *\r
+ * The above copyright notice and this permission notice shall be included\r
+ * in all copies or substantial portions of the Software.\r
+ *\r
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\r
+ * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\r
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
+ */\r
+\r
+#include <GL/freeglut.h>\r
+#include "freeglut_internal_mswin.h"\r
+\r
+\r
+\r
+void fghSetCursor ( SFG_Window *window, int cursorID )\r
+{\r
+ /*\r
+ * Joe Krahn is re-writing the following code.\r
+ */\r
+ /* Set the cursor AND change it for this window class. */\r
+#if !defined(__MINGW64__) && _MSC_VER <= 1200\r
+# define MAP_CURSOR(a,b) \\r
+ case a: \\r
+ SetCursor( LoadCursor( NULL, b ) ); \\r
+ SetClassLong( window->Window.Handle, \\r
+ GCL_HCURSOR, \\r
+ ( LONG )LoadCursor( NULL, b ) ); \\r
+ break;\r
+ /* Nuke the cursor AND change it for this window class. */\r
+# define ZAP_CURSOR(a,b) \\r
+ case a: \\r
+ SetCursor( NULL ); \\r
+ SetClassLong( window->Window.Handle, \\r
+ GCL_HCURSOR, ( LONG )NULL ); \\r
+ break;\r
+#else\r
+# define MAP_CURSOR(a,b) \\r
+ case a: \\r
+ SetCursor( LoadCursor( NULL, b ) ); \\r
+ SetClassLongPtr( window->Window.Handle, \\r
+ GCLP_HCURSOR, \\r
+ ( LONG )( LONG_PTR )LoadCursor( NULL, b ) ); \\r
+ break;\r
+ /* Nuke the cursor AND change it for this window class. */\r
+# define ZAP_CURSOR(a,b) \\r
+ case a: \\r
+ SetCursor( NULL ); \\r
+ SetClassLongPtr( window->Window.Handle, \\r
+ GCLP_HCURSOR, ( LONG )( LONG_PTR )NULL ); \\r
+ break;\r
+#endif\r
+\r
+ switch( cursorID )\r
+ {\r
+ MAP_CURSOR( GLUT_CURSOR_RIGHT_ARROW, IDC_ARROW );\r
+ MAP_CURSOR( GLUT_CURSOR_LEFT_ARROW, IDC_ARROW );\r
+ MAP_CURSOR( GLUT_CURSOR_INFO, IDC_HELP );\r
+ MAP_CURSOR( GLUT_CURSOR_DESTROY, IDC_CROSS );\r
+ MAP_CURSOR( GLUT_CURSOR_HELP, IDC_HELP );\r
+ MAP_CURSOR( GLUT_CURSOR_CYCLE, IDC_SIZEALL );\r
+ MAP_CURSOR( GLUT_CURSOR_SPRAY, IDC_CROSS );\r
+ MAP_CURSOR( GLUT_CURSOR_WAIT, IDC_WAIT );\r
+ MAP_CURSOR( GLUT_CURSOR_TEXT, IDC_IBEAM );\r
+ MAP_CURSOR( GLUT_CURSOR_CROSSHAIR, IDC_CROSS );\r
+ MAP_CURSOR( GLUT_CURSOR_UP_DOWN, IDC_SIZENS );\r
+ MAP_CURSOR( GLUT_CURSOR_LEFT_RIGHT, IDC_SIZEWE );\r
+ MAP_CURSOR( GLUT_CURSOR_TOP_SIDE, IDC_ARROW ); /* XXX ToDo */\r
+ MAP_CURSOR( GLUT_CURSOR_BOTTOM_SIDE, IDC_ARROW ); /* XXX ToDo */\r
+ MAP_CURSOR( GLUT_CURSOR_LEFT_SIDE, IDC_ARROW ); /* XXX ToDo */\r
+ MAP_CURSOR( GLUT_CURSOR_RIGHT_SIDE, IDC_ARROW ); /* XXX ToDo */\r
+ MAP_CURSOR( GLUT_CURSOR_TOP_LEFT_CORNER, IDC_SIZENWSE );\r
+ MAP_CURSOR( GLUT_CURSOR_TOP_RIGHT_CORNER, IDC_SIZENESW );\r
+ MAP_CURSOR( GLUT_CURSOR_BOTTOM_RIGHT_CORNER, IDC_SIZENWSE );\r
+ MAP_CURSOR( GLUT_CURSOR_BOTTOM_LEFT_CORNER, IDC_SIZENESW );\r
+ MAP_CURSOR( GLUT_CURSOR_INHERIT, IDC_ARROW ); /* XXX ToDo */\r
+ ZAP_CURSOR( GLUT_CURSOR_NONE, NULL );\r
+ MAP_CURSOR( GLUT_CURSOR_FULL_CROSSHAIR, IDC_CROSS ); /* XXX ToDo */\r
+\r
+ default:\r
+ fgError( "Unknown cursor type: %d", cursorID );\r
+ break;\r
+ }\r
+}\r
+\r
+\r
+void fghWarpPointer ( int x, int y )\r
+{\r
+ POINT coords;\r
+ coords.x = x;\r
+ coords.y = y;\r
+\r
+ /* ClientToScreen() translates {coords} for us. */\r
+ ClientToScreen( fgStructure.CurrentWindow->Window.Handle, &coords );\r
+ SetCursorPos( coords.x, coords.y );\r
+}\r
+\r
+\r
+/*\r
+ * freeglut_internal_mswin.h\r
+ *\r
+ * The freeglut library private include file.\r
+ *\r
+ * Copyright (c) 2012 Stephen J. Baker. All Rights Reserved.\r
+ * Written by John F. Fay, <fayjf@sourceforge.net>\r
+ * Creation date: Thu Jan 19, 2012\r
+ *\r
+ * Permission is hereby granted, free of charge, to any person obtaining a\r
+ * copy of this software and associated documentation files (the "Software"),\r
+ * to deal in the Software without restriction, including without limitation\r
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
+ * and/or sell copies of the Software, and to permit persons to whom the\r
+ * Software is furnished to do so, subject to the following conditions:\r
+ *\r
+ * The above copyright notice and this permission notice shall be included\r
+ * in all copies or substantial portions of the Software.\r
+ *\r
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\r
+ * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\r
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
+ */\r
+\r
+#ifndef FREEGLUT_INTERNAL_MSWIN_H\r
+#define FREEGLUT_INTERNAL_MSWIN_H\r
+\r
+\r
+\r
+#include "..\Common\freeglut_internal.h"\r
+\r
+\r
+#endif /* FREEGLUT_INTERNAL_MSWIN_H */
\ No newline at end of file