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

XnModuleCppInterface.h

Go to the documentation of this file.
00001 /*****************************************************************************
00002 *                                                                            *
00003 *  OpenNI 1.0 Alpha                                                          *
00004 *  Copyright (C) 2010 PrimeSense Ltd.                                        *
00005 *                                                                            *
00006 *  This file is part of OpenNI.                                              *
00007 *                                                                            *
00008 *  OpenNI is free software: you can redistribute it and/or modify            *
00009 *  it under the terms of the GNU Lesser General Public License as published  *
00010 *  by the Free Software Foundation, either version 3 of the License, or      *
00011 *  (at your option) any later version.                                       *
00012 *                                                                            *
00013 *  OpenNI is distributed in the hope that it will be useful,                 *
00014 *  but WITHOUT ANY WARRANTY; without even the implied warranty of            *
00015 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the              *
00016 *  GNU Lesser General Public License for more details.                       *
00017 *                                                                            *
00018 *  You should have received a copy of the GNU Lesser General Public License  *
00019 *  along with OpenNI. If not, see <http://www.gnu.org/licenses/>.            *
00020 *                                                                            *
00021 *****************************************************************************/
00022 
00023 
00024 
00025 
00026 #ifndef __XN_MODULE_CPP_INTERFACE_H__
00027 #define __XN_MODULE_CPP_INTERFACE_H__
00028 
00035 //---------------------------------------------------------------------------
00036 // Includes
00037 //---------------------------------------------------------------------------
00038 #include "XnModuleInterface.h"
00039 #include "XnList.h"
00040 #include "XnCppWrapper.h"
00041 
00042 //---------------------------------------------------------------------------
00043 // Types
00044 //---------------------------------------------------------------------------
00045 namespace xn
00046 {
00047     XN_DECLARE_LIST(XnModuleGetExportedInterfacePtr, ExportedNodesList);
00048 
00049     class ModuleProductionNode;
00050 
00051     class Module
00052     {
00053     public:
00054         Module() {}
00055         virtual ~Module() {}
00056 
00057         virtual XnStatus Load() { return XN_STATUS_OK; }
00058         virtual void Unload() {}
00059 
00060         inline XnStatus AddExportedNode(XnModuleGetExportedInterfacePtr pEntryPoint) { return m_ExportedNodes.AddLast(pEntryPoint); }
00061 
00062         XnUInt32 GetExportedNodesCount() { return m_ExportedNodes.Size(); }
00063 
00064         XnStatus GetExportedNodes(XnModuleGetExportedInterfacePtr* aEntryPoints, XnUInt32 nCount)
00065         {
00066             if (nCount < m_ExportedNodes.Size())                                        
00067             {                                                               
00068                 return XN_STATUS_OUTPUT_BUFFER_OVERFLOW;                    
00069             }                                                               
00070 
00071             XnUInt32 i = 0;                                             
00072             for (ExportedNodesList::ConstIterator it = m_ExportedNodes.begin();         
00073                 it != m_ExportedNodes.end();                                            
00074                 ++it, ++i)                                                  
00075             {                                                               
00076                 aEntryPoints[i] = *it;                                      
00077             }                                                               
00078 
00079             return (XN_STATUS_OK);                                          
00080         }
00081 
00082     private:
00083         ExportedNodesList m_ExportedNodes;
00084     };
00085 
00086     class ModuleExportedProductionNode
00087     {
00088     public:
00089         ModuleExportedProductionNode() {}
00090         virtual ~ModuleExportedProductionNode() {}
00091 
00092         virtual void GetDescription(XnProductionNodeDescription* pDescription) = 0;
00093         virtual XnStatus EnumerateProductionTrees(Context& context, NodeInfoList& TreesList, EnumerationErrors* pErrors) = 0;
00094         virtual XnStatus Create(Context& context, const XnChar* strInstanceName, const XnChar* strCreationInfo, NodeInfoList* pNeededTrees, const XnChar* strConfigurationDir, ModuleProductionNode** ppInstance) = 0;
00095         virtual void Destroy(ModuleProductionNode* pInstance) = 0;
00096     };
00097 
00098     class ModuleExtendedSerializationInterface
00099     {
00100     public:
00101         virtual ~ModuleExtendedSerializationInterface() {}
00102         virtual XnStatus NotifyExState(XnNodeNotifications* pNotifications, void* pCookie) = 0;
00103         virtual void UnregisterExNotifications() = 0;
00104     };
00105 
00106     class ModuleLockAwareInterface
00107     {
00108     public:
00109         virtual ~ModuleLockAwareInterface() {}
00110         virtual XnStatus SetLockState(XnBool bLocked) = 0;
00111         virtual XnBool GetLockState() = 0;
00112         virtual XnStatus RegisterToLockChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00113         virtual void UnregisterFromLockChange(XnCallbackHandle hCallback) = 0;
00114     };
00115 
00116     class ModuleErrorStateInterface
00117     {
00118     public:
00119         virtual ~ModuleErrorStateInterface() {}
00120         virtual XnStatus GetErrorState() = 0;
00121         virtual XnStatus RegisterToErrorStateChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00122         virtual void UnregisterFromErrorStateChange(XnCallbackHandle hCallback) = 0;
00123     };
00124 
00125     class ModuleProductionNode
00126     {
00127     public:
00128         virtual ~ModuleProductionNode() {}
00129         virtual XnBool IsCapabilitySupported(const XnChar* strCapabilityName) { return FALSE; }
00130         virtual XnStatus SetIntProperty(const XnChar* strName, XnUInt64 nValue) { return XN_STATUS_ERROR; }
00131         virtual XnStatus SetRealProperty(const XnChar* strName, XnDouble dValue) { return XN_STATUS_ERROR; }
00132         virtual XnStatus SetStringProperty(const XnChar* strName, const XnChar* strValue) { return XN_STATUS_ERROR; }
00133         virtual XnStatus SetGeneralProperty(const XnChar* strName, XnUInt32 nBufferSize, const void* pBuffer) { return XN_STATUS_ERROR; }
00134         virtual XnStatus GetIntProperty(const XnChar* strName, XnUInt64& nValue) const { return XN_STATUS_ERROR; }
00135         virtual XnStatus GetRealProperty(const XnChar* strName, XnDouble& dValue) const { return XN_STATUS_ERROR; }
00136         virtual XnStatus GetStringProperty(const XnChar* strName, XnChar* csValue, XnUInt32 nBufSize) const { return XN_STATUS_ERROR; }
00137         virtual XnStatus GetGeneralProperty(const XnChar* strName, XnUInt32 nBufferSize, void* pBuffer) const { return XN_STATUS_ERROR; }
00138         virtual ModuleExtendedSerializationInterface* GetExtendedSerializationInterface() { return NULL; }
00139         virtual ModuleLockAwareInterface* GetLockAwareInterface() { return NULL; }
00140         virtual ModuleErrorStateInterface* GetErrorStateInterface() { return NULL; }
00141     };
00142 
00143     class ModuleDevice : virtual public ModuleProductionNode
00144     {
00145     public:
00146         virtual ~ModuleDevice() {}
00147     };
00148 
00149     class ModuleMirrorInterface
00150     {
00151     public:
00152         virtual ~ModuleMirrorInterface() {}
00153         virtual XnStatus SetMirror(XnBool bMirror) = 0;
00154         virtual XnBool IsMirrored() = 0;
00155         virtual XnStatus RegisterToMirrorChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00156         virtual void UnregisterFromMirrorChange(XnCallbackHandle hCallback) = 0;
00157     };
00158 
00159     class ModuleAlternativeViewPointInterface
00160     {
00161     public:
00162         virtual ~ModuleAlternativeViewPointInterface() {}
00163         virtual XnBool IsViewPointSupported(ProductionNode& other) = 0;
00164         virtual XnStatus SetViewPoint(ProductionNode& other) = 0;
00165         virtual XnBool IsViewPointAs(ProductionNode& other) = 0;
00166         virtual XnStatus ResetViewPoint() = 0;
00167         virtual XnStatus RegisterToViewPointChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00168         virtual void UnregisterFromViewPointChange(XnCallbackHandle hCallback) = 0;
00169     };
00170 
00171     class ModuleFrameSyncInterface
00172     {
00173     public:
00174         virtual XnBool CanFrameSyncWith(ProductionNode& other) = 0;
00175         virtual XnStatus FrameSyncWith(ProductionNode& other) = 0;
00176         virtual XnStatus StopFrameSyncWith(ProductionNode& other) = 0;
00177         virtual XnBool IsFrameSyncedWith(ProductionNode& other) = 0;
00178         virtual XnStatus RegisterToFrameSyncChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00179         virtual void UnregisterFromFrameSyncChange(XnCallbackHandle hCallback) = 0;
00180     };
00181 
00182     class ModuleGenerator : virtual public ModuleProductionNode
00183     {
00184     public:
00185         virtual ~ModuleGenerator() {}
00186         virtual XnStatus StartGenerating() = 0;
00187         virtual XnBool IsGenerating() = 0;
00188         virtual void StopGenerating() = 0;
00189         virtual XnStatus RegisterToGenerationRunningChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00190         virtual void UnregisterFromGenerationRunningChange(XnCallbackHandle hCallback) = 0;
00191         virtual XnStatus RegisterToNewDataAvailable(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00192         virtual void UnregisterFromNewDataAvailable(XnCallbackHandle hCallback) = 0;
00193         virtual XnBool IsNewDataAvailable(XnUInt64& nTimestamp) = 0;
00194         virtual XnStatus UpdateData() = 0;
00195         virtual XnUInt32 GetDataSize() = 0;
00196         virtual XnUInt64 GetTimestamp() = 0;
00197         virtual XnUInt32 GetFrameID() = 0;
00198         virtual ModuleMirrorInterface* GetMirrorInterface() { return NULL; }
00199         virtual ModuleAlternativeViewPointInterface* GetAlternativeViewPointInterface() { return NULL; }
00200         virtual ModuleFrameSyncInterface* GetFrameSyncInterface() { return NULL; }
00201     };
00202 
00203     class ModuleNodeNotifications
00204     {
00205     public:
00206         virtual ~ModuleNodeNotifications() {}
00207         virtual XnStatus OnNodeAdded(const XnChar* strNodeName, XnProductionNodeType type, XnCodecID compression) = 0;
00208         virtual XnStatus OnNodeRemoved(const XnChar* strNodeName) = 0;
00209         virtual XnStatus OnNodeIntPropChanged(const XnChar* strNodeName, const XnChar* strPropName, XnUInt64 nValue) = 0;
00210         virtual XnStatus OnNodeRealPropChanged(const XnChar* strNodeName, const XnChar* strPropName, XnDouble dValue) = 0;
00211         virtual XnStatus OnNodeStringPropChanged(const XnChar* strNodeName, const XnChar* strPropName, const XnChar* strValue) = 0;
00212         virtual XnStatus OnNodeStateReady(const XnChar* strNodeName) = 0;
00213         virtual XnStatus OnNodeGeneralPropChanged(const XnChar* strNodeName, const XnChar* strPropName, XnUInt32 nBufferSize, const void* pBuffer) = 0;
00214         virtual XnStatus OnNodeNewData(const XnChar* strNodeName, XnUInt64 nTimeStamp, XnUInt32 nFrame, const void* pData, XnUInt32 nSize) = 0;
00215     };
00216 
00217     class ModuleRecorder : 
00218         virtual public ModuleProductionNode, 
00219         virtual public ModuleNodeNotifications
00220     {
00221     public:
00222         virtual ~ModuleRecorder() {}
00223         virtual XnStatus SetOutputStream(void* pCookie, XnRecorderOutputStreamInterface* pStream) = 0;
00224     };
00225 
00226     class ModulePlayer : virtual public ModuleProductionNode
00227     {
00228     public:
00229         virtual ~ModulePlayer() {}
00230         virtual XnStatus SetInputStream(void* pStreamCookie, XnPlayerInputStreamInterface* pStream) = 0;
00231         virtual XnStatus ReadNext() = 0;
00232         virtual XnStatus SetNodeNotifications(void* pNodeNotificationsCookie, XnNodeNotifications* pNodeNotifications) = 0;
00233 
00234         virtual XnStatus SetRepeat(XnBool bRepeat) = 0;
00235         virtual XnStatus SeekToTimeStamp(XnInt64 nTimeOffset, XnPlayerSeekOrigin origin) = 0;
00236         virtual XnStatus SeekToFrame(const XnChar* strNodeName, XnInt32 nFrameOffset, XnPlayerSeekOrigin origin) = 0;
00237         virtual XnStatus TellTimestamp(XnUInt64& nTimestamp) = 0;
00238         virtual XnStatus TellFrame(const XnChar* strNodeName, XnUInt32& nFrame) = 0;
00239         virtual XnUInt32 GetNumFrames(const XnChar* strNodeName, XnUInt32& nFrames) = 0;
00240         virtual const XnChar* GetSupportedFormat() = 0;
00241         virtual XnBool IsEOF() = 0;
00242         virtual XnStatus RegisterToEndOfFileReached(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00243         virtual void UnregisterFromEndOfFileReached(XnCallbackHandle hCallback) = 0;
00244     };
00245 
00246     class ModuleCroppingInterface
00247     {
00248     public:
00249         virtual ~ModuleCroppingInterface() {}
00250         virtual XnStatus SetCropping(const XnCropping &Cropping) = 0;
00251         virtual XnStatus GetCropping(XnCropping &Cropping) = 0;
00252         virtual XnStatus RegisterToCroppingChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00253         virtual void UnregisterFromCroppingChange(XnCallbackHandle hCallback) = 0;
00254     };
00255 
00256     class ModuleMapGenerator : virtual public ModuleGenerator
00257     {
00258     public:
00259         virtual ~ModuleMapGenerator() {}
00260         virtual XnUInt32 GetSupportedMapOutputModesCount() = 0;
00261         virtual XnStatus GetSupportedMapOutputModes(XnMapOutputMode aModes[], XnUInt32& nCount) = 0;
00262         virtual XnStatus SetMapOutputMode(const XnMapOutputMode& Mode) = 0;
00263         virtual XnStatus GetMapOutputMode(XnMapOutputMode& Mode) = 0;
00264         virtual XnStatus RegisterToMapOutputModeChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00265         virtual void UnregisterFromMapOutputModeChange(XnCallbackHandle hCallback) = 0;
00266         virtual ModuleCroppingInterface* GetCroppingInterface() { return NULL; }
00267     };
00268 
00269     class ModuleUserPositionInterface
00270     {
00271     public:
00272         virtual ~ModuleUserPositionInterface() {}
00273         virtual XnUInt32 GetSupportedUserPositionsCount() = 0;
00274         virtual XnStatus SetUserPosition(XnUInt32 nIndex, const XnBoundingBox3D& Position) = 0;
00275         virtual XnStatus GetUserPosition(XnUInt32 nIndex, XnBoundingBox3D& Position) = 0;
00276         virtual XnStatus RegisterToUserPositionChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00277         virtual void UnregisterFromUserPositionChange(XnCallbackHandle hCallback) = 0;
00278     };
00279 
00280     class ModuleDepthGenerator : virtual public ModuleMapGenerator
00281     {
00282     public:
00283         virtual ~ModuleDepthGenerator() {}
00284         virtual XnDepthPixel* GetDepthMap() = 0;
00285         virtual XnDepthPixel GetDeviceMaxDepth() = 0;
00286         virtual void GetFieldOfView(XnFieldOfView& FOV) = 0;
00287         virtual XnStatus RegisterToFieldOfViewChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00288         virtual void UnregisterFromFieldOfViewChange(XnCallbackHandle hCallback) = 0;
00289         virtual ModuleUserPositionInterface* GetUserPositionInterface() { return NULL; }
00290     };
00291 
00292     class ModuleImageGenerator : virtual public ModuleMapGenerator
00293     {
00294     public:
00295         virtual ~ModuleImageGenerator() {}
00296         virtual XnUInt8* GetImageMap() = 0;
00297         virtual XnBool IsPixelFormatSupported(XnPixelFormat Format) = 0;
00298         virtual XnStatus SetPixelFormat(XnPixelFormat Format) = 0;
00299         virtual XnPixelFormat GetPixelFormat() = 0;
00300         virtual XnStatus RegisterToPixelFormatChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00301         virtual void UnregisterFromPixelFormatChange(XnCallbackHandle hCallback) = 0;
00302     };
00303 
00304     class ModuleIRGenerator : virtual public ModuleMapGenerator
00305     {
00306     public:
00307         virtual ~ModuleIRGenerator() {}
00308         virtual XnIRPixel* GetIRMap() = 0;
00309     };
00310 
00311     class ModuleGestureGenerator : virtual public ModuleGenerator
00312     {
00313     public:
00314         virtual ~ModuleGestureGenerator() {}
00315         virtual XnStatus AddGesture(const XnChar* strGesture, XnBoundingBox3D* pArea) = 0;
00316         virtual XnStatus RemoveGesture(const XnChar* strGesture) = 0;
00317         virtual XnStatus GetActiveGestures(XnChar** pstrGestures, XnUInt16& nGestures) = 0;
00318         virtual XnStatus GetAllActiveGestures(XnChar** pstrGestures, XnUInt32 nNameLength, XnUInt16& nGestures) = 0;
00319         virtual XnStatus EnumerateGestures(XnChar** pstrGestures, XnUInt16& nGestures) = 0;
00320         virtual XnStatus EnumerateAllGestures(XnChar** pstrGestures, XnUInt32 nNameLength, XnUInt16& nGestures) = 0;
00321         virtual XnBool IsGestureAvailable(const XnChar* strGesture) = 0;
00322         virtual XnBool IsGestureProgressSupported(const XnChar* strGesture) = 0;
00323         virtual XnStatus RegisterGestureCallbacks(XnModuleGestureRecognized RecognizedCB, XnModuleGestureProgress ProgressCB, void* pCookie, XnCallbackHandle& hCallback) = 0;
00324         virtual void UnregisterGestureCallbacks(XnCallbackHandle hCallback) = 0;
00325         virtual XnStatus RegisterToGestureChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00326         virtual void UnregisterFromGestureChange(XnCallbackHandle hCallback) = 0;
00327     };
00328 
00329     class ModuleSceneAnalyzer : virtual public ModuleMapGenerator
00330     {
00331     public:
00332         virtual ~ModuleSceneAnalyzer() {}
00333         virtual const XnLabel* GetLabelMap() = 0;
00334         virtual XnStatus GetFloor(XnPlane3D& pPlane) = 0;
00335     };
00336 
00337     class ModuleHandsGenerator : virtual public ModuleGenerator
00338     {
00339     public:
00340         virtual ~ModuleHandsGenerator() {}
00341         virtual XnStatus RegisterHandCallbacks(XnModuleHandCreate CreateCB, XnModuleHandUpdate UpdateCB, XnModuleHandDestroy DestroyCB, void* pCookie, XnCallbackHandle& hCallback) = 0;
00342         virtual void UnregisterHandCallbacks(XnCallbackHandle hCallback) = 0;
00343         virtual XnStatus StopTracking(XnUserID user) = 0;
00344         virtual XnStatus StopTrackingAll() = 0;
00345         virtual XnStatus StartTracking(const XnPoint3D& ptPosition) = 0;
00346         virtual XnStatus SetSmoothing(XnFloat fSmoothingFactor) = 0;
00347     };
00348 
00349     class ModuleSkeletonInterface
00350     {
00351     public:
00352         virtual ~ModuleSkeletonInterface() {}
00353         virtual XnBool IsJointAvailable(XnSkeletonJoint eJoint) = 0;
00354         virtual XnBool IsProfileAvailable(XnSkeletonProfile eProfile) = 0;
00355         virtual XnStatus SetSkeletonProfile(XnSkeletonProfile eProfile) = 0;
00356         virtual XnStatus SetJointActive(XnSkeletonJoint eJoint, XnBool bState) = 0;
00357         virtual XnBool IsJointActive(XnSkeletonJoint eJoint) = 0;
00358         virtual XnStatus RegisterToJointConfigurationChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00359         virtual void UnregisterFromJointConfigurationChange(XnCallbackHandle hCallback) = 0;
00360         virtual XnStatus EnumerateActiveJoints(XnSkeletonJoint* pJoints, XnUInt16& nJoints) = 0;
00361         virtual XnStatus GetSkeletonJoint(XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointTransformation& jointTransformation) = 0;
00362         virtual XnStatus GetSkeletonJointPosition(XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointPosition& pJointPosition) = 0;
00363         virtual XnStatus GetSkeletonJointOrientation(XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointOrientation& pJointOrientation) = 0;
00364         virtual XnBool IsTracking(XnUserID user) = 0;
00365         virtual XnBool IsCalibrated(XnUserID user) = 0;
00366         virtual XnBool IsCalibrating(XnUserID user) = 0;
00367         virtual XnStatus RequestCalibration(XnUserID user, XnBool bForce) = 0;
00368         virtual XnStatus AbortCalibration(XnUserID user) = 0;
00369         virtual XnStatus SaveCalibrationData(XnUserID user, XnUInt32 nSlot) = 0;
00370         virtual XnStatus LoadCalibrationData(XnUserID user, XnUInt32 nSlot) = 0;
00371         virtual XnStatus ClearCalibrationData(XnUInt32 nSlot) = 0;
00372         virtual XnBool IsCalibrationData(XnUInt32 nSlot) = 0;
00373         virtual XnStatus StartTracking(XnUserID user) = 0;
00374         virtual XnStatus StopTracking(XnUserID user) = 0;
00375         virtual XnStatus Reset(XnUserID user) = 0;
00376         virtual XnBool NeedPoseForCalibration() = 0;
00377         virtual XnStatus GetCalibrationPose(XnChar* strPose) = 0;
00378         virtual XnStatus SetSmoothing(XnFloat fSmoothingFactor) = 0;
00379         virtual XnStatus RegisterCalibrationCallbacks(XnModuleCalibrationStart CalibrationStartCB, XnModuleCalibrationEnd CalibrationEndCB, void* pCookie, XnCallbackHandle& hCallback) = 0;
00380         virtual void UnregisterCalibrationCallbacks(XnCallbackHandle hCallback) = 0;
00381     };
00382 
00383     class ModulePoseDetectionInteface
00384     {
00385     public:
00386         virtual ~ModulePoseDetectionInteface() {}
00387 
00388         virtual XnUInt32 GetNumberOfPoses() = 0;
00389         virtual XnStatus GetAvailablePoses(XnChar** pstrPoses, XnUInt32& nPoses) = 0;
00390         virtual XnStatus GetAllAvailablePoses(XnChar** pstrPoses, XnUInt32 nNameLength, XnUInt32& nPoses) = 0;
00391 
00392         virtual XnStatus StartPoseDetection(const XnChar* strPose, XnUserID user) = 0;
00393         virtual XnStatus StopPoseDetection(XnUserID user) = 0;
00394 
00395         virtual XnStatus RegisterToPoseDetectionCallbacks(XnModulePoseDetectionCallback StartPoseCB, XnModulePoseDetectionCallback EndPoseCB, void* pCookie, XnCallbackHandle& hCallback) = 0;
00396         virtual void UnregisterFromPoseDetectionCallbacks(XnCallbackHandle hCallback) = 0;
00397 
00398     };
00399 
00400     class ModuleUserGenerator : virtual public ModuleGenerator
00401     {
00402     public:
00403         virtual ~ModuleUserGenerator() {}
00404         virtual XnUInt16 GetNumberOfUsers() = 0;
00405         virtual XnStatus GetUsers(XnUserID* pUsers, XnUInt16& nUsers) = 0;
00406         virtual XnStatus GetCoM(XnUserID user, XnPoint3D& com) = 0;
00407         virtual XnStatus GetUserPixels(XnUserID user, XnSceneMetaData *pScene) = 0;
00408         virtual XnStatus RegisterUserCallbacks(XnModuleUserHandler NewUserCB, XnModuleUserHandler LostUserCB, void* pCookie, XnCallbackHandle& hCallback) = 0;
00409         virtual void UnregisterUserCallbacks(XnCallbackHandle hCallback) = 0;
00410         virtual ModuleSkeletonInterface* GetSkeletonInterface() { return NULL; }
00411         virtual ModulePoseDetectionInteface* GetPoseDetectionInteface() {return NULL;}
00412 
00413     };
00414 
00415     class ModuleAudioGenerator : virtual public ModuleGenerator
00416     {
00417     public:
00418         virtual ~ModuleAudioGenerator() {}
00419         virtual XnUChar* GetAudioBuffer() = 0;
00420         virtual XnUInt32 GetSupportedWaveOutputModesCount() = 0;
00421         virtual XnStatus GetSupportedWaveOutputModes(XnWaveOutputMode aSupportedModes[], XnUInt32& nCount) = 0;
00422         virtual XnStatus SetWaveOutputMode(const XnWaveOutputMode& OutputMode) = 0;
00423         virtual XnStatus GetWaveOutputMode(XnWaveOutputMode& OutputMode) = 0;
00424         virtual XnStatus RegisterToWaveOutputModeChanges(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00425         virtual void UnregisterFromWaveOutputModeChanges(XnCallbackHandle hCallback) = 0;
00426     };
00427 
00428     class ModuleCodec : virtual public ModuleProductionNode
00429     {
00430     public:
00431         virtual ~ModuleCodec() {}
00432         virtual XnCodecID GetCodecID() const = 0;
00433         virtual XnStatus Init(const ProductionNode& node) = 0;
00434         virtual XnStatus CompressData(const void* pSrc, XnUInt32 nSrcSize, void* pDst, XnUInt32 nDstSize, XnUInt* pnBytesWritten) const = 0;
00435         virtual XnStatus DecompressData(const void* pSrc, XnUInt32 nSrcSize, void* pDst, XnUInt32 nDstSize, XnUInt* pnBytesWritten) const = 0;
00436     };
00437 }
00438 
00439 #endif // __XN_MODULE_CPP_INTERFACE_H__

Generated on Thu Feb 10 2011 for OpenNI 1.0.0 by  doxygen 1.7.1