
#ifndef SPECTRE_INPUT_MOUSE_H
#define SPECTRE_INPUT_MOUSE_H

#include <string>
#include <Spectre/Math/Vector2.h>
#include <Spectre/Input/InputDevice.h>

namespace sp {

class Mouse : public InputDevice
{
public :
 	enum Button {
		Unknown,
		Left,
		Right,
		Middle,
		XButton1,
		XButton2,
		NUM_MBUTTONS
	};

public :
	virtual ~Mouse();

	// Get the position in relative (focused window) coordinates.
	// coordinates are relative to the window's top-left corner.
	virtual Vector2f getPosition() const = 0;

	// Get the position in absolute (screen) coordinates.
	// 0,0 is located at the screen's top-left corner.
	virtual Vector2f getAbsPosition() const = 0;

	virtual bool isButtonDown(Button button) const = 0;

	static std::string getButtonName(Button button);
};

}; // namespace sp

#endif /* SPECTRE_INPUT_MOUSE_H */
