kernel/eka/euser/us_evnt.cpp
author Mike Kinghan <mikek@symbian.org>
Tue, 16 Nov 2010 14:39:21 +0000
branchGCC_SURGE
changeset 303 9b85206a602c
parent 0 a41df078684a
permissions -rw-r--r--
We need a way to pass flags to rombuilds in Raptor via extension flm interfaces, so that the CPP pass of the rom input files can be informed what toolchain we are building with and conditionally include or exclude files depending on whether the toolchain could build them.

// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of the License "Eclipse Public License v1.0"
// which accompanies this distribution, and is available
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
//
// Initial Contributors:
// Nokia Corporation - initial contribution.
//
// Contributors:
//
// Description:
// e32\euser\us_evnt.cpp
// 
//


#include "us_std.h"



/**
Gets the mouse or digitiser X-Y position.

@return The position.
*/
EXPORT_C TPoint TRawEvent::Pos() const
	{

	__ASSERT_DEBUG(iType==EPointerMove || 
                    iType==EPointerSwitchOn ||
					iType==EButton1Down ||
					iType==EButton1Up ||
					iType==EButton2Down ||
					iType==EButton2Up ||
					iType==EButton3Down ||
					iType==EButton3Up
					,Panic(ETEventNotMoveType));
	return(TPoint(iU.pos.x,iU.pos.y));
	}

/**
Gets the 3D pointing device Cartesian coordinates.

@return The position.
*/
EXPORT_C TPoint3D TRawEvent::Pos3D() const
	{

	__ASSERT_DEBUG(iType==EPointerMove || 
					iType==EPointer3DTiltAndMove ||
                    iType==EPointerSwitchOn ||
					iType==EButton1Down ||
					iType==EButton1Up ||
					iType==EButton2Down ||
					iType==EButton2Up ||
					iType==EButton3Down ||
					iType==EButton3Up
					,Panic(ETEventNotMoveType));
	TPoint3D p;
	p.iX=iU.pos.x;
	p.iY=iU.pos.y;
	p.iZ=iU.pos3D.z;
	return p;
	}

/** Gets the 3D pointing device polar coordinates and rotation.

	@return The polar coordinates and rotation.
 */
EXPORT_C TAngle3D TRawEvent::Tilt() const
	{
	__ASSERT_DEBUG(iType==EPointer3DTilt || 
					iType==EPointer3DTiltAndMove
					,Panic(ETEventNotMoveType));
	TAngle3D p;
	p.iPhi=iU.pos3D.phi;
	p.iTheta=iU.pos3D.theta;
	return p;
	}

/** Gets the rotation angle of 3D pointing device.
    
    @return The rotation angle of the 3D pointing device.
 */
EXPORT_C TInt TRawEvent::Rotation() const
	{
	__ASSERT_DEBUG(iType==EPointer3DRotation || 
					iType==EPointer3DTiltAndMove
					,Panic(ETEventNotMoveType));
	return (iU.pos3D.alpha);
	}

/**
Gets the scancode.

@return The scancode.
*/
EXPORT_C TInt TRawEvent::ScanCode() const
	{

	__ASSERT_DEBUG(iType==EKeyDown || iType==EKeyUp || iType==EKeyRepeat,Panic(ETEventNotKeyType));
	return(iU.key.scanCode);
	}




/**
Gets the repeat count.

@return The repeat count.
*/
EXPORT_C TInt TRawEvent::Repeats() const
	{
	__ASSERT_DEBUG(iType==EKeyRepeat,Panic(ETEventNotKeyRepeatType));
	return(iU.key.repeats);
	}




/**
Gets the modifiers.

@return The modifiers.

@panic EUSER 34 If the event does not represent a modifier key being pressed,
                i.e. if the event type is not TRawEvent::EUpdateModifiers
       
@see TRawEvent::EUpdateModifiers
*/
EXPORT_C TInt TRawEvent::Modifiers() const
	{

	__ASSERT_DEBUG(iType==EUpdateModifiers,Panic(ETEventNotUpdateModifiersType));
	return(iU.modifiers);
	}




/**
Sets the event up as a scancode event.

@param	aType	  The event type.
@param	aScanCode The scancode.
*/
EXPORT_C void TRawEvent::Set(TType aType,TInt aScanCode)
	{

	iType=(TUint8)aType;
	iU.key.scanCode=aScanCode;
	iU.key.repeats=0;
	BTraceContext8(BTrace::ERawEvent, BTrace::ESetEvent ,(TUint32)aType, (TUint32)aScanCode);
	iTicks=User::TickCount();
	}


/**
Sets the event up as a repeating scancode event.

@param	aType	  The event type.
@param	aScanCode The scancode.
@param	aRepeats  The repeat count.
*/
EXPORT_C void TRawEvent::SetRepeat(TType aType,TInt aScanCode,TInt aRepeats)
	{

	iType=(TUint8)aType;
	iU.key.scanCode=aScanCode;
	iU.key.repeats=aRepeats;
	BTraceContext12(BTrace::ERawEvent, BTrace::ESetEvent ,(TUint32)aType, (TUint32)aScanCode, (TUint32)aRepeats);
	iTicks=User::TickCount();
	}


/**
Sets the event up as a mouse/pen event.

@param	aType	The event type.
@param	aX		The X position.
@param	aY		The Y position.
*/
EXPORT_C void TRawEvent::Set(TType aType,TInt aX,TInt aY)
	{

	iType=(TUint8)aType;
	iU.pos.x=aX;
	iU.pos.y=aY;
	BTraceContext12(BTrace::ERawEvent, BTrace::ESetEvent ,(TUint32)aType, (TUint32)aX,(TUint32)aY);
	iTicks=User::TickCount();
	}

	
/**
Sets the event up as a 3D pointer linear move event.

@param	aType	The event type.
@param	aX		The X position.
@param	aY		The Y position.
@param	aZ		The Z position (defaults to 0 on 2D detection devices) .
*/
EXPORT_C void TRawEvent::Set(TType aType,TInt aX,TInt aY,TInt aZ)
	{

	iType=(TUint8)aType;
	iU.pos.x=aX;
	iU.pos.y=aY;
	iU.pos3D.z=aZ;
	//Form the Trace Data
	TUint32 traceData[2];
    traceData[0] =aY;
	traceData[1] =aZ;
    BTraceContextN(BTrace::ERawEvent, BTrace::ESetEvent ,(TUint32)aType, (TUint32)aX,traceData, sizeof(traceData));    
	iTicks=User::TickCount();
	}


/**
Sets up an event without specific parameters.

@param	aType The event type.
*/
EXPORT_C void TRawEvent::Set(TType aType)
	{

	iType=(TUint8)aType;
	BTraceContext4(BTrace::ERawEvent, BTrace::ESetEvent ,(TUint32)aType);
	iTicks=User::TickCount();
	}

/**
Sets the event up as a 3D pointer linear move and tilt and rotation change event.

@param	aType	The event type.
@param	aX		The X position (or TPhi polar coordinate).
@param	aY		The Y position (or Theta polar coordinate).
@param	aZ		The Z position (or rotation).
@param	aPhi	The Phi polar coordinate.
@param	aTheta	The Theta polar coordinate.
@param	aAlpha	The rotation angle.
 */
EXPORT_C void TRawEvent::Set(TType aType,TInt aX,TInt aY,TInt aZ,TInt aPhi,TInt aTheta,TInt aAlpha)
	{
    
	iType=(TUint8)aType;
	iU.pos.x=aX;
	iU.pos.y=aY;
	iU.pos3D.z=aZ;
	iU.pos3D.phi=aPhi;
	iU.pos3D.theta=aTheta;
	iU.pos3D.alpha=aAlpha;	
	//Form the Trace Data
	TUint32 traceData[5];
    traceData[0] =aY;
	traceData[1] =aZ;
	traceData[2] =aPhi;
	traceData[3] =aTheta;
	traceData[4] =aAlpha;
	BTraceContextN(BTrace::ERawEvent, BTrace::ESetEvent ,(TUint32)aType, (TUint32)aX,traceData, sizeof(traceData));	
	iTicks=User::TickCount();
	}

/**
Sets the event up as 3D pointer tilt change event.

@param	aType	The event type.
@param	aPhi	The Phi coordinate.
@param	aTheta	The Theta coordinate.
*/
EXPORT_C void TRawEvent::SetTilt(TType aType,TInt aPhi,TInt aTheta)
	{

	iType=(TUint8)aType;
	iU.pos3D.phi=aPhi;
	iU.pos3D.theta=aTheta;	
	BTraceContext12(BTrace::ERawEvent, BTrace::ESetTiltEvent,(TUint32)aType, (TUint32)aPhi,(TUint32)aTheta);
	iTicks=User::TickCount();
	}

/**
Sets the event up as 3D pointer rotation event.

@param	aType	The event type.
@param	aAlpha	The rotation angle.
*/
EXPORT_C void TRawEvent::SetRotation(TType aType,TInt aAlpha)
	{

	iType=(TUint8)aType;
	iU.pos3D.alpha=aAlpha;
	BTraceContext8(BTrace::ERawEvent, BTrace::ESetRotationtEvent,(TUint32)aType, (TUint32)aAlpha);
	iTicks=User::TickCount();
	}


/**
Sets the event up as a 3D pointer linear move event with pointer number 
@param	aType	The event type.
@param	aX		The X position.
@param	aY		The Y position.
@param	aZ		The Z position .
@param  aPointerNumber   The pointer number for the event 
*/

EXPORT_C void TRawEvent::Set (TType aType, TInt aX, TInt aY, TInt aZ, TUint8 aPointerNumber)
	{

	iType=(TUint8)aType;
	iU.pos3D.x=aX;
	iU.pos3D.y=aY;
	iU.pos3D.z=aZ;
	iPointerNumber=aPointerNumber;		
	//Form the Trace Data
	TUint32 traceData[3];
    traceData[0] =aY;
	traceData[1] =aZ;
	traceData[2] =aPointerNumber;
    BTraceContextN(BTrace::ERawEvent, BTrace::ESetEvent ,(TUint32)aType, (TUint32)aX,traceData, sizeof(traceData));    	
	iTicks=User::TickCount();
	}