/* -----------------------------------------------------------------------------
	GSFramework
	Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */


#ifndef	__INPUT_TOUCH__
#define	__INPUT_TOUCH__


		#include "input/input_device.h"


namespace GS {
	namespace Input {

/*
	@short	Touch input device.
	@author	Emmanuel Julien (ejulien@nworks.fr)
*/
class	TouchDevice : public Device
{
protected:

struct	State
{
		float			x, y;
		bool			button;
};

		int				index;
		State			state, last_state, pending_state;

public:

virtual	Type			GetType() const;
virtual	const char		*GetName() const;

virtual	void			Update();

virtual	bool			IsDown(KeyCode) const;
virtual	bool			WasDown(KeyCode) const;

virtual	bool			GetInputRange(InputCode, float &min, float &max) const;

virtual	float			GetValue(InputCode) const;
virtual	float			GetLastValue(InputCode) const;

		void			SetIndex(int);
		void			RegisterTouchEvent(float x, float y, float weight);

		TouchDevice(int index = -1);
};

	} // Input
} // GS


#endif	// __INPUT_TOUCH__
