--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uiacceltk/hitchcock/coretoolkit/src/huiviewportlayout.cpp Tue Feb 02 07:56:43 2010 +0200
@@ -0,0 +1,142 @@
+/*
+* Copyright (c) 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: Viewport visual.
+*
+*/
+
+
+
+#include "uiacceltk/huiviewportlayout.h" // Class definition
+
+#include <uiacceltk/HuiControl.h>
+#include <uiacceltk/HuiUtil.h>
+
+
+EXPORT_C CHuiViewportLayout* CHuiViewportLayout::AddNewL(CHuiControl& aOwnerControl, CHuiLayout* aParentLayout)
+ {
+ CHuiViewportLayout* layout = new (ELeave) CHuiViewportLayout(aOwnerControl);
+ CleanupStack::PushL(layout);
+ layout->ConstructL();
+ aOwnerControl.AppendL(layout, aParentLayout);
+ CleanupStack::Pop(layout);
+ return layout;
+ }
+
+
+CHuiViewportLayout::CHuiViewportLayout(MHuiVisualOwner& aOwner)
+ : CHuiLayout(aOwner)
+ {
+ iVirtualSize = THuiRealSize(1.0f, 1.0f);
+ iViewportSize = THuiRealSize(1.0f, 1.0f);
+ iViewportPos = THuiRealPoint(0.0f, 0.0f);
+
+ iWrappingFlags = 0;
+ }
+
+
+void CHuiViewportLayout::ConstructL()
+ {
+ CHuiLayout::ConstructL();
+ SetClipping(ETrue);
+ }
+
+CHuiViewportLayout::~CHuiViewportLayout()
+ {
+ }
+
+EXPORT_C void CHuiViewportLayout::SetVirtualSize(const THuiRealSize& aSize, TInt aTransitionTime)
+ {
+ if ( !HuiUtil::RealCompare( iVirtualSize.iHeight, aSize.iHeight ) ||
+ !HuiUtil::RealCompare( iVirtualSize.iWidth, aSize.iWidth ) )
+ {
+ iVirtualSize = aSize;
+
+ UpdateChildrenLayout(aTransitionTime);
+
+ SetChanged();
+ }
+ }
+
+
+EXPORT_C void CHuiViewportLayout::SetViewportSize(const THuiRealSize& aSize, TInt aTransitionTime)
+ {
+ // Divide by zero will be caught later.
+ if ( !HuiUtil::RealCompare( iViewportSize.iHeight, aSize.iHeight ) ||
+ !HuiUtil::RealCompare( iViewportSize.iWidth, aSize.iWidth ) )
+ {
+ iViewportSize = aSize;
+
+ UpdateChildrenLayout(aTransitionTime);
+
+ SetChanged();
+ }
+ }
+
+EXPORT_C void CHuiViewportLayout::SetViewportPos(const THuiRealPoint& aPos, TInt aTransitionTime)
+ {
+ if ( !HuiUtil::RealCompare( iViewportPos.iY, aPos.iY ) ||
+ !HuiUtil::RealCompare( iViewportPos.iX, aPos.iX ) )
+ {
+ iViewportPos = aPos;
+
+ UpdateChildrenLayout(aTransitionTime);
+
+ SetChanged();
+ }
+ }
+
+void CHuiViewportLayout::SetSize(const THuiRealSize& aSize, TInt aTransitionTime)
+ {
+ CHuiLayout::SetSize(aSize, aTransitionTime);
+ UpdateChildrenLayout(aTransitionTime);
+ }
+
+
+TBool CHuiViewportLayout::ChildSize(TInt /*aOrdinal*/, TSize& aSize)
+ {
+ THuiRealSize mysize = Size().Target().AsSize();
+
+ if ((iViewportSize.iWidth == 0.0) || (iViewportSize.iHeight == 0.0))
+ {
+ // Could not obtain new size because of divide by zero error.
+ return EFalse;
+ }
+
+ aSize.iWidth = HUI_ROUND_FLOAT_TO_INT((iVirtualSize.iWidth / iViewportSize.iWidth) * mysize.iWidth);
+ aSize.iHeight = HUI_ROUND_FLOAT_TO_INT((iVirtualSize.iHeight / iViewportSize.iHeight) * mysize.iHeight);
+
+ return ETrue;
+ }
+
+
+TBool CHuiViewportLayout::ChildPos(TInt /*aOrdinal*/, TPoint& aPos)
+ {
+ THuiRealSize mysize = Size().RealTarget().AsSize();
+
+ if ((iViewportSize.iWidth == 0.0) || (iViewportSize.iHeight == 0.0))
+ {
+ // Could not obtain new size because of divide by zero error.
+ return EFalse;
+ }
+
+ aPos.iX = HUI_ROUND_FLOAT_TO_INT( -iViewportPos.iX * mysize.iWidth / iViewportSize.iWidth );
+ aPos.iY = HUI_ROUND_FLOAT_TO_INT( -iViewportPos.iY * mysize.iHeight / iViewportSize.iHeight );
+
+ return ETrue;
+ }
+
+EXPORT_C TInt CHuiViewportLayout::ChildRect(TInt /*aOrdinal*/, THuiRealRect& /*aPos*/)
+ {
+ return THuiLayoutChildRectNotImplemented;
+ }