#ifndef VisualizationWIDGET_H__
#define VisualizationWIDGET_H__

#include "ui_VisualizationWidget.h"

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

class VisualizationWidget : public QWidget, public Ui_VisualizationWidget
{
	Q_OBJECT

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


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

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

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

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

	/// Our PointPicker entiry
	ritk::OpenGLPointPickerEntity::Pointer m_PointPickerEntity;
};

#endif // VisualizationWIDGET_H__
