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

	Program:		Range Imaging Toolkit (RITK)
	Module:			ritkOpenGLCameraControlUnit.h
	Version:		$Revision: 1754 $
	Date:			$Date: 2011-09-23 16:41:40 +0200 (Fr, 23 Sep 2011) $

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


#include <QMutex>

#include "ui_ritkOpenGLCameraControlUnit.h"
#include "ritkVisualization.h"

namespace ritk
{

/**	@ingroup	Visualization
 *	@class		OpenGLCameraControlUnit
 *	@author		Sven Haase
 *	@brief		A controler for a camera
 *
 *	@details
 */
class VISUALIZATION_EXPORT OpenGLCameraControlUnit : public QDockWidget, public Ui_OpenGLCameraControlUnit
{
	Q_OBJECT

public:
	/// Constructor
	OpenGLCameraControlUnit( QWidget * parent = 0, Qt::WindowFlags flags = 0 );
	/// Destructor
	~OpenGLCameraControlUnit();

signals:
//	/**	@name internal communication */
//	//@{
//	void SetEyePosX(int value);
//	void SetEyePosY(int value);
//	void SetEyePosZ(int value);
//	void SetViewCenterX(int value);
//	void SetViewCenterY(int value);
//	void SetViewCenterZ(int value);
//	//@}
	void UpdateWidget();

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

#endif // OPENGLCAMERACONTROLUNIT_H__
