OpenNI 1.0.0

XnModuleCppRegistratration.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_REGISTRATION_H__
00027 #define __XN_MODULE_CPP_REGISTRATION_H__
00028 
00029 //---------------------------------------------------------------------------
00030 // Includes
00031 //---------------------------------------------------------------------------
00032 #include "XnModuleCppInterface.h"
00033 
00034 using namespace xn;
00035 
00036 //---------------------------------------------------------------------------
00037 // Internal Macros
00038 //---------------------------------------------------------------------------
00040 #define _XN_MODULE_INST g_pTheModule
00041 
00042 #define _CONCAT(a,b) a##b
00043 
00044 inline XnModuleNodeHandle __ModuleNodeToHandle(xn::ModuleProductionNode* pNode)
00045 {
00046     return ((XnModuleNodeHandle)pNode);
00047 }
00048 
00049 #define __XN_EXPORT_NODE_COMMON(ExportedClass, ExportedName, Type, GetInterfaceFunc)                        \
00050                                                                     \
00051     static ExportedClass ExportedName;                                                                      \
00052                                                                                                             \
00053     void XN_CALLBACK_TYPE _CONCAT(ExportedClass,GetDescription)(XnProductionNodeDescription* pDescription)  \
00054     {                                                                                                       \
00055         ExportedName.GetDescription(pDescription);                                                          \
00056     }                                                                                                       \
00057                                                                                                             \
00058     XnStatus XN_CALLBACK_TYPE _CONCAT(ExportedClass,EnumerateProductionTrees)                               \
00059         (XnContext* pContext, XnNodeInfoList* pTreesList, XnEnumerationErrors* pErrors)                     \
00060     {                                                                                                       \
00061         Context context(pContext);                                                                          \
00062         NodeInfoList list(pTreesList);                                                                      \
00063         EnumerationErrors errors(pErrors);                                                                  \
00064         return ExportedName.EnumerateProductionTrees(context, list, pErrors == NULL ? NULL : &errors);      \
00065     }                                                                                                       \
00066                                                                                                             \
00067     XnStatus XN_CALLBACK_TYPE _CONCAT(ExportedClass,Create)(XnContext* pContext,                            \
00068         const XnChar* strInstanceName,                                                                      \
00069         const XnChar* strCreationInfo,                                                                      \
00070         XnNodeInfoList* pNeededTrees,                                                                       \
00071         const XnChar* strConfigurationDir,                                                                  \
00072         XnModuleNodeHandle* phInstance)                                                                     \
00073     {                                                                                                       \
00074         xn::NodeInfoList* pNeeded = NULL;                                                                   \
00075         if (pNeededTrees != NULL)                                                                           \
00076         {                                                                                                   \
00077             pNeeded = XN_NEW(xn::NodeInfoList, pNeededTrees);                                               \
00078         }                                                                                                   \
00079         ModuleProductionNode* pNode;                                                                        \
00080         Context context(pContext);                                                                          \
00081         XnStatus nRetVal = ExportedName.Create(context, strInstanceName, strCreationInfo,                   \
00082             pNeeded, strConfigurationDir, &pNode);                                                          \
00083         if (nRetVal != XN_STATUS_OK)                                                                        \
00084         {                                                                                                   \
00085             XN_DELETE(pNeeded);                                                                             \
00086             return (nRetVal);                                                                               \
00087         }                                                                                                   \
00088         *phInstance = __ModuleNodeToHandle(pNode);                                                          \
00089         XN_DELETE(pNeeded);                                                                                 \
00090         return (XN_STATUS_OK);                                                                              \
00091     }                                                                                                       \
00092                                                                                                             \
00093     void XN_CALLBACK_TYPE _CONCAT(ExportedClass,Destroy)(XnModuleNodeHandle hInstance)                      \
00094     {                                                                                                       \
00095         ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance;                                     \
00096         ExportedName.Destroy(pNode);                                                                        \
00097     }                                                                                                       \
00098                                                                                                             \
00099     void XN_CALLBACK_TYPE _CONCAT(ExportedClass,GetExportedInterface)(                                      \
00100         XnModuleExportedProductionNodeInterface* pInterface)                                                \
00101     {                                                                                                       \
00102         pInterface->GetDescription = _CONCAT(ExportedClass,GetDescription);                                 \
00103         pInterface->EnumerateProductionTrees = _CONCAT(ExportedClass,EnumerateProductionTrees);             \
00104         pInterface->Create = _CONCAT(ExportedClass,Create);                                                 \
00105         pInterface->Destroy = _CONCAT(ExportedClass,Destroy);                                               \
00106         pInterface->GetInterface.Type = GetInterfaceFunc;                                                   \
00107     }                                                                                                       \
00108                                                                                                             \
00109     static XnStatus _CONCAT(ExportedClass,RegisterResult) =                                                 \
00110         _XN_MODULE_INST->AddExportedNode(_CONCAT(ExportedClass,GetExportedInterface));
00111 
00112 #define _XN_EXPORT_NODE_COMMON(ExportedClass, Type, GetInterfaceFunc)                       \
00113     __XN_EXPORT_NODE_COMMON(ExportedClass, _g_##ExportedClass, Type, GetInterfaceFunc)
00114 
00115 #define _XN_VALIDATE_CAPABILITY_INTERFACE_RET(capInterface, retVal)     \
00116     if (capInterface == NULL)                                           \
00117         return retVal;
00118 
00119 #define _XN_VALIDATE_CAPABILITY_INTERFACE(capInterface)     \
00120     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(capInterface, XN_STATUS_INVALID_OPERATION)
00121 
00122 //---------------------------------------------------------------------------
00123 // Utility Macros
00124 //---------------------------------------------------------------------------
00125 
00127 #define XN_EXPORT_MODULE(ModuleClass)                                                \
00128                                                  \
00129     static ModuleClass __moduleInstance;                                             \
00130     Module* _XN_MODULE_INST = &__moduleInstance;                             
00131 
00133 #define XN_EXPORT_DEVICE(ExportedClass)                                                 \
00134     _XN_EXPORT_NODE_COMMON(ExportedClass, Device, __ModuleGetDeviceInterface)
00135 
00137 #define XN_EXPORT_DEPTH(ExportedClass)                                                  \
00138     _XN_EXPORT_NODE_COMMON(ExportedClass, Depth, __ModuleGetDepthGeneratorInterface)
00139 
00141 #define XN_EXPORT_IMAGE(ExportedClass)                                                  \
00142     _XN_EXPORT_NODE_COMMON(ExportedClass, Image, __ModuleGetImageGeneratorInterface)
00143 
00145 #define XN_EXPORT_IR(ExportedClass)                                                     \
00146     _XN_EXPORT_NODE_COMMON(ExportedClass, IR, __ModuleGetIRGeneratorInterface)
00147 
00148 #define XN_EXPORT_USER(ExportedClass)                                                   \
00149     _XN_EXPORT_NODE_COMMON(ExportedClass, User, __ModuleGetUserGeneratorInterface)
00150 
00151 #define XN_EXPORT_HANDS(ExportedClass)                                                  \
00152     _XN_EXPORT_NODE_COMMON(ExportedClass, Hands, __ModuleGetHandsGeneratorInterface)
00153 
00154 #define XN_EXPORT_GESTURE(ExportedClass)                                                \
00155     _XN_EXPORT_NODE_COMMON(ExportedClass, Gesture, __ModuleGetGestureGeneratorInterface)
00156 
00157 #define XN_EXPORT_SCENE(ExportedClass)                                                  \
00158     _XN_EXPORT_NODE_COMMON(ExportedClass, Scene, __ModuleGetSceneAnalyzerInterface)
00159 
00161 #define XN_EXPORT_AUDIO(ExportedClass)                                                  \
00162     _XN_EXPORT_NODE_COMMON(ExportedClass, Audio, __ModuleGetAudioGeneratorInterface)
00163 
00165 #define XN_EXPORT_RECORDER(ExportedClass)                                               \
00166     _XN_EXPORT_NODE_COMMON(ExportedClass, Recorder, __ModuleGetRecorderInterface)
00167 
00169 #define XN_EXPORT_PLAYER(ExportedClass)                                                 \
00170     _XN_EXPORT_NODE_COMMON(ExportedClass, Player, __ModuleGetPlayerInterface)
00171 
00172 #define XN_EXPORT_CODEC(ExportedClass)                                                  \
00173     _XN_EXPORT_NODE_COMMON(ExportedClass, Codec, __ModuleGetCodecInterface)
00174 
00175 //---------------------------------------------------------------------------
00176 // Exported C functions
00177 //---------------------------------------------------------------------------
00178 extern Module* _XN_MODULE_INST;
00179 
00180 XN_C_API_EXPORT XnStatus XN_C_DECL XN_MODULE_LOAD()
00181 {
00182     XnStatus nRetVal = XN_STATUS_OK;
00183     
00184     nRetVal = _XN_MODULE_INST->Load();
00185     XN_IS_STATUS_OK(nRetVal);
00186     
00187     return (XN_STATUS_OK);
00188 }
00189 
00190 XN_C_API_EXPORT void XN_C_DECL XN_MODULE_UNLOAD()
00191 {
00192     _XN_MODULE_INST->Unload();
00193 }
00194 
00195 XN_C_API_EXPORT XnUInt32 XN_C_DECL XN_MODULE_GET_EXPORTED_NODES_COUNT()
00196 {
00197     return _XN_MODULE_INST->GetExportedNodesCount();
00198 }
00199 
00200 XN_C_API_EXPORT XnStatus XN_C_DECL XN_MODULE_GET_EXPORTED_NODES_ENTRY_POINTS(XnModuleGetExportedInterfacePtr* aEntryPoints, XnUInt32 nCount)
00201 {
00202     return _XN_MODULE_INST->GetExportedNodes(aEntryPoints, nCount);
00203 }
00204 
00205 XN_C_API_EXPORT void XN_C_DECL XN_MODULE_GET_OPEN_NI_VERSION(XnVersion* pVersion)
00206 {
00207     pVersion->nMajor = XN_MAJOR_VERSION;
00208     pVersion->nMinor = XN_MINOR_VERSION;
00209     pVersion->nMaintenance = XN_MAINTENANCE_VERSION;
00210     pVersion->nBuild = XN_BUILD_VERSION;
00211 }
00212 
00213 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleIsCapabilitySupported(XnModuleNodeHandle hInstance, const XnChar* strCapabilityName)
00214 {
00215     ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance;
00216     return pNode->IsCapabilitySupported(strCapabilityName);
00217 }
00218 
00219 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleInitNotifications(XnModuleNodeHandle hInstance, XnNodeNotifications* pNotifications, void* pCookie)
00220 {
00221     ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance;
00222     ModuleExtendedSerializationInterface* pInterface = pNode->GetExtendedSerializationInterface();
00223     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
00224     return pInterface->NotifyExState(pNotifications, pCookie);
00225 }
00226 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleStopNotifications(XnModuleNodeHandle hInstance)
00227 {
00228     ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance;
00229     ModuleExtendedSerializationInterface* pInterface = pNode->GetExtendedSerializationInterface();
00230     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface,);
00231     pInterface->UnregisterExNotifications();
00232 }
00233 
00234 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSetLockState(XnModuleNodeHandle hInstance, XnBool bLocked)
00235 {
00236     ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance;
00237     ModuleLockAwareInterface* pInterface = pNode->GetLockAwareInterface();
00238     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
00239     return pInterface->SetLockState(bLocked);
00240 }
00241 
00242 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleGetLockState(XnModuleNodeHandle hInstance)
00243 {
00244     ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance;
00245     ModuleLockAwareInterface* pInterface = pNode->GetLockAwareInterface();
00246     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface, FALSE);
00247     return pInterface->GetLockState();
00248 }
00249 
00250 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterToLockChange(XnModuleNodeHandle hInstance, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback)
00251 {
00252     ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance;
00253     ModuleLockAwareInterface* pInterface = pNode->GetLockAwareInterface();
00254     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
00255     return pInterface->RegisterToLockChange(handler, pCookie, *phCallback);
00256 }
00257 
00258 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterFromLockChange(XnModuleNodeHandle hInstance, XnCallbackHandle hCallback)
00259 {
00260     ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance;
00261     ModuleLockAwareInterface* pInterface = pNode->GetLockAwareInterface();
00262     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface,);
00263     pInterface->UnregisterFromLockChange(hCallback);
00264 }
00265 
00266 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetErrorState(XnModuleNodeHandle hInstance)
00267 {
00268     ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance;
00269     ModuleErrorStateInterface* pInterface = pNode->GetErrorStateInterface();
00270     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface, XN_STATUS_OK);
00271     return pInterface->GetErrorState();
00272 }
00273 
00274 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterToErrorStateChange(XnModuleNodeHandle hInstance, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback)
00275 {
00276     ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance;
00277     ModuleErrorStateInterface* pInterface = pNode->GetErrorStateInterface();
00278     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
00279     return pInterface->RegisterToErrorStateChange(handler, pCookie, *phCallback);
00280 }
00281 
00282 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterFromErrorStateChange(XnModuleNodeHandle hInstance, XnCallbackHandle hCallback)
00283 {
00284     ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance;
00285     ModuleErrorStateInterface* pInterface = pNode->GetErrorStateInterface();
00286     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface,);
00287     pInterface->UnregisterFromErrorStateChange(hCallback);
00288 }
00289 
00290 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSetIntProperty(XnModuleNodeHandle hInstance, const XnChar* strName, XnUInt64 nValue)
00291 {
00292     ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance;
00293     return pNode->SetIntProperty(strName, nValue);
00294 }
00295 
00296 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSetRealProperty(XnModuleNodeHandle hInstance, const XnChar* strName, XnDouble dValue)
00297 {
00298     ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance;
00299     return pNode->SetRealProperty(strName, dValue);
00300 }
00301 
00302 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSetStringProperty(XnModuleNodeHandle hInstance, const XnChar* strName, const XnChar* strValue)
00303 {
00304     ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance;
00305     return pNode->SetStringProperty(strName, strValue);
00306 }
00307 
00308 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSetGeneralProperty(XnModuleNodeHandle hInstance, const XnChar* strName, XnUInt32 nBufferSize, const void* pBuffer)
00309 {
00310     ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance;
00311     return pNode->SetGeneralProperty(strName, nBufferSize, pBuffer);
00312 }
00313 
00314 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetIntProperty(XnModuleNodeHandle hInstance, const XnChar* strName, XnUInt64* pnValue)
00315 {
00316     ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance;
00317     return pNode->GetIntProperty(strName, *pnValue);
00318 }
00319 
00320 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetRealProperty(XnModuleNodeHandle hInstance, const XnChar* strName, XnDouble* pdValue)
00321 {
00322     ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance;
00323     return pNode->GetRealProperty(strName, *pdValue);
00324 }
00325 
00326 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetStringProperty(XnModuleNodeHandle hInstance, const XnChar* strName, XnChar* csValue, XnUInt32 nBufSize)
00327 {
00328     ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance;
00329     return pNode->GetStringProperty(strName, csValue, nBufSize);
00330 }
00331 
00332 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetGeneralProperty(XnModuleNodeHandle hInstance, const XnChar* strName, XnUInt32 nBufferSize, void* pBuffer)
00333 {
00334     ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance;
00335     return pNode->GetGeneralProperty(strName, nBufferSize, pBuffer);
00336 }
00337 
00338 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSetOutputStream(XnModuleNodeHandle hInstance, void *pCookie, XnRecorderOutputStreamInterface *pStream)
00339 {
00340     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hInstance;
00341     ModuleRecorder* pNode = dynamic_cast<ModuleRecorder*>(pProdNode);
00342     return pNode->SetOutputStream(pCookie, pStream);
00343 }
00344 
00345 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSetInputStream(XnModuleNodeHandle hInstance, void *pStreamCookie, XnPlayerInputStreamInterface *pStream)
00346 {
00347     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hInstance;
00348     ModulePlayer* pNode = dynamic_cast<ModulePlayer*>(pProdNode);
00349     return pNode->SetInputStream(pStreamCookie, pStream);
00350 }
00351 
00352 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleReadNext(XnModuleNodeHandle hInstance)
00353 {
00354     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hInstance;
00355     ModulePlayer* pNode = dynamic_cast<ModulePlayer*>(pProdNode);
00356     return pNode->ReadNext();
00357 }
00358 
00359 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSetRepeat(XnModuleNodeHandle hInstance, XnBool bRepeat)
00360 {
00361     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hInstance;
00362     ModulePlayer* pNode = dynamic_cast<ModulePlayer*>(pProdNode);
00363     return pNode->SetRepeat(bRepeat);
00364 }
00365 
00366 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSeekToTimeStamp(XnModuleNodeHandle hInstance, XnInt64 nTimeOffset, XnPlayerSeekOrigin origin)
00367 {
00368     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hInstance;
00369     ModulePlayer* pNode = dynamic_cast<ModulePlayer*>(pProdNode);
00370     return pNode->SeekToTimeStamp(nTimeOffset, origin);
00371 }
00372 
00373 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSeekToFrame(XnModuleNodeHandle hInstance, const XnChar* strNodeName, XnInt32 nFrameOffset, XnPlayerSeekOrigin origin)
00374 {
00375     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hInstance;
00376     ModulePlayer* pNode = dynamic_cast<ModulePlayer*>(pProdNode);
00377     return pNode->SeekToFrame(strNodeName, nFrameOffset, origin);
00378 }
00379 
00380 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleTellTimestamp(XnModuleNodeHandle hInstance, XnUInt64* pnTimestamp)
00381 {
00382     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hInstance;
00383     ModulePlayer* pNode = dynamic_cast<ModulePlayer*>(pProdNode);
00384     return pNode->TellTimestamp(*pnTimestamp);
00385 }
00386 
00387 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleTellFrame(XnModuleNodeHandle hInstance, const XnChar* strNodeName, XnUInt32* pnFrame)
00388 {
00389     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hInstance;
00390     ModulePlayer* pNode = dynamic_cast<ModulePlayer*>(pProdNode);
00391     return pNode->TellFrame(strNodeName, *pnFrame);
00392 }
00393 
00394 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetNumFrames(XnModuleNodeHandle hInstance, const XnChar* strNodeName, XnUInt32* pnFrames)
00395 {
00396     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hInstance;
00397     ModulePlayer* pNode = dynamic_cast<ModulePlayer*>(pProdNode);
00398     return pNode->GetNumFrames(strNodeName, *pnFrames);
00399 }
00400 
00401 XN_C_API_EXPORT const XnChar* XN_CALLBACK_TYPE __ModuleGetSupportedFormat(XnModuleNodeHandle hInstance)
00402 {
00403     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hInstance;
00404     ModulePlayer* pNode = dynamic_cast<ModulePlayer*>(pProdNode);
00405     return pNode->GetSupportedFormat();
00406 }
00407 
00408 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleIsEOF(XnModuleNodeHandle hGenerator)
00409 {
00410     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00411     ModulePlayer* pNode = dynamic_cast<ModulePlayer*>(pProdNode);
00412     return pNode->IsEOF();
00413 }
00414 
00415 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterToEndOfFileReached(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback)
00416 {
00417     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00418     ModulePlayer* pNode = dynamic_cast<ModulePlayer*>(pProdNode);
00419     return pNode->RegisterToEndOfFileReached(handler, pCookie, *phCallback);
00420 }
00421 
00422 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterFromEndOfFileReached(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback)
00423 {
00424     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00425     ModulePlayer* pNode = dynamic_cast<ModulePlayer*>(pProdNode);
00426     pNode->UnregisterFromEndOfFileReached(hCallback);
00427 }
00428 
00429 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSetNodeNotifications(XnModuleNodeHandle hInstance, void *pNodeNotificationsCookie, XnNodeNotifications *pNodeNotifications)
00430 {
00431     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hInstance;
00432     ModulePlayer* pNode = dynamic_cast<ModulePlayer*>(pProdNode);
00433     return pNode->SetNodeNotifications(pNodeNotificationsCookie, pNodeNotifications);
00434 }
00435 
00436 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleOnNodeAdded(XnModuleNodeHandle hGenerator, const XnChar *strNodeName, XnProductionNodeType type, XnCodecID compression)
00437 {
00438     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00439     ModuleRecorder* pNode = dynamic_cast<ModuleRecorder*>(pProdNode);
00440     return pNode->OnNodeAdded(strNodeName, type, compression);
00441 }
00442 
00443 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleOnNodeRemoved(XnModuleNodeHandle hGenerator, const XnChar *strNodeName)
00444 {
00445     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00446     ModuleRecorder* pNode = dynamic_cast<ModuleRecorder*>(pProdNode);
00447     return pNode->OnNodeRemoved(strNodeName);
00448 }
00449 
00450 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleOnNodeIntPropChanged(XnModuleNodeHandle hGenerator, const XnChar *strNodeName, const XnChar* strPropName, XnUInt64 nValue)
00451 {
00452     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00453     ModuleRecorder* pNode = dynamic_cast<ModuleRecorder*>(pProdNode);
00454     return pNode->OnNodeIntPropChanged(strNodeName, strPropName, nValue);
00455 }
00456 
00457 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleOnNodeRealPropChanged(XnModuleNodeHandle hGenerator, const XnChar *strNodeName, const XnChar* strPropName, XnDouble dValue)
00458 {
00459     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00460     ModuleRecorder* pNode = dynamic_cast<ModuleRecorder*>(pProdNode);
00461     return pNode->OnNodeRealPropChanged(strNodeName, strPropName, dValue);
00462 }
00463 
00464 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleOnNodeStringPropChanged(XnModuleNodeHandle hGenerator, const XnChar *strNodeName, const XnChar* strPropName, const XnChar* strValue)
00465 {
00466     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00467     ModuleRecorder* pNode = dynamic_cast<ModuleRecorder*>(pProdNode);
00468     return pNode->OnNodeStringPropChanged(strNodeName, strPropName, strValue);
00469 }
00470 
00471 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleOnNodeGeneralPropChanged(XnModuleNodeHandle hGenerator, const XnChar *strNodeName, const XnChar* strPropName, XnUInt32 nBufferSize, const void* pBuffer)
00472 {
00473     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00474     ModuleRecorder* pNode = dynamic_cast<ModuleRecorder*>(pProdNode);
00475     return pNode->OnNodeGeneralPropChanged(strNodeName, strPropName, nBufferSize, pBuffer);
00476 }
00477 
00478 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleOnNodeNewData(XnModuleNodeHandle hGenerator, const XnChar *strNodeName, XnUInt64 nTimeStamp, XnUInt32 nFrame, const void *pData, XnUInt32 nSize)
00479 {
00480     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00481     ModuleRecorder* pNode = dynamic_cast<ModuleRecorder*>(pProdNode);
00482     return pNode->OnNodeNewData(strNodeName, nTimeStamp, nFrame, pData, nSize);
00483 }
00484 
00485 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleOnNodeStateReady(XnModuleNodeHandle hGenerator, const XnChar *strNodeName)
00486 {
00487     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00488     ModuleRecorder* pNode = dynamic_cast<ModuleRecorder*>(pProdNode);
00489     return pNode->OnNodeStateReady(strNodeName);
00490 }
00491 
00492 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSetMirror(XnModuleNodeHandle hGenerator, XnBool bMirror)
00493 {
00494     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00495     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00496     ModuleMirrorInterface* pInterface = pNode->GetMirrorInterface();
00497     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
00498     return pInterface->SetMirror(bMirror);
00499 }
00500 
00501 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleIsMirrored(XnModuleNodeHandle hGenerator)
00502 {
00503     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00504     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00505     ModuleMirrorInterface* pInterface = pNode->GetMirrorInterface();
00506     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface, FALSE);
00507     return pInterface->IsMirrored();
00508 }
00509 
00510 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterToMirrorChange(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback)
00511 {
00512     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00513     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00514     ModuleMirrorInterface* pInterface = pNode->GetMirrorInterface();
00515     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
00516     return pInterface->RegisterToMirrorChange(handler, pCookie, *phCallback);
00517 }
00518 
00519 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterFromMirrorChange(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback)
00520 {
00521     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00522     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00523     ModuleMirrorInterface* pInterface = pNode->GetMirrorInterface();
00524     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface,);
00525     pInterface->UnregisterFromMirrorChange(hCallback);
00526 }
00527 
00528 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleIsViewPointSupported(XnModuleNodeHandle hGenerator, XnNodeHandle hNode)
00529 {
00530     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00531     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00532     ProductionNode node(hNode);
00533     ModuleAlternativeViewPointInterface* pInterface = pNode->GetAlternativeViewPointInterface();
00534     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface, FALSE);
00535     return pInterface->IsViewPointSupported(node);
00536 }
00537 
00538 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSetViewPoint(XnModuleNodeHandle hGenerator, XnNodeHandle hNode)
00539 {
00540     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00541     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00542     ProductionNode node(hNode);
00543     ModuleAlternativeViewPointInterface* pInterface = pNode->GetAlternativeViewPointInterface();
00544     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
00545     return pInterface->SetViewPoint(node);
00546 }
00547 
00548 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleResetViewPoint(XnModuleNodeHandle hGenerator)
00549 {
00550     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00551     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00552     ModuleAlternativeViewPointInterface* pInterface = pNode->GetAlternativeViewPointInterface();
00553     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
00554     return pInterface->ResetViewPoint();
00555 }
00556 
00557 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleIsViewPointAs(XnModuleNodeHandle hGenerator, XnNodeHandle hNode)
00558 {
00559     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00560     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00561     ModuleAlternativeViewPointInterface* pInterface = pNode->GetAlternativeViewPointInterface();
00562     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface, FALSE);
00563     ProductionNode node(hNode);
00564     return pInterface->IsViewPointAs(node);
00565 }
00566 
00567 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterToViewPointChange(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback)
00568 {
00569     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00570     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00571     ModuleAlternativeViewPointInterface* pInterface = pNode->GetAlternativeViewPointInterface();
00572     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
00573     return pInterface->RegisterToViewPointChange(handler, pCookie, *phCallback);
00574 }
00575 
00576 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterFromViewPointChange(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback)
00577 {
00578     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00579     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00580     ModuleAlternativeViewPointInterface* pInterface = pNode->GetAlternativeViewPointInterface();
00581     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface,);
00582     pInterface->UnregisterFromViewPointChange(hCallback);
00583 }
00584 
00585 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleCanFrameSyncWith(XnModuleNodeHandle hGenerator, XnNodeHandle hNode)
00586 {
00587     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00588     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00589     ModuleFrameSyncInterface* pInterface = pNode->GetFrameSyncInterface();
00590     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface, FALSE);
00591     ProductionNode node(hNode);
00592     return pInterface->CanFrameSyncWith(node);
00593 }
00594 
00595 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleFrameSyncWith(XnModuleNodeHandle hGenerator, XnNodeHandle hNode)
00596 {
00597     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00598     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00599     ModuleFrameSyncInterface* pInterface = pNode->GetFrameSyncInterface();
00600     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
00601     ProductionNode node(hNode);
00602     return pInterface->FrameSyncWith(node);
00603 }
00604 
00605 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleStopFrameSyncWith(XnModuleNodeHandle hGenerator, XnNodeHandle hNode)
00606 {
00607     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00608     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00609     ModuleFrameSyncInterface* pInterface = pNode->GetFrameSyncInterface();
00610     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
00611     ProductionNode node(hNode);
00612     return pInterface->StopFrameSyncWith(node);
00613 }
00614 
00615 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleIsFrameSyncedWith(XnModuleNodeHandle hGenerator, XnNodeHandle hNode)
00616 {
00617     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00618     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00619     ModuleFrameSyncInterface* pInterface = pNode->GetFrameSyncInterface();
00620     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface, FALSE);
00621     ProductionNode node(hNode);
00622     return pInterface->IsFrameSyncedWith(node);
00623 }
00624 
00625 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterToFrameSyncChange(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback)
00626 {
00627     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00628     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00629     ModuleFrameSyncInterface* pInterface = pNode->GetFrameSyncInterface();
00630     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
00631     return pInterface->RegisterToFrameSyncChange(handler, pCookie, *phCallback);
00632 }
00633 
00634 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterFromFrameSyncChange(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback)
00635 {
00636     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00637     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00638     ModuleFrameSyncInterface* pInterface = pNode->GetFrameSyncInterface();
00639     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface,);
00640     pInterface->UnregisterFromFrameSyncChange(hCallback);
00641 }
00642 
00643 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleStartGenerating(XnModuleNodeHandle hGenerator)
00644 {
00645     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00646     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00647     return pNode->StartGenerating();
00648 }
00649 
00650 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleIsGenerating(XnModuleNodeHandle hGenerator)
00651 {
00652     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00653     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00654     return pNode->IsGenerating();
00655 }
00656 
00657 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleStopGenerating(XnModuleNodeHandle hGenerator)
00658 {
00659     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00660     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00661     pNode->StopGenerating();
00662 }
00663 
00664 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterToGenerationRunningChange(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback)
00665 {
00666     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00667     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00668     return pNode->RegisterToGenerationRunningChange(handler, pCookie, *phCallback);
00669 }
00670 
00671 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterFromGenerationRunningChange(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback)
00672 {
00673     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00674     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00675     pNode->UnregisterFromGenerationRunningChange(hCallback);
00676 }
00677 
00678 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterToNewDataAvailable(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback)
00679 {
00680     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00681     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00682     return pNode->RegisterToNewDataAvailable(handler, pCookie, *phCallback);
00683 }
00684 
00685 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterFromNewDataAvailable(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback)
00686 {
00687     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00688     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00689     pNode->UnregisterFromNewDataAvailable(hCallback);
00690 }
00691     
00692 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleIsNewDataAvailable(XnModuleNodeHandle hGenerator, XnUInt64* pnTimestamp)
00693 {
00694     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00695     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00696     return pNode->IsNewDataAvailable(*pnTimestamp);
00697 }
00698 
00699 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleUpdateData(XnModuleNodeHandle hGenerator)
00700 {
00701     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00702     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00703     return pNode->UpdateData();
00704 }
00705 
00706 XN_C_API_EXPORT XnUInt32 XN_CALLBACK_TYPE __ModuleGetDataSize(XnModuleNodeHandle hGenerator)
00707 {
00708     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00709     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00710     return pNode->GetDataSize();
00711 }
00712 
00713 XN_C_API_EXPORT XnUInt64 XN_CALLBACK_TYPE __ModuleGetTimestamp(XnModuleNodeHandle hGenerator)
00714 {
00715     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00716     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00717     return pNode->GetTimestamp();
00718 }
00719 
00720 XN_C_API_EXPORT XnUInt32 XN_CALLBACK_TYPE __ModuleGetFrameID(XnModuleNodeHandle hGenerator)
00721 {
00722     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00723     ModuleGenerator* pNode = dynamic_cast<ModuleGenerator*>(pProdNode);
00724     return pNode->GetFrameID();
00725 }
00726 
00727 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSetCropping(XnModuleNodeHandle hGenerator, const XnCropping* pCropping)
00728 {
00729     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00730     ModuleMapGenerator* pNode = dynamic_cast<ModuleMapGenerator*>(pProdNode);
00731     ModuleCroppingInterface* pInterface = pNode->GetCroppingInterface();
00732     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
00733     return pInterface->SetCropping(*pCropping);
00734 }
00735 
00736 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetCropping(XnModuleNodeHandle hGenerator, XnCropping* pCropping)
00737 {
00738     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00739     ModuleMapGenerator* pNode = dynamic_cast<ModuleMapGenerator*>(pProdNode);
00740     ModuleCroppingInterface* pInterface = pNode->GetCroppingInterface();
00741     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
00742     return pInterface->GetCropping(*pCropping);
00743 }
00744 
00745 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterToCroppingChange(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback)
00746 {
00747     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00748     ModuleMapGenerator* pNode = dynamic_cast<ModuleMapGenerator*>(pProdNode);
00749     ModuleCroppingInterface* pInterface = pNode->GetCroppingInterface();
00750     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
00751     return pInterface->RegisterToCroppingChange(handler, pCookie, *phCallback);
00752 }
00753 
00754 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterFromCroppingChange(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback)
00755 {
00756     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00757     ModuleMapGenerator* pNode = dynamic_cast<ModuleMapGenerator*>(pProdNode);
00758     ModuleCroppingInterface* pInterface = pNode->GetCroppingInterface();
00759     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface,);
00760     pInterface->UnregisterFromCroppingChange(hCallback);
00761 }
00762 
00763 XN_C_API_EXPORT XnUInt32 XN_CALLBACK_TYPE __ModuleGetSupportedMapOutputModesCount(XnModuleNodeHandle hGenerator)
00764 {
00765     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00766     ModuleMapGenerator* pNode = dynamic_cast<ModuleMapGenerator*>(pProdNode);
00767     return pNode->GetSupportedMapOutputModesCount();
00768 }
00769 
00770 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetSupportedMapOutputModes(XnModuleNodeHandle hGenerator, XnMapOutputMode* aModes, XnUInt32* pnCount)
00771 {
00772     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00773     ModuleMapGenerator* pNode = dynamic_cast<ModuleMapGenerator*>(pProdNode);
00774     return pNode->GetSupportedMapOutputModes(aModes, *pnCount);
00775 }
00776 
00777 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSetMapOutputMode(XnModuleNodeHandle hGenerator, const XnMapOutputMode* pOutputMode)
00778 {
00779     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00780     ModuleMapGenerator* pNode = dynamic_cast<ModuleMapGenerator*>(pProdNode);
00781     return pNode->SetMapOutputMode(*pOutputMode);
00782 }
00783 
00784 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetMapOutputMode(XnModuleNodeHandle hGenerator, XnMapOutputMode* pOutputMode)
00785 {
00786     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00787     ModuleMapGenerator* pNode = dynamic_cast<ModuleMapGenerator*>(pProdNode);
00788     return pNode->GetMapOutputMode(*pOutputMode);
00789 }
00790 
00791 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterToMapOutputModeChange(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback)
00792 {
00793     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00794     ModuleMapGenerator* pNode = dynamic_cast<ModuleMapGenerator*>(pProdNode);
00795     return pNode->RegisterToMapOutputModeChange(handler, pCookie, *phCallback);
00796 }
00797 
00798 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterFromMapOutputModeChange(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback)
00799 {
00800     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00801     ModuleMapGenerator* pNode = dynamic_cast<ModuleMapGenerator*>(pProdNode);
00802     pNode->UnregisterFromMapOutputModeChange(hCallback);
00803 }
00804 
00805 XN_C_API_EXPORT XnUInt32 XN_CALLBACK_TYPE __ModuleGetSupportedUserPositionsCount(XnModuleNodeHandle hGenerator)
00806 {
00807     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00808     ModuleDepthGenerator* pNode = dynamic_cast<ModuleDepthGenerator*>(pProdNode);
00809     ModuleUserPositionInterface* pInterface = pNode->GetUserPositionInterface();
00810     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface, 0);
00811     return pInterface->GetSupportedUserPositionsCount();
00812 }
00813 
00814 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSetUserPosition(XnModuleNodeHandle hGenerator, XnUInt32 nIndex, const XnBoundingBox3D* pPosition)
00815 {
00816     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00817     ModuleDepthGenerator* pNode = dynamic_cast<ModuleDepthGenerator*>(pProdNode);
00818     ModuleUserPositionInterface* pInterface = pNode->GetUserPositionInterface();
00819     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
00820     return pInterface->SetUserPosition(nIndex, *pPosition);
00821 }
00822 
00823 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetUserPosition(XnModuleNodeHandle hGenerator, XnUInt32 nIndex, XnBoundingBox3D* pPosition)
00824 {
00825     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00826     ModuleDepthGenerator* pNode = dynamic_cast<ModuleDepthGenerator*>(pProdNode);
00827     ModuleUserPositionInterface* pInterface = pNode->GetUserPositionInterface();
00828     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
00829     return pInterface->GetUserPosition(nIndex, *pPosition);
00830 }
00831 
00832 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterToUserPositionChange(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback)
00833 {
00834     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00835     ModuleDepthGenerator* pNode = dynamic_cast<ModuleDepthGenerator*>(pProdNode);
00836     ModuleUserPositionInterface* pInterface = pNode->GetUserPositionInterface();
00837     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
00838     return pInterface->RegisterToUserPositionChange(handler, pCookie, *phCallback);
00839 }
00840 
00841 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterFromUserPositionChange(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback)
00842 {
00843     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00844     ModuleDepthGenerator* pNode = dynamic_cast<ModuleDepthGenerator*>(pProdNode);
00845     ModuleUserPositionInterface* pInterface = pNode->GetUserPositionInterface();
00846     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface,);
00847     pInterface->UnregisterFromUserPositionChange(hCallback);
00848 }
00849 
00850 XN_C_API_EXPORT XnDepthPixel XN_CALLBACK_TYPE __ModuleGetDeviceMaxDepth(XnModuleNodeHandle hGenerator)
00851 {
00852     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00853     ModuleDepthGenerator* pNode = dynamic_cast<ModuleDepthGenerator*>(pProdNode);
00854     return pNode->GetDeviceMaxDepth();
00855 }
00856 
00857 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetFieldOfView(XnModuleNodeHandle hGenerator, XnFieldOfView* pFOV)
00858 {
00859     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00860     ModuleDepthGenerator* pNode = dynamic_cast<ModuleDepthGenerator*>(pProdNode);
00861     pNode->GetFieldOfView(*pFOV);
00862 }
00863 
00864 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterToFieldOfViewChange(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback)
00865 {
00866     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00867     ModuleDepthGenerator* pNode = dynamic_cast<ModuleDepthGenerator*>(pProdNode);
00868     return pNode->RegisterToFieldOfViewChange(handler, pCookie, *phCallback);
00869 }
00870 
00871 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterFromFieldOfViewChange(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback)
00872 {
00873     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00874     ModuleDepthGenerator* pNode = dynamic_cast<ModuleDepthGenerator*>(pProdNode);
00875     pNode->UnregisterFromFieldOfViewChange(hCallback);
00876 }
00877 
00878 XN_C_API_EXPORT XnDepthPixel* XN_CALLBACK_TYPE __ModuleGetDepthMap(XnModuleNodeHandle hGenerator)
00879 {
00880     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00881     ModuleDepthGenerator* pNode = dynamic_cast<ModuleDepthGenerator*>(pProdNode);
00882     return pNode->GetDepthMap();
00883 }
00884 
00885 XN_C_API_EXPORT XnUInt8* XN_CALLBACK_TYPE __ModuleGetImageMap(XnModuleNodeHandle hGenerator)
00886 {
00887     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00888     ModuleImageGenerator* pNode = dynamic_cast<ModuleImageGenerator*>(pProdNode);
00889     return pNode->GetImageMap();
00890 }
00891 
00892 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleIsPixelFormatSupported(XnModuleNodeHandle hGenerator, XnPixelFormat Format)
00893 {
00894     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00895     ModuleImageGenerator* pNode = dynamic_cast<ModuleImageGenerator*>(pProdNode);
00896     return pNode->IsPixelFormatSupported(Format);
00897 }
00898 
00899 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSetPixelFormat(XnModuleNodeHandle hGenerator, XnPixelFormat Format)
00900 {
00901     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00902     ModuleImageGenerator* pNode = dynamic_cast<ModuleImageGenerator*>(pProdNode);
00903     return pNode->SetPixelFormat(Format);
00904 }
00905 
00906 XN_C_API_EXPORT XnPixelFormat XN_CALLBACK_TYPE __ModuleGetPixelFormat(XnModuleNodeHandle hGenerator)
00907 {
00908     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00909     ModuleImageGenerator* pNode = dynamic_cast<ModuleImageGenerator*>(pProdNode);
00910     return pNode->GetPixelFormat();
00911 }
00912 
00913 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterToPixelFormatChange(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback)
00914 {
00915     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00916     ModuleImageGenerator* pNode = dynamic_cast<ModuleImageGenerator*>(pProdNode);
00917     return pNode->RegisterToPixelFormatChange(handler, pCookie, *phCallback);
00918 }
00919 
00920 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterFromPixelFormatChange(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback)
00921 {
00922     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00923     ModuleImageGenerator* pNode = dynamic_cast<ModuleImageGenerator*>(pProdNode);
00924     pNode->UnregisterFromPixelFormatChange(hCallback);
00925 }
00926 
00927 XN_C_API_EXPORT XnIRPixel* XN_CALLBACK_TYPE __ModuleGetIRMap(XnModuleNodeHandle hGenerator)
00928 {
00929     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00930     ModuleIRGenerator* pNode = dynamic_cast<ModuleIRGenerator*>(pProdNode);
00931     return pNode->GetIRMap();
00932 }
00933 
00934 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleAddGesture(XnModuleNodeHandle hGenerator, const XnChar* strGesture, XnBoundingBox3D* pArea)
00935 {
00936     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00937     ModuleGestureGenerator* pNode = dynamic_cast<ModuleGestureGenerator*>(pProdNode);
00938     return pNode->AddGesture(strGesture, pArea);
00939 }
00940 
00941 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRemoveGesture(XnModuleNodeHandle hGenerator, const XnChar* strGesture)
00942 {
00943     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00944     ModuleGestureGenerator* pNode = dynamic_cast<ModuleGestureGenerator*>(pProdNode);
00945     return pNode->RemoveGesture(strGesture);
00946 }
00947 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetActiveGestures(XnModuleNodeHandle hGenerator, XnChar** pstrGestures, XnUInt16* pnGestures)
00948 {
00949     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00950     ModuleGestureGenerator* pNode = dynamic_cast<ModuleGestureGenerator*>(pProdNode);
00951     return pNode->GetActiveGestures(pstrGestures, *pnGestures);
00952 }
00953 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetAllActiveGestures(XnModuleNodeHandle hGenerator, XnChar** pstrGestures, XnUInt32 nNameLength, XnUInt16* pnGestures)
00954 {
00955     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00956     ModuleGestureGenerator* pNode = dynamic_cast<ModuleGestureGenerator*>(pProdNode);
00957     return pNode->GetAllActiveGestures(pstrGestures, nNameLength, *pnGestures);
00958 }
00959 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleEnumerateGestures(XnModuleNodeHandle hGenerator, XnChar** pstrGestures, XnUInt16* pnGestures)
00960 {
00961     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00962     ModuleGestureGenerator* pNode = dynamic_cast<ModuleGestureGenerator*>(pProdNode);
00963     return pNode->EnumerateGestures(pstrGestures, *pnGestures);
00964 }
00965 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleEnumerateAllGestures(XnModuleNodeHandle hGenerator, XnChar** pstrGestures, XnUInt32 nNameLength, XnUInt16* pnGestures)
00966 {
00967     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00968     ModuleGestureGenerator* pNode = dynamic_cast<ModuleGestureGenerator*>(pProdNode);
00969     return pNode->EnumerateAllGestures(pstrGestures, nNameLength, *pnGestures);
00970 }
00971 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleIsGestureAvailable(XnModuleNodeHandle hGenerator, const XnChar* strGesture)
00972 {
00973     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00974     ModuleGestureGenerator* pNode = dynamic_cast<ModuleGestureGenerator*>(pProdNode);
00975     return pNode->IsGestureAvailable(strGesture);
00976 }
00977 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleIsGestureProgressSupported(XnModuleNodeHandle hGenerator, const XnChar* strGesture)
00978 {
00979     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00980     ModuleGestureGenerator* pNode = dynamic_cast<ModuleGestureGenerator*>(pProdNode);
00981     return pNode->IsGestureProgressSupported(strGesture);
00982 }
00983 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterGestureCallbacks(XnModuleNodeHandle hGenerator, XnModuleGestureRecognized RecognizedCB, XnModuleGestureProgress ProgressCB, void* pCookie, XnCallbackHandle* phCallback)
00984 {
00985     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00986     ModuleGestureGenerator* pNode = dynamic_cast<ModuleGestureGenerator*>(pProdNode);
00987     return pNode->RegisterGestureCallbacks(RecognizedCB, ProgressCB, pCookie, *phCallback);
00988 }
00989 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterGestureCallbacks(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback)
00990 {
00991     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00992     ModuleGestureGenerator* pNode = dynamic_cast<ModuleGestureGenerator*>(pProdNode);
00993     pNode->UnregisterGestureCallbacks(hCallback);
00994 }
00995 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterToGestureChange(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback)
00996 {
00997     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
00998     ModuleGestureGenerator* pNode = dynamic_cast<ModuleGestureGenerator*>(pProdNode);
00999     return pNode->RegisterToGestureChange(handler, pCookie, *phCallback);
01000 }
01001 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterFromGestureChange(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback)
01002 {
01003     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01004     ModuleGestureGenerator* pNode = dynamic_cast<ModuleGestureGenerator*>(pProdNode);
01005     pNode->UnregisterFromGestureChange(hCallback);
01006 }
01007 
01008 XN_C_API_EXPORT const XnLabel* XN_CALLBACK_TYPE __ModuleGetLabelMap(XnModuleNodeHandle hGenerator)
01009 {
01010     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01011     ModuleSceneAnalyzer* pNode = dynamic_cast<ModuleSceneAnalyzer*>(pProdNode);
01012     return pNode->GetLabelMap();
01013 }
01014 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetFloor(XnModuleNodeHandle hGenerator, XnPlane3D* pPlane)
01015 {
01016     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01017     ModuleSceneAnalyzer* pNode = dynamic_cast<ModuleSceneAnalyzer*>(pProdNode);
01018     return pNode->GetFloor(*pPlane);
01019 }
01020 
01021 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterHandCallbacks(XnModuleNodeHandle hGenerator, XnModuleHandCreate CreateCB, XnModuleHandUpdate UpdateCB, XnModuleHandDestroy DestroyCB, void* pCookie, XnCallbackHandle* phCallback)
01022 {
01023     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01024     ModuleHandsGenerator* pNode = dynamic_cast<ModuleHandsGenerator*>(pProdNode);
01025     return pNode->RegisterHandCallbacks(CreateCB, UpdateCB, DestroyCB, pCookie, *phCallback);
01026 }
01027 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterHandCallbacks(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback)
01028 {
01029     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01030     ModuleHandsGenerator* pNode = dynamic_cast<ModuleHandsGenerator*>(pProdNode);
01031     pNode->UnregisterHandCallbacks(hCallback);
01032 }
01033 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleStopTracking(XnModuleNodeHandle hGenerator, XnUserID user)
01034 {
01035     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01036     ModuleHandsGenerator* pNode = dynamic_cast<ModuleHandsGenerator*>(pProdNode);
01037     return pNode->StopTracking(user);
01038 }
01039 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleStopTrackingAll(XnModuleNodeHandle hGenerator)
01040 {
01041     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01042     ModuleHandsGenerator* pNode = dynamic_cast<ModuleHandsGenerator*>(pProdNode);
01043     return pNode->StopTrackingAll();
01044 }
01045 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleStartTracking(XnModuleNodeHandle hGenerator, const XnPoint3D* pPosition)
01046 {
01047     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01048     ModuleHandsGenerator* pNode = dynamic_cast<ModuleHandsGenerator*>(pProdNode);
01049     return pNode->StartTracking(*pPosition);
01050 }
01051 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSetTrackingSmoothing(XnModuleNodeHandle hGenerator, XnFloat fSmoothingFactor)
01052 {
01053     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01054     ModuleHandsGenerator* pNode = dynamic_cast<ModuleHandsGenerator*>(pProdNode);
01055     return pNode->SetSmoothing(fSmoothingFactor);
01056 }
01057 
01058 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleIsJointAvailable(XnModuleNodeHandle hGenerator, XnSkeletonJoint eJoint)
01059 {
01060     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01061     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01062     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01063     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface, FALSE);
01064     return pInterface->IsJointAvailable(eJoint);
01065 }
01066 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleIsProfileAvailable(XnModuleNodeHandle hGenerator, XnSkeletonProfile eProfile)
01067 {
01068     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01069     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01070     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01071     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface, FALSE);
01072     return pInterface->IsProfileAvailable(eProfile);
01073 }
01074 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSetSkeletonProfile(XnModuleNodeHandle hGenerator, XnSkeletonProfile eProfile)
01075 {
01076     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01077     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01078     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01079     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01080     return pInterface->SetSkeletonProfile(eProfile);
01081 }
01082 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSetJointActive(XnModuleNodeHandle hGenerator, XnSkeletonJoint eJoint, XnBool bState)
01083 {
01084     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01085     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01086     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01087     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01088     return pInterface->SetJointActive(eJoint, bState);
01089 }
01090 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleIsJointActive(XnModuleNodeHandle hGenerator, XnSkeletonJoint eJoint)
01091 {
01092     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01093     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01094     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01095     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface, FALSE);
01096     return pInterface->IsJointActive(eJoint);
01097 }
01098 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterToJointConfigurationChange(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback)
01099 {
01100     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01101     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01102     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01103     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01104     return pInterface->RegisterToJointConfigurationChange(handler, pCookie, *phCallback);
01105 }
01106 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterFromJointConfigurationChange(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback)
01107 {
01108     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01109     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01110     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01111     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface,);
01112     pInterface->UnregisterFromJointConfigurationChange(hCallback);
01113 }
01114 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleEnumerateActiveJoints(XnModuleNodeHandle hGenerator, XnSkeletonJoint* pJoints, XnUInt16* pnJoints)
01115 {
01116     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01117     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01118     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01119     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01120     return pInterface->EnumerateActiveJoints(pJoints, *pnJoints);
01121 }
01122 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetSkeletonJoint(XnModuleNodeHandle hGenerator, XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointTransformation* pJoint)
01123 {
01124     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01125     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01126     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01127     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01128     return pInterface->GetSkeletonJoint(user, eJoint, *pJoint);
01129 }
01130 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetSkeletonJointPosition(XnModuleNodeHandle hGenerator, XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointPosition* pJoint)
01131 {
01132     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01133     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01134     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01135     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01136     return pInterface->GetSkeletonJointPosition(user, eJoint, *pJoint);
01137 }
01138 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetSkeletonJointOrientation(XnModuleNodeHandle hGenerator, XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointOrientation* pJoint)
01139 {
01140     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01141     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01142     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01143     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01144     return pInterface->GetSkeletonJointOrientation(user, eJoint, *pJoint);
01145 }
01146 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleIsSkeletonTracking(XnModuleNodeHandle hGenerator, XnUserID user)
01147 {
01148     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01149     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01150     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01151     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface, FALSE);
01152     return pInterface->IsTracking(user);
01153 }
01154 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleIsSkeletonCalibrated(XnModuleNodeHandle hGenerator, XnUserID user)
01155 {
01156     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01157     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01158     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01159     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface, FALSE);
01160     return pInterface->IsCalibrated(user);
01161 }
01162 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleIsSkeletonCalibrating(XnModuleNodeHandle hGenerator, XnUserID user)
01163 {
01164     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01165     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01166     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01167     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface, FALSE);
01168     return pInterface->IsCalibrating(user);
01169 }
01170 
01171 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRequestSkeletonCalibration(XnModuleNodeHandle hGenerator, XnUserID user, XnBool bForce)
01172 {
01173     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01174     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01175     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01176     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01177     return pInterface->RequestCalibration(user, bForce);
01178 }
01179 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleAbortSkeletonCalibration(XnModuleNodeHandle hGenerator, XnUserID user)
01180 {
01181     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01182     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01183     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01184     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01185     return pInterface->AbortCalibration(user);
01186 }
01187 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSaveCalibrationData(XnModuleNodeHandle hGenerator, XnUserID user, XnUInt32 nSlot)
01188 {
01189     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01190     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01191     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01192     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01193     return pInterface->SaveCalibrationData(user, nSlot);
01194 }
01195 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleLoadCalibrationData(XnModuleNodeHandle hGenerator, XnUserID user, XnUInt32 nSlot)
01196 {
01197     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01198     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01199     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01200     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01201     return pInterface->LoadCalibrationData(user, nSlot);
01202 }
01203 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleClearCalibrationData(XnModuleNodeHandle hGenerator, XnUInt32 nSlot)
01204 {
01205     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01206     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01207     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01208     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01209     return pInterface->ClearCalibrationData(nSlot);
01210 }
01211 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleIsCalibrationData(XnModuleNodeHandle hGenerator, XnUInt32 nSlot)
01212 {
01213     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01214     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01215     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01216     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface, FALSE);
01217     return pInterface->IsCalibrationData(nSlot);
01218 }
01219 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleStartSkeletonTracking(XnModuleNodeHandle hGenerator, XnUserID user)
01220 {
01221     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01222     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01223     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01224     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01225     return pInterface->StartTracking(user);
01226 }
01227 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleStopSkeletonTracking(XnModuleNodeHandle hGenerator, XnUserID user)
01228 {
01229     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01230     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01231     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01232     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01233     return pInterface->StopTracking(user);
01234 }
01235 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleResetSkeleton(XnModuleNodeHandle hGenerator, XnUserID user)
01236 {
01237     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01238     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01239     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01240     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01241     return pInterface->Reset(user);
01242 }
01243 XN_C_API_EXPORT XnBool XN_CALLBACK_TYPE __ModuleNeedPoseForSkeletonCalibration(XnModuleNodeHandle hGenerator)
01244 {
01245     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01246     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01247     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01248     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface, FALSE);
01249     return pInterface->NeedPoseForCalibration();
01250 }
01251 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetSkeletonCalibrationPose(XnModuleNodeHandle hGenerator, XnChar* strPose)
01252 {
01253     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01254     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01255     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01256     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01257     return pInterface->GetCalibrationPose(strPose);
01258 }
01259 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSetSkeletonSmoothing(XnModuleNodeHandle hGenerator, XnFloat fSmoothingFactor)
01260 {
01261     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01262     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01263     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01264     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01265     return pInterface->SetSmoothing(fSmoothingFactor);
01266 }
01267 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterCalibrationCallbacks(XnModuleNodeHandle hGenerator, XnModuleCalibrationStart CalibrationStartCB, XnModuleCalibrationEnd CalibrationEndCB, void* pCookie, XnCallbackHandle* phCallback)
01268 {
01269     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01270     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01271     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01272     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01273     return pInterface->RegisterCalibrationCallbacks(CalibrationStartCB, CalibrationEndCB, pCookie, *phCallback);
01274 }
01275 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterCalibrationCallbacks(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback)
01276 {
01277     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01278     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01279     ModuleSkeletonInterface* pInterface = pNode->GetSkeletonInterface();
01280     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface,);
01281     pInterface->UnregisterCalibrationCallbacks(hCallback);
01282 }
01284 XN_C_API_EXPORT XnUInt32 XN_CALLBACK_TYPE __ModuleGetNumberOfPoses(XnModuleNodeHandle hGenerator)
01285 {
01286     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01287     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01288     ModulePoseDetectionInteface* pInterface = pNode->GetPoseDetectionInteface();
01289     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface, 0);
01290     return pInterface->GetNumberOfPoses();
01291 }
01292 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetAvailablePoses(XnModuleNodeHandle hGenerator, XnChar** pstrPoses, XnUInt32* pnPoses)
01293 {
01294     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01295     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01296     ModulePoseDetectionInteface* pInterface = pNode->GetPoseDetectionInteface();
01297     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01298     return pInterface->GetAvailablePoses(pstrPoses, *pnPoses);
01299 }
01300 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetAllAvailablePoses(XnModuleNodeHandle hGenerator, XnChar** pstrPoses, XnUInt32 nNameLength, XnUInt32* pnPoses)
01301 {
01302     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01303     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01304     ModulePoseDetectionInteface* pInterface = pNode->GetPoseDetectionInteface();
01305     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01306     return pInterface->GetAllAvailablePoses(pstrPoses, nNameLength, *pnPoses);
01307 }
01308 
01309 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleStartPoseDetection(XnModuleNodeHandle hGenerator, const XnChar* strPose, XnUserID user)
01310 {
01311     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01312     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01313     ModulePoseDetectionInteface* pInterface = pNode->GetPoseDetectionInteface();
01314     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01315     return pInterface->StartPoseDetection(strPose, user);
01316 }
01317 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleStopPoseDetection(XnModuleNodeHandle hGenerator, XnUserID user)
01318 {
01319     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01320     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01321     ModulePoseDetectionInteface* pInterface = pNode->GetPoseDetectionInteface();
01322     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01323     return pInterface->StopPoseDetection(user);
01324 }
01325 
01326 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterToPoseCallbacks(XnModuleNodeHandle hGenerator, XnModulePoseDetectionCallback PoseDetectionStartCB, XnModulePoseDetectionCallback PoseDetectionEndCB, void* pCookie, XnCallbackHandle* phCallback)
01327 {
01328     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01329     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01330     ModulePoseDetectionInteface* pInterface = pNode->GetPoseDetectionInteface();
01331     _XN_VALIDATE_CAPABILITY_INTERFACE(pInterface);
01332     return pInterface->RegisterToPoseDetectionCallbacks(PoseDetectionStartCB, PoseDetectionEndCB, pCookie, *phCallback);
01333 }
01334 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterFromPoseCallbacks(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback)
01335 {
01336     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01337     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01338     ModulePoseDetectionInteface* pInterface = pNode->GetPoseDetectionInteface();
01339     _XN_VALIDATE_CAPABILITY_INTERFACE_RET(pInterface,);
01340     pInterface->UnregisterFromPoseDetectionCallbacks(hCallback);
01341 }
01342 
01343 XN_C_API_EXPORT XnUInt16 XN_CALLBACK_TYPE __ModuleGetNumberOfUsers(XnModuleNodeHandle hGenerator)
01344 {
01345     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01346     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01347     return pNode->GetNumberOfUsers();
01348 }
01349 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetUsers(XnModuleNodeHandle hGenerator, XnUserID* pUsers, XnUInt16* pnUsers)
01350 {
01351     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01352     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01353     return pNode->GetUsers(pUsers, *pnUsers);
01354 }
01355 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetUserCoM(XnModuleNodeHandle hGenerator, XnUserID user, XnPoint3D* pCoM)
01356 {
01357     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01358     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01359     return pNode->GetCoM(user, *pCoM);
01360 }
01361 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetUserPixels(XnModuleNodeHandle hGenerator, XnUserID user, XnSceneMetaData* pScene)
01362 {
01363     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01364     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01365     return pNode->GetUserPixels(user, pScene);
01366 }
01367 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterUserCallbacks(XnModuleNodeHandle hGenerator, XnModuleUserHandler NewUserCB, XnModuleUserHandler LostUserCB, void* pCookie, XnCallbackHandle* phCallback)
01368 {
01369     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01370     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01371     return pNode->RegisterUserCallbacks(NewUserCB, LostUserCB, pCookie, *phCallback);
01372 }
01373 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterUserCallbacks(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback)
01374 {
01375     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01376     ModuleUserGenerator* pNode = dynamic_cast<ModuleUserGenerator*>(pProdNode);
01377     pNode->UnregisterUserCallbacks(hCallback);
01378 }
01379 
01380 XN_C_API_EXPORT XnUChar* XN_CALLBACK_TYPE __ModuleGetAudioBuffer(XnModuleNodeHandle hGenerator)
01381 {
01382     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01383     ModuleAudioGenerator* pNode = dynamic_cast<ModuleAudioGenerator*>(pProdNode);
01384     return pNode->GetAudioBuffer();
01385 }
01386 XN_C_API_EXPORT XnUInt32 XN_CALLBACK_TYPE __ModuleGetSupportedWaveOutputModesCount(XnModuleNodeHandle hGenerator)
01387 {
01388     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01389     ModuleAudioGenerator* pNode = dynamic_cast<ModuleAudioGenerator*>(pProdNode);
01390     return pNode->GetSupportedWaveOutputModesCount();
01391 }
01392 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetSupportedWaveOutputModes(XnModuleNodeHandle hGenerator, XnWaveOutputMode* aSupportedModes, XnUInt32* pnCount)
01393 {
01394     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01395     ModuleAudioGenerator* pNode = dynamic_cast<ModuleAudioGenerator*>(pProdNode);
01396     return pNode->GetSupportedWaveOutputModes(aSupportedModes, *pnCount);
01397 }
01398 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleSetWaveOutputMode(XnModuleNodeHandle hGenerator, const XnWaveOutputMode* pOutputMode)
01399 {
01400     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01401     ModuleAudioGenerator* pNode = dynamic_cast<ModuleAudioGenerator*>(pProdNode);
01402     return pNode->SetWaveOutputMode(*pOutputMode);
01403 }
01404 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleGetWaveOutputMode(XnModuleNodeHandle hGenerator, XnWaveOutputMode* pOutputMode)
01405 {
01406     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01407     ModuleAudioGenerator* pNode = dynamic_cast<ModuleAudioGenerator*>(pProdNode);
01408     return pNode->GetWaveOutputMode(*pOutputMode);
01409 }
01410 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleRegisterToWaveOutputModeChanges(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback)
01411 {
01412     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01413     ModuleAudioGenerator* pNode = dynamic_cast<ModuleAudioGenerator*>(pProdNode);
01414     return pNode->RegisterToWaveOutputModeChanges(handler, pCookie, *phCallback);
01415 }
01416 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleUnregisterFromWaveOutputModeChanges(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback)
01417 {
01418     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hGenerator;
01419     ModuleAudioGenerator* pNode = dynamic_cast<ModuleAudioGenerator*>(pProdNode);
01420     pNode->UnregisterFromWaveOutputModeChanges(hCallback);
01421 }
01422 
01423 XN_C_API_EXPORT XnCodecID XN_CALLBACK_TYPE __ModuleGetCodecID(XnModuleNodeHandle hCodec)
01424 {
01425     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hCodec;
01426     ModuleCodec* pCodec = dynamic_cast<ModuleCodec*>(pProdNode);
01427     return pCodec->GetCodecID();
01428 }
01429 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleCodecInit(XnModuleNodeHandle hCodec, XnNodeHandle hNode)
01430 {
01431     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hCodec;
01432     ModuleCodec* pCodec = dynamic_cast<ModuleCodec*>(pProdNode);
01433     return pCodec->Init(ProductionNode(hNode));
01434 }
01435 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleCompressData(XnModuleNodeHandle hCodec, const void* pSrc, XnUInt32 nSrcSize, void* pDst, XnUInt32 nDstSize, XnUInt* pnBytesWritten)
01436 {
01437     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hCodec;
01438     ModuleCodec* pCodec = dynamic_cast<ModuleCodec*>(pProdNode);
01439     return pCodec->CompressData(pSrc, nSrcSize, pDst, nDstSize, pnBytesWritten);
01440 }
01441 XN_C_API_EXPORT XnStatus XN_CALLBACK_TYPE __ModuleDecompressData(XnModuleNodeHandle hCodec, const void* pSrc, XnUInt32 nSrcSize, void* pDst, XnUInt32 nDstSize, XnUInt* pnBytesWritten)
01442 {
01443     ModuleProductionNode* pProdNode = (ModuleProductionNode*)hCodec;
01444     ModuleCodec* pCodec = dynamic_cast<ModuleCodec*>(pProdNode);
01445     return pCodec->DecompressData(pSrc, nSrcSize, pDst, nDstSize, pnBytesWritten);
01446 }
01447 
01448 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetExtendedSerializationInterface(XnModuleExtendedSerializationInterface* pInterface)
01449 {
01450     pInterface->InitNotifications = __ModuleInitNotifications;
01451     pInterface->StopNotifications = __ModuleStopNotifications;
01452 }
01453 
01454 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetLockAwareInterface(XnModuleLockAwareInterface* pInterface)
01455 {
01456     pInterface->SetLockState = __ModuleSetLockState;
01457     pInterface->GetLockState = __ModuleGetLockState;
01458     pInterface->RegisterToLockChange = __ModuleRegisterToLockChange;
01459     pInterface->UnregisterFromLockChange = __ModuleUnregisterFromLockChange;
01460 }
01461 
01462 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetErrorStateInterface(XnModuleErrorStateInterface* pInterface)
01463 {
01464     pInterface->GetErrorState = __ModuleGetErrorState;
01465     pInterface->RegisterToErrorStateChange = __ModuleRegisterToErrorStateChange;
01466     pInterface->UnregisterFromErrorStateChange = __ModuleUnregisterFromErrorStateChange;
01467 }
01468 
01469 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetProductionNodeInterface(XnModuleProductionNodeInterface* pInterface)
01470 {
01471     pInterface->IsCapabilitySupported = __ModuleIsCapabilitySupported;
01472     pInterface->SetIntProperty = __ModuleSetIntProperty;
01473     pInterface->SetRealProperty = __ModuleSetRealProperty;
01474     pInterface->SetStringProperty = __ModuleSetStringProperty;
01475     pInterface->SetGeneralProperty = __ModuleSetGeneralProperty;
01476     pInterface->GetIntProperty = __ModuleGetIntProperty;
01477     pInterface->GetRealProperty = __ModuleGetRealProperty;
01478     pInterface->GetStringProperty = __ModuleGetStringProperty;
01479     pInterface->GetGeneralProperty = __ModuleGetGeneralProperty;
01480 
01481     __ModuleGetExtendedSerializationInterface(pInterface->pExtendedSerializationInterface);
01482     __ModuleGetLockAwareInterface(pInterface->pLockAwareInterface);
01483     __ModuleGetErrorStateInterface(pInterface->pErrorStateInterface);
01484 }
01485 
01486 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetDeviceInterface(XnModuleDeviceInterface* pInterface)
01487 {
01488     __ModuleGetProductionNodeInterface(pInterface->pProductionNode);
01489 }
01490 
01491 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetMirrorInterface(XnModuleMirrorInterface* pInterface)
01492 {
01493     pInterface->SetMirror = __ModuleSetMirror;
01494     pInterface->IsMirrored = __ModuleIsMirrored;
01495     pInterface->RegisterToMirrorChange = __ModuleRegisterToMirrorChange;
01496     pInterface->UnregisterFromMirrorChange = __ModuleUnregisterFromMirrorChange;
01497 }
01498 
01499 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetAlternativeViewPointInterface(XnModuleAlternativeViewPointInterface* pInterface)
01500 {
01501     pInterface->IsViewPointSupported = __ModuleIsViewPointSupported;
01502     pInterface->SetViewPoint = __ModuleSetViewPoint;
01503     pInterface->ResetViewPoint = __ModuleResetViewPoint;
01504     pInterface->IsViewPointAs = __ModuleIsViewPointAs;
01505     pInterface->RegisterToViewPointChange = __ModuleRegisterToViewPointChange;
01506     pInterface->UnregisterFromViewPointChange = __ModuleUnregisterFromViewPointChange;
01507 }
01508 
01509 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetFrameSyncInterface(XnModuleFrameSyncInterface* pInterface)
01510 {
01511     pInterface->CanFrameSyncWith = __ModuleCanFrameSyncWith;
01512     pInterface->FrameSyncWith = __ModuleFrameSyncWith;
01513     pInterface->StopFrameSyncWith = __ModuleStopFrameSyncWith;
01514     pInterface->IsFrameSyncedWith = __ModuleIsFrameSyncedWith;
01515     pInterface->RegisterToFrameSyncChange = __ModuleRegisterToFrameSyncChange;
01516     pInterface->UnregisterFromFrameSyncChange = __ModuleUnregisterFromFrameSyncChange;
01517 }
01518 
01519 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetGeneratorInterface(XnModuleGeneratorInterface* pInterface)
01520 {
01521     __ModuleGetProductionNodeInterface(pInterface->pProductionNodeInterface);
01522     pInterface->StartGenerating = __ModuleStartGenerating;
01523     pInterface->IsGenerating = __ModuleIsGenerating;
01524     pInterface->StopGenerating = __ModuleStopGenerating;
01525     pInterface->RegisterToGenerationRunningChange = __ModuleRegisterToGenerationRunningChange;
01526     pInterface->UnregisterFromGenerationRunningChange = __ModuleUnregisterFromGenerationRunningChange;
01527     pInterface->RegisterToNewDataAvailable = __ModuleRegisterToNewDataAvailable;
01528     pInterface->UnregisterFromNewDataAvailable = __ModuleUnregisterFromNewDataAvailable;
01529     pInterface->IsNewDataAvailable = __ModuleIsNewDataAvailable;
01530     pInterface->UpdateData = __ModuleUpdateData;
01531     pInterface->GetDataSize = __ModuleGetDataSize;
01532     pInterface->GetTimestamp = __ModuleGetTimestamp;
01533     pInterface->GetFrameID = __ModuleGetFrameID;
01534     __ModuleGetMirrorInterface(pInterface->pMirrorInterface);
01535     __ModuleGetAlternativeViewPointInterface(pInterface->pAlternativeViewPointInterface);
01536     __ModuleGetFrameSyncInterface(pInterface->pFrameSyncInterface);
01537 }
01538 
01539 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetNodeNotifications(XnNodeNotifications *pInterface)
01540 {
01541     pInterface->OnNodeAdded = __ModuleOnNodeAdded;
01542     pInterface->OnNodeRemoved = __ModuleOnNodeRemoved;
01543     pInterface->OnNodeIntPropChanged = __ModuleOnNodeIntPropChanged;
01544     pInterface->OnNodeRealPropChanged = __ModuleOnNodeRealPropChanged;
01545     pInterface->OnNodeStringPropChanged = __ModuleOnNodeStringPropChanged;
01546     pInterface->OnNodeGeneralPropChanged = __ModuleOnNodeGeneralPropChanged;
01547     pInterface->OnNodeStateReady = __ModuleOnNodeStateReady;
01548     pInterface->OnNodeNewData = __ModuleOnNodeNewData;
01549 }
01550 
01551 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetRecorderInterface(XnModuleRecorderInterface* pInterface)
01552 {
01553     pInterface->SetOutputStream = __ModuleSetOutputStream;
01554     __ModuleGetProductionNodeInterface(pInterface->pProductionNode);
01555     __ModuleGetNodeNotifications(pInterface->pNodeNotifications);
01556 }
01557 
01558 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetPlayerInterface(XnModulePlayerInterface* pInterface)
01559 {
01560     __ModuleGetProductionNodeInterface(pInterface->pProductionNode);
01561     pInterface->SetInputStream = __ModuleSetInputStream;
01562     pInterface->ReadNext = __ModuleReadNext;
01563     pInterface->SetNodeNotifications = __ModuleSetNodeNotifications;
01564     pInterface->SetRepeat = __ModuleSetRepeat;
01565     pInterface->SeekToTimeStamp = __ModuleSeekToTimeStamp;
01566     pInterface->SeekToFrame = __ModuleSeekToFrame;
01567     pInterface->TellTimestamp = __ModuleTellTimestamp;
01568     pInterface->TellFrame = __ModuleTellFrame;
01569     pInterface->GetNumFrames = __ModuleGetNumFrames;
01570     pInterface->GetSupportedFormat = __ModuleGetSupportedFormat;
01571     pInterface->IsEOF = __ModuleIsEOF;
01572     pInterface->RegisterToEndOfFileReached = __ModuleRegisterToEndOfFileReached;
01573     pInterface->UnregisterFromEndOfFileReached = __ModuleUnregisterFromEndOfFileReached;
01574 }
01575 
01576 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetCroppingInterface(XnModuleCroppingInterface* pInterface)
01577 {
01578     pInterface->SetCropping = __ModuleSetCropping;
01579     pInterface->GetCropping = __ModuleGetCropping;
01580     pInterface->RegisterToCroppingChange = __ModuleRegisterToCroppingChange;
01581     pInterface->UnregisterFromCroppingChange = __ModuleUnregisterFromCroppingChange;
01582 }
01583 
01584 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetMapGeneratorInterface(XnModuleMapGeneratorInterface* pInterface)
01585 {
01586     __ModuleGetGeneratorInterface(pInterface->pGeneratorInterface);
01587     pInterface->GetSupportedMapOutputModesCount = __ModuleGetSupportedMapOutputModesCount;
01588     pInterface->GetSupportedMapOutputModes = __ModuleGetSupportedMapOutputModes;
01589     pInterface->SetMapOutputMode = __ModuleSetMapOutputMode;
01590     pInterface->GetMapOutputMode = __ModuleGetMapOutputMode;
01591     pInterface->RegisterToMapOutputModeChange = __ModuleRegisterToMapOutputModeChange;
01592     pInterface->UnregisterFromMapOutputModeChange = __ModuleUnregisterFromMapOutputModeChange;
01593     __ModuleGetCroppingInterface(pInterface->pCroppingInterface);
01594 }
01595 
01596 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetUserPositionInterface(XnModuleUserPositionCapabilityInterface* pInterface)
01597 {
01598     pInterface->GetSupportedUserPositionsCount = __ModuleGetSupportedUserPositionsCount;
01599     pInterface->SetUserPosition = __ModuleSetUserPosition;
01600     pInterface->GetUserPosition = __ModuleGetUserPosition;
01601     pInterface->RegisterToUserPositionChange = __ModuleRegisterToUserPositionChange;
01602     pInterface->UnregisterFromUserPositionChange = __ModuleUnregisterFromUserPositionChange;
01603 }
01604 
01605 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetDepthGeneratorInterface(XnModuleDepthGeneratorInterface* pInterface)
01606 {
01607     __ModuleGetMapGeneratorInterface(pInterface->pMapInterface);
01608     pInterface->GetDeviceMaxDepth = __ModuleGetDeviceMaxDepth;
01609     pInterface->GetFieldOfView = __ModuleGetFieldOfView;
01610     pInterface->RegisterToFieldOfViewChange = __ModuleRegisterToFieldOfViewChange;
01611     pInterface->UnregisterFromFieldOfViewChange = __ModuleUnregisterFromFieldOfViewChange;
01612     pInterface->GetDepthMap = __ModuleGetDepthMap;
01613     __ModuleGetUserPositionInterface(pInterface->pUserPositionInterface);
01614 }
01615 
01616 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetImageGeneratorInterface(XnModuleImageGeneratorInterface* pInterface)
01617 {
01618     __ModuleGetMapGeneratorInterface(pInterface->pMapInterface);
01619     pInterface->GetImageMap = __ModuleGetImageMap;
01620     pInterface->IsPixelFormatSupported = __ModuleIsPixelFormatSupported;
01621     pInterface->SetPixelFormat = __ModuleSetPixelFormat;
01622     pInterface->GetPixelFormat = __ModuleGetPixelFormat;
01623     pInterface->RegisterToPixelFormatChange = __ModuleRegisterToPixelFormatChange;
01624     pInterface->UnregisterFromPixelFormatChange = __ModuleUnregisterFromPixelFormatChange;
01625 }
01626 
01627 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetIRGeneratorInterface(XnModuleIRGeneratorInterface* pInterface)
01628 {
01629     __ModuleGetMapGeneratorInterface(pInterface->pMapInterface);
01630     pInterface->GetIRMap = __ModuleGetIRMap;
01631 }
01632 
01633 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetGestureGeneratorInterface(XnModuleGestureGeneratorInterface* pInterface)
01634 {
01635     __ModuleGetGeneratorInterface(pInterface->pGeneratorInterface);
01636     pInterface->AddGesture = __ModuleAddGesture;
01637     pInterface->RemoveGesture = __ModuleRemoveGesture;
01638     pInterface->GetActiveGestures = __ModuleGetActiveGestures;
01639     pInterface->GetAllActiveGestures = __ModuleGetAllActiveGestures;
01640     pInterface->EnumerateGestures = __ModuleEnumerateGestures;
01641     pInterface->EnumerateAllGestures = __ModuleEnumerateAllGestures;
01642     pInterface->IsGestureAvailable = __ModuleIsGestureAvailable;
01643     pInterface->IsGestureProgressSupported = __ModuleIsGestureProgressSupported;
01644     pInterface->RegisterGestureCallbacks = __ModuleRegisterGestureCallbacks;
01645     pInterface->UnregisterGestureCallbacks = __ModuleUnregisterGestureCallbacks;
01646     pInterface->RegisterToGestureChange = __ModuleRegisterToGestureChange;
01647     pInterface->UnregisterFromGestureChange = __ModuleUnregisterFromGestureChange;
01648 }
01649 
01650 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetSceneAnalyzerInterface(XnModuleSceneAnalyzerInterface* pInterface)
01651 {
01652     __ModuleGetMapGeneratorInterface(pInterface->pMapInterface);
01653     pInterface->GetLabelMap = __ModuleGetLabelMap;
01654     pInterface->GetFloor = __ModuleGetFloor;
01655 }
01656 
01657 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetSkeletonInterface(XnModuleSkeletonCapabilityInterface* pInterface)
01658 {
01659     pInterface->IsJointAvailable = __ModuleIsJointAvailable;
01660     pInterface->IsProfileAvailable = __ModuleIsProfileAvailable;
01661     pInterface->SetSkeletonProfile = __ModuleSetSkeletonProfile;
01662     pInterface->SetJointActive = __ModuleSetJointActive;
01663     pInterface->IsJointActive = __ModuleIsJointActive;
01664     pInterface->RegisterToJointConfigurationChange = __ModuleRegisterToJointConfigurationChange;
01665     pInterface->UnregisterFromJointConfigurationChange = __ModuleUnregisterFromJointConfigurationChange;
01666     pInterface->EnumerateActiveJoints = __ModuleEnumerateActiveJoints;
01667     pInterface->GetSkeletonJoint = __ModuleGetSkeletonJoint;
01668     pInterface->GetSkeletonJointPosition = __ModuleGetSkeletonJointPosition;
01669     pInterface->GetSkeletonJointOrientation = __ModuleGetSkeletonJointOrientation;
01670     pInterface->IsTracking = __ModuleIsSkeletonTracking;
01671     pInterface->IsCalibrated = __ModuleIsSkeletonCalibrated;
01672     pInterface->IsCalibrating = __ModuleIsSkeletonCalibrating;
01673     pInterface->RequestCalibration = __ModuleRequestSkeletonCalibration;
01674     pInterface->AbortCalibration = __ModuleAbortSkeletonCalibration;
01675     pInterface->SaveCalibrationData = __ModuleSaveCalibrationData;
01676     pInterface->LoadCalibrationData = __ModuleLoadCalibrationData;
01677     pInterface->ClearCalibrationData = __ModuleClearCalibrationData;
01678     pInterface->IsCalibrationData = __ModuleIsCalibrationData;
01679     pInterface->StartTracking = __ModuleStartSkeletonTracking;
01680     pInterface->StopTracking = __ModuleStopSkeletonTracking;
01681     pInterface->Reset = __ModuleResetSkeleton;
01682     pInterface->NeedPoseForCalibration = __ModuleNeedPoseForSkeletonCalibration;
01683     pInterface->GetCalibrationPose = __ModuleGetSkeletonCalibrationPose;
01684     pInterface->SetSmoothing = __ModuleSetSkeletonSmoothing;
01685     pInterface->RegisterCalibrationCallbacks = __ModuleRegisterCalibrationCallbacks;
01686     pInterface->UnregisterCalibrationCallbacks = __ModuleUnregisterCalibrationCallbacks;
01687 }
01688 
01689 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetPoseDetectionInteface(XnModulePoseDetectionCapabilityInterface* pInteface)
01690 {
01691     pInteface->GetNumberOfPoses = __ModuleGetNumberOfPoses;
01692     pInteface->GetAvailablePoses = __ModuleGetAvailablePoses;
01693     pInteface->GetAllAvailablePoses = __ModuleGetAllAvailablePoses;
01694     pInteface->StartPoseDetection = __ModuleStartPoseDetection;
01695     pInteface->StopPoseDetection = __ModuleStopPoseDetection;
01696     pInteface->RegisterToPoseCallbacks = __ModuleRegisterToPoseCallbacks;
01697     pInteface->UnregisterFromPoseCallbacks = __ModuleUnregisterFromPoseCallbacks;
01698 }
01699 
01700 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetUserGeneratorInterface(XnModuleUserGeneratorInterface* pInterface)
01701 {
01702     __ModuleGetGeneratorInterface(pInterface->pGeneratorInterface);
01703 
01704     pInterface->GetNumberOfUsers = __ModuleGetNumberOfUsers;
01705     pInterface->GetUsers = __ModuleGetUsers;
01706     pInterface->GetCoM = __ModuleGetUserCoM;
01707     pInterface->GetUserPixels = __ModuleGetUserPixels;
01708     pInterface->RegisterUserCallbacks = __ModuleRegisterUserCallbacks;
01709     pInterface->UnregisterUserCallbacks = __ModuleUnregisterUserCallbacks;
01710 
01711     __ModuleGetSkeletonInterface(pInterface->pSkeletonInterface);
01712     __ModuleGetPoseDetectionInteface(pInterface->pPoseDetectionInteface);
01713 }
01714 
01715 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetHandsGeneratorInterface(XnModuleHandsGeneratorInterface* pInterface)
01716 {
01717     __ModuleGetGeneratorInterface(pInterface->pGeneratorInterface);
01718 
01719     pInterface->StartTracking = __ModuleStartTracking;
01720     pInterface->StopTracking = __ModuleStopTracking;
01721     pInterface->StopTrackingAll = __ModuleStopTrackingAll;
01722     pInterface->RegisterHandCallbacks = __ModuleRegisterHandCallbacks;
01723     pInterface->UnregisterHandCallbacks = __ModuleUnregisterHandCallbacks;
01724     pInterface->SetSmoothing = __ModuleSetTrackingSmoothing;
01725 }
01726 
01727 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetAudioGeneratorInterface(XnModuleAudioGeneratorInterface* pInterface)
01728 {
01729     __ModuleGetGeneratorInterface(pInterface->pGeneratorInterface);
01730 
01731     pInterface->GetAudioBuffer = __ModuleGetAudioBuffer;
01732     pInterface->GetSupportedWaveOutputModesCount = __ModuleGetSupportedWaveOutputModesCount;
01733     pInterface->GetSupportedWaveOutputModes = __ModuleGetSupportedWaveOutputModes;
01734     pInterface->SetWaveOutputMode = __ModuleSetWaveOutputMode;
01735     pInterface->GetWaveOutputMode = __ModuleGetWaveOutputMode;
01736     pInterface->RegisterToWaveOutputModeChanges = __ModuleRegisterToWaveOutputModeChanges;
01737     pInterface->UnregisterFromWaveOutputModeChanges = __ModuleUnregisterFromWaveOutputModeChanges;
01738 }
01739 
01740 XN_C_API_EXPORT void XN_CALLBACK_TYPE __ModuleGetCodecInterface(XnModuleCodecInterface* pInterface)
01741 {
01742     __ModuleGetProductionNodeInterface(pInterface->pProductionNode);
01743 
01744     pInterface->GetCodecID = __ModuleGetCodecID;
01745     pInterface->Init = __ModuleCodecInit;
01746     pInterface->CompressData = __ModuleCompressData;
01747     pInterface->DecompressData = __ModuleDecompressData;
01748 }
01749 
01750 #endif // __XN_MODULE_CPP_REGISTRATION_H__