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. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs