XnStatus DepthWatcher::NotifyStateImpl() { XnStatus nRetVal = MapWatcher::NotifyStateImpl(); XN_IS_STATUS_OK(nRetVal); // Max depth nRetVal = NotifyIntPropChanged(XN_PROP_DEVICE_MAX_DEPTH, m_depthGenerator.GetDeviceMaxDepth()); XN_IS_STATUS_OK(nRetVal); // FOV nRetVal = NotifyFieldOfView(); XN_IS_STATUS_OK(nRetVal); // User position XnBool bUserPositionsCap = m_depthGenerator.IsCapabilitySupported(XN_CAPABILITY_USER_POSITION); nRetVal = NotifyIntPropChanged(XN_CAPABILITY_USER_POSITION, bUserPositionsCap); XN_IS_STATUS_OK(nRetVal); if (bUserPositionsCap) { nRetVal = NotifyUserPositions(); XN_IS_STATUS_OK(nRetVal); } return XN_STATUS_OK; }
XnStatus GeneratorWatcher::NotifyStateImpl() { XnStatus nRetVal = XN_STATUS_OK; nRetVal = NodeWatcher::NotifyStateImpl(); XN_IS_STATUS_OK(nRetVal); XnBool bMirrorCap = m_generator.IsCapabilitySupported(XN_CAPABILITY_MIRROR); XnBool bAltViewCap = m_generator.IsCapabilitySupported(XN_CAPABILITY_ALTERNATIVE_VIEW_POINT); XnBool bFrameSyncCap = m_generator.IsCapabilitySupported(XN_CAPABILITY_FRAME_SYNC); nRetVal = NotifyIntPropChanged(XN_CAPABILITY_MIRROR, bMirrorCap); XN_IS_STATUS_OK(nRetVal); nRetVal = NotifyIntPropChanged(XN_CAPABILITY_ALTERNATIVE_VIEW_POINT, bAltViewCap); XN_IS_STATUS_OK(nRetVal); nRetVal = NotifyIntPropChanged(XN_CAPABILITY_FRAME_SYNC, bFrameSyncCap); XN_IS_STATUS_OK(nRetVal); nRetVal = NotifyIntPropChanged(XN_PROP_IS_GENERATING, m_generator.IsGenerating()); XN_IS_STATUS_OK(nRetVal); if (bMirrorCap) { nRetVal = NotifyIntPropChanged(XN_PROP_MIRROR, m_generator.GetMirrorCap().IsMirrored()); XN_IS_STATUS_OK(nRetVal); } //TODO: Notify alt view cap props //TODO: Notify frame sync cap props return XN_STATUS_OK; }
XnStatus AudioWatcher::NotifySupportedOutputModes() { XnUInt32 nModes = m_audioGenerator.GetSupportedWaveOutputModesCount(); if (nModes == 0) { return XN_STATUS_ERROR; } XnStatus nRetVal = NotifyIntPropChanged(XN_PROP_WAVE_SUPPORTED_OUTPUT_MODES_COUNT, nModes); XN_IS_STATUS_OK(nRetVal); XnWaveOutputMode *pSupportedModes = XN_NEW_ARR(XnWaveOutputMode, nModes); XN_VALIDATE_ALLOC_PTR(pSupportedModes); nRetVal = m_audioGenerator.GetSupportedWaveOutputModes(pSupportedModes, nModes); if (nRetVal != XN_STATUS_OK) { XN_DELETE_ARR(pSupportedModes); return nRetVal; } nRetVal = NotifyGeneralPropChanged(XN_PROP_WAVE_SUPPORTED_OUTPUT_MODES, nModes * sizeof(XnWaveOutputMode), pSupportedModes); if (nRetVal != XN_STATUS_OK) { XN_DELETE_ARR(pSupportedModes); return nRetVal; } XN_DELETE_ARR(pSupportedModes); return XN_STATUS_OK; }
XnStatus DepthWatcher::NotifyUserPositions() { XnUInt32 nUserPositions = m_depthGenerator.GetUserPositionCap().GetSupportedUserPositionsCount(); if (nUserPositions == 0) { return XN_STATUS_NOT_IMPLEMENTED; } XnStatus nRetVal = NotifyIntPropChanged(XN_PROP_SUPPORTED_USER_POSITIONS_COUNT, nUserPositions); XN_IS_STATUS_OK(nRetVal); XnBoundingBox3D *pPositions = XN_NEW_ARR(XnBoundingBox3D, nUserPositions); XN_VALIDATE_ALLOC_PTR(pPositions); XnUInt32 i; for (i = 0; i < nUserPositions; i++) { nRetVal = m_depthGenerator.GetUserPositionCap().GetUserPosition(i, pPositions[i]); if (nRetVal != XN_STATUS_OK) { XN_DELETE_ARR(pPositions); return nRetVal; } } nRetVal = NotifyGeneralPropChanged(XN_PROP_USER_POSITIONS, sizeof(pPositions[0]) * nUserPositions, pPositions); if (nRetVal != XN_STATUS_OK) { XN_DELETE_ARR(pPositions); return nRetVal; } XN_DELETE_ARR(pPositions); return XN_STATUS_OK; }
XnStatus MapWatcher::NotifySupportedOutputModes() { XnUInt32 nOutputModes = m_mapGenerator.GetSupportedMapOutputModesCount(); if (nOutputModes == 0) { return XN_STATUS_ERROR; } XnStatus nRetVal = NotifyIntPropChanged(XN_PROP_SUPPORTED_MAP_OUTPUT_MODES_COUNT, nOutputModes); XN_IS_STATUS_OK(nRetVal); XnMapOutputMode *pOutputModes = XN_NEW_ARR(XnMapOutputMode, nOutputModes); XN_VALIDATE_ALLOC_PTR(pOutputModes); nRetVal = m_mapGenerator.GetSupportedMapOutputModes(pOutputModes, nOutputModes); if (nRetVal != XN_STATUS_OK) { XN_DELETE_ARR(pOutputModes); return nRetVal; } nRetVal = NotifyGeneralPropChanged(XN_PROP_SUPPORTED_MAP_OUTPUT_MODES, sizeof(pOutputModes[0]) * nOutputModes, pOutputModes); if (nRetVal != XN_STATUS_OK) { XN_DELETE_ARR(pOutputModes); return nRetVal; } XN_DELETE_ARR(pOutputModes); return XN_STATUS_OK; }
XnStatus ImageWatcher::NotifyStateImpl() { XnStatus nRetVal = MapWatcher::NotifyStateImpl(); XN_IS_STATUS_OK(nRetVal); nRetVal = NotifySupportedPixelFormats(); XN_IS_STATUS_OK(nRetVal); nRetVal = NotifyIntPropChanged(XN_PROP_PIXEL_FORMAT, m_imageGenerator.GetPixelFormat()); XN_IS_STATUS_OK(nRetVal); return XN_STATUS_OK; }
XnStatus MapWatcher::NotifyStateImpl() { XnStatus nRetVal = GeneratorWatcher::NotifyStateImpl(); XN_IS_STATUS_OK(nRetVal); XnBool bCapCropping = m_mapGenerator.IsCapabilitySupported(XN_CAPABILITY_CROPPING); nRetVal = NotifyIntPropChanged(XN_CAPABILITY_CROPPING, bCapCropping); XN_IS_STATUS_OK(nRetVal); nRetVal = NotifyIntPropChanged(XN_PROP_BYTES_PER_PIXEL, m_mapGenerator.GetBytesPerPixel()); XN_IS_STATUS_OK(nRetVal); nRetVal = NotifySupportedOutputModes(); XN_IS_STATUS_OK(nRetVal); nRetVal = NotifyOutputMode(); XN_IS_STATUS_OK(nRetVal); if (bCapCropping) { nRetVal = NotifyCropping(); XN_IS_STATUS_OK(nRetVal); } return XN_STATUS_OK; }
XnStatus NodeWatcher::NotifyStateImpl() { XnStatus nRetVal = XN_STATUS_OK; XnBool bExSerCap = m_node.IsCapabilitySupported(XN_CAPABILITY_EXTENDED_SERIALIZATION); nRetVal = NotifyIntPropChanged(XN_CAPABILITY_EXTENDED_SERIALIZATION, bExSerCap); XN_IS_STATUS_OK(nRetVal); if (bExSerCap) { nRetVal = xnNotifyExState(m_node.GetHandle(), &m_notifications, m_pCookie); XN_IS_STATUS_OK(nRetVal); } return XN_STATUS_OK; }