#ifndef QuadVisualizationWIDGET_H__
#define QuadVisualizationWIDGET_H__

#include <QWidget>
#include "ui_QuadVisualizationWidget.h"

#include "ritkRImage.h"
#include "ritkOpenGLRImageEntity.h"

class QuadVisualizationWidget : public QWidget, public Ui_QuadVisualizationWidget
{
	Q_OBJECT

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


		/** @name Typedefs for the range image and components*/
	//@{
	typedef ritk::RImageF2 RImageType;
	typedef RImageType::Pointer RImagePointer;
	typedef RImageType::ConstPointer RImageConstPointer;
	//@}

	/// Our RImage entiry
	ritk::OpenGLRImageEntity::Pointer m_RImageEntity0;

	/// Our RImage entiry
	ritk::OpenGLRImageEntity::Pointer m_RImageEntity1;

	/// Our RImage entiry
	ritk::OpenGLRImageEntity::Pointer m_RImageEntity2;

	/// Our RImage entiry
	ritk::OpenGLRImageEntity::Pointer m_RImageEntity3;


public slots:
	void UpdateGUI();
	void SetRangeData(ritk::RImageF2::ConstPointer Data);

protected:
	/// Mutex used to synchronize rendering and data update
	QMutex m_Mutex;
};

#endif // QuadVisualizationWIDGET_H__
