コード例 #1
0
ファイル: XnNodeWatcher.cpp プロジェクト: Clebeson/OpenNI
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;
}
コード例 #2
0
ファイル: XnNodeWatcher.cpp プロジェクト: Clebeson/OpenNI
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;
}
コード例 #3
0
ファイル: XnNodeWatcher.cpp プロジェクト: Clebeson/OpenNI
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;	
}
コード例 #4
0
ファイル: XnNodeWatcher.cpp プロジェクト: Clebeson/OpenNI
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;	
}
コード例 #5
0
ファイル: XnNodeWatcher.cpp プロジェクト: Clebeson/OpenNI
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;	
}
コード例 #6
0
ファイル: XnNodeWatcher.cpp プロジェクト: Clebeson/OpenNI
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;
}
コード例 #7
0
ファイル: XnNodeWatcher.cpp プロジェクト: ABMNYZ/OpenNI
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;
}
コード例 #8
0
ファイル: XnNodeWatcher.cpp プロジェクト: Clebeson/OpenNI
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;
}