sl@0: // Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: /** sl@0: @file sl@0: @test sl@0: @internalComponent - Internal Symbian test code sl@0: */ sl@0: sl@0: #include "tflowwindow.h" sl@0: #include "surfaceutility.h" sl@0: sl@0: sl@0: CTWindow* CTFlowWindow::NewL(RWsSession &aWs, const RWindowTreeNode &aParent, const TPoint& aStartingPoint, const TSize& aWindowSize) sl@0: { sl@0: CTFlowWindow * self = new (ELeave) CTFlowWindow(aStartingPoint, aWindowSize); sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(aWs, aParent); sl@0: CleanupStack::Pop(self); sl@0: return self; sl@0: } sl@0: sl@0: CTFlowWindow::CTFlowWindow(const TPoint& aStartingPoint, const TSize& aWindowSize) : CTWindow(aStartingPoint, aWindowSize) sl@0: { sl@0: iImageInfo.iSizeInPixels = aWindowSize; sl@0: iImageInfo.iPixelFormat = EUidPixelFormatXRGB_8888; //todo: is this format okay (EUidPixelFormatARGB_8888)? sl@0: iImageInfo.iCpuAccess = ESgCpuAccessNone; sl@0: iImageInfo.iUsage = ESgUsageOpenGlesTarget| ESgUsageDirectGdiSource | ESgUsageDirectGdiTarget; sl@0: iImageInfo.iShareable = ETrue; sl@0: iImageInfo.iScreenId = KSgScreenIdMain; sl@0: } sl@0: sl@0: void CTFlowWindow::ConstructL(RWsSession &aWs, const RWindowTreeNode &aParent) sl@0: { sl@0: CTWindow::ConstructL(aWs, aParent); sl@0: sl@0: User::LeaveIfError(iImageCollection.Create(iImageInfo, 1)); // creates an image collection with 1 image sl@0: User::LeaveIfError(iImageCollection.OpenImage(0, iImage)); // opens a handle to the image sl@0: // sets the image collection as background surface for the window sl@0: User::LeaveIfError(SetBackgroundSurface(iImageCollection.SurfaceId())); sl@0: // Connect to surface update session sl@0: User::LeaveIfError(iUpdateSession.Connect()); sl@0: } sl@0: sl@0: CTFlowWindow::~CTFlowWindow() sl@0: { sl@0: iUpdateSession.Close(); sl@0: iImage.Close(); sl@0: iImageCollection.Close(); sl@0: } sl@0: sl@0: /** sl@0: * Scales a bitmap from file to a surface. sl@0: * sl@0: * @param aUtility Performs the loading of the bitmap and scaling to the surface. sl@0: * @param aFileName Location of the bitmap. sl@0: */ sl@0: void CTFlowWindow::LoadL(CSurfaceUtility* aUtility, TPtrC aFileName) sl@0: { sl@0: aUtility->ScaleBitmapFromFileToSurfaceL(aFileName, iImageCollection.SurfaceId()); sl@0: } sl@0: sl@0: void CTFlowWindow::RenderL() sl@0: { sl@0: CTWindow::RenderL(); sl@0: TRequestStatus status; sl@0: iUpdateSession.NotifyWhenAvailable(status); sl@0: User::LeaveIfError(iUpdateSession.SubmitUpdate(KAllScreens, sl@0: iImageCollection.SurfaceId(), 0, &DirtyRegion())); sl@0: User::WaitForRequest(status); sl@0: }