00001 /******************************************************************************* 00002 * * 00003 * PrimeSense NITE 1.3 * 00004 * Copyright (C) 2010 PrimeSense Ltd. * 00005 * * 00006 *******************************************************************************/ 00007 00008 00009 #ifndef _XNV_VIRTUAL_COORDINATES_H_ 00010 #define _XNV_VIRTUAL_COORDINATES_H_ 00011 00012 #include "XnVPointFilter.h" 00013 00014 class XnVVirtualCoordinatesInternal; 00015 00016 #define XNV_VC_MAX_FILE_NAME 2048 00017 00022 class XNV_NITE_API XnVVirtualCoordinates : 00023 public XnVPointFilter 00024 { 00025 public: 00032 XnVVirtualCoordinates(const XnChar* strINI, const XnChar* strName = "XnVVirtualCoordintates"); 00033 virtual ~XnVVirtualCoordinates(); 00034 00035 void Update(XnVMessage* pMessage); 00041 void Update(const XnVMultipleHands& hands); 00042 00048 void OnPointCreate(const XnVHandPointContext* pContext); 00054 void OnPointUpdate(const XnVHandPointContext* pContext); 00060 void OnPointDestroy(XnUInt32 nID); 00061 protected: 00062 XN_DECLARE_DEFAULT_HASH_DECL(XNV_NITE_API, XnUInt32, XnVVirtualCoordinatesInternal*, XnVIntVCIHash); 00063 00064 void Clear(); 00065 virtual void UpdateVirtualPoint(XnVVirtualCoordinatesInternal* pVC, const XnVHandPointContext* pContext, XnVHandPointContext* pLocalContext); 00066 XnVVirtualCoordinatesInternal* GetLocalContext(XnUInt32 nID); 00067 00068 XnVIntVCIHash m_VCContexts; 00069 00070 XnChar m_strINI[XNV_VC_MAX_FILE_NAME]; 00071 00072 XnVMultipleHands m_Hands; 00073 }; 00074 00075 00076 00077 #endif // _XNV_VIRTUAL_COORDINATES_H_