[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37323] branches/merwin-spacenav: migrated NDOF code from soc-2010-merwin, SpaceNavigator now works on Mac blender

Mike Erwin significant.bit at gmail.com
Wed Jun 8 23:18:04 CEST 2011


Revision: 37323
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37323
Author:   merwin
Date:     2011-06-08 21:18:03 +0000 (Wed, 08 Jun 2011)
Log Message:
-----------
migrated NDOF code from soc-2010-merwin, SpaceNavigator now works on Mac blender

Modified Paths:
--------------
    branches/merwin-spacenav/build_files/scons/config/darwin-config.py
    branches/merwin-spacenav/intern/ghost/GHOST_C-api.h
    branches/merwin-spacenav/intern/ghost/GHOST_ISystem.h
    branches/merwin-spacenav/intern/ghost/GHOST_Types.h
    branches/merwin-spacenav/intern/ghost/SConscript
    branches/merwin-spacenav/intern/ghost/intern/GHOST_C-api.cpp
    branches/merwin-spacenav/intern/ghost/intern/GHOST_EventNDOF.h
    branches/merwin-spacenav/intern/ghost/intern/GHOST_NDOFManager.cpp
    branches/merwin-spacenav/intern/ghost/intern/GHOST_NDOFManager.h
    branches/merwin-spacenav/intern/ghost/intern/GHOST_System.cpp
    branches/merwin-spacenav/intern/ghost/intern/GHOST_System.h
    branches/merwin-spacenav/intern/ghost/intern/GHOST_SystemCocoa.h
    branches/merwin-spacenav/intern/ghost/intern/GHOST_SystemCocoa.mm
    branches/merwin-spacenav/source/blender/editors/space_view3d/view3d_edit.c
    branches/merwin-spacenav/source/blender/editors/space_view3d/view3d_intern.h
    branches/merwin-spacenav/source/blender/editors/space_view3d/view3d_ops.c
    branches/merwin-spacenav/source/blender/windowmanager/WM_types.h
    branches/merwin-spacenav/source/blender/windowmanager/intern/wm_event_system.c
    branches/merwin-spacenav/source/blender/windowmanager/wm_event_types.h

Added Paths:
-----------
    branches/merwin-spacenav/intern/ghost/intern/GHOST_NDOFManagerCocoa.h
    branches/merwin-spacenav/intern/ghost/intern/GHOST_NDOFManagerCocoa.mm
    branches/merwin-spacenav/intern/ghost/intern/GHOST_NDOFManagerWin32.h
    branches/merwin-spacenav/intern/ghost/intern/GHOST_NDOFManagerX11.h

Modified: branches/merwin-spacenav/build_files/scons/config/darwin-config.py
===================================================================
--- branches/merwin-spacenav/build_files/scons/config/darwin-config.py	2011-06-08 19:05:17 UTC (rev 37322)
+++ branches/merwin-spacenav/build_files/scons/config/darwin-config.py	2011-06-08 21:18:03 UTC (rev 37323)
@@ -264,8 +264,10 @@
     BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse']
 elif MACOSX_ARCHITECTURE == 'x86_64':
     BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-msse2']
-    
 
+# SpaceNavigator and related 3D mice
+WITH_BF_SPACENAV = True
+
 #############################################################################
 ###################  various compile settings and flags    ##################
 #############################################################################
@@ -294,6 +296,10 @@
 	else:
 		PLATFORM_LINKFLAGS = PLATFORM_LINKFLAGS+['-framework','QuickTime']
 
+if WITH_BF_SPACENAV:
+	PLATFORM_LINKFLAGS = PLATFORM_LINKFLAGS + ['-weak_framework','3DconnexionClient']
+	CXXFLAGS = CXXFLAGS + ['-fpascal-strings'] # they use an old-skool Mac programming style
+
 #note to build succesfully on 10.3.9 SDK you need to patch  10.3.9 by adding the SystemStubs.a lib from 10.4
 LLIBS = ['stdc++', 'SystemStubs']
 

Modified: branches/merwin-spacenav/intern/ghost/GHOST_C-api.h
===================================================================
--- branches/merwin-spacenav/intern/ghost/GHOST_C-api.h	2011-06-08 19:05:17 UTC (rev 37322)
+++ branches/merwin-spacenav/intern/ghost/GHOST_C-api.h	2011-06-08 21:18:03 UTC (rev 37323)
@@ -288,21 +288,6 @@
  * @param windowhandle The handle to the window
  */
 extern GHOST_TSuccess GHOST_EndProgressBar(GHOST_WindowHandle windowhandle);
-	
-	
-/***************************************************************************************
- ** N-degree of freedom device management functionality
- ***************************************************************************************/
- 
-/**
-* Open N-degree of freedom devices
- */
-extern int GHOST_OpenNDOF(GHOST_SystemHandle systemhandle, 
-                           GHOST_WindowHandle windowhandle,
-                          GHOST_NDOFLibraryInit_fp setNdofLibraryInit, 
-                          GHOST_NDOFLibraryShutdown_fp setNdofLibraryShutdown,
-                          GHOST_NDOFDeviceOpen_fp setNdofDeviceOpen
-                          );
 
 /***************************************************************************************
  ** Cursor management functionality

Modified: branches/merwin-spacenav/intern/ghost/GHOST_ISystem.h
===================================================================
--- branches/merwin-spacenav/intern/ghost/GHOST_ISystem.h	2011-06-08 19:05:17 UTC (rev 37322)
+++ branches/merwin-spacenav/intern/ghost/GHOST_ISystem.h	2011-06-08 21:18:03 UTC (rev 37323)
@@ -298,22 +298,6 @@
 	 */
 	virtual GHOST_TSuccess removeEventConsumer(GHOST_IEventConsumer* consumer) = 0;
 
-	 /***************************************************************************************
-	 ** N-degree of freedom device management functionality
-	 ***************************************************************************************/
-
-   /**
-    * Starts the N-degree of freedom device manager
-    */
-   virtual int openNDOF(GHOST_IWindow*,
-       GHOST_NDOFLibraryInit_fp setNdofLibraryInit, 
-       GHOST_NDOFLibraryShutdown_fp setNdofLibraryShutdown,
-       GHOST_NDOFDeviceOpen_fp setNdofDeviceOpen
-       // original patch only
-      // GHOST_NDOFEventHandler_fp setNdofEventHandler
-       ) = 0;
-
-
 	/***************************************************************************************
 	 ** Cursor management functionality
 	 ***************************************************************************************/

Modified: branches/merwin-spacenav/intern/ghost/GHOST_Types.h
===================================================================
--- branches/merwin-spacenav/intern/ghost/GHOST_Types.h	2011-06-08 19:05:17 UTC (rev 37322)
+++ branches/merwin-spacenav/intern/ghost/GHOST_Types.h	2011-06-08 21:18:03 UTC (rev 37323)
@@ -439,38 +439,24 @@
 	GHOST_TUns8 **strings;
 } GHOST_TStringArray;
 
+typedef struct {
+	/** N-degree of freedom device data v3 [GSoC 2010]*/
+	/* Each component normally ranges from -1 to +1, but can exceed that. */
+	float tx, ty, tz; /* translation: -x left, +y forward, -z up */
+	float rx, ry, rz; /* rotation:
+		axis = (rx,ry,rz).normalized
+		amount = (rx,ry,rz).magnitude [in revolutions, 1.0 = 360 deg] */
+	float dt; // time since previous NDOF Motion event (or zero if this is the first)
+} GHOST_TEventNDOFMotionData;
 
-/* original patch used floats, but the driver return ints and uns. We will calibrate in view, no sense on doing conversions twice */
-/* as all USB device controls are likely to use ints, this is also more future proof */
-//typedef struct {
-//   /** N-degree of freedom device data */
-//   float tx, ty, tz;   /** -x left, +y up, +z forward */
-//   float rx, ry, rz;
-//   float dt;
-//} GHOST_TEventNDOFData;
+typedef enum { GHOST_kPress, GHOST_kRelease } GHOST_TButtonAction;
+	// good for mouse or other buttons too, hmmm?
 
 typedef struct {
-   /** N-degree of freedom device data v2*/
-   int changed;
-   GHOST_TUns64 client;
-   GHOST_TUns64 address;
-   GHOST_TInt16 tx, ty, tz;   /** -x left, +y up, +z forward */
-   GHOST_TInt16 rx, ry, rz;
-   GHOST_TInt16 buttons;
-   GHOST_TUns64 time;
-   GHOST_TUns64 delta;
-} GHOST_TEventNDOFData;
+	GHOST_TButtonAction action;
+	short button;
+} GHOST_TEventNDOFButtonData;
 
-typedef int     (*GHOST_NDOFLibraryInit_fp)(void);
-typedef void    (*GHOST_NDOFLibraryShutdown_fp)(void* deviceHandle);
-typedef void*   (*GHOST_NDOFDeviceOpen_fp)(void* platformData);
-
-// original patch windows callback. In mac os X version the callback is internal to the plug-in and post an event to main thead.
-// not necessary faster, but better integration with other events. 
-
-//typedef int     (*GHOST_NDOFEventHandler_fp)(float* result7, void* deviceHandle, unsigned int message, unsigned int* wParam, unsigned long* lParam);
-//typedef void     (*GHOST_NDOFCallBack_fp)(GHOST_TEventNDOFDataV2 *VolDatas);
-
 typedef struct {
 	/** The key code. */
 	GHOST_TKey		key;

Modified: branches/merwin-spacenav/intern/ghost/SConscript
===================================================================
--- branches/merwin-spacenav/intern/ghost/SConscript	2011-06-08 19:05:17 UTC (rev 37322)
+++ branches/merwin-spacenav/intern/ghost/SConscript	2011-06-08 21:18:03 UTC (rev 37323)
@@ -11,7 +11,7 @@
     sources += env.Glob('intern/*.mm')
 
 
-pf = ['GHOST_DisplayManager', 'GHOST_System', 'GHOST_SystemPaths', 'GHOST_Window', 'GHOST_DropTarget']
+pf = ['GHOST_DisplayManager', 'GHOST_System', 'GHOST_SystemPaths', 'GHOST_Window', 'GHOST_DropTarget', 'GHOST_NDOFManager']
 defs=['_USE_MATH_DEFINES']
 
 if window_system in ('linux2', 'openbsd3', 'sunos5', 'freebsd7', 'freebsd8', 'freebsd9', 'irix6', 'aix4', 'aix5'):

Modified: branches/merwin-spacenav/intern/ghost/intern/GHOST_C-api.cpp
===================================================================
--- branches/merwin-spacenav/intern/ghost/intern/GHOST_C-api.cpp	2011-06-08 19:05:17 UTC (rev 37322)
+++ branches/merwin-spacenav/intern/ghost/intern/GHOST_C-api.cpp	2011-06-08 21:18:03 UTC (rev 37323)
@@ -275,23 +275,6 @@
 }
 
 
-int GHOST_OpenNDOF(GHOST_SystemHandle systemhandle, GHOST_WindowHandle windowhandle,
-   GHOST_NDOFLibraryInit_fp setNdofLibraryInit, 
-    GHOST_NDOFLibraryShutdown_fp setNdofLibraryShutdown,
-    GHOST_NDOFDeviceOpen_fp setNdofDeviceOpen)
-  //original patch only
-  /*  GHOST_NDOFEventHandler_fp setNdofEventHandler)*/
-{
-	GHOST_ISystem* system = (GHOST_ISystem*) systemhandle;
-
-    return system->openNDOF((GHOST_IWindow*) windowhandle,
-        setNdofLibraryInit, setNdofLibraryShutdown, setNdofDeviceOpen);
-//	original patch
-//        setNdofLibraryInit, setNdofLibraryShutdown, setNdofDeviceOpen, setNdofEventHandler);
-}
-
-
-
 GHOST_TStandardCursor GHOST_GetCursorShape(GHOST_WindowHandle windowhandle)
 {
 	GHOST_IWindow* window = (GHOST_IWindow*) windowhandle;

Modified: branches/merwin-spacenav/intern/ghost/intern/GHOST_EventNDOF.h
===================================================================
--- branches/merwin-spacenav/intern/ghost/intern/GHOST_EventNDOF.h	2011-06-08 19:05:17 UTC (rev 37322)
+++ branches/merwin-spacenav/intern/ghost/intern/GHOST_EventNDOF.h	2011-06-08 21:18:03 UTC (rev 37323)
@@ -19,11 +19,6 @@
  *
  * ***** END GPL LICENSE BLOCK *****
  */
-
-/** \file ghost/intern/GHOST_EventNDOF.h
- *  \ingroup GHOST
- */
-
  
 
 #ifndef _GHOST_EVENT_NDOF_H_
@@ -31,32 +26,33 @@
 
 #include "GHOST_Event.h"
 
-/**
- * N-degree of freedom device event.
- */
-class GHOST_EventNDOF : public GHOST_Event
-{
-public:
-	/**
-	 * Constructor.
-	 * @param msec		The time this event was generated.
-	 * @param type		The type of this event.
-	 * @param x			The x-coordinate of the location the cursor was at at the time of the event.
-	 * @param y			The y-coordinate of the location the cursor was at at the time of the event.
-	 */
-	GHOST_EventNDOF(GHOST_TUns64 msec, GHOST_TEventType type, GHOST_IWindow* window, 
-        GHOST_TEventNDOFData data)
-		: GHOST_Event(msec, type, window)
+
+class GHOST_EventNDOFMotion : public GHOST_Event
 	{
-		m_ndofEventData = data;
-		m_data = &m_ndofEventData;
-	}
+	protected:
+		GHOST_TEventNDOFMotionData m_axisData;
+	
+	public:
+		GHOST_EventNDOFMotion(GHOST_TUns64 time, GHOST_IWindow* window)
+			: GHOST_Event(time, GHOST_kEventNDOFMotion, window)
+			{
+			m_data = &m_axisData;
+			}
+	};
 
-protected:
-	/** translation & rotation from the device. */
-	GHOST_TEventNDOFData m_ndofEventData;
-};
 
+class GHOST_EventNDOFButton : public GHOST_Event
+	{
+	protected:
+		GHOST_TEventNDOFButtonData m_buttonData;
+	
+	public:
+		GHOST_EventNDOFButton(GHOST_TUns64 time, GHOST_IWindow* window)
+			: GHOST_Event(time, GHOST_kEventNDOFButton, window)
+			{
+			m_data = &m_buttonData;
+			}
+	};
 
-#endif // _GHOST_EVENT_NDOF_H_
 
+#endif // _GHOST_EVENT_NDOF_H_

Modified: branches/merwin-spacenav/intern/ghost/intern/GHOST_NDOFManager.cpp
===================================================================
--- branches/merwin-spacenav/intern/ghost/intern/GHOST_NDOFManager.cpp	2011-06-08 19:05:17 UTC (rev 37322)

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list