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

	Program:		RITK Plugins
	Module:			CUDANormalizedConvolutionRImageFilterPlugin.h
	Version:		$Revision: 898 $
	Date:			$Date: 2011-04-29 18:51:40 +0200 (Fri, 29 Apr 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	CUDANORMALIZEDCONVOLUTIONRIMAGEFILTERPLUGIN_H__
#define CUDANORMALIZEDCONVOLUTIONRIMAGEFILTERPLUGIN_H__

#include "ritkFilterPlugin.h"

#include "CUDANormalizedConvolutionRImageFilterWidget.h"
#include "CUDANormalizedConvolutionRImageFilter.h"

/**	@class	CUDANormalizedConvolutionRImageFilterPlugin
 *	@author	RITKPluginCreator
 *	@brief	<brief description of your plugin>
 *
 *	@details
 *	This class is automatically generated by the RITKPluginCreator. Provide a detailed
 *	description of your plugin here. Comment on the workflow and try to provide use cases
 *	whenever it is possible.
 */
class CUDANormalizedConvolutionRImageFilterPlugin : public ritk::FilterPlugin
{
	Q_OBJECT

public:
	/// Constructor
	CUDANormalizedConvolutionRImageFilterPlugin();
	/// Destructor
	~CUDANormalizedConvolutionRImageFilterPlugin();

	/// Return the GUI for this plugin @sa PluginBase::GetPluginGUI()
	QWidget *GetPluginGUI();

public slots:
	/// Set the sigma value for the range data
	void SetSigma(float Sigma);
	/// Set the kernel size of the range gaussian
	void SetKernelSize(int size);


protected:
	/// Provide the actual filter.
	FilterPointer GetFilter();

	/// Interface to set a parameter with a RITKPluginConfig
	void SetParameter(QString Name, QString Value);

protected:
	/**	@name	The actual filter */
	//@{
	typedef CUDANormalizedConvolutionRImageFilter<ritk::RImageF2> FilterType;
	typedef FilterType::Pointer FilterPointer;
	/// The filter
	FilterPointer m_Filter;
	//@}

	/// The widget
	CUDANormalizedConvolutionRImageFilterWidget *m_Widget;
};



#endif // CUDANORMALIZEDCONVOLUTIONRIMAGEFILTERPLUGIN_H__
