
#ifndef PLATFORM_WIN32_MOUSE_H
#define PLATFORM_WIN32_MOUSE_H

#include <Windows.h>
#include <Spectre/System/Event.h>
#include <Spectre/Input/Mouse.h>

namespace sp {

class Win32Mouse : public Mouse
{
public :
	~Win32Mouse() {}

	virtual void init();

	// Get mouse position
	virtual Vector2f getPosition() const;

	virtual Vector2f getAbsPosition() const;

	virtual bool isButtonDown(Mouse::Button button) const;

	static bool handleMessage(MSG msg, Event& event);

protected :

	virtual void update(InputModule *input);

protected :
	// position in relative (focused window) coordinates.
	Vector2f m_position;

	// position in absolute (screen) coordinates.
	Vector2f m_abs_position;
};

} // namespace sp

#endif /* PLATFORM_WIN32_MOUSE_H */
