kernel/eka/euser/us_evnt.cpp
changeset 0 a41df078684a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kernel/eka/euser/us_evnt.cpp	Mon Oct 19 15:55:17 2009 +0100
@@ -0,0 +1,324 @@
+// 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();
+	}
+