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

	Program:		Range Imaging Toolkit (RITK)
	Module:			ritkOpenGLPointPickerLinearControlUnit.h
	Version:		$Revision: 2774 $
	Date:			$Date: 2012-03-13 10:52:35 +0100 (Di, 13 Mrz 2012) $

	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 OPENGLPOINTPICKERLINEARCONTROLUNIT_H__
#define OPENGLPOINTPICKERLINEARCONTROLUNIT_H__

#include "ritkVisualization.h"

#include <QMutex>
#include <QVector3D>

#include "ui_ritkOpenGLPointPickerLinearControlUnit.h"
//#include "ritkOpenGLPointPickerLinearEntity.h"

namespace ritk
{

/**	@ingroup	Visualization
 *	@class		OpenGLPointPickerLinearControlUnit
 *	@author		Sven Haase
 *	@brief		A controler for an PointPickerEntity
 *
 *	@details
 */
class VISUALIZATION_EXPORT OpenGLPointPickerLinearControlUnit : public QDockWidget, public Ui_OpenGLPointPickerLinearControlUnit
{
	Q_OBJECT

public:
	/// Constructor
	OpenGLPointPickerLinearControlUnit( QWidget * parent = 0, Qt::WindowFlags flags = 0 );
	/// Destructor
	~OpenGLPointPickerLinearControlUnit();
signals:
	void SizeChanged(float value);
public slots:
	void UpdateDistance(float d);
	void UpdatePoint1(const QVector3D p);
	void UpdatePoint2(const QVector3D p);
	void SizeSliderChanged(int value);
protected:
	/// Mutex used to synchronize rendering and data update
	QMutex m_Mutex;
};




} // end namespace ritk

#endif // OPENGLPOINTPICKERLINEARCONTROLUNIT_H__