#ifndef QuadVisualizationPLUGIN_H__
#define	QuadVisualizationPLUGIN_H__

#include "ritkApplicationPlugin.h"
#include "QuadVisualizationPlugin.h"
#include "QuadVisualizationWidget.h"
#include "ritkImagePayloadVisualizationConfig.h"

class QuadVisualizationPlugin : public ritk::ApplicationPlugin
{
	Q_OBJECT

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

	/// Get the name @sa Plugin::GetName
	QString GetName();

	/// Get the plugins GUI @sa Plugin::GetPluginGUI
	QWidget *GetPluginGUI();

	/// Intercept the event.
	void ProcessEvent(ritk::Event::Pointer EventP);

signals:
	void UpdateGUI();

protected:
	QuadVisualizationWidget *m_Widget;

protected:
	/**	@brief	Interface to set a parameter with a RITKPluginConfig
	 *
	 *	@details
	 *	The parameters are the following:
	 *	1. Rendermode: 2D or 3D
	 *	2. PayloadIdx: 0 - Rangedata ...
	 *	3. ClampingMin (if 3. and 4. are equal -e.g. 0- nothing happens)
	 *	4. ClampingMax
	 *	5. Interpolate texture
	 *	6. Show only valid flags
	 */
	void SetParameter(QString Name, QString Value);
};


#endif // QuadVisualizationPLUGIN_H__
