/*======================================================================================

	Program:		Range Imaging Toolkit (RITK)
	Module:			ritkImagePayloadVisualizationConfig.h
	Version:		$Revision: 1761 $
	Date:			$Date: 2011-09-23 17:25:41 +0200 (Fri, 23 Sep 2011) $

	Copyright (c) 2010-2011
	Pattern Recognition Lab, 
    University Erlangen-Nuremberg, Germany
    All rights reserved.

	This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
	See RITKCopyright.txt for more information.

	http://www5.informatik.uni-erlangen.de/research/software/ritk

========================================================================================*/

#ifndef IMAGEPAYLOADVISUALIZATIONCONFIG_H__
#define IMAGEPAYLOADVISUALIZATIONCONFIG_H__

#include <iostream>

namespace ritk
{

/**	@brief	Struct that is a descriptor for image data payload
 *
 *	@details
 *	This struct is a container wrapping information for image data payload. \n
 *	Possible values for the image type: \n
 *		-	0:	UCHAR	\n
 *		-	1:	UCHAR3	\n
 *		-	2:	FLOAT	\n
 *		-	3:	FLOAT3	\n
 *	Based on the image type, the GUI can be adjusted (e.g. clamping for FLOAT)
 */
struct ImagePayloadVisualizationConfig
{
	/// Constructor that will set the config to an invalid state
	ImagePayloadVisualizationConfig();
	/// Std destructor
	~ImagePayloadVisualizationConfig();

	/// Flag that indicates a valid config
	bool ValidFlag;
	/// String identifier for the payload (e.g. RangeData)
	std::string PayloadIdentifier;
	/// The payload idx as obtained from the RImage
	unsigned int PayloadId;
	/// Convenience image type
	unsigned int ImageType;
	/**	@name	Use clamping on this image payload */
	//@{
	bool UseClamping;
	float ClampBounds[2];
	//@}
	/**	 @name	LUT for this image payload */
	//@{
	bool UseLUT;
	unsigned int LUTID;
	//@}
};

} // namespace ritk


std::ostream& operator<<(std::ostream& out, ritk::ImagePayloadVisualizationConfig &Config);


#endif // IMAGEPAYLOADVISUALIZATIONCONFIG_H__