

#ifndef VISUALIZATION_MAP_H_
#define VISUALIZATION_MAP_H_

#include <pcl/point_types.h>
#include "pcl/visualization/pcl_visualizer.h"

#include <string>

namespace mrsmap {

class Viewer {
public:
	Viewer();
	virtual ~Viewer();

	void spinOnce();

	virtual void keyboardEventOccurred( const pcl::visualization::KeyboardEvent &event, void* data );

	void displayPointCloud( const std::string& name, const pcl::PointCloud< pcl::PointXYZRGB >::Ptr& cloud, int pointSize = 5 );
	void displayPose( const Eigen::Matrix4d& pose );
	void displayCorrespondences( const std::string& name, const pcl::PointCloud< pcl::PointXYZ >::Ptr& cloud1, const pcl::PointCloud< pcl::PointXYZ >::Ptr& cloud2 );

	int selectedDepth;
	int selectedViewDir;
	bool processFrame;
	bool displayScene;
	bool displayMap;
	bool displayCorr;
	bool displayAll;
	bool recordFrame;
	bool forceRedraw;

	bool is_running;
	bool close;

	boost::shared_ptr< pcl::visualization::PCLVisualizer > viewer;

	int shapeIdx;
	std::vector< int > currShapes;

};

}


#endif /* VISUALIZATION_MAP_H_ */

