Revision: 38908
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38908
Author:   merwin
Date:     2011-08-02 04:28:05 +0000 (Tue, 02 Aug 2011)
Log Message:
-----------
3D mouse support from merwin-spacenav branch

Modified Paths:
--------------
    trunk/blender/CMakeLists.txt
    trunk/blender/build_files/cmake/macros.cmake
    trunk/blender/build_files/scons/config/darwin-config.py
    trunk/blender/build_files/scons/config/linux2-config.py
    trunk/blender/intern/ghost/CMakeLists.txt
    trunk/blender/intern/ghost/GHOST_C-api.h
    trunk/blender/intern/ghost/GHOST_ISystem.h
    trunk/blender/intern/ghost/GHOST_Types.h
    trunk/blender/intern/ghost/SConscript
    trunk/blender/intern/ghost/intern/GHOST_C-api.cpp
    trunk/blender/intern/ghost/intern/GHOST_DisplayManagerWin32.cpp
    trunk/blender/intern/ghost/intern/GHOST_DropTargetWin32.cpp
    trunk/blender/intern/ghost/intern/GHOST_DropTargetWin32.h
    trunk/blender/intern/ghost/intern/GHOST_EventManager.cpp
    trunk/blender/intern/ghost/intern/GHOST_EventNDOF.h
    trunk/blender/intern/ghost/intern/GHOST_NDOFManager.cpp
    trunk/blender/intern/ghost/intern/GHOST_NDOFManager.h
    trunk/blender/intern/ghost/intern/GHOST_System.cpp
    trunk/blender/intern/ghost/intern/GHOST_System.h
    trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.h
    trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm
    trunk/blender/intern/ghost/intern/GHOST_SystemPathsWin32.cpp
    trunk/blender/intern/ghost/intern/GHOST_SystemPathsWin32.h
    trunk/blender/intern/ghost/intern/GHOST_SystemWin32.cpp
    trunk/blender/intern/ghost/intern/GHOST_SystemWin32.h
    trunk/blender/intern/ghost/intern/GHOST_SystemX11.cpp
    trunk/blender/intern/ghost/intern/GHOST_SystemX11.h
    trunk/blender/intern/ghost/intern/GHOST_TaskbarWin32.h
    trunk/blender/intern/ghost/intern/GHOST_WindowWin32.h
    trunk/blender/release/scripts/startup/bl_ui/space_userpref.py
    trunk/blender/release/scripts/startup/bl_ui/space_userpref_keymap.py
    trunk/blender/release/scripts/startup/bl_ui/space_view3d.py
    trunk/blender/source/blender/blenkernel/BKE_global.h
    trunk/blender/source/blender/editors/gpencil/gpencil_paint.c
    trunk/blender/source/blender/editors/interface/resources.c
    trunk/blender/source/blender/editors/sculpt_paint/paint_stroke.c
    trunk/blender/source/blender/editors/space_image/image_intern.h
    trunk/blender/source/blender/editors/space_image/image_ops.c
    trunk/blender/source/blender/editors/space_image/space_image.c
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
    trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
    trunk/blender/source/blender/editors/space_view3d/view3d_fly.c
    trunk/blender/source/blender/editors/space_view3d/view3d_intern.h
    trunk/blender/source/blender/editors/space_view3d/view3d_ops.c
    trunk/blender/source/blender/editors/transform/transform.c
    trunk/blender/source/blender/editors/transform/transform_ops.c
    trunk/blender/source/blender/makesdna/DNA_userdef_types.h
    trunk/blender/source/blender/makesdna/DNA_view3d_types.h
    trunk/blender/source/blender/makesrna/intern/rna_userdef.c
    trunk/blender/source/blender/makesrna/intern/rna_wm.c
    trunk/blender/source/blender/windowmanager/WM_types.h
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
    trunk/blender/source/blender/windowmanager/intern/wm_init_exit.c
    trunk/blender/source/blender/windowmanager/intern/wm_operators.c
    trunk/blender/source/blender/windowmanager/intern/wm_window.c
    trunk/blender/source/blender/windowmanager/wm_event_types.h

Modified: trunk/blender/CMakeLists.txt
===================================================================
--- trunk/blender/CMakeLists.txt        2011-08-02 02:28:37 UTC (rev 38907)
+++ trunk/blender/CMakeLists.txt        2011-08-02 04:28:05 UTC (rev 38908)
@@ -179,6 +179,7 @@
 option(WITH_LZMA          "Enable best LZMA compression, (used for 
pointcache)" ON)
 
 # Misc
+option(WITH_NDOF "Enable NDOF input devices (SpaceNavigator and friends)" ON)
 option(WITH_RAYOPTIMIZATION    "Enable use of SIMD (SSE) optimizations for the 
raytracer" ON) 
 if(UNIX AND NOT APPLE)
        option(WITH_INSTALL_PORTABLE "Install redistributeable runtime, 
otherwise install into CMAKE_INSTALL_PREFIX" ON)
@@ -452,6 +453,15 @@
                endif()
        endif()
 
+       if (WITH_NDOF)
+               if(CMAKE_SYSTEM_NAME MATCHES "Linux")
+                       set(NDOF /usr)
+                       set(NDOF_INC ${NDOF}/include)
+                       set(NDOF_LIBRARY spnav)
+                       set(NDOF_LIBPATH ${NDOF}/lib)
+               endif()
+       endif()
+
        # OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using 
--as-needed
        set(PLATFORM_LINKLIBS "-lutil -lc -lm -lpthread -lstdc++")
 
@@ -1029,6 +1039,10 @@
                set(TIFF_LIBPATH ${TIFF}/lib)
        endif()
 
+       if (WITH_NDOF)
+               # linker needs "-weak_framework 3DconnexionClient"
+       endif()
+
        set(EXETYPE MACOSX_BUNDLE)
 
        set(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g")

Modified: trunk/blender/build_files/cmake/macros.cmake
===================================================================
--- trunk/blender/build_files/cmake/macros.cmake        2011-08-02 02:28:37 UTC 
(rev 38907)
+++ trunk/blender/build_files/cmake/macros.cmake        2011-08-02 04:28:05 UTC 
(rev 38908)
@@ -193,6 +193,9 @@
        if(WITH_MEM_JEMALLOC)
                link_directories(${JEMALLOC_LIBPATH})
        endif()
+       if(WITH_NDOF)
+               link_directories(${NDOF_LIBPATH})
+       endif()
 
        if(WIN32 AND NOT UNIX)
                link_directories(${PTHREADS_LIBPATH})
@@ -314,6 +317,10 @@
        if(WITH_MEM_JEMALLOC)
                target_link_libraries(${target} ${JEMALLOC_LIBRARIES})
        endif()
+       if(WITH_NDOF)
+               target_link_libraries(${target} ${NDOF_LIBRARY})
+       endif()
+
        if(WIN32 AND NOT UNIX)
                target_link_libraries(${target} ${PTHREADS_LIBRARIES})
        endif()

Modified: trunk/blender/build_files/scons/config/darwin-config.py
===================================================================
--- trunk/blender/build_files/scons/config/darwin-config.py     2011-08-02 
02:28:37 UTC (rev 38907)
+++ trunk/blender/build_files/scons/config/darwin-config.py     2011-08-02 
04:28:05 UTC (rev 38908)
@@ -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_3DMOUSE = True
+
 #############################################################################
 ###################  various compile settings and flags    ##################
 #############################################################################
@@ -294,6 +296,9 @@
        else:
                PLATFORM_LINKFLAGS = 
PLATFORM_LINKFLAGS+['-framework','QuickTime']
 
+if WITH_BF_3DMOUSE:
+       PLATFORM_LINKFLAGS = PLATFORM_LINKFLAGS + 
['-weak_framework','3DconnexionClient']
+
 #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: trunk/blender/build_files/scons/config/linux2-config.py
===================================================================
--- trunk/blender/build_files/scons/config/linux2-config.py     2011-08-02 
02:28:37 UTC (rev 38907)
+++ trunk/blender/build_files/scons/config/linux2-config.py     2011-08-02 
04:28:05 UTC (rev 38908)
@@ -192,6 +192,10 @@
 WITH_BF_RAYOPTIMIZATION = True
 BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-pthread']
 
+#SpaceNavigator and friends
+WITH_BF_3DMOUSE = True
+BF_3DMOUSE_LIB = 'spnav'
+
 ##
 CC = 'gcc'
 CXX = 'g++'
@@ -223,6 +227,8 @@
 ##FIX_STUBS_WARNINGS = -Wno-unused
 
 LLIBS = ['util', 'c', 'm', 'dl', 'pthread', 'stdc++']
+if WITH_BF_3DMOUSE:
+       LLIBS = LLIBS + [BF_3DMOUSE_LIB];
 ##LOPTS = --dynamic
 ##DYNLDFLAGS = -shared $(LDFLAGS)
 

Modified: trunk/blender/intern/ghost/CMakeLists.txt
===================================================================
--- trunk/blender/intern/ghost/CMakeLists.txt   2011-08-02 02:28:37 UTC (rev 
38907)
+++ trunk/blender/intern/ghost/CMakeLists.txt   2011-08-02 04:28:05 UTC (rev 
38908)
@@ -158,11 +158,13 @@
                        intern/GHOST_SystemCocoa.mm
                        intern/GHOST_SystemPathsCocoa.mm
                        intern/GHOST_WindowCocoa.mm
-                       
+                       intern/GHOST_NDOFManagerCocoa.mm
+
                        intern/GHOST_DisplayManagerCocoa.h
                        intern/GHOST_SystemCocoa.h
                        intern/GHOST_SystemPathsCocoa.h
                        intern/GHOST_WindowCocoa.h
+                       intern/GHOST_NDOFManagerCocoa.h
                )
        else()
                list(APPEND SRC
@@ -197,11 +199,13 @@
                intern/GHOST_SystemX11.cpp
                intern/GHOST_SystemPathsX11.cpp
                intern/GHOST_WindowX11.cpp
+               intern/GHOST_NDOFManagerX11.cpp
 
                intern/GHOST_DisplayManagerX11.h
                intern/GHOST_SystemX11.h
                intern/GHOST_SystemPathsX11.h
                intern/GHOST_WindowX11.h
+               intern/GHOST_NDOFManagerX11.h
        )
 
        if(NOT WITH_INSTALL_PORTABLE)
@@ -230,6 +234,7 @@
                intern/GHOST_SystemPathsWin32.cpp
                intern/GHOST_WindowWin32.cpp
                intern/GHOST_DropTargetWin32.cpp
+               intern/GHOST_NDOFManagerWin32.cpp
 
                intern/GHOST_DisplayManagerWin32.h
                intern/GHOST_DropTargetWin32.h
@@ -237,6 +242,7 @@
                intern/GHOST_SystemPathsWin32.h
                intern/GHOST_WindowWin32.h
                intern/GHOST_TaskbarWin32.h
+               intern/GHOST_NDOFManagerWin32.h
        )
 endif()
 

Modified: trunk/blender/intern/ghost/GHOST_C-api.h
===================================================================
--- trunk/blender/intern/ghost/GHOST_C-api.h    2011-08-02 02:28:37 UTC (rev 
38907)
+++ trunk/blender/intern/ghost/GHOST_C-api.h    2011-08-02 04:28:05 UTC (rev 
38908)
@@ -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: trunk/blender/intern/ghost/GHOST_ISystem.h
===================================================================
--- trunk/blender/intern/ghost/GHOST_ISystem.h  2011-08-02 02:28:37 UTC (rev 
38907)
+++ trunk/blender/intern/ghost/GHOST_ISystem.h  2011-08-02 04:28:05 UTC (rev 
38908)
@@ -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: trunk/blender/intern/ghost/GHOST_Types.h
===================================================================
--- trunk/blender/intern/ghost/GHOST_Types.h    2011-08-02 02:28:37 UTC (rev 
38907)
+++ trunk/blender/intern/ghost/GHOST_Types.h    2011-08-02 04:28:05 UTC (rev 
38908)
@@ -47,11 +47,6 @@
 typedef        int                                     GHOST_TInt32;
 typedef        unsigned int            GHOST_TUns32;
 
-#ifdef WIN32
-#define WM_BLND_NDOF_AXIS      WM_USER + 1
-#define WM_BLND_NDOF_BTN       WM_USER + 2
-#endif
-
 #if defined(WIN32) && !defined(FREE_WINDOWS)
 typedef __int64                                GHOST_TInt64;
 typedef unsigned __int64       GHOST_TUns64;
@@ -440,38 +435,34 @@
        GHOST_TUns8 **strings;
 } GHOST_TStringArray;
 
+typedef enum {
+       GHOST_kNotStarted,
+       GHOST_kStarting,
+       GHOST_kInProgress,
+       GHOST_kFinishing,
+       GHOST_kFinished
+       } GHOST_TProgress;
 
-/* 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 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;
+       /** N-degree of freedom device data v3 [GSoC 2010] */
+       // Each component normally ranges from -1 to +1, but can exceed that.
+       // These use blender standard view coordinates, with positive rotations 
being CCW about the axis.
+       float tx, ty, tz; // translation
+       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
+       GHOST_TProgress progress; // Starting, InProgress or Finishing (for 
modal handlers)
+} GHOST_TEventNDOFMotionData;
 
-typedef int     (*GHOST_NDOFLibraryInit_fp)(void);
-typedef void    (*GHOST_NDOFLibraryShutdown_fp)(void* deviceHandle);
-typedef void*   (*GHOST_NDOFDeviceOpen_fp)(void* platformData);
+typedef enum { GHOST_kPress, GHOST_kRelease } GHOST_TButtonAction;
+       // good for mouse or other buttons too, hmmm?
 
-// 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. 

@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to