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 "XnVDirection.h"
00014
00015 class XnVPointBuffer;
00016 class XnVFloatFloatSpecificEvent;
00017 class XnVDirectionSpecificEvent;
00018
00026 class XNV_NITE_API XnVSlider2D
00027 {
00028 public:
00032 typedef void (XN_CALLBACK_TYPE *ValueChangeCB)(XnFloat fXValue, XnFloat fYValue, void* pUserCxt);
00036 typedef void (XN_CALLBACK_TYPE *OffAxisMovementCB)(XnVDirection eDir, void* pUserCxt);
00037
00044 XnVSlider2D(const XnPoint3D& ptMin ,const XnPoint3D& ptMax);
00054 XnVSlider2D(const XnPoint3D& ptInitialPosition, XnFloat fSliderXLength, XnFloat fSliderYLength,
00055 XnFloat fInitialXValue, XnFloat fInitialYValue);
00056
00057 ~XnVSlider2D();
00065 XnStatus Update(const XnPoint3D& pt, XnFloat fTime, XnBool bCheckOffAxis = true);
00066
00075 XnCallbackHandle RegisterValueChange(void* cxt, ValueChangeCB CB);
00084 XnCallbackHandle RegisterOffAxisMovement(void* cxt, OffAxisMovementCB CB);
00090 void UnregisterValueChange(XnCallbackHandle hCB);
00096 void UnregisterOffAxisMovement(XnCallbackHandle hCB);
00097
00098 XnPoint3D GetPosition() const {return m_ptCurrentPosition;}
00099
00105 XnFloat GetOffAxisDetectionVelocity() const;
00111 XnFloat GetOffAxisDetectionAngle() const;
00117 XnUInt32 GetOffAxisDetectionTime() const;
00118
00124 void SetOffAxisDetectionVelocity(XnFloat fVelocity);
00130 void SetOffAxisDetectionAngle(XnFloat fAngle);
00136 void SetOffAxisDetectionTime(XnUInt32 nTime);
00137 protected:
00138 XnInt32 CheckForOffAxisMovement(const XnPoint3D& pt, XnFloat fTime);
00139
00140 XnPoint3D m_ptMin, m_ptMax;
00141 XnFloat m_fSizeX, m_fSizeY;
00142
00143 XnVPointBuffer* m_pPointBuffer;
00144
00145 XnPoint3D m_ptCurrentPosition;
00146
00147
00148 void ValueChange(XnFloat fXValue, XnFloat fYValue);
00149 void OffAxisMovement(XnVDirection eDir);
00150
00151 XnVFloatFloatSpecificEvent* m_pValueChangeCBs;
00152 XnVDirectionSpecificEvent* m_pOffAxisMovementCBs;
00153
00154 static const XnFloat ms_fOffAxisDefaultMininumVelocity;
00155 static const XnFloat ms_fOffAxisDefaultDetectionAngle;
00156 static const XnUInt32 ms_nDefaultTimeForOffAxisDetection;
00157
00158 XnFloat m_fOffAxisDetectionVelocity;
00159 XnFloat m_fOffAxisDetectionAngle;
00160 XnUInt32 m_nOffAxisDetectionTime;
00161 };
00162
00163
00164 #endif // _XNV_SLIDER_2D_H_