/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2016 Raytrix GmbH. All rights reserved.
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// namespace: Params
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
namespace Params
{
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent CUDA compute parameters.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class ECudaCompute
	#else
		namespace ECudaCompute
		{
			enum ID
	#endif
	{
		None = 0,

		/************************************************************************/
		/* Ray PreProcess Algorithm                                             */
		/************************************************************************/

		/// <summary> Enable Standard Preprocessing of ray image (unsigned,[0,1]:0,RW). </summary>
		PreProc_Std_Enable = 0x00100000,
		/// <summary> Standard preprocessing: brightness gain (double,[0.0,1e5]:1.0,RW). </summary>
		PreProc_Std_Brightness,
		/// <summary> Standard preprocessing: contrast center (double,[0.0,1.0]:0.5,RW). </summary>
		PreProc_Std_ContrastCenter,
		/// <summary> Standard preprocessing: contrast scale (double,[0.0,2.0]:0.0,RW). </summary>
		PreProc_Std_ContrastScale,
		/// <summary> Set of points in range [0,1] describing the gradation curve. Attention: Only two points are allowed at the moment (double[],[0.0,1.0]:(0.0,0.0,1.0,1.0), RW). </summary>
		PreProc_Std_Gradation,
		/// <summary> Enable sharpness algorithm 1: unsharp masking (unsigned,[0,1]:1,RW). </summary>
		PreProc_Sharp1_Enable = 0x00102000,
		/// <summary> Sharpness Algo1: Standard deviation of Gauss blurred image (double, [0.0,10.0]:2.5,RW). </summary>
		PreProc_Sharp1_BlurStdDev,
		/// <summary> Sharpness Algo1: Mixing factor of blurred image with original image as pixel * factor + blurred * (1 - factor) (double,[-2.0,3.0]:1.5,RW). </summary>
		PreProc_Sharp1_Factor,
		/// <summary> Use sharpness only for depth calculation (not for output image) (unsigned,[0,1]:1,RW). </summary>
		PreProc_Sharp1_OnlyCalc,
		/// <summary> Enable demosaic balance parameters (unsigned,[0,1]:0,RW). </summary>
		PreProc_Demosaic_Enable = 0x00104000,
		/// <summary> Red balance (double,[0.0,1.0]:1.0,RW). </summary>
		PreProc_Demosaic_R,
		/// <summary> Green balance (double,[0.0,1.0]:1.0,RW). </summary>
		PreProc_Demosaic_G,
		/// <summary> Blue balance (double,[0.0,1.0]:1.0,RW). </summary>
		PreProc_Demosaic_B,
		/// <summary> Enable Non-Local-Means denoising of raw image (unsigned,[0,1]:0,RW). </summary>
		PreProc_DenoiseNLM_Enable = 0x00105000,
		/// <summary> Denoise filter diameter in pixels (unsigned,[2,8]:4,RW). </summary>
		PreProc_DenoiseNLM_FilterDia,
		/// <summary> Noise level (double,[0.01,2.0]:0.1,RW). </summary>
		PreProc_DenoiseNLM_NoiseLevel,
		/// <summary> Blending factor (double,[0.0,0.3]:0.2,RW). </summary>
		PreProc_DenoiseNLM_BlendFactor,
		/// <summary> The data type of all resultant images. Supported data types are UByte (unsigned char) and UShort (unsigned short). If set to Void, the data type is the same as the input raw image. (enum,[Rx::Interop::Runtime28::EDataType]:UShort,RW). </summary>
		PreProc_DataType = 0x00106000,

		/************************************************************************/
		/* Depth                                                                */
		/************************************************************************/

		/// <summary> Result image size divisor for depth evaluation (double,[2.0,20.0]:4.0,RW). </summary>
		Depth_ImageDivisor = 0x00200000,
		/// <summary> Minimum virtual depth for depth estimation (double,[2.0,100.0]:2.0,RW). </summary>
		Depth_MinVirtualDepth,
		/// <summary> Maximum virtual depth for depth estimation (double,[2.0,100.0]:15.0,RW). </summary>
		Depth_MaxVirtualDepth,
		/// <summary> The resolution level for near objects. The higher the number the finer the depth resolution for near objects (unsigned,[2,5]:3,RW). </summary>
		Depth_NearResolutionLevel,
		/// <summary> Flag whether to use a sparse set of micro lenses to calculate depth (unsigned,[0,1]:0,RW). </summary>
		Depth_SparseLensSet,
		/// <summary> Minimal standard deviation of correlation patch (double,[0.0,1.0]:0.01,RW). </summary>
		Depth_MinStdDeviation,
		/// <summary> Minimal correlation threshold (double,[0.0,1.0]:0.90,RW). </summary>
		Depth_MinCorrelation,
		/// <summary> Correlation patch radius (unsigned,[2,5]:3,RW). </summary>
		Depth_PatchDiameter,
		/// <summary> Correlation patch stride (unsigned,[1,5]:2,RW). </summary>
		Depth_PatchStride,
		/// <summary> A lens filter mask to disable (1) or enable (0) certain lens types during depth estimation (unsigned[12],[0,1]:0,RW). </summary>
		Depth_LensFilterMask,
		/// <summary> Enable (1) or disable (0) a depth consistency check while creating the depth map. This check should always be enabled (unsigned,[0,1]:1,RW). </summary>
		Depth_ConsistencyCheck,
		/// <summary> The algorithm used for depth estimation. (0) is the default depth path algorithm. (1) is the slower ray cast algorithm (unsigned,[0,1]:0,RW). </summary>
		Depth_Algorithm,

		/// <summary> Depth correction A (double,[,]:0,RW). </summary>
		Depth_Correction_A = 0x00200100,

		/************************************************************************/
		/* Depth Fill                                                           */
		/************************************************************************/

		/// <summary> Flag whether filling of depth map is enabled (unsigned,[0,1]:1,RW). </summary>
		Depth_Fill_Enabled = 0x00207000,
		/// <summary> Number of iterations used for filling the depth map (unsigned,[0,20]:2,RW). </summary>
		Depth_Fill_IterCnt,
		/// <summary> Size of unknown depth border filled per iteration in pixels (unsigned,[1,100]:4,RW). </summary>
		Depth_Fill_IterSize,
		/// <summary> Flag to indicate whether the remaining unknown depth areas are to be filled after the iterations (unsigned,[0,1],0,RW). </summary>
		Depth_Fill_Complete,
		/// <summary> Flag whether bilateral filtering of depth map is enabled (unsigned,[0,1]:1,RW). </summary>
		Depth_Fill_Bilateral_Enabled,
		/// <summary> Bilateral filter radius (unsigned,[1,20]:5,RW). </summary>
		Depth_Fill_Bilateral_FilterRadius,
		/// <summary> Bilateral filter edge threshold (double,[0.01,0.2]:0.05,RW). </summary>
		Depth_Fill_Bilateral_Edge,
		/// <summary> Bilateral filter range distance threshold (double,[1.0,20.0]:5.0,RW). </summary>
		Depth_Fill_Bilateral_Range,
		/// <summary> Flag to indicate whether the first 3 iterations of the filling algorithm should perform an implicit filtering (unsigned,[0,1]:1,RW). </summary>
		Depth_Fill_Filter_Enabled,
		/// <summary> The algorithm used for depth filling. (0) is the default depth filling algorithm. (1) is the slower depth fill algorithm that considers more image information. (unsigned,[0,1]:0,RW). </summary>
		Depth_Fill_Algorithm,
		/// <summary> When the color difference of two compared pixels exceeds this threshold, the pixel is skipped. The difference is referred to normalized values where 1 would be a difference of 255 luminance values. </summary>
		Depth_Fill_MaxColorSimilarity,
		/// <summary> Shrinks the depth map 'contour' by removing all valid depths that are in this range (given in pixels) of an invalid depth value. A value of 0 means no shrink (unsigned,[0,100]:0,RW). </summary>
		Depth_Fill_ShrinkRangePX,

		/************************************************************************/
		/* Focus                                                                */
		/************************************************************************/

		/// <summary> Result image size division factor (double,[0.0,-]:2.0,RW). </summary>
		Focus_ImageDivisor = 0x00220000,
		/// <summary> Focus value for refocusing onto a plane (double,[0.0,1.0]:0.1,RW). </summary>
		Focus_RelativeFocusPlane,
		/// <summary> This scale is used to blend the colored depth image with the focus image (double,[0.0,1.0]:0.0,RW). </summary>
		Focus_DepthBlendingScale,

		/************************************************************************/
		/* Multiview                                                            */
		/************************************************************************/

		/// <summary> Multiview type (enum,[Rx::EMultiView]:Rx::EMultiView::RedCyan,RW). </summary>
		Multiview_Type = 0x00220500,
		/// <summary> Multiview eye separation (double,[1.0,20.0]:10.0,RW). </summary>
		Multiview_EyeSeparation,

		/************************************************************************/
		/* Grid                                                                 */
		/************************************************************************/

		/// <summary> If set to 1U, the grid is drawn on the gray image (unsigned,[0,1]:0,RW). </summary>
		Grid_DrawOnGrayImage = 0x00230000,
		/// <summary> If set to 1U, the grid is drawn with MLA calibration instead of MLI calibration (unsigned,[0,1]:0,RW). </summary>
		Grid_DrawMlaGrid,

		/************************************************************************/
		/* Color                                                                */
		/************************************************************************/

		/// <summary> The color mode (enum,[EColorMode]:EColorMode::Manual,RW). </summary>
		DepthMap_Color_Mode = 0x00350000,
		/// <summary> The minimum color value given in millimeters in reference frame (double,[-,-]:0,RW). </summary>
		DepthMap_Color_Min,
		/// <summary> The maximum color value given in millimeters in reference frame (double,[-,-]:10,RW). </summary>
		DepthMap_Color_Max,
		/// <summary> Specifies the color map used to color the depth map (enum,[EColorMap]:EColorMap::Perceptually_Uniform_Rainbow,RW). </summary>
		DepthMap_Color_Map
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent calibration parameters.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class ECalib
	#else
		namespace ECalib
		{
			enum ID
	#endif
	{
		None = 0,

		/************************************************************************/
		/* Projection                                                           */
		/************************************************************************/

		/// <summary> Type of the viewing frustum in space 2 (enum,[Rx::CamFormat::EViewingFrustumSpace2Type]:ViewFrustSpc2Type_Orthographic,RW). </summary>
		ViewingFrustumSpace2Type,
		/// <summary> Is true if the camera has been master calibrated. Must be set after master calibration (unsigned,[0,1]:0,RW). </summary>
		IsMasterCalibrated,
		/// <summary> Is true if the camera has been metric calibrated (unsigned,[0,1]:0,RO). </summary>
		IsMetricCalibrated,
		/// <summary> An enum constant representing the light field collimation plane in VD (double,[-,-]:4,RW). </summary>
		CollimationPlaneVD,
		/// <summary> An enum constant representing the light field collimation plane in MM in the reference frame (double,[-,-]:[4 projected into the object space in the reference frame],RW). </summary>
		CollimationPlaneMM_Object_Reference,

		/************************************************************************/
		/* Main Lens Thick                                                      */
		/************************************************************************/

		/// <summary> The main lens's focal length in millimeters (double,[0.1,1e5]:100.0,RW). </summary>
		MainLensThick_FocalLengthMM,
		/// <summary> The total focus distance in millimeters. This is the distance from the sensor plane to the focus plane (double,[-,-]:500.0,RW). </summary>
		MainLensThick_TotalFocusDistanceMM,
		/// <summary> The magnification described by the used main lens (double,[0,1e9]: 0.38196601125010515179541316563436, RW). </summary>
		MainLensThick_Magnification,
		/// <summary> The nominal main lens's focal length in millimeters (double,[0.1,1e5]:100.0,RW). </summary>
		MainLensThick_NominalFocalLengthMM,
		/// <summary> The nominal total focus distance in millimeters. This is the distance from the sensor plane to the focus plane (double,[-,-]:500.0,RW). </summary>
		MainLensThick_NominalFocusDistanceMM,
		/// <summary> The nominal magnification described by the used main lens (double,[0,1e9]: 0.38196601125010515179541316563436, RW). </summary>
		MainLensThick_NominalMagnification,

		/************************************************************************/
		/* Sensor                                                               */
		/************************************************************************/

		/// <summary> The size of the camera sensor. This is always the complete sensor size, even if the image only shows part of the whole original sensor image (double[2],[0,-]:[image width,image height] RW). </summary>
		Sensor_TotalSizeMM,
		/// <summary> The sensor size in millimeters that corresponds to the size of image that is stored with this format (double[2], [0,-]:[image width,image height],RW). </summary>
		Sensor_SizeMM,
		/// <summary> The sensor offset in millimeters. This is the vector from the center of the total sensor which is the origin of ordinates to the center of the actual sensor size in the sensor frame (double[2],[0,-]:(0.0,0.0),RW). </summary>
		Sensor_OffsetMM_s,
		/// <summary> The sensors pixel size in mm. (double,[0.0,1.0]:0.09,RW). </summary>
		Sensor_PhysicalPixelSizeMM,

		/************************************************************************/
		/* Virtual Camera                                                       */
		/************************************************************************/

		/// <summary> Offset of image center of virtual camera in plane perpendicular to z-axis of main lens from center of main lens in millimeters (double[2],-:(0.0,0.0),RW). </summary>
		ViewCam_Pinhole_ViewOffsetMM_g,
		/// <summary> The zoom factor. A zoom factor of zero sets the viewing frustum to that of the main lens (double,[-2.0,2,0]:0.0,RW). </summary>
		ViewCam_Pinhole_ViewZoomFactor,
		/// <summary> Disables (0) / Enables (1) the Landscape Mode for the virtual Camera (unsigned,[0,1]:1,RW). </summary>
		ViewCam_Pinhole_LandscapeMode,
		/// <summary> Set the Sensor Scaling mode for the virtual Camera. Has to be one of the values defined in EVirtCamSensorScaling (enum,[Rx::CamFormat::EVirtCamSensorScaling]:VirtCam_Sensor_Scale_InnerRect,RW). </summary>
		ViewCam_Pinhole_SensorScaling,
		/// <summary> The virtual sensor size factor. This determines the size of the virtual camera's sensor with respect to the plenoptic camera's physical sensor size.
		/// The virtual camera's sensor size is equal to this factor times the plenoptic camera's sensor size (double,[0.1,1000]:1.0,RW). </summary>
		ViewCam_Pinhole_SensorSizeFactor,
		/// <summary> The rotation of the virtual camera about its z-axis in degrees in a CCW sense (double,[0.0,360.0]:0.0,RO). </summary>
		ViewCam_Pinhole_ViewRotationDEG,
		/// <summary> The extended frustum of the virtual camera given in 6 coordinates: 1 = bottom/left/near, 2 = top/right/near, 3 = bottom/left/far, 4 = top/right/far, 5 = bottom/left/furthest, 6 = top/right/furthest (double[18],-:-,RO). </summary>
		ViewCam_Pinhole_FrustumMM_g,

		/************************************************************************/
		/* Transformations                                                      */
		/************************************************************************/

		/// <summary> This describes the transformation from the global frame to the sensor frame:  The first three entries are the translation and the following nine entries are the rotation (row wise) (double[12],[-1.0,1.0]:(0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0),RW). </summary>
		Transformation_Global_Sensor,
		/// <summary> This describes the transformation from the global frame to the reference frame:  The first three entries are the translation and the following nine entries are the rotation (row wise) (double[12],[-1.0,1.0]:(0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0),RW). </summary>
		RefPlane_Position,
		/// <summary> This parameter allows the setting of the reference to global transformation with 3 points picked in the reference plane to be. (double[9],[-,-]:-,WO). </summary>
		RefPlane_Position_FromPoints,
		/// <summary> This parameter allows the adjusting of the reference plane position, by translating the reference plane along its z axis relative to the TCP origin. (double,[-,-]:-,RW). </summary>
		RefPlane_ZOffsetToTCP,

		/************************************************************************/
		/* MLA Physical                                                         */
		/************************************************************************/

		///	<summary> The nominal MLA lens pitch in pixels. This is the distance between neighboring micro lens centers. The nominal lens pitch serves as an initial start for further more precise calibrations. This sets the automatically computed homography (double,[0.0,-]:23.0,RW). </summary>
		MLA_NominalLensPitchPX,
		/// <summary> The nominal MLA center in pixels on PXA (double[2],[-,-]:(0.0,0.0),RW). </summary>
		MLA_NominalCenterPX_pxa,
		/// <summary> The nominal MLA center in pixels on screen frame (double[2],[-,-]:-,RW). </summary>
		MLA_NominalCenterPX_screen,
		/// <summary> Number of 90 degree CCW rotation steps of the MLA, with respect to the standard orientation. (unsigned,[0,3]:0,RW). </summary>
		MLA_Rotation90Count,
		/// <summary> If true the MLA frame X-axis is inverted with the respect to the standard orientation (unsigned,[0,1]:0,RW). </summary>
		MLA_InvertAxisX,
		/// <summary> If true the MLA frame Y-axis is inverted with the respect to the standard orientation (unsigned,[0,1]:0,RW). </summary>
		MLA_InvertAxisY,
		/// <summary> Number of micro lens types on the MLA (unsigned,[0,12]:-,RW). </summary>
		MLA_LensTypeCount,
		/// <summary> Minimal virtual depth values from where on the corresponding micro lens type gives in-focus images.(double[12],[0.0,-]:(1.0,2.8,3.8),RW). </summary>
		MLA_FocusRangeMinVD,
		/// <summary> Maximal virtual depth values until where the corresponding micro lens type gives in-focus images (double[12],[0.0,-]:(3.0,4.0,100.0),RW). </summary>
		MLA_FocusRangeMaxVD,
		/// <summary> The nominal orthogonal distance between a micro-lens's optical center and the sensor. This may be different for each micro lens type. The values are given in millimeters (double[12],[0.0,-]:-,RO). </summary>
		MLA_NominalMlaSensorDistanceMM,
		/// <summary> Is true if the camera's MLA to sensor distance has been configured and must not be changed. Must be set after configuration of the true nominal MLA to sensor distances of the physical MLA. Setting this property copies the nominal MLA to sensor distance to calibrated MLA to sensor distance. (unsigned,[0,1]:0,RW). </summary>
		MLA_IsMlaDistanceConfigured,
		/// <summary> The nominal orthogonal distance between the micro-lenses of type 1 to the sensor. This may be different for each micro lens type. The values are given in millimeters (MM). This parameter describes the Length of 1VD in MM. (double,[> 0,-]:-,RW) </summary>
		MLA_NominalSensorDistanceToLensType1MM,
		/// <summary>
		/// 	The normalized offsets of lens type 0 and 2 to lens type 1. To calculate the Mla to sensor distances in MM for 0, 1 or 2:
		/// 	double dMlaToSensorDistance0MM = (1 + vdLensTypeOffsetsToLensType1VD.x) * dSensorDistanceToLensType1MM;
		/// 	double dMlaToSensorDistance1MM = dSensorDistanceToLensType1MM;
		/// 	double dMlaToSensorDistance2MM = (1 + vdLensTypeOffsetsToLensType1VD.y) * dSensorDistanceToLensType1MM;
		///     (double[2],[0,-]:-,RW)
		/// </summary>
		MLA_LensTypeOffsetsToLensType1VD,

		/************************************************************************/
		/* MLA Calibration                                                      */
		/************************************************************************/

		/// <summary> The orthogonal distance between a micro-lens's optical center and the sensor. This may be different for each micro lens type. The values are given in millimeters. (double[12],[0.0,-]:-,RO). </summary>
		MLA_MlaSensorDistanceMM,
		/// <summary> Is true if this MLA has been calibrated automatically. (unsigned,[0,1]:0,RO). </summary>
		MLA_IsAutoCalibrated,
		/// <summary> The orthogonal distance between the micro-lenses of type 1 to the sensor. This may be different for each micro lens type. The values are given in millimeters (MM). This parameter describes the Length of 1VD in MM.(double,[> 0,-]:-,RW) </summary>
		MLA_SensorDistanceToLensType1MM,

		/************************************************************************/
		/* MLI Calibration                                                      */
		/************************************************************************/

		/// <summary> The MLI micro lens pitch in Pixel. This is the distance between neighboring micro lens centers (double,[0.0,-]:0.0,RW). </summary>
		MLI_ManualLensPitchPX = 0x00220200,
		/// <summary> The MLI center in pixels on PXA (double[2],[0.0,-]:0.0,RW). </summary>
		MLI_ManualCenterPX_pxa,
		/// <summary> The MLI center in pixels on sensor frame (double[2],[0.0,-]:-,RW). </summary>
		MLI_ManualCenterPX_s,
		/// <summary> The MLI rotation in radians from sensor frame to MLA frame (double,[0.0,-]:0.0,RW). </summary>
		MLI_ManualRotationRAD,
		/// <summary> The MLI border in lens units. This Values defines the region of interest in various algorithms (double,[0.0,1000.0]:1.0,RW). </summary>
		MLI_BorderLU,
		/// <summary> The MLA lens gap in pixels. The micro lens diameter is the micro lens pitch minus this gap (double,[0.0,-]:0.0,RW). </summary>
		MLI_LensGapPX,
		/// <summary> The MLA lens border in pixels. The effectively usable micro lens diameter is the micro lens diameter minus twice this border (double,[0.0,-]:-,RW). </summary>
		MLI_LensBorderPX,
		/// <summary> Is true if this MLI has been calibrated manually or automatically (unsigned,[0,1]:0,RO). </summary>
		MLI_IsCalibrated,
		/// <summary> Is true if this MLI has been calibrated automatically. The manual MLI parameters aren't used (unsigned,[0,1]:0,RO). </summary>
		MLI_IsAutoCalibrated,
		/// <summary> Minimal virtual depth that allow a full refocus without gaps. The parameter MLA_FocusRangeMinVD describes the absolute minimal virtual depth but is affected by the current calibration. The affected value is returned by this parameter (double,[-,-]:0.0,RO). </summary>
		MLI_FocusEffectiveMinVD,
		/// <summary> Minimal mm in object space that allow a full refocus without gaps. The parameter MLA_FocusRangeMinVD describes the absolute minimal virtual depth but is affected by the current calibration. The affected value is returned by this parameter. (double,[-,-]:-,RO). </summary>
		MLI_FocusEffectiveMinMM_ObjectSpace,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent metric calibration parameter.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class EMetricCalib
	#else
		namespace EMetricCalib
		{
			enum ID
	#endif
	{
		None = 0,
		/// <summary> Store the refocused image (unsigned,[0,1]:0,RW). </summary>
		Enable_StoreRefocusedImage,
		/// <summary> flag for calibration of the focal length (unsigned,[0,1]:1,RW). </summary>
		Enable_FocalLength,
		/// <summary> Flag for calibration of optical axis (unsigned,[0,1]:1,RW). </summary>
		Enable_OpticalAxis,
		/// <summary> Flag for calibration of principal point (unsigned,[0,1]:1,RW). </summary>
		Enable_PrinciplePoint,
		/// <summary> Flag for calibration of MLA to sensor distance (unsigned,[0,1]:1,RW). </summary>
		Enable_MLAToSensorDistance,
		/// <summary> Flag for distortion center (unsigned,[0,1]:1,RW). </summary>
		Enable_Dist_Center,
		/// <summary> Flag for radial distortion const (unsigned,[0,1]:0,RW). </summary>
		Enable_RadialPolyConst,
		/// <summary> Flag for radial distortion (unsigned,[0,1]:1,RW). </summary>
		Enable_RadialPoly,
		/// <summary> Flag for depth distortion (unsigned,[0,1]:1,RW). </summary>
		Enable_DepthPoly,
		/// <summary> Flag for axial distortion (unsigned,[0,1]:1,RW). </summary>
		Enable_AxialPoly,
		/// <summary> Flag for data output. This comprises information of the added images and their resultant models (planar and test). The calibration log, depth (intermediate) images and image sequence. (unsigned,[0,1]:0,RW). </summary>
		Enable_DataOutput,
		/// <summary> Number of calibration iterations (unsigned,[0,1]:50,RW). </summary>
		CalibrationIterationCount,
		/// <summary> Smooth radius for test model filter (unsigned,[0,1]:3,RW). </summary>
		TestModelFilter_SmoothRadius,
		/// <summary> Maximal number of point outliers that can be filtered. Test models with more outliers points are not filtered. (double,[0.0,1.0]:0.1,RW). </summary>
		TestModelFilter_MaxOutlierPointsPercentage,
		/// <summary> Depth threshold for test model filter (double,[0.0,1.0]:0.25,RW). </summary>
		TestModelFilter_DepthStdDevThresholdVD,
		/// <summary> Horizontal histogram bin count -> same for vertical (unsigned,[0,-]:15,RW). </summary>
		TestModelFilter_Hist3dHorizBinCount,
		/// <summary> Depth histogram bin count -> same for vertical (unsigned,[0,-]:20,RW). </summary>
		TestModelFilter_Hist3dDepthBinCount,
		/// <summary> Min value for depth histogram (double,[0,-]:2.0,RW). </summary>
		TestModelFilter_Hist3dVirtDepthMin,
		/// <summary> Max value for depth histogram (double,[TestModelFilter_Hist3dVirtDepthMin,-]:11,RW). </summary>
		TestModelFilter_Hist3dVirtDepthMax,
		/// <summary> Common part threshold (double,[0.0,1.0]:0.5,RW). </summary>
		TestModelFilter_dHist3dCommonPartThreshold,
		/// <summary> Register the metric calibration callback function (unsigned,[0,1]:0,RO). </summary>
		Callback_Registered,
		/// <summary> Distance of points in the model (double,[0.0,-]:2.0,RW). </summary>
		ModelPointStep,
		/// <summary> Initial focal length (double,-:100.0,RW). </summary>
		InitialFocalLengthMM,
		/// <summary> Initial total focus distance (unsigned,-:500.0,RW). </summary>
		InitialTotalFocusDistanceMM,
		/// <summary> The result of the last metric calibration (enum,EMetricCalibResult:None,RO). </summary>
		CalibrationResult,
		/// <summary> The known Z-Distance of the Dot-Target starting with 0 and following from that with relative steps (double,[0.000000,-]:0.000000,RW).</summary>
		TargetZDistanceMM,
		/// <summary> The export path for the additional output. (string,[-,-]:-,RW). </summary>
		DataOutputPath,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent capture gray image parameters.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class ECaptureGrayImage
	#else
		namespace ECaptureGrayImage
		{
			enum ID
	#endif
	{
		None = 0,
		/// <summary> The number of image the actual gray image is averaged from. (unsigned, [1,-]:5,RW). </summary>
		NumberOfImages,
		/// <summary> The delay in seconds between each image of the gray image capturing routine (unsigned,[0,-]:0,RW). </summary>
		DelayBetweenImages,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent Cuda device parameters.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class ECudaDevice
	#else
		namespace ECudaDevice
		{
			enum ID
	#endif
	{
		None = 0,
		/// <summary> The name of the CUDA device (string,-:-,RO). </summary>
		Name,
		/// <summary> The device ID of the selected CUDA device (unsigned,-:-,RO). </summary>
		DeviceID,
		/// <summary> The compute capability major version (unsigned,-:-,RO). </summary>
		ComputeCapabilityMajor,
		/// <summary> The compute capability minor version (unsigned,-:-,RO). </summary>
		ComputeCapabilityMinor,
		/// <summary> CUDA device total global memory in MB (double,-:-,RO). </summary>
		TotalGlobalMemoryMB,
		/// <summary> CUDA device total constant memory in MB (double,-:-,RO). </summary>
		TotalConstMemoryMB,
		/// <summary> CUDA device registers per block (unsigned,-:-,RO). </summary>
		RegistersPerBlock,
		/// <summary> CUDA device warp size (unsigned,-:-,RO). </summary>
		WarpSize,
		/// <summary> CUDA device memory pitch in MB (double,-:-,RO). </summary>
		MemPitchMB,
		/// <summary> CUDA device maximal number of threads per block (unsigned,-:-,RO). </summary>
		MaxThreadsPerBlock,
		/// <summary> CUDA device concurrent memory copy and kernel execution (unsigned,-:-,RO). </summary>
		DeviceOverlap,
		/// <summary> CUDA device number of processors (unsigned,-:-,RO). </summary>
		MultiProcessorCount,
		/// <summary> CUDA device compute mode (unsigned,-:-,RO). </summary>
		ComputeMode,
		/// <summary> CUDA device maximum 2D texture size x-dimension (unsigned,-:-,RO). </summary>
		MaxTex2DSizeX,
		/// <summary> CUDA device maximum 2D texture size y-dimension (unsigned,-:-,RO). </summary>
		MaxTex2DSizeY,
		/// <summary> CUDA device maximum 2D array texture size x-dimension (unsigned,-:-,RO). </summary>
		MaxTex2DArraySizeX,
		/// <summary> CUDA device maximum 2D array texture size y-dimension (unsigned,-:-,RO). </summary>
		MaxTex2DArraySizeY,
		/// <summary> CUDA device can execute kernels concurrently (unsigned,-:-,RO). </summary>
		ConcurrentKernels,
		/// <summary> CUDA device is a Tesla device using a TCC driver (unsigned,-:-,RO). </summary>
		TCCDriver,
		/// <summary> The clock frequency of the CUDA device in kilohertz (double,-:-,RO). </summary>
		ClockFrequencyMHz,
		/// <summary> Specified whether there is a run time limit on kernels (unsigned,-:-,RO). </summary>
		KernelExecTimeoutEnabled,
		/// <summary> PCI bus ID of the device (unsigned,-:-,RO). </summary>
		PCIBusID,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent MLA calibration parameters.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class EMlaCalib
	#else
		namespace EMlaCalib
		{
			enum ID
	#endif
	{
		None = 0,
		/// <summary> Correlation patch radius (unsigned,[2,5]:3,RW). </summary>
		Depth_PatchDiameter,
		/// <summary> Correlation patch stride (unsigned,[1,5]:2,RW). </summary>
		Depth_PatchStride,
		/// <summary> Number of paths per depth path job. Values: (unsigned,[1,2]:1,RW). </summary>
		Depth_NumberOfPaths,
		/// <summary> Minimal correlation threshold (double,[0.0,1.0]:0.88,RW). </summary>
		Depth_MinCorrelation,
		/// <summary> The minimum variance. (double,[0.0,1.0]:0.0,RW). </summary>
		Depth_MinVariance,
		/// <summary> Minimum virtual depth for depth estimation (double,[2.0,100.0]:2.0,RW). </summary>
		Depth_MinVirtualDepth,
		/// <summary> Maximum virtual depth for depth estimation (double,[2.0,100.0]:15.0,RW). </summary>
		Depth_MaxVirtualDepth,
		/// <summary> True to use a polynomial fit to find the best correlation between two match points.(unsigned, [0,1]:1, RW). </summary>
		Depth_UsePolynomialFit,
		/// <summary> A lens filter mask to disable (1) or enable (0) certain lens types during depth estimation (unsigned[12],[0,1]:0,RW). </summary>
		Depth_LensFilterMask,
		/// <summary> Number of calibration iterations (unsigned,[1,-]:5,RW). </summary>
		Algorithm_IterationCount,
		/// <summary>  If the error reached its stop criterion the calibration is aborted. (double,[0.0,1.0]:1e-6,RW).</summary>
		Algorithm_ErrorStopCriterion,
		/// <summary> The inner part in percentage that should be used to calibrate the MLA. (unsigned, [0,100]:95, RW). </summary>
		Algorithm_InnerImagePartPercentage,
		/// <summary> The pixel step in which the ROI should be sampled.(unsigned, [1,-]:1, RW).</summary>
		Algorithm_PixelStep,
		/// <summary> The MLA scale factor. (double,[0.0,1.0]:1.0,RW) </summary>
		Algorithm_MlaScaleFactor,
		/// <summary> true to use linear interpolation for reference depth (unsigned, [0,1]:1, RW). </summary>
		Algorithm_UseLinearInterpolationForReferenceDepth,
		/// <summary> true to use the median for the offset calculation (Within the algorithm and the final end outcome), false to use mean (unsigned, [0,1]:1, RW). </summary>
		Algorithm_UseMedian,
		/// <summary> true to write debug data to DebugOutputPath  (unsigned, [0,1]:0, RW).  </summary>
		WriteDebugData,
		/// <summary> Full base pathname of the debug output files. (string,[-,-]:-,RW) </summary>
		DebugOutputPath,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	The main parameter enum of the Raytrix ApiLF.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class EApiLF
	#else
		namespace EApiLF
		{
			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
			/// <summary>
			/// 	The main parameter enum of the Raytrix ApiLF.
			/// </summary>
			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
			enum ID
	#endif
	{
		None = 0,
		/// <summary> Number of cameras available (unsigned,-:-,RO). </summary>
		Cam_Count = 0x00020000,
		/// <summary> Automatically store frames captured from a camera into the bound ray sequence in write mode (unsigned,[0,1]:0,RW). </summary>
		RaySeq_AutoStoreCamFrames = 0x00060000,
		/// <summary> Image stacking enabled (unsigned,[0,1]:0, RW). </summary>
		ImgStack_StackingEnabled = 0x00340000,
		/// <summary> Number of images to stack (unsigned,[1,1000]:4, RW). </summary>
		ImgStack_StackCount,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent super resolution parameters.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class ESuperResolution
	#else
		namespace ESuperResolution
		{
			enum ID
	#endif
	{
		None = 0,
		/// <summary> The super resolution scale. (unsigned,[2,20]:3, RW). </summary>
		Scale,
		/// <summary> The number of iterations of the super resolution algorithm. (unsigned,[1,200]:20, RW). </summary>
		Iterations,
		/// <summary> Radius of the temporal search area. Where 0 sets the algorithm to automatic mode. (unsigned,[0,-]:0, RW). </summary>
		TemporalRadius,
		/// <summary> An enum constant representing the optical flow algorithm option. (enum,[Rx::EOpticalFlowType]:Rx::EOpticalFlowType::Farneback,RW). </summary>
		OpticalFlowAlgorithm,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent high resolution particle detector parameters.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class EHighResolutionParticleDetector
	#else
		namespace EHighResolutionParticleDetector
		{
			enum ID
	#endif
	{
		None = 0,

		/************************************************************************/
		/* DEPRECATED Feature Detection DEPRECATED                              */
		/************************************************************************/

		FD_InititalVariance = 1,
		/// <summary> Feature detector: Ratio of pixels that have to be smaller pixel value to accept position as maximum. Evaluation area is given by uiHalfWinsizeMinMaxRatio (double,[0,-]:0.8,RW). </summary>
		FD_MinMaxRatio = 2,
		/// <summary> Feature detector: Half window size to determine maximum ratio.(unsigned,[1,-]:2,RW) </summary>
		FD_HalfWinsizeMinMaxRatio = 3,
		/// <summary>
		/// 	Feature detector:
		///		Half window size to cluster maxima. Maxima within window around active pixel are considered to be the same maximum.
		///		(unsigned,[1,-]:2,RW)
		///	</summary>
		FD_HalfWinsizeMaxCluster = 4,
		/// <summary> Feature detector: Size of the patch image.(unsigned,[1,-]:10,RW) </summary>
		FD_HalfPatchSize = 5,

		/************************************************************************/
		/* Depth                                                                */
		/************************************************************************/

		/// <summary> Depth: Minimal correlation threshold (double,[0.0,1.0]:0.90,RW).  </summary>
		Depth_MinCorrelation = 6,
		/// <summary> Depth: Minimal standard deviation of correlation patch (double,[0.0,1.0]:0.01,RW). </summary>
		Depth_MinStdDeviation = 7,
		/// <summary>  Depth correlation patch size (unsigned,[2,5]:5,RW).</summary>
		Depth_PatchSize = 8,

		/************************************************************************/
		/* Super Resolution                                                     */
		/************************************************************************/

		/// <summary> Super Resolution: The upscaling factor. (unsigned,[2,20]:2, RW). </summary>
		SRScale = 9,
		/// <summary> Super Resolution: The radius of the source patch.(unsigned,[2,-]:6, RW) </summary>
		SRPatchRadius = 10,
		/// <summary> The number of iterations of the super resolution algorithm. (unsigned,[1,200]:1, RW). </summary>
		SRIterations = 11,
		/// <summary> Super Resolution: The lower bound for source patches of lens type 1, that are used for super resolution regarding virtual depth. (double,[0.0,100.0]:1.0,RW) </summary>
		SRFilterMinVdLens1 = 12,
		/// <summary> Super Resolution: The upper bound for source patches of lens type 1, that are used for super resolution regarding virtual depth. (double,[0.0,100.0]:3.0,RW) </summary>
		SRFilterMaxVdLens1 = 13,
		/// <summary> Super Resolution: The lower bound for source patches of lens type 2, that are used for super resolution regarding virtual depth. (double,[0.0,100.0]:2.0,RW) </summary>
		SRFilterMinVdLens2 = 14,
		/// <summary> Super Resolution: The upper bound for source patches of lens type 2, that are used for super resolution regarding virtual depth. (double,[0.0,100.0]:4.0,RW) </summary>
		SRFilterMaxVdLens2 = 15,
		/// <summary> Super Resolution: The lower bound for source patches of lens type 3, that are used for super resolution regarding virtual depth. (double,[0.0,100.0]:3.8,RW) </summary>
		SRFilterMinVdLens3 = 16,
		/// <summary> Super Resolution: The upper bound for source patches of lens type 3, that are used for super resolution regarding virtual depth. (double,[0.0,100.0]:100.0,RW) </summary>
		SRFilterMaxVdLens3 = 17,
		/// <summary> Super Resolution: Min lens border distance. (unsigned,[0,-]:3,RW) </summary>
		SRMinLensBorderDistance = 18,

		/************************************************************************/
		/* Feature Detection                                                    */
		/************************************************************************/

		FD_MaxFeaturesPerDetection = 19,
		FD_FeatureQuality          = 20,
		FD_MinDistance             = 21,
		FD_PatchSize               = 22,
		FD_StrongFeaturesOnly      = 23,
		FD_Strongness              = 24,

		/************************************************************************/
		/* Filter                                                               */
		/************************************************************************/
		MinMotionParticleMM               = 25,
		MaxMotionParticleMM               = 26,
		MaxDepthMotionParticleMM          = 27,
		MinMotionAngleDegree              = 28,
		MinSpanTrackMM                    = 29,
		ParticleSimilarityMM_s            = 30,
		ParticleSimilarityColorPercentage = 31,
		MaxMotionDifferencePercentage     = 32,
		TrusworthyTrack                   = 33,
		MinTrackLength                    = 34,
		MainFluidOrientation              = 35,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent parameter groups.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class EGroup
	#else
		namespace EGroup
		{
			enum ID
	#endif
	{
		None = 0,
		/// <summary> CUDA parameter group. </summary>
		Cuda = 0x00010000,
		/// <summary> Camera parameter group. </summary>
		Camera = 0x00020000,
		/// <summary> Camera capture parameter group. </summary>
		CamCap = 0x0003F000,
		/// <summary> Ray image parameter group. </summary>
		Ray = 0x00040000,
		/// <summary> Ray sequence parameters. </summary>
		RaySeq = 0x00050000,
		/// <summary> PreProcessing parameter group. </summary>
		PreProc = 0x00100000,
		/// <summary> Depth evaluation parameter group. </summary>
		Depth = 0x00200000,
		/// <summary> Depth Path algorithm. </summary>
		Depth_Path = 0x00203000,
		/// <summary> Focus evaluation parameter group. </summary>
		Focus = 0x00220000,
		/// <summary> Grid display parameter group. </summary>
		Grid = 0x00230000,
		/// <summary> Grid calibration parameter group. </summary>
		Grid_Calibration = 0x00240000,
		/// <summary> Projection parameter group. </summary>
		Projection = 0x00310000,
		/// <summary> MLA parameter group. </summary>
		MLA = 0x00320000,
		/// <summary> Metric calibration parameter group. </summary>
		MC = 0x00330000,
		/// <summary> Gray image capturing properties. </summary>
		Gray = 0x00340000,
		/// <summary> The light field camera. </summary>
		LF_Camera = 0x00350000,
		/// <summary> The Mla calibration parameter group. </summary>
		MlaCalibration = 0x00360000,
		/// <summary> The particle tracking parameter group. </summary>
		ParticleTracking = 0x00370000,
		/// <summary> The Super resolution parameter group. </summary>
		SuperResolution = 0x00380000,
		/// <summary> The high resolution particle detector parameter group </summary>
		HighResolutionParticleDetector = 0x00390000,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent particle tracking parameter.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class EParticleTracking
	#else
		namespace EParticleTracking
		{
			enum ID
	#endif
	{
		None = 0,
		/// <summary> Number of processes used for 2D particle detection and time tracking. </summary>
		Misc_ProcessCount,
		/// <summary> Base filename for temporary particle data swap. </summary>
		Misc_WorkingDirectory,
		/// <summary> 0-based frame index in sequence to start processing. </summary>
		Misc_SequenceStartImage,
		/// <summary> 0-based frame index in sequence to stop processing. </summary>
		Misc_SequenceStopImage,
		/// <summary> Minimum x-component in image region to process (Region of Interest). </summary>
		Misc_ImageRegion_MinX,
		/// <summary> Minimum y-component in image region to process (Region of Interest). </summary>
		Misc_ImageRegion_MinY,
		/// <summary> Maximum x-component in image region to process (Region of Interest). 0U to use full image width. </summary>
		Misc_ImageRegion_MaxX,
		/// <summary> Maximum y-component in image region to process (Region of Interest). 0U to use full image height. </summary>
		Misc_ImageRegion_MaxY,
		/// <summary> 1U to use lens type far, 0U to omit. </summary>
		Misc_UseLensTypeFar,
		/// <summary> 1U to use lens type middle, 0U to omit. </summary>
		Misc_UseLensTypeMiddle,
		/// <summary> 1U to use lens type near, 0U to omit. </summary>
		Misc_UseLensTypeNear,
		/// <summary>
		///   The particle density setting used in 2D particle detection. Trade off between uniqueness of particles and runtime.
		///   0U : only few particles in whole image. Exhaustive computational effort for moderate or higher particle count
		///   1U : only single particles in each lens. Exhaustive computational effort for high particle count
		///   2U : multiple particles per lens over large parts of the image. Least effort, possible multi detection of particles
		/// </summary>
		ImageProc_ParticleDensity,
		/// <summary> The minimum particle radius constraint for 2D particle detection. [0.1 ... 20] </summary>
		ImageProc_MinParticleRadiusPX,
		/// <summary> The maximum particle radius constraint for 2D particle detection. [0.1 ... 20] </summary>
		ImageProc_MaxParticleRadiusPX,

		ImageProc_MinParticleBrightness,
		/// <summary> The maximum particles per lens constraint for 2D particle detection. Lenses with more 2D particles are not used in 3D estimation. </summary>
		ImageProc_MaxParticlesPerLens,
		/// <summary> 1U to use processed image instead of raw image for particle detection. </summary>
		ImageProc_UseProcessedImage,
		/// <summary> 1U to use background image subtraction. An BG image has to be available. </summary>
		ImageProc_UseBackgroundImage,
		/// <summary> 0-based start index for BG image computation. </summary>
		ImageProc_BackgroundImageStartIndex,
		/// <summary> 0-based stop index for BG image computation. </summary>
		ImageProc_BackgroundImageStopIndex,
		/// <summary> Set 1U to use radius and scale of particles for time matching instead of nearest neighbor. </summary>
		Tracking_UseVisualTimeTracking,
		/// <summary> The time delta for velocity estimation (in PIV mode the double-shoot delay). </summary>
		Tracking_ImageTimeDelta,
		/// <summary> 1U : Time matching only for succeeding image pairs (1 to 2 ; 3 to 4 ...). </summary>
		Tracking_PivMode,
		/// <summary> The maximum epipolar line distance constraint for 2D particle grouping. </summary>
		Depth_MaxEpilineDistancePX,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// namespace: Interfaces
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
namespace Interfaces
{
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent image queue interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class EImageQueue
	#else
		namespace EImageQueue
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent parameter interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class EParameters
	#else
		namespace EParameters
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent ray file reader interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class ERayFileReader
	#else
		namespace ERayFileReader
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent ray file writer interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class ERayFileWriter
	#else
		namespace ERayFileWriter
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent sequence file reader interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class ESeqFileReader
	#else
		namespace ESeqFileReader
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent sequence file writer interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class ESeqFileWriter
	#else
		namespace ESeqFileWriter
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent camera interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class ECamera
	#else
		namespace ECamera
		{
			enum ID
	#endif
	{
		None = 0,
		/// <summary> Access to IP camera functions: The interface is IIPCamera. </summary>
		IPCamera,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent camera server interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class ECameraServer
	#else
		namespace ECameraServer
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent calibration interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class ECalib
	#else
		namespace ECalib
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent calibration manager interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class ECalibManager
	#else
		namespace ECalibManager
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent Cuda interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class ECuda
	#else
		namespace ECuda
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent Cuda device interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class ECudaDevice
	#else
		namespace ECudaDevice
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent OpenGlInterop interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class EOpenGlInterop
	#else
		namespace EOpenGlInterop
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent Cuda compute interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class ECudaCompute
	#else
		namespace ECudaCompute
		{
			enum ID
	#endif
	{
		None = 0,
		/// <summary> Access to CUDA images: The interface is ICudaDataImages. </summary>
		Images,
		/// <summary> Access to CUDA textures: The interface is ICudaDataTextures. </summary>
		Textures,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent images processing unit interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class EImageProcUnit
	#else
		namespace EImageProcUnit
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent param cache interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class EParamCache
	#else
		namespace EParamCache
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent capture gray image interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class ECaptureGrayImage
	#else
		namespace ECaptureGrayImage
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent Export interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class EExport
	#else
		namespace EExport
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent grid calibration interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class EGridCalib
	#else
		namespace EGridCalib
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent image stacking interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM

		public enum class EImageStacking
	#else
		namespace EImageStacking
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent metric calibration interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class EMetricCalib
	#else
		namespace EMetricCalib
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent light field runtime interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class ELightFieldRuntime
	#else
		namespace ELightFieldRuntime
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent ApiLF interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class EApiLF
	#else
		namespace EApiLF
		{
			enum ID
	#endif
	{
		None = 0,
		CudaCompute      = 1,
		CudaDevice       = 2,
		BoundCalibration = 3,
		BoundCamera      = 4,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent MLA calibration interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class EMlaCalib
	#else
		namespace EMlaCalib
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent Depth Correction Creator interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class EDepthCorrectionCreator
	#else
		namespace EDepthCorrectionCreator
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent ray depth processing interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class ERayDepthProcessing
	#else
		namespace ERayDepthProcessing
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent super resolution interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class ESuperResolution
	#else
		namespace ESuperResolution
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent high resolution particle detector interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class EHighResolutionParticleDetector
	#else
		namespace EHighResolutionParticleDetector
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Values that represent particle tracking interfaces.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	#ifdef RX_MANAGED_ENUM
		public enum class EParticleTracking
	#else
		namespace EParticleTracking
		{
			enum ID
	#endif
	{
		None = 0,
	};
	#ifndef RX_MANAGED_ENUM
}
	#endif
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// <summary>
/// 	Values that represent EImage.
/// </summary>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef RX_MANAGED_ENUM
	public enum class EImage
#else
	namespace EImage
	{
		enum ID
#endif
{
	/// <summary> No image. </summary>
	None = 0x000000,
	/// <summary> Raw image captured by camera. </summary>
	Raw = 0x000001,
	/// <summary> Gray image generated by MLI calibration. </summary>
	Gray = 0x000002,
	/// <summary> Raw depth image without fusion. </summary>
	DepthRay = 0x000004,
	/// <summary> Raw image containing the MLI/MLA calibration as a drawn overlay. </summary>
	Grid = 0x000008,
	/// <summary> Processed ray image. Raw image after applying all pre process algorithms such as debayer etc. </summary>
	Processed_Normalized = 0x000010,
	/// <summary> Processed ray image. </summary>
	GridData = 0x000020,
	/// <summary> Basic refocus image. This is the output of the basic refocus algorithm and always from the perspective of the orthographic virtual view. </summary>
	RefocusBasic = 0x000040,
	/// <summary> Total Focus image of virtual space. </summary>
	TotalFocus_View_Virtual = 0x000800,
	/// <summary> Total Focus result image. </summary>
	TotalFocus_View_Object_Pinhole = 0x001000,
	/// <summary> Multiview image. This is the output of the multi view algorithm and always from the perspective of the pinhole object view. </summary>
	Multiview = 0x002000,
	/// <summary> Depth image in virtual space. </summary>
	DepthMap_View_Virtual = 0x004000,
	/// <summary> Depth result image. </summary>
	DepthMap_View_Object_Pinhole = 0x008000,
	/// <summary> Depth color result image for virtual space. </summary>
	DepthMapColored_View_Virtual = 0x010000,
	/// <summary> Depth color result image for view camera. </summary>
	DepthMapColored_View_Object_Pinhole = 0x020000,
	/// <summary> Depth map mapping image. This is created by RxDepth3D(). See the documentation of this function. </summary>
	Depth3D = 0x040000,
};
#ifndef RX_MANAGED_ENUM
	}
#endif

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// <summary>
/// 	Values that represent EImgStack.
/// </summary>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef RX_MANAGED_ENUM

	public enum class EImgStack
#else
	namespace EImgStack
	{
		enum ID
#endif
{
	/// <summary> No stacking. </summary>
	None = 0,
	/// <summary> Noise reduction by averaging the input images. </summary>
	Mean,
	/// <summary> Increases the exposure rate by adding all images and clamp them on maximum intensity values. </summary>
	Add,
};
#ifndef RX_MANAGED_ENUM
	}
#endif

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// <summary>
/// 	Values that represent EMetricCalibType.
/// </summary>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef RX_MANAGED_ENUM
	public enum class EMetricCalibType
#else
	namespace EMetricCalibType
	{
		enum ID
#endif
{
	/// <summary> None. </summary>
	None = 0,
	/// <summary> The calibration based on a calibration setup that demands tilted dot target images that reach over a large part of the depth range. </summary>
	PlaneBased,
	/// <summary> The calibration based on a calibration setup that demands straight dot target images that are moved along the z-axis with known steps. </summary>
	BoxBased,
};
#ifndef RX_MANAGED_ENUM
	}
#endif

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// <summary>
/// 	Values that represent EMetricCalibResult.
/// </summary>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef RX_MANAGED_ENUM
	public enum class EMetricCalibResult
#else
	namespace EMetricCalibResult
	{
		enum ID
#endif
{
	/// <summary> None. </summary>
	None = 0,
	/// <summary> The calibration has successfully converged. </summary>
	Converged,
	/// <summary> The calibration diverged. </summary>
	Diverged,
	/// <summary> The calibration aborted after too many iteration. This threshold can be set via: EMetricCalib::CalibrationIterationCount. </summary>
	TooManyIterations,
	/// <summary> The calibration aborted because the data was insufficient. </summary>
	InsufficientData,
	/// <summary> The calibration aborted because an user interrupt. </summary>
	UserInterrupt,
	/// <summary> The calibration aborted because an error occurred. </summary>
	Error,
	/// <summary> The calibration has been set to its initial values. </summary>
	InitialValues,
};
#ifndef RX_MANAGED_ENUM
	}
#endif

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// <summary>
/// 	Values that represent EMetricCalibPointFilter.
///
/// 	These enums are to be used as a filter when getting points from the metric calibration.
/// </summary>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef RX_MANAGED_ENUM
	public enum class EMetricCalibPointFilter
#else
	namespace EMetricCalibPointFilter
	{
		enum ID
#endif
{
	/// <summary> All points from the planar model. </summary>
	PlanarModelAll = 0x0000,
	/// <summary> All points from the planar model with an accomplished depth calculation. </summary>
	PlanarModelWithDepth,
	/// <summary> All points from the test model. </summary>
	TestModelAll,
	/// <summary> All points from the test model but those that lie on the axes. </summary>
	TestModelAllButAxes,
	/// <summary> All points from the test model that lie on the x-axis. </summary>
	TestModelAxisX,
	/// <summary> All points from the test model that lie on the y-axis. </summary>
	TestModelAxisY,
};
#ifndef RX_MANAGED_ENUM
	}
#endif

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// <summary>
/// 	Values that represent EMetricCalibPointType.
/// </summary>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef RX_MANAGED_ENUM
	public enum class EMetricCalibPointType
#else
	namespace EMetricCalibPointType
	{
		enum ID
#endif
{
	/// <summary> Index of points. </summary>
	Model2dIX = 0,
	/// <summary> 3D Point placed in the sensor coordinate system in mm. </summary>
	Model3dMM_m,
	/// <summary> 2D Point placed in the sensor coordinate system in mm. </summary>
	Space2MM_s,
	/// <summary> 2D Point placed in the global coordinate system in mm. </summary>
	Space2MM_g,
	/// <summary> Point placed in the object coordinate system in mm. </summary>
	Space4MM_g,
	/// <summary> Point projected on the plane. </summary>
	Space4PlaneMM_g,
	/// <summary> Model point in object space. </summary>
	Model3dSpace4MM_g,
	/// <summary> 2D Point placed in the sensor coordinate system and z in virtual depth. </summary>
	Space2VD_s,
	/// <summary> The first entry is the virtual depth, the second is the mm depth in space 4 in the global coordinate system and the last value in the vector is the euclidean distance of the test model point to the ground truth model point after calibration. </summary>
	ErrorByDepth,
};
#ifndef RX_MANAGED_ENUM
	}
#endif

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// <summary>
/// 	Values that represent EStatusMsgSrc.
/// </summary>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef RX_MANAGED_ENUM
	public enum class EStatusMsgSrc
#else
	namespace EStatusMsgSrc
	{
		enum ID
#endif
{
	/// <summary> Undefined. </summary>
	Unknown = 0,
	/// <summary> Message originates from the API. </summary>
	API,
	/// <summary> API Gray image capturing message. </summary>
	API_GrayCapture,
	/// <summary> Message originates from camera. </summary>
	Camera = 0x00001000,
	/// <summary> Message originates from camera. </summary>
	CameraDriver,
	/// <summary> Message originates from an algorithm. </summary>
	Compute,
	/// <summary> Message originates from an application. </summary>
	App,
	/// <summary> Message originates from the metric calibration. </summary>
	MC_CalibrationProgress = 0x00310000,
	/// <summary> Message originates from the metric calibration. </summary>
	MC_CreatingModelProgress,
	/// <summary> Message originates from the metric calibration. </summary>
	MC_Status,
	/// <summary> Message originates from the metric calibration. </summary>
	MC_AcceptedModels,
	/// <summary> A stage of the grid calibration has been entered. </summary>
	GridCalib_Stage = 0x00320000,
	/// <summary> An iteration step of a grid calibration stage has been started. </summary>
	GridCalib_Iteration,
	/// <summary> The root mean square error of an grid calibration iteration has been calculated. </summary>
	GridCalib_RMSE,
	/// <summary> A stage of the master calibration has been entered. </summary>
	MasterCalib_Stage,
	/// <summary> An enum constant representing the MLA calibrator option. </summary>
	MlaCalibrator,
	/// <summary> . </summary>
	PT_ImageProcessing = 0x00330000,
	PT_ParticleGrouping,
	PT_Estimation3D,
	PT_BackgroundImage,
};
#ifndef RX_MANAGED_ENUM
	}
#endif

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// <summary>
/// 	Values that represent EStatusMsgGrp.
/// </summary>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef RX_MANAGED_ENUM
	public enum class EStatusMsgGrp
#else
	namespace EStatusMsgGrp
	{
		enum ID
#endif
{
	/// <summary> Undefined. </summary>
	None = 0,
	/// <summary> Defines the Message group Text. </summary>
	Text = 0x00010000,
	/// <summary> Defines the Message group Progress --> Can be used to set a progress bar correctly. </summary>
	Progress = 0x00020000,
};

#ifndef RX_MANAGED_ENUM
	}
#endif

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// <summary>
/// 	Values that represent EStatusMsg.
/// </summary>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef RX_MANAGED_ENUM
	public enum class EStatusMsg
#else
	namespace EStatusMsg
	{
		enum ID
#endif
{
	/// <summary> Undefined. </summary>
	None = 0,

	/************************************************************************/
	/* Text group                                                           */
	/************************************************************************/

	/// <summary> Debug message. </summary>
	Debug = (int) EStatusMsgGrp::Text,
	/// <summary> A message containing information. </summary>
	Info,
	/// <summary> A message containing brief information. </summary>
	QuickInfo,
	/// <summary> A message containing error information. </summary>
	Error,
	/// <summary> A message containing assertions. </summary>
	Assertion,
	/// <summary> A message containing exception information. </summary>
	Exception,
	/// <summary> A message containing fatal information. </summary>
	Fatal,
	/// <summary> A message containing warnings. </summary>
	Warning,

	/************************************************************************/
	/* Progress group                                                       */
	/************************************************************************/

	/// <summary> The number of steps in the process is passed in the iValue parameter. </summary>
	Progress_Init = (int) EStatusMsgGrp::Progress,
	/// <summary> The new value of the progress is passed in the iValue parameter. </summary>
	Progress_Value,
	/// <summary> Increment the progress by the number passed in iValue. </summary>
	Progress_Step,
	/// <summary> Process is finished. </summary>
	Progress_Finished,
	/// <summary> Progress step delayed. Delay time in seconds given by iValue. </summary>
	Progress_DelayTick,
	/// <summary> Progress step delay stopped. </summary>
	Progress_DelayStop,
};
#ifndef RX_MANAGED_ENUM
	}
#endif

#ifdef RX_MANAGED_ENUM

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// <summary>
/// 	Ray sequence file modes. These enums can be used as a bit mask to combine various modes.
/// </summary>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	public enum class ERaySeqMode
#else
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Ray sequence file modes. These enums can be used as a bit mask to combine various modes.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	namespace ERaySeqMode
	{
		enum ID
#endif
{
	/// Empty ray sequence mode
	None = 0x0000,
	/// A ray sequence opened for reading
	Read = 0x0001,
	/// A ray sequence opened for writing
	Write = 0x0002,
};
#ifndef RX_MANAGED_ENUM
	}
#endif

#ifdef RX_MANAGED_ENUM
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Enumeratives indicating stage of progress report. I.e. 2D image processing, 3D estimation etc.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	public enum class EParticleTrackingProgress
#else
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// 	Enumeratives indicating stage of progress report. I.e. 2D image processing, 3D estimation etc.
	/// </summary>
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	namespace EParticleTrackingProgress
	{
		enum ID
#endif
{
	ImageProcessing = 0,
	DepthMatching = 1,
	Grouping      = 2,
	Estimation3D  = 3,
	BGImage       = 4,
	GRID          = 5
};
#ifndef RX_MANAGED_ENUM
	}
#endif
