/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2013 Raytrix GmbH. All rights reserved.
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma once

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// namespace: Rx.Interop.Runtime30.Camera
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
namespace Rx
{
	namespace Interop
	{
		namespace Runtime30
		{
			namespace Camera
			{
				/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				/// <summary>
				/// 	A native device image callback.
				/// </summary>
				/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				class INativeDeviceImageCallback
				{
				protected:

					/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					/// <summary>
					/// 	Destructor.
					/// </summary>
					/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					virtual ~INativeDeviceImageCallback() { };

				public:

					/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					/// <summary>
					/// 	This is required for the image acquisition process. Images from the camera manufacturer SDK are delivered to the camera
					/// 	base by calling this function.
					///
					/// 	This function should only be called by a specific camera driver instance. By passing the pointer to image provided by
					/// 	camera SDK, the image will be copied to the buffer loop.
					/// </summary>
					///
					/// <param name="pcSDKImg"> [in] The pointer to manufacturer SDK image. </param>
					/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					virtual void DoSDKImageCallbackHandling(unsigned char* pcSDKImg) = 0;
				};
			}
		}
	}
}

#pragma make_public(Rx::Interop::Runtime30::Camera::INativeDeviceImageCallback)
