• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

XnVSlider1D.h

Go to the documentation of this file.
00001 /*******************************************************************************
00002 *                                                                              *
00003 *   PrimeSense NITE 1.3                                                        *
00004 *   Copyright (C) 2010 PrimeSense Ltd.                                         *
00005 *                                                                              *
00006 *******************************************************************************/
00007 
00008 
00009 #ifndef _XNV_SLIDER_1D_H_
00010 #define _XNV_SLIDER_1D_H_
00011 
00012 #include "XnVNiteDefs.h"
00013 #include "XnVDirection.h"
00014 #include "XnVNiteEvents.h"
00015 
00016 class XnVPointBuffer;
00017 
00026 class XNV_NITE_API XnVSlider1D
00027 {
00028 public:
00032     typedef void (XN_CALLBACK_TYPE* ValueChangeCB)(XnFloat fValue, void* cxt);
00036     typedef void (XN_CALLBACK_TYPE* OffAxisMovementCB)(XnVDirection eDir, void* cxt);
00037 
00050     XnVSlider1D(XnVAxis eAxis, const XnPoint3D& ptInitialPosition, XnPoint3D ptMinPoint, XnPoint3D ptMaxPoint,
00051         XnFloat fMinOutput, XnFloat fMaxOutput,
00052         XnFloat fOffAxisDetectionAngle = ms_fOffAxisDefaultDetectionAngle,
00053         XnFloat fOffAxisDetectionMinimumVelocity = ms_fDefaultMinimumOffAxisVelocity); 
00066     XnVSlider1D(XnVAxis eAxis, const XnPoint3D& ptInitialPosition, XnFloat fSliderLength, XnFloat fInitialValue,
00067         XnFloat fMinOutput, XnFloat fMaxOutput,
00068         XnFloat fOffAxisDetectionAngle = ms_fOffAxisDefaultDetectionAngle,
00069         XnFloat fOffAxisDetectionMinimumVelocity = ms_fDefaultMinimumOffAxisVelocity);
00070 
00071     ~XnVSlider1D();
00072 
00083     void Reinitialize(XnVAxis eAxis, const XnPoint3D& ptInitialPoint, const XnPoint3D& ptMinPoint,
00084         const XnPoint3D& ptMaxPoint, XnFloat fMinOutput, XnFloat fMaxOutput);
00095     void Reinitialize(XnVAxis eAxis, const XnPoint3D& ptInitialPoint, XnFloat fSliderLength,
00096         XnFloat fInitialValue, XnFloat fMinOutput, XnFloat fMaxOutput);
00097 
00101     XnFloat ValueAtPosition(const XnPoint3D& pt);
00102 
00110     XnStatus Update(const XnPoint3D& pt, XnFloat fTime, XnBool bCheckOffAxis = true);
00111 
00115     void LostPoint();
00116 
00125     XnCallbackHandle RegisterValueChange(void* cxt, ValueChangeCB CB);
00134     XnCallbackHandle RegisterOffAxisMovement(void* cxt, OffAxisMovementCB CB);
00135 
00141     void UnregisterValueChange(XnCallbackHandle hCB);
00147     void UnregisterOffAxisMovement(XnCallbackHandle hCB);
00148 
00149     XnFloat GetValue() const;
00150     const XnPoint3D& GetPosition() const;
00151     XnBool IsValid() const;
00152 
00158     XnVAxis GetAxis() const;
00159 
00165     XnFloat  GetOffAxisDetectionVelocity() const;
00171     XnFloat  GetOffAxisDetectionAngle() const;
00177     XnUInt32 GetOffAxisDetectionTime() const;
00178 
00184     void SetOffAxisDetectionVelocity(XnFloat fVelocity);
00190     void SetOffAxisDetectionAngle(XnFloat fAngle);
00196     void SetOffAxisDetectionTime(XnUInt32 nTime);
00197 protected:
00198     void ValueChange(XnFloat fValue);
00199     void OffAxisMovement(XnVDirection eDir);
00200 
00201     XnVSlider1D(XnVAxis eAxis, XnBool bDraggable, const XnPoint3D& ptInitialPosition, XnFloat fSliderLength,
00202         XnFloat fInitialValue, XnFloat fMinOutput, XnFloat fMaxOutput,
00203         XnFloat fOffAxisDetectionAngle = ms_fOffAxisDefaultDetectionAngle,
00204         XnFloat fOffAxisDetectionMinimumVelocity = ms_fDefaultMinimumOffAxisVelocity);
00205 
00206     void InitializeFromPoint(const XnPoint3D& ptInitialPosition, const XnPoint3D& ptMinPoint, const XnPoint3D& ptMaxPoint,
00207         XnBool bVertical, XnFloat& fSliderLength, XnFloat& fInitialValue);
00208     void Initialize(XnVAxis eAxis, XnBool bDraggable, const XnPoint3D& ptInitialPosition, XnFloat fSliderLength,
00209         XnFloat fInitialValue, XnFloat fMinOutput, XnFloat fMaxOutput, XnFloat fOffAxisDetectionAngle,
00210         XnFloat fOffAxisDetectionMinimumMovement);
00211 
00212     XnVDirection CheckForOffAxisMovement(const XnPoint3D& pt, XnFloat fTime);
00213     XnInt32 CheckOffAxis(XnFloat fPrimaryAxisDelta, XnFloat fOffAxisDelta);
00214 
00215 
00216     static const XnFloat ms_fDefaultMinimumOffAxisVelocity;     // = 0.15f m/s
00217     static const XnFloat ms_fOffAxisDefaultDetectionAngle;          // = 60.0f
00218     static const XnUInt32 ms_nDefaultTimeForOffAxisDetection;       // = 350 ms
00219 
00220     XnFloat m_fOffAxisDetectionMinimumVelocity;
00221     XnFloat m_fOffAxisDetectionAngle;
00222     XnUInt32 m_nOffAxisDetectionTime;
00223 
00224     XnVAxis m_eAxis;
00225     XnBool m_bIsDraggable;
00226 
00227     XnFloat m_fCurrentOutput;
00228     XnPoint3D m_ptCurrentPosition;
00229 
00230     XnFloat m_fOutputMinimum, m_fOutputMaximum;
00231     XnFloat m_fMaxOutputMajorAxisPosition, m_fMinOutputMajorAxisPosition;
00232 
00233     XnVPointBuffer* m_pPointBuffer;
00234 
00235     XnVFloatSpecificEvent m_ValueChangeCBs;
00236     XnVDirectionSpecificEvent m_OffAxisMovementCBs;
00237 };
00238 
00239 #endif // _XNV_SLIDER_1D_H_

Generated on Tue Jul 19 2011 15:52:50 for NITE 1.4.1 - API Reference by  doxygen 1.7.1