/****************************************************************************************


		IMFPerpetualMouse.h

		Copyright: (c) 2001 Eovia Corp. All rights reserved.


		Author:	Arnaud
		Date:	04/01/2002


*****************************************************************************************/

#ifndef __IMFPerpetualMouse__
#define __IMFPerpetualMouse__


#include "MCCompObj.h"

class TMCPoint;

MCDEFINE_GUID(IID_IMFPerpetualMouse, 0x6a413b10, 0xab80, 0x4482, 0xaa, 0x24, 0x41, 0xe6, 0xbb, 0x45, 0x6f, 0x1);

/// \addtogroup MCF
/// \{

///<P>This class is intended to help doing perpetual mouse without setting the position too much
///(because setting the mouse position is very costly on OsX)</P>
///
struct IMFPerpetualMouse : public IMCUnknown
{
	//Starts the perpetual mouse at the given screen coordinates
	//It hides the mouse cursor if hideMouse is true.
	//It sets the mouse position to the middle of the screen
	virtual void	MCCOMAPI StartPerpetualMouse		(const TMCPoint& 	originalScreenMousePos,
														 boolean			hideMouse= true) 			= 0;


	//Returns the absolute mouse position as if it were not constrained by the screen bounds
	virtual void	MCCOMAPI GetAbsoluteMousePosition	(TMCPoint& 			outScreenPoint)				= 0;
	
	
	//Sets the mouse cusor back to the originalScreenMousePos given to StartPerpetualMouse
	//Shows the cursor if it hid it.
	virtual void	MCCOMAPI EndPerpetualMouse			()												= 0;

};
/// \}

#endif