#pragma once

//! @file Mix/HID/IMouse.h
//! @brief マスインターフェースインクルードファイル

#include "Mix/Reference.h"

namespace Mix{ namespace HID{

	//! @class IMouse
	//! @brief マウスインターフェース
	class IMouse : public Mix::Reference
	{
	protected:
		//! @brief デストラクタ
		virtual ~IMouse( void ){}

	public:
		//! @brief ボタンの状態を取得します
		//! @param[in] button ボタンのインデックス
		//! @return ボタンの状態を表す Mix::HID::SWITCH_STATE 列挙定数の組み合わせを返します
		virtual UInt32 GetButtonState( UInt32 button ) = 0;

		//! @brief ホイールの状態を取得します
		//! @return 手前に回した場合は負の値、奥に回した場合は正の値、を返します( -120 〜 120 )
		virtual Int32 GetWheelDelta( void ) = 0;

		//! @brief 座標を設定します
		//! @param[in] x X座標
		//! @param[in] y Y座標
		virtual void SetPos( Int32 x, Int32 y ) = 0;
		//! @brief 座標を設定します
		//! @param[in] pos 設定する座標を表す Mix::Point クラス
		virtual void SetPos( const Mix::Point& pos ) = 0;
		//! @brief 座標を取得します
		//! @return 座標を表す Mix::Point クラスを返します
		virtual const Mix::Point& GetPos( void ) const = 0;

		//! @brief 移動速度を取得します
		//! @return 移動速度を表す Mix::Point クラスを返します
		virtual const Mix::Point& GetVelocity( void ) const = 0;
		//! @brief スクリーン上の座標を取得します
		//! @return スクリーン上の座標を表す Mix::Point クラスを返します
		virtual const Mix::Point& GetScreenPos( void ) const = 0;
	};

}}

