#ifndef	CUDATEMPORALAVERAGINGIMAGEFILTERPLUGIN_H__
#define CUDATEMPORALAVERAGINGIMAGEFILTERPLUGIN_H__

#include "ritkRGBRImage.h"
#include "ritkFilterPlugin.h"

#include "CUDATemporalAveragingFilterWidget.h"
#include "CUDATemporalAveragingRImageFilter.h"

/**	@class	CUDATemporalAveragingImageFilterPlugin
 *	@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 CUDATemporalAveragingImageFilterPlugin : public ritk::FilterPlugin
{
	Q_OBJECT

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

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

public slots:
	/**	@name Set the number of frames */
	//@{
	void SetNumRangeDataFrames(unsigned int NumFrames);
	void SetNumRGBDataFrames(unsigned int NumFrames);
	//@}

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 CUDATemporalAveragingRImageFilter<ritk::RImageF2, ritk::RGBRImageUCF2> CUDATemporalAveragingFilterType;
	typedef CUDATemporalAveragingFilterType::Pointer CUDATemporalAveragingFilterPointer;
	/// The filter
	CUDATemporalAveragingFilterPointer m_Filter;
	//@}

	/// The widget
	CUDATemporalAveragingFilterWidget *m_Widget;
};




#endif // CUDATEMPORALAVERAGINGIMAGEFILTERPLUGIN_H__
