graphicstest/uibench/s60/src/windows/tsmallwindowzoom.cpp
author Faisal Memon <faisal.memon@nokia.com>
Fri, 14 May 2010 17:03:25 +0100
branchNewGraphicsArchitecture
changeset 67 9c70c0a878c0
parent 0 5d03bc08d59c
permissions -rw-r--r--
Merge 3. Improve performance by switching to less aggressive settings for RI_NUM_TESSELLATED_SEGMENTS and RI_MAX_SAMPLES. Ignored the WIN32 specific API decoration defines when doing the merge. Note the code is now optimised in riPath.cpp to change from RI_NUM_TESSELLATED_SEGMENTS to _QUAD, _CUBIC, _ARC settings which are each now set to 8. SVG Tiger now renders in 5 seconds (15 seconds quicker). The quality of the OVG icons is slightly reduced but still very useable.

// Copyright (c) 2009 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:
//

/**
 @file
 @test
 @internalComponent - Internal Symbian test code 
*/

#include "tsmallwindowzoom.h"


const TRect KMinimumZoomRect(TSize(20, 20));

CTSmallWindowZoom::CTSmallWindowZoom(const TPoint& aStartingPoint, const TSize& aWindowSize):
        CTSmallWindowRaster(aStartingPoint, aWindowSize)
	{
	// empty
	}

CTSmallWindowZoom::~CTSmallWindowZoom()
	{
	// empty
	}

CTWindow* CTSmallWindowZoom::NewL(RWsSession &aWs, 
		const RWindowTreeNode &aParent, 
		const TPoint& aStartingPoint,
		const TSize& aWindowSize)
	{
	CTSmallWindowZoom* self = new (ELeave)CTSmallWindowZoom(aStartingPoint, aWindowSize);
	CleanupStack::PushL(self);
    self->ConstructL(aWs, aParent);
    CleanupStack::Pop(self);
	return self;
	}

void CTSmallWindowZoom::ConstructL(RWsSession &aWs, const RWindowTreeNode &aParent)
	{
	CTSmallWindowRaster::ConstructL(aWs, aParent);
	iDelta = 1;
	iZoom = EZoomIn;
	}

void CTSmallWindowZoom::LoadL(CSurfaceUtility* aUtility, TPtrC aFileName)
	{
	CTSmallWindowRaster::LoadL(aUtility, aFileName);
    iZoomRect = iSourceRect;
	}

void CTSmallWindowZoom::RenderL()
	{
	CTWindow::RenderL();
	if (iLoaded)
	    {
	    DrawBitmap(iZoomRect);
	    if (iZoom == EZoomIn)
            {
            iZoomRect.Shrink(iDelta, iDelta);
            if (iZoomRect.Width() <= KMinimumZoomRect.Width())
                {
                iZoom = EZoomOut;
                }
            }
        else 
            {
            iZoomRect.Grow(iDelta, iDelta);
            if (iZoomRect.Width() >= iSourceRect.Width())
                {
                iZoom = EZoomIn;
                }
            }
	    }
        
    
	}