00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #pragma once
00013
00014 #include "nvsgcommon.h"
00015
00016 #include "nvui/CameraManipulator.h"
00017 #include "nvutil/Trackball.h"
00018
00021 namespace nvui
00022 {
00023
00025
00032 class TrackballCamManip : public CameraManipulator
00033 {
00034 public:
00036 NVSG_API TrackballCamManip(void);
00037
00039 NVSG_API virtual ~TrackballCamManip(void);
00040
00042
00043 NVSG_API virtual void apply();
00044
00046
00049 NVSG_API virtual void setViewportSize( size_t x
00050 , size_t y
00051 );
00052
00054
00059 bool isDolly( void );
00060
00062
00067 bool isPan( void );
00068
00070
00075 bool isRotate( void );
00076
00077 protected:
00078 static NVSG_API const UINT DOLLY1;
00079 static NVSG_API const UINT DOLLY2;
00080 static NVSG_API const UINT PAN1;
00081 static NVSG_API const UINT PAN2;
00082 static NVSG_API const UINT ROTATE1;
00083
00084 nvutil::Trackball m_trackball;
00085
00087
00089 NVSG_API virtual void rotate(void);
00090
00092
00094 NVSG_API virtual void pan(void);
00095
00097
00099 NVSG_API virtual void dolly(void);
00100
00101 };
00102
00103 inline bool TrackballCamManip::isRotate( void )
00104 {
00105 return( ROTATE1 == (m_buttonState | m_keyState));
00106 }
00107
00108 inline bool TrackballCamManip::isPan( void )
00109 {
00110 return( PAN1 == (m_buttonState | m_keyState) || PAN2 == (m_buttonState | m_keyState) );
00111 }
00112
00113 inline bool TrackballCamManip::isDolly( void )
00114 {
00115 return( DOLLY1 == (m_buttonState | m_keyState) || DOLLY2 == (m_buttonState | m_keyState) );
00116 }
00117
00118 }