--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uiaccelerator_plat/alf_core_toolkit_api/inc/uiacceltk/HuiRealRect.h Tue Feb 02 07:56:43 2010 +0200
@@ -0,0 +1,169 @@
+/*
+* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "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: ?Description
+*
+*/
+
+
+
+#ifndef __HUIREALRECT_H__
+#define __HUIREALRECT_H__
+
+
+#include <uiacceltk/HuiRealPoint.h>
+#include <uiacceltk/HuiRealSize.h>
+
+
+/**
+ * Rectangle based on real numbers.
+ */
+NONSHARABLE_CLASS(THuiRealRect)
+ {
+public:
+ inline THuiRealRect()
+ {
+ }
+
+ inline THuiRealRect(const THuiRealPoint& aTl,
+ const THuiRealPoint& aBr)
+ : iTl(aTl), iBr(aBr)
+ {
+ }
+
+ inline THuiRealRect(const THuiRealPoint& aPoint,
+ const THuiRealSize& aSize)
+ : iTl(aPoint), iBr(aPoint)
+ {
+ iBr.iX += aSize.iWidth;
+ iBr.iY += aSize.iHeight;
+ }
+
+ inline THuiRealRect(const TRect& aRect)
+ : iTl(aRect.iTl), iBr(aRect.iBr)
+ {
+ }
+
+ inline TReal32 Width() const
+ {
+ return iBr.iX - iTl.iX;
+ }
+
+ inline TReal32 Height() const
+ {
+ return iBr.iY - iTl.iY;
+ }
+
+ inline THuiRealPoint TopRight() const
+ {
+ return THuiRealPoint(iBr.iX, iTl.iY);
+ }
+
+ inline THuiRealPoint BottomLeft() const
+ {
+ return THuiRealPoint(iTl.iX, iBr.iY);
+ }
+
+ inline THuiRealSize Size() const
+ {
+ return THuiRealSize(Width(), Height());
+ }
+
+ inline THuiRealPoint Center() const
+ {
+ return iTl + THuiRealPoint(Width()/2, Height()/2);
+ }
+
+ inline void Grow(TReal32 aX, TReal32 aY)
+ {
+ iTl.iX -= aX;
+ iTl.iY -= aY;
+ iBr.iX += aX;
+ iBr.iY += aY;
+ }
+
+ inline void Shrink(TReal32 aX, TReal32 aY)
+ {
+ iTl.iX += aX;
+ iTl.iY += aY;
+ iBr.iX -= aX;
+ iBr.iY -= aY;
+ }
+
+ inline void Shrink(const TPoint& aPoint)
+ {
+ iTl.iX += aPoint.iX;
+ iTl.iY += aPoint.iY;
+ iBr.iX -= aPoint.iX;
+ iBr.iY -= aPoint.iY;
+ }
+
+ inline void Shrink(const THuiRealPoint& aPoint)
+ {
+ iTl.iX += aPoint.iX;
+ iTl.iY += aPoint.iY;
+ iBr.iX -= aPoint.iX;
+ iBr.iY -= aPoint.iY;
+ }
+
+ inline void Shrink(const THuiRealRect& aRect)
+ {
+ iTl.iX += aRect.iTl.iX;
+ iTl.iY += aRect.iTl.iY;
+ iBr.iX -= aRect.iBr.iX;
+ iBr.iY -= aRect.iBr.iY;
+ }
+
+ inline void Move(TReal32 aDx, TReal32 aDy)
+ {
+ iTl.iX += aDx;
+ iTl.iY += aDy;
+ iBr.iX += aDx;
+ iBr.iY += aDy;
+ }
+
+ inline operator TRect() const
+ {
+ return TRect(TPoint((TInt)iTl.iX, (TInt)iTl.iY),
+ TPoint((TInt)iBr.iX, (TInt)iBr.iY));
+ }
+
+ inline TRect Round() const
+ {
+ TRect rounded;
+ rounded.iTl.iX = HUI_ROUND_FLOAT_TO_INT( iTl.iX );
+ rounded.iTl.iY = HUI_ROUND_FLOAT_TO_INT( iTl.iY );
+ rounded.iBr.iX = HUI_ROUND_FLOAT_TO_INT( iBr.iX );
+ rounded.iBr.iY = HUI_ROUND_FLOAT_TO_INT( iBr.iY );
+ return rounded;
+ }
+
+ inline void BoundingRect( const THuiRealRect& aRect )
+ {
+ iTl.iX = Min( iTl.iX, aRect.iTl.iX );
+ iTl.iY = Min( iTl.iY, aRect.iTl.iY );
+ iBr.iX = Max( iTl.iX, aRect.iTl.iX );
+ iBr.iY = Max( iTl.iY, aRect.iTl.iY );
+ }
+
+public:
+
+ /** Top left corner. */
+ THuiRealPoint iTl;
+
+ /** Bottom right corner. */
+ THuiRealPoint iBr;
+
+ };
+
+#endif // __HUIREALRECT_H__