/// @file IMouseListener.h
/// This source file is part of Gpu Quadratic Curve Render test.
/// The file holds the IMouseListener class interface.
/// @author Ruben Penalva (ruben.penalva@rpenalva.com)
#ifndef _I_MOUSE_LISTENER_H_
#define _I_MOUSE_LISTENER_H_

#include "MouseState.h"

namespace GlutWrapper
{

/// @brief Mouse listener interface. It processes the 
/// events of the mouse.
class IMouseListener
{
public:
	/// @brief Processes mouse events
	/// @param mouseState current mouse state
	virtual void ProcessMouse(const MouseState& mouseState) = 0;

protected:
	/// Contructor hidden from user
	IMouseListener(void){};

	/// Destructor hidden from user
	virtual ~IMouseListener(void) = 0 {};

private:
	/// @note hide copy constructor from interface user
	IMouseListener(const IMouseListener&);

	/// @note hide assignment operator from interface user
	IMouseListener& operator=(const IMouseListener&);
};

}

#endif