/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2015 Raytrix GmbH. All rights reserved.
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma once

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// namespace: Rx.CamFormat
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
namespace Rx
{
	namespace CamFormat
	{
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>
		/// 	Values that represent plenoptic types.
		/// </summary>
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		enum EPlenopticType
		{
			/// <summary> Standard plenoptic system. </summary>
			Plenoptic = 0,
		};

		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>
		/// 	Values that represent view camera types.
		/// </summary>
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		enum EViewCamType
		{
			/// <summary> Pinhole view camera. </summary>
			ViewCam_Pinhole = 0,
		};

		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>
		/// 	This enum defines different modes for scaling the view camera sensor.
		/// </summary>
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		enum EViewCamSensorScaling
		{
			/// <summary>	Scale the view camera sensor such that its collimation plane has the same aspect ratio as the plenoptic sensor and is completely contained within the plenoptic camera's collimation plane. </summary>
			ViewCam_Sensor_Scale_InnerRect = 0,
			/// <summary> Scale the view camera sensor such that its collimation plane has the same aspect ratio as the plenoptic sensor and the plenoptic camera's collimation plane is completely inside the virtual camera's collimation plane. </summary>
			ViewCam_Sensor_Scale_OuterRect,
			/// <summary> The view camera sensor has the same aspect ratio as the plenoptic camera sensor but is not scaled. </summary>
			ViewCam_Sensor_Scale_Fixed
		};

		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>
		/// 	Values that represent EViewingFrustumSpace2Type.
		/// </summary>
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		enum EViewingFrustumSpace2Type
		{
			ViewFrustSpc2Type_Orthographic = 0,
			ViewFrustSpc2Type_Projective
		};
	}
}
