graphicstest/uibench/s60/src/openvgengine.h
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:
 //


#ifndef OPENVGENGINE_H_
#define OPENVGENGINE_H_


#include "engine.h"

#include <VG/openvg.h>
#include <EGL/egl.h>


const TInt KMaxDisplayCoversExample3 = 40;
const TInt KMaxDisplayLeftExample3 = -3;
const TInt KMaxDisplayRightExample3 = 3;

// the max number of covers visible on the screen at any given time
const TInt KMaxCoversExample3 = 40;


class  COpenVGEngine : public CBase, public MEngine
	{
public: 
	static COpenVGEngine* NewL(RWindow& aWindow, EGLDisplay& aDisplay, EGLSurface& aSurface, EGLContext& aContext);
	~COpenVGEngine();
	TInt GetSpeed();
	
	// From MEngine
	void ActivateL();
	void Deactivate();	
	void Step();
	TBool IsPending();
	void Refresh();
	TKeyResponse HandleKeyEventL(const TKeyEvent& aKeyEvent);
	
private: 
	COpenVGEngine(RWindow& aWindow, EGLDisplay& aDisplay, EGLSurface& aSurface, EGLContext& aContext);
	void DrawCover(TInt i);
	void NextCover();
	void PreviousCover();		
	void ToggleCoverReflection();
	VGfloat GetMiddleCoverScalingFactor(VGfloat coverPosition);
	
private:
    RWindow& iWindow;
    EGLDisplay& iDisplay;
    EGLSurface& iSurface;
    EGLContext& iContext;
    
	TPoint iOldPos;
	TBool isResize;
		
	VGfloat iCoverLocation[KMaxCoversExample3];
	VGint iWantedCover;
    TBool iHasPendingDraw;
	TBool iShowCoverImage;
	VGfloat iSpeedOffset;
	TBool iShowMirror;
	
	TSize iSurfaceSize;
	
	VGfloat iSpeed;
	RArray<VGImage> iImages;
	TInt iCurrentImageIndex;	

	VGPaint iShadowPaint;
	};

#endif