Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef _XNV_SLIDER_2D_H_
00010 #define _XNV_SLIDER_2D_H_
00011
00012 #include "XnVNiteDefs.h"
00013 #include "XnVNiteEvents.h"
00014 #include "XnVDirection.h"
00015
00016 class XnVPointBuffer;
00017
00025 class XNV_NITE_API XnVSlider2D
00026 {
00027 public:
00031 typedef void (XN_CALLBACK_TYPE *ValueChangeCB)(XnFloat fXValue, XnFloat fYValue, void* pUserCxt);
00035 typedef void (XN_CALLBACK_TYPE *OffAxisMovementCB)(XnVDirection eDir, void* pUserCxt);
00036
00043 XnVSlider2D(const XnPoint3D& ptMin ,const XnPoint3D& ptMax);
00053 XnVSlider2D(const XnPoint3D& ptInitialPosition, XnFloat fSliderXLength, XnFloat fSliderYLength,
00054 XnFloat fInitialXValue, XnFloat fInitialYValue);
00055
00056 ~XnVSlider2D();
00064 XnStatus Update(const XnPoint3D& pt, XnFloat fTime, XnBool bCheckOffAxis = true);
00065
00074 XnCallbackHandle RegisterValueChange(void* cxt, ValueChangeCB CB);
00083 XnCallbackHandle RegisterOffAxisMovement(void* cxt, OffAxisMovementCB CB);
00089 void UnregisterValueChange(XnCallbackHandle hCB);
00095 void UnregisterOffAxisMovement(XnCallbackHandle hCB);
00096
00097 XnPoint3D GetPosition() const {return m_ptCurrentPosition;}
00098
00104 XnFloat GetOffAxisDetectionVelocity() const;
00110 XnFloat GetOffAxisDetectionAngle() const;
00116 XnUInt32 GetOffAxisDetectionTime() const;
00117
00123 void SetOffAxisDetectionVelocity(XnFloat fVelocity);
00129 void SetOffAxisDetectionAngle(XnFloat fAngle);
00135 void SetOffAxisDetectionTime(XnUInt32 nTime);
00136 protected:
00137 XnInt32 CheckForOffAxisMovement(const XnPoint3D& pt, XnFloat fTime);
00138
00139 XnPoint3D m_ptMin, m_ptMax;
00140 XnFloat m_fSizeX, m_fSizeY;
00141
00142 XnVPointBuffer* m_pPointBuffer;
00143
00144 XnPoint3D m_ptCurrentPosition;
00145
00146
00147 void ValueChange(XnFloat fXValue, XnFloat fYValue);
00148 void OffAxisMovement(XnVDirection eDir);
00149
00150 XnVFloatFloatSpecificEvent m_ValueChangeCBs;
00151 XnVDirectionSpecificEvent m_OffAxisMovementCBs;
00152
00153 static const XnFloat ms_fOffAxisDefaultMininumVelocity;
00154 static const XnFloat ms_fOffAxisDefaultDetectionAngle;
00155 static const XnUInt32 ms_nDefaultTimeForOffAxisDetection;
00156
00157 XnFloat m_fOffAxisDetectionVelocity;
00158 XnFloat m_fOffAxisDetectionAngle;
00159 XnUInt32 m_nOffAxisDetectionTime;
00160 };
00161
00162
00163 #endif // _XNV_SLIDER_2D_H_