kernel/eka/euser/us_evnt.cpp
author Tom Cosgrove <tom.cosgrove@nokia.com>
Fri, 28 May 2010 16:26:05 +0100
branchRCL_3
changeset 136 743008598095
parent 0 a41df078684a
permissions -rw-r--r--
Fix for bug 2283 (RVCT 4.0 support is missing from PDK 3.0.h) Have multiple extension sections in the bld.inf, one for each version of the compiler. The RVCT version building the tools will build the runtime libraries for its version, but make sure we extract all the other versions from zip archives. Also add the archive for RVCT4.

// 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();
	}