kernel/eka/euser/us_graph.cpp
changeset 0 a41df078684a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kernel/eka/euser/us_graph.cpp	Mon Oct 19 15:55:17 2009 +0100
@@ -0,0 +1,1392 @@
+// Copyright (c) 1994-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_graph.cpp
+// 
+//
+
+#include "us_std.h"
+
+
+
+
+EXPORT_C TBool TPoint::operator==(const TPoint& aPoint) const
+/**
+Compares two points for equality.
+
+For two points to be equal, both their x and y co-ordinate values must be 
+equal.
+
+@param aPoint The point to be compared with this point.
+
+@return True, if the two points are equal; false, otherwise.
+*/
+	{
+
+	return(iX==aPoint.iX && iY==aPoint.iY);
+	}
+
+
+
+
+EXPORT_C TBool TPoint::operator!=(const TPoint& aPoint) const
+/**
+Compares two points for inequality.
+
+For two points to be unequal, either their x or their y co-ordinate values 
+must be different.
+
+@param aPoint The point to be compared with this point.
+
+@return True, if the two points are unequal; false, otherwise.
+*/
+	{
+
+	return(iX!=aPoint.iX || iY!=aPoint.iY);
+	}
+
+
+
+
+EXPORT_C TPoint& TPoint::operator-=(const TPoint& aPoint)
+/**
+TPoint subtraction assignment operator.
+
+The operator subtracts the specified point from this point, and assigns the 
+result back to this point.
+
+@param aPoint The point to be subtracted.
+
+@return A reference to this point object.
+*/
+	{
+
+	iX-=aPoint.iX;
+	iY-=aPoint.iY;
+	return(*this);
+	}
+
+
+
+
+EXPORT_C TPoint& TPoint::operator-=(const TSize& aSize)
+/**
+TSize subtraction assignment operator.
+
+The operator subtracts the specified TSize from this point, and assigns the 
+result back to this point.
+
+The operation proceeds by:
+
+1. subtracting the width value of the TSize from the x co-ordinate value
+
+2. subtracting the height value of the TSize from the y co-ordinate value
+
+@param aSize The TSize to be subtracted.
+
+@return A reference to this point object.
+*/
+	{
+
+	iX-=aSize.iWidth;
+	iY-=aSize.iHeight;
+	return(*this);
+	}
+
+
+
+
+EXPORT_C TPoint& TPoint::operator+=(const TPoint& aPoint)
+/**
+TPoint addition assignment operator. 
+
+The operator adds the specified point to this point, and assigns the result 
+back to this point.
+
+@param aPoint The point to be added.
+
+@return A reference to this point object.
+*/
+	{
+
+	iX+=aPoint.iX;
+	iY+=aPoint.iY;
+	return(*this);
+	}
+
+
+
+
+EXPORT_C TPoint& TPoint::operator+=(const TSize& aSize)
+/**
+TSize addition assignment operator. 
+
+The operator adds the specified TSize to this point, and assigns the result 
+back to this point.
+
+The operation proceeds by:
+
+1. adding the width value of the TSize to the x co-ordinate value
+
+2. adding the height value of the TSize to the y co-ordinate value
+
+@param aSize The TSize to be added to this point. 
+
+@return A reference to this point object.
+*/
+	{
+
+	iX+=aSize.iWidth;
+	iY+=aSize.iHeight;
+	return(*this);
+	}
+
+
+
+
+EXPORT_C TPoint TPoint::operator-(const TPoint& aPoint) const
+/**
+TPoint subtraction operator.
+
+The operator subtracts the specified point from this point, and returns the 
+resulting value.
+
+@param aPoint The point to be subtracted from this point. 
+
+@return The result of the operation.
+*/
+	{
+
+	TPoint ret=* this;
+	ret-= aPoint;
+	return(ret);
+	}
+
+
+
+
+EXPORT_C TPoint TPoint::operator-(const TSize& aSize) const
+/**
+TSize subtraction operator. 
+
+The operator subtracts the specified TSize from this point, and returns the 
+resulting value.
+
+The operation proceeds by:
+
+1. subtracting the width value of the TSize from the x co-ordinate value
+
+2. subtracting the height value of the TSize from the y co-ordinate value.
+
+@param aSize The TSize to be subtracted.
+
+@return The result of the operation.
+*/
+	{
+
+	TPoint ret=* this;
+	ret-= aSize;
+	return(ret);
+	}
+
+
+
+
+EXPORT_C TPoint TPoint::operator+(const TPoint& aPoint) const
+/**
+The operator adds the specified point to this point, and returns the resulting 
+value.
+
+@param aPoint The point to be added to this point.
+
+@return The result of the operation.
+*/
+	{
+
+	TPoint ret=* this;
+	ret+= aPoint;
+	return(ret);
+	}
+
+
+
+
+EXPORT_C TPoint TPoint::operator+(const TSize& aSize) const
+/**
+TSize addition operator. 
+
+The operator adds the specified TSize to this point, and returns the resulting 
+value.
+
+The operation proceeds by:
+
+1. adding the width value of the TSize to the x co-ordinate value
+
+2. adding the height value of the TSize to the y co-ordinate value.
+
+@param aSize The TSize to be added to this TPoint. 
+
+@return The result of the operation.
+*/
+	{
+
+	TPoint ret=* this;
+	ret+= aSize;
+	return(ret);
+	}
+
+
+
+
+EXPORT_C TPoint TPoint::operator-() const
+/**
+Unary minus operator.
+
+The operator returns the negation of this point.
+
+@return The result of the operation.
+*/
+	{
+
+	return TPoint(-iX,-iY);
+	}
+
+
+
+
+EXPORT_C void TPoint::SetXY(TInt aX,TInt aY)
+/**
+Sets the x and y co-ordinates for this point.
+
+@param aX The value to assign to the x co-ordinate. 
+@param aY The value to assign to the y co-ordinate.
+*/
+	{
+
+	iX=aX;
+	iY=aY;
+	}
+
+
+
+
+EXPORT_C TSize TPoint::AsSize() const
+/**
+Gets the size of the rectangle whose top left hand corner is the origin of 
+the screen co-ordinates and whose bottom right hand corner is this point.
+
+@return The co-ordinates of this point converted to a size.
+*/
+	{
+	return(TSize(iX,iY));
+	}
+
+
+
+
+
+EXPORT_C TBool TPoint3D::operator==(const TPoint3D& aPoint3D) const
+/**
+Compares two 3D points(TPoint3D) for equality.
+
+For two TPoint3D to be equal, their x , y and zco-ordinate values must be 
+equal.
+
+@param aPoint3D The point to be compared with this point.
+
+@return True, if the two points are equal; false, otherwise.
+*/
+	{
+	return(iX==aPoint3D.iX && iY==aPoint3D.iY && iZ==aPoint3D.iZ);
+	}
+
+
+
+
+EXPORT_C TBool TPoint3D::operator!=(const TPoint3D& aPoint3D) const
+/**
+Compares two 3D points for inequality.
+
+For two points to be unequal, their x  or y or z co-ordinate values 
+must be different.
+
+@param aPoint3D The point to be compared with this point.
+
+@return True, if the two points are unequal; false, otherwise.
+*/
+	{
+	return(iX!=aPoint3D.iX || iY!=aPoint3D.iY || iZ!=aPoint3D.iZ);
+	}
+
+
+
+
+
+
+EXPORT_C TPoint3D& TPoint3D::operator-=(const TPoint3D& aPoint3D)
+/**
+TPoint3D subtraction assignment operator.
+
+The operator subtracts the specified point from this point, and assigns the 
+result back to this point.
+
+@param aPoint The point to be subtracted.
+
+@return A reference to this point object.
+*/
+	{
+	iX-=aPoint3D.iX;
+	iY-=aPoint3D.iY;
+	iZ-=aPoint3D.iZ;
+	return(*this);
+	}
+
+
+
+EXPORT_C TPoint3D& TPoint3D::operator-=(const TPoint& aPoint)
+
+/**
+TPoint subtraction assignment operator.
+
+The operator subtracts the specified TPoint from this point(TPoint3D), and assigns the 
+result back to this point.
+
+The operation proceeds by
+subtracting x and y cordinates of the TPoin to this point and no changes  to the Z-coordinatete value
+
+@param aPoint The aPoint to be subtracted.
+
+@return A reference to this point object.
+*/
+	{
+	iX-=aPoint.iX;
+	iY-=aPoint.iY;
+	//No Changes to the z co-ordinate
+	return(*this);
+	}
+
+
+
+EXPORT_C TPoint3D& TPoint3D::operator+=(const TPoint3D& aPoint3D)
+/**
+TPoint3D addition assignment operator. 
+
+The operator adds the specified point to this point, and assigns the result 
+back to this point.
+
+@param aPoint3D The point to be added.
+
+@return A reference to this point object.
+*/
+	{
+	iX+=aPoint3D.iX;
+	iY+=aPoint3D.iY;
+	iZ+=aPoint3D.iZ;
+	return(*this);
+	}
+
+EXPORT_C TPoint3D& TPoint3D::operator+=(const TPoint& aPoint)
+/**
+TPoint addition assignment operator. 
+
+The operator adds the specified TPoint to this point, and assigns the result 
+back to this point.
+
+The operation proceeds by:
+adding  x and y cordinates of the TPoin to this point and no changes  to the Z-coordinatete value
+
+@param aPoint The TPoint to be added to this point. 
+
+@return A reference to this point object.
+*/
+	{
+
+	iX+=aPoint.iX;
+	iY+=aPoint.iY;
+	//No Changes to the z co-ordinate
+	return(*this);
+	}
+EXPORT_C TPoint3D TPoint3D::operator-(const TPoint3D& aPoint3D) const
+/**
+TPoint3D subtraction operator.
+
+The operator subtracts the specified point from this point, and returns the 
+resulting value.
+
+@param aPoint3D The point to be subtracted from this point. 
+
+@return the point(TPoint3D) which is the  result of the operation.
+*/
+	{
+
+	TPoint3D ret=* this;
+	ret-= aPoint3D;
+	return(ret);
+	}
+
+
+
+EXPORT_C TPoint3D TPoint3D::operator-(const TPoint& aPoint) const
+/**
+TPoint subtraction operator. 
+
+The operator subtracts the specified TPoint from this point, and returns the 
+resulting value.
+
+@param aPoint The TPoint to be subtracted.
+
+@return the point(TPoint3D) which is the  result of the operation.
+*/
+	{
+
+	TPoint3D ret=* this;
+	ret-= aPoint;
+	return(ret);
+	}
+
+
+EXPORT_C TPoint3D TPoint3D::operator+(const TPoint3D& aPoint3D) const
+/**
+The operator adds the specified point to this point, and returns the resulting 
+value.
+
+@param aPoint3D The point to be added to this point.
+
+@return the point(TPoint3D) which is the  result of the operation.
+*/
+	{
+
+	TPoint3D ret=* this;
+	ret+= aPoint3D;
+	return(ret);
+	}
+
+EXPORT_C TPoint3D TPoint3D::operator+(const TPoint& aPoint) const
+/**
+TPoint addition operator. 
+
+The operator adds the specified TPoint to this point, and returns the resulting 
+value.
+
+@param aSize The TSize to be added to this TPoint. 
+
+@return the point(TPoint3D) which is the  result of the operation.
+*/
+	{
+
+	TPoint3D ret=* this;
+	ret+= aPoint;
+	return(ret);
+	}
+
+
+EXPORT_C TPoint3D TPoint3D::operator-() const
+/**
+Unary minus operator.
+
+The operator returns the negation of this point.
+
+@return the point(TPoint3D) which is the  result of Unary minus operation.
+*/
+	{
+	return TPoint3D(-iX,-iY,-iZ);
+	}
+
+
+
+EXPORT_C void TPoint3D::SetXYZ(TInt aX,TInt aY,TInt aZ)
+/**
+Sets the x , y and z co-ordinates for this point.
+
+@param aX The value to assign to the x co-ordinate. 
+@param aY The value to assign to the y co-ordinate.
+@param aZ The value to assign to the z co-ordinate.
+*/
+	{
+	iX=aX;
+	iY=aY;
+	iZ=aZ;
+	}
+
+EXPORT_C void TPoint3D::SetPoint(const TPoint& aPoint)
+/*
+TPoint3D from TPoint, sets the Z co-ordinate to  Zero
+@param aPoint The TPoint to add to this point 
+*/
+	{
+	iX=aPoint.iX;
+	iY=aPoint.iY;
+	iZ=0;
+	}
+	
+
+EXPORT_C TPoint TPoint3D::AsPoint() const
+/**
+Gets Tpoint from Tpoint3D
+@return TPoint from X and Y cordinates of Tpoint3D
+*/
+	{
+	return(TPoint(iX,iY));
+	}
+
+
+
+
+
+
+EXPORT_C TBool TSize::operator==(const TSize& aSize) const
+/**
+Compares this TSize with the specified TSize for equality. 
+
+For two TSizes to be equal, both their width and height values must be equal.
+
+@param aSize The TSize to be compared with this TSize.
+
+@return True, if the two TSize are equal; false, otherwise.
+*/
+	{
+	return(iWidth==aSize.iWidth && iHeight==aSize.iHeight);
+	}
+
+
+
+
+EXPORT_C TBool TSize::operator!=(const TSize& aSize) const
+/**
+Compares two TSize for inequality.
+
+For two TSize to be unequal, either their width or height values must be different.
+
+@param aSize The TSize to be compared with this TSize. 
+
+@return True, if the two TSize are unequal; false, otherwise.
+*/
+	{
+	return(iWidth!=aSize.iWidth || iHeight!=aSize.iHeight);
+	}
+
+
+
+
+EXPORT_C TSize& TSize::operator-=(const TSize& aSize)
+/**
+TSize subtraction assignment operator.
+
+The operator subtracts the specified TSize from this TSize, and assigns the 
+result back to this TSize.
+
+@param aSize The TSize to be subtracted. 
+
+@return A reference to this TSize object.
+*/
+	{
+	iWidth-=aSize.iWidth;iHeight-=aSize.iHeight;return(*this);
+	}
+
+
+
+
+EXPORT_C TSize& TSize::operator-=(const TPoint& aPoint)
+/**
+TPoint subtraction assignment operator.
+
+The operator subtracts the specified point from this TSize, and assigns the 
+result back to this TSize.
+
+The operation proceeds by:
+
+1. subtracting the point's x co-ordinate value from the width
+
+2. subtracting the point's y co-ordinate value from the height.
+
+@param aPoint The point to be subtracted.
+
+@return A reference to this size object.
+*/
+	{
+	iWidth-=aPoint.iX;iHeight-=aPoint.iY;return(*this);
+	}
+
+
+
+
+EXPORT_C TSize& TSize::operator+=(const TSize& aSize)
+/**
+TSize addition assignment operator.
+
+The operator adds the specified TSize to this TSize, and assigns the result 
+back to this TSize.
+
+@param aSize The TSize to be added.
+
+@return A reference to this size object.
+*/
+	{
+	iWidth+=aSize.iWidth;iHeight+=aSize.iHeight;return(*this);
+	}
+
+
+
+
+EXPORT_C TSize& TSize::operator+=(const TPoint& aPoint)
+/**
+TPoint addition assignment operator.
+
+The operator adds the specified point to this TSize, and assigns the result 
+back to this TSize.
+
+The operation proceeds by:
+
+1. adding the point's x co-ordinate value to the width
+
+2. adding the point's y co-ordinate value to the height.
+
+@param aPoint The point to be added.
+
+@return A reference to this size object.
+*/
+	{
+	iWidth+=aPoint.iX;iHeight+=aPoint.iY;return(*this);
+	}
+
+
+
+
+EXPORT_C TSize TSize::operator-(const TSize& aSize) const
+/**
+TSize subtraction operator.
+
+This operator subtracts the specified TSize from this TSize, and returns the 
+resulting value.
+
+@param aSize The TSize to be subtracted from this Tsize.
+
+@return The result of the operation.
+*/
+	{
+	TSize ret=* this; ret-= aSize ;return(ret);
+	}
+
+
+
+
+EXPORT_C TSize TSize::operator-(const TPoint& aPoint) const
+/**
+TPoint subtraction operator.
+
+This operator subtracts the specified point from this TSize, and returns the 
+resulting value.
+
+The operation proceeds by:
+
+1. subtracting the x co-ordinate value from the width
+
+2. subtracting the y co-ordinate value from the height
+
+@param aPoint The point to be subtracted.
+
+@return The result of the operation.
+*/
+	{
+	TSize ret=* this; ret-= aPoint ;return(ret);
+	}
+
+
+
+
+EXPORT_C TSize TSize::operator+(const TSize& aSize) const
+/**
+TSize addition operator.
+
+This operator adds the specified TSize to this TSize, and returns the resulting 
+value.
+
+@param aSize The TSize to be added to this Tsize. 
+
+@return The result of the operation.
+*/
+	{
+	TSize ret=* this; ret+= aSize ;return(ret);
+	}
+
+
+
+
+EXPORT_C TSize TSize::operator+(const TPoint& aPoint) const
+/**
+TPoint addition operator.
+
+This operator adds the specified point to this TSize, and returns the resulting 
+value.
+
+The operation proceeds by:
+
+1. adding the x co-ordinate value to the width
+
+2. adding the y co-ordinate value to the height
+
+@param aPoint The point to be added to this TSize. 
+
+@return The result of the operation.
+*/
+	{
+	TSize ret=* this; ret+= aPoint ;return(ret);
+	}
+
+
+
+
+EXPORT_C TSize TSize::operator-() const
+/**
+Unary minus operator.
+
+The operator returns the negation of this TSize.
+
+@return The result of the operation.
+*/
+	{
+
+	return TSize(-iWidth,-iHeight);
+	}
+
+
+
+
+EXPORT_C void TSize::SetSize(TInt aWidth,TInt aHeight)
+/**
+Sets the width and height.
+
+@param aWidth The width value. 
+@param aHeight The height value.
+*/
+	{
+	iWidth=aWidth;iHeight=aHeight;
+	}
+
+
+
+
+EXPORT_C TPoint TSize::AsPoint() const
+/**
+Gets a TPoint object whose co-ordinates are the width and height of this TSize.
+
+@return The co-ordinates of this TSize converted to a point.
+*/
+	{
+	return(TPoint(iWidth,iHeight));
+	}
+
+
+
+
+EXPORT_C TRect::TRect()	: iTl(0,0),iBr(0,0)
+/**
+Constructs a default rectangle.
+
+This initialises the co-ordinates of its top 
+left and bottom right corners to (0,0).
+*/
+	{}
+	
+	
+	
+	
+EXPORT_C TRect::TRect(TInt aAx,TInt aAy,TInt aBx,TInt aBy) : iTl(aAx,aAy),iBr(aBx,aBy)
+/**
+Constructs the rectangle, initialising its top left and bottom right hand corners 
+with four TInt values.
+
+@param aAx The horizontal co-ordinate of the left hand side of the rectangle. 
+@param aAy The vertical co-ordinate of the top of the rectangle. 
+@param aBx The horizontal co-ordinate of the right hand side of the rectangle. 
+@param aBy The vertical co-ordinate of the bottom of the rectangle.
+*/
+	{}
+	
+	
+	
+	
+EXPORT_C TRect::TRect(const TPoint& aPointA,const TPoint& aPointB) : iTl(aPointA),iBr(aPointB)
+/**
+Constructs the rectangle with two TPoints, corresponding to its top left and 
+bottom right hand corners.
+
+@param aPointA The co-ordinates of the rectangle's top left hand corner. 
+@param aPointB The co-ordinates of the rectangle's bottom right hand corner.
+*/
+	{}
+	
+	
+	
+	
+EXPORT_C TRect::TRect(const TPoint& aPoint,const TSize& aSize) : iTl(aPoint),iBr(aPoint+aSize)
+/**
+Constructs the rectangle with a TPoint for its top left corner, and a TSize 
+for its width and height.
+
+@param aPoint The rectangle's top left hand corner. 
+@param aSize  The rectangle's width and height.
+*/
+	{}
+	
+	
+	
+	
+EXPORT_C TRect::TRect(const TSize& aSize) : iTl(0,0), iBr(aSize.iWidth, aSize.iHeight)
+/**
+Constructs the rectangle with a TSize.
+
+The co-ordinates of its top left hand corner are initialised to (0,0) and
+its width and height are initialised to the values contained in the argument.
+
+@param aSize The width and height of the rectangle.
+*/
+	{}
+	
+	
+	
+
+EXPORT_C void TRect::SetRect(TInt aTlX,TInt aTlY,TInt aBrX,TInt aBrY)
+/**
+Sets the rectangle's position using four TInts.
+	
+@param aTlX The horizontal co-ordinate of the left hand side of the rectangle. 
+@param aTlY The vertical co-ordinate of the top of the rectangle. 
+@param aBrX The horizontal co-ordinate of the right hand side of the rectangle. 
+@param aBrY The vertical co-ordinate of the bottom of the rectangle.
+*/
+	{
+	iTl.iX=aTlX;iTl.iY=aTlY;iBr.iX=aBrX;iBr.iY=aBrY;
+	}
+	
+	
+	
+
+EXPORT_C void TRect::SetRect(const TPoint& aPointTL,const TPoint& aPointBR)
+/**
+Sets the rectangle's position using two TPoints.
+
+@param aPointTL The co-ordinates of the rectangle's top left hand corner. 
+@param aPointBR The co-ordinates of the rectangle's bottom right hand corner.
+*/
+	{
+	iTl=aPointTL;iBr=aPointBR;
+	}
+
+
+
+
+EXPORT_C void TRect::SetRect(const TPoint& aTL,const TSize& aSize)
+/**
+Sets the rectangle's position using a TPoint and a TSize.
+	
+@param aTL    The co-ordinates of the rectangle's top left hand corner. 
+@param aSize  The rectangle's width and height.
+*/
+	{
+	iTl=aTL;iBr=aTL+aSize;
+	}
+
+
+
+
+EXPORT_C void TRect::Shrink(TInt aDx,TInt aDy)
+/**
+Shrinks a rectangle using specified horizontal and vertical offsets. 
+
+The offset values are added to the co-ordinates of its top left hand corner, 
+and the same values are subtracted from the co-ordinates of its bottom right 
+hand corner. The co-ordinates of the centre of the rectangle remain unchanged. 
+If either value is negative, the rectangle expands in the corresponding direction.
+
+@param aDx The number of pixels by which to move the left and right hand sides 
+           of the rectangle. A positive value reduces the width, a negative
+           value increases it. 
+@param aDy The number of pixels by which to move the top and bottom of the 
+           rectangle. A positive value reduces the height, a negative value
+           increases it.
+*/
+	{
+	Adjust(aDx,aDy);
+	}
+
+
+
+
+EXPORT_C void TRect::Shrink(const TSize& aSize)
+/**
+Shrinks a rectangle using a specified TSize offset.
+
+The rectangle shrinks by twice the value of the height and width specified 
+in the TSize. The co-ordinates of the centre of the rectangle remain unchanged. 
+If either value is negative, the rectangle expands in the
+corresponding direction.
+
+@param aSize The number of pixels by which to move the left and right hand 
+             sides of the rectangle (by aSize.iWidth) and the top and bottom
+             (by aSize.iHeight).
+*/
+	{
+	Adjust(aSize.iWidth,aSize.iHeight);
+	}
+
+
+
+
+EXPORT_C void TRect::Resize(const TSize& aSize)
+/**
+Resizes a rectangle by adding a TSize offset.
+
+The offset is added to the co-ordinates of its bottom right hand corner. If 
+either value in the TSize is negative, the rectangle shrinks in the
+corresponding direction. The co-ordinates of the rectangle's top left hand
+corner are unaffected.
+
+@param aSize The number of pixels by which to move the rectangle; the right 
+             hand side by aSize.iWidth and the bottom by aSize.iHeight.
+*/
+	{
+	iBr+=aSize;
+	}
+
+
+
+
+EXPORT_C void TRect::Resize(TInt aDx, TInt aDy)
+/**
+Resizes a rectangle by adding a horizontal and vertical offset.
+
+The offset is added to the co-ordinates of its bottom right hand corner. If 
+either value is negative, the rectangle shrinks in the corresponding direction.
+The co-ordinates of the rectangle's top left hand corner are unaffected.
+
+@param aDx The number of pixels by which to move the right hand side of the 
+           rectangle. 
+@param aDy The number of pixels by which to move the bottom of the rectangle.
+*/
+	{
+	iBr.iX+=aDx;iBr.iY+=aDy;
+	}
+
+
+
+
+EXPORT_C TBool TRect::operator==(const TRect &aRect) const
+/**
+Compares two rectangles for equality.
+
+For two rectangles to be equal, the co-ordinates of both their top left and 
+bottom right hand corners must be equal.
+
+@param aRect The rectangle to compare with this rectangle.
+
+@return True, if the rectangles have the same co-ordinates; false, otherwise.
+*/
+	{
+
+	return(iTl==aRect.iTl && iBr==aRect.iBr);
+	}
+
+
+
+
+EXPORT_C TBool TRect::operator!=(const TRect &aRect) const
+/**
+Compares two rectangles for inequality.
+
+Two rectangles are unequal if any of their co-ordinates differ.
+
+@param aRect The rectangle to compare with this rectangle.
+@return True, if the rectangles do not have the same co-ordinates; false, if 
+        all co-ordinates are equal.
+*/
+	{
+
+	return(iTl!=aRect.iTl || iBr!=aRect.iBr);
+	}
+
+
+
+
+EXPORT_C void TRect::Move(const TPoint &aOffset)
+/**
+Moves the rectangle by adding a TPoint offset.
+
+The offset is added to the co-ordinates of both its top left and bottom right 
+hand corners. The size of the rectangle is unchanged.
+
+@param aOffset The number of pixels to move the rectangle; horizontally by 
+               aOffset.iX and vertically by aOffset.iY.
+*/
+	{
+
+	iTl+=aOffset;
+	iBr+=aOffset;
+	}
+
+
+
+
+EXPORT_C void TRect::Move(TInt aDx,TInt aDy)
+/**
+Moves the rectangle by adding an x, y offset.
+
+The offset is added to the co-ordinates of both its top left and bottom right 
+hand corners. The size of the rectangle is unchanged.
+
+@param aDx The number of pixels to move the rectangle horizontally. If negative, 
+           the rectangle moves leftwards. 
+@param aDy The number of pixels to move the rectangle vertically. If negative, 
+           the rectangle moves upwards.
+*/
+	{
+
+	iTl.iX+=aDx;
+	iTl.iY+=aDy;
+	iBr.iX+=aDx;
+	iBr.iY+=aDy;
+	}
+
+
+
+
+// private function, hence not exported
+void TRect::Adjust(TInt aDx,TInt aDy)
+//
+// Adjust by a delta.
+//
+	{
+
+	iTl.iX+=aDx;
+	iTl.iY+=aDy;
+	iBr.iX-=aDx;
+	iBr.iY-=aDy;
+	}
+
+
+
+
+EXPORT_C void TRect::Grow(TInt aDx,TInt aDy)
+//
+// Grow by a delta.
+//
+/**
+Grows the rectangle using the specified horizontal and vertical offsets.
+
+The offset values are subtracted from the co-ordinates of its top left hand 
+corner, and the same values are added to the co-ordinates of its bottom right 
+hand corner. The co-ordinates of the centre of the rectangle remain unchanged. 
+If either value is negative, the rectangle shrinks in the corresponding direction.
+
+@param aDx The number of pixels by which to move the left and right hand sides 
+           of the rectangle. A positive value increases the width, a negative
+           value reduces it. 
+@param aDy The number of pixels by which to move the top and bottom of the 
+           rectangle. A positive value increases the height, a negative
+           value reduces it.
+*/
+	{
+
+	iTl.iX-=aDx;
+	iTl.iY-=aDy;
+	iBr.iX+=aDx;
+	iBr.iY+=aDy;
+	}
+
+
+
+
+EXPORT_C void TRect::Grow(const TSize &aSize)
+//
+// Grow by a size.
+//
+/**
+Grows a rectangle using the specified TSize offset.
+
+The rectangle grows by twice the value of the height and width specified in 
+the TSize. The co-ordinates of the centre of the rectangle remain unchanged. 
+If either value is negative, the rectangle shrinks in the
+corresponding direction.
+
+@param aSize The number of pixels by which to move the left and right hand 
+             sides of the rectangle (by aSize.iWidth) and the top and bottom
+             (by aSize.iHeight).
+*/
+	{
+
+	iTl-=aSize;
+	iBr+=aSize;
+	}
+
+
+
+
+EXPORT_C void TRect::BoundingRect(const TRect &aRect)
+//
+// Union of this and aRect, a union is defined as the minimum rectangle that encloses
+// both source rectangles
+//
+/** 
+Gets the minimal rectangle which bounds both this rectangle and the specified 
+rectangle, and assigns it to this rectangle.
+
+@param aRect The rectangle to use with this rectangle to get the minimal bounding 
+             rectangle.
+*/
+	{
+
+	if (iTl.iX>aRect.iTl.iX)
+		iTl.iX=aRect.iTl.iX;
+	if (iTl.iY>aRect.iTl.iY)
+		iTl.iY=aRect.iTl.iY;
+	if (iBr.iX<aRect.iBr.iX)
+		iBr.iX=aRect.iBr.iX;
+	if (iBr.iY<aRect.iBr.iY)
+		iBr.iY=aRect.iBr.iY;
+	}
+
+
+
+
+EXPORT_C TBool TRect::IsEmpty() const
+//
+// True if the rectangle is empty.
+//
+/**
+Tests whether the rectangle is empty.
+
+@return True, if empty; false, if not.
+*/
+	{
+
+	return(iTl.iX>=iBr.iX || iTl.iY>=iBr.iY);
+	}
+
+
+
+
+EXPORT_C void TRect::Intersection(const TRect &aRect)
+//
+// Intersect this with aRect.
+//
+/**
+Gets the area of intersection between this rectangle and the specified
+rectangle, and assigns it to this rectangle.
+
+It is usual to call TRect::Intersects() first to verify whether the two rectangles 
+intersect. If the two rectangles do not intersect, then, on return, this rectangle 
+is set to be empty.
+
+@param aRect The rectangle to be used with this rectangle to get the area
+             of intersection.
+             
+@see TRect::Intersects             
+*/
+	{
+
+	if (iTl.iX<aRect.iTl.iX)
+		iTl.iX=aRect.iTl.iX;
+	if (iTl.iY<aRect.iTl.iY)
+		iTl.iY=aRect.iTl.iY;
+	if (iBr.iX>aRect.iBr.iX)
+		iBr.iX=aRect.iBr.iX;
+	if (iBr.iY>aRect.iBr.iY)
+		iBr.iY=aRect.iBr.iY;
+	}
+
+
+
+
+EXPORT_C TBool TRect::Intersects(const TRect &aRect) const
+//
+// If aRect Intersects with this return True.
+//
+/**
+Tests whether this rectangle overlaps with the specified rectangle.
+
+Two rectangles overlap if any point is located within both rectangles. There 
+is no intersection if two adjacent sides touch without overlapping, or if 
+either rectangle is empty.
+
+@param aRect The rectangle to compare with this rectangle for an intersection. 
+
+@return True, if the two rectangles overlap; false, if there is no overlap.
+*/
+	{
+
+	return(!(IsEmpty() || aRect.IsEmpty() || iBr.iX<=aRect.iTl.iX || iBr.iY<=aRect.iTl.iY || iTl.iX>=aRect.iBr.iX || iTl.iY>=aRect.iBr.iY));
+	}
+
+
+
+
+EXPORT_C void TRect::Normalize()
+//
+// Make the conditions top left bottom right true.
+//
+/**
+Ensures that the rectangle's width and height have positive values.
+
+For example, if the rectangle's co-ordinates are such that the top is below 
+the bottom, or the right hand side is to the left of the left hand side, normalisation 
+swaps the co-ordinates of the top and bottom or of the left and right.
+*/
+	{
+
+	if (iTl.iX>iBr.iX)
+		{
+		TInt temp=iTl.iX;
+		iTl.iX=iBr.iX;
+		iBr.iX=temp;
+		}
+	if (iTl.iY>iBr.iY)
+		{
+		TInt temp=iTl.iY;
+		iTl.iY=iBr.iY;
+		iBr.iY=temp;
+		}
+	}
+
+
+
+
+EXPORT_C TBool TRect::Contains(const TPoint &aPoint) const
+/**
+Tests whether a point is located within the rectangle.
+
+Note that a point located on the top or left hand side of the rectangle is 
+within the rectangle. A point located on the right hand side or bottom is 
+considered to be outside the rectangle.
+
+@param aPoint The point to be tested.
+
+@return True, if the point is within the rectangle; false, otherwise.
+*/
+	{
+	if (aPoint.iX<iTl.iX || aPoint.iX>=iBr.iX || aPoint.iY<iTl.iY || aPoint.iY>=iBr.iY)
+		return(EFalse);
+	return(ETrue);
+	}
+
+
+
+
+EXPORT_C TSize TRect::Size() const
+/**
+Gets the size of the rectangle.
+
+@return The size of the rectangle.
+*/
+	{
+	return((iBr-iTl).AsSize());
+	}
+
+
+
+
+EXPORT_C TInt TRect::Width() const
+/**
+Gets the width of the rectangle.
+
+@return The width of the rectangle.
+*/
+	{
+	return(iBr.iX-iTl.iX);
+	}
+
+
+
+
+EXPORT_C TInt TRect::Height() const
+/**
+Gets the height of the rectangle.
+
+@return The height of the rectangle.
+*/
+	{
+	return(iBr.iY-iTl.iY);
+	}
+
+
+
+
+EXPORT_C TBool TRect::IsNormalized() const
+/**
+Tests whether the rectangle is normalised.
+
+A rectangle is normalised when its width and height are both zero or greater.
+
+@return True, if normalised; false, if not.
+*/
+	{
+	return((iBr.iX>=iTl.iX) && (iBr.iY>=iTl.iY));
+	}
+
+
+
+
+EXPORT_C TPoint TRect::Center() const
+/**
+Gets the point at the centre of the rectangle.
+
+@return The point at the centre of the rectangle.
+*/
+	{
+	return(TPoint((iTl.iX+iBr.iX)/2,(iTl.iY+iBr.iY)/2));
+	}
+
+
+
+
+EXPORT_C void TRect::SetSize(const TSize &aSize)
+/**
+Sets the size of the rectangle.
+
+Only the co-ordinates of the bottom right hand corner of the rectangle are 
+affected.
+
+@param aSize The new width is aSize.iWidth. The new height is aSize.iHeight.
+*/
+	{
+	iBr=iTl+aSize;
+	}
+
+
+
+
+EXPORT_C void TRect::SetWidth(TInt aWidth)
+/**
+Sets the width of the rectangle.
+
+Only the position of the rectangle's right hand side is affected.
+
+@param aWidth The new width of the rectangle.
+*/
+	{
+	iBr.iX=iTl.iX+aWidth;
+	}
+
+
+
+
+EXPORT_C void TRect::SetHeight(TInt aHeight)
+/**
+Sets the height of the rectangle.
+
+Only the position of the bottom of the rectangle is affected.
+
+@param aHeight The new height of the rectangle.
+*/
+	{
+	iBr.iY=iTl.iY+aHeight;
+	}