[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