--- a/uifw/ganes/inc/HgVgMediaWallRenderer.h Thu Jul 29 14:21:56 2010 +0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,358 +0,0 @@
-/*
-* 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 HGVGMEDIAWALLRENDERER_H_
-#define HGVGMEDIAWALLRENDERER_H_
-
-// INCLUDES
-#include <e32base.h>
-#include <VG/openvg.h>
-#include <ganes/HgVgMediaWall.h>
-
-/**
- * Helper abstract base class for drawing mediawall.
- */
-NONSHARABLE_CLASS(CHgVgMediaWallRenderer) : public CBase
- {
-public:
-
- /**
- * Factory method for constructing new MediaWallRenderer-Object
- */
- static CHgVgMediaWallRenderer* NewL(TInt aMaxQuads, const TRect& aWindowRect,
- const TRect& aFrontRect, TReal aZOffset);
-
- /**
- * Destructor
- */
- virtual ~CHgVgMediaWallRenderer();
-
-
-private:
-
- CHgVgMediaWallRenderer(const TRect& aWindowRect,
- const TRect& aFrontRect, TReal aZOffset);
-
- void ConstructL(TInt aMaxQuads);
-
-public:
-
- /**
- * Draws the mediawall.
- *
- * @param aItems items to draw.
- * @param aSelectedIndex index of the selected item.
- * @param aViewPosition views position
- * @param aAnimationAlpha alpha from going from 0-1 during animation states.
- * @param aState current state of the animation.
- * @param aSelectionAnimationType type of the selection animation to use
- */
- void Draw(RPointerArray<CHgVgItem>& aItems,
- TInt aSelectedIndex, TReal aNextIndex,
- TReal aViewPosition,
- TReal aAnimationAlpha,
- CHgVgMediaWall::THgVgAnimationState aAnimationState,
- CHgVgMediaWall::THgVgOpeningAnimationType aSelectionAnimationType,
- CHgVgMediaWall::THgVgMediaWallStyle aStyle);
-
- /**
- *
- */
- void DrawGrid(
- TInt aRowCount,
- RPointerArray<CHgVgItem>& aItems,
- TReal aViewX, TReal aViewY,
- TInt aCurItem,
- TInt aPrevItem,
- TReal aAnimationAlpha,
- CHgVgMediaWall::THgVgAnimationState aAnimationState,
- TInt aPickedItem,
- CHgVgMediaWall::THgVgOpeningAnimationType aAnimationType);
-
- /**
- * Sets default icon for rendering items with no icons.
- * Ownership of the icon is not transfered.
- *
- * @param aIcon reference to CGulIcon-object
- */
- void SetDefaultIconL(const CGulIcon& aIcon);
-
- /**
- * Sets Camera position modifier to use in rendering.
- *
- * @param aCameraPosition camera position
- */
- void SetCameraPosition(TReal aX, TReal aY, TReal aZ);
-
- /**
- * Sets camera rotation modifiers to use in rendering.
- *
- * @param aAngle angle in radians.
- */
- void SetCameraRotation(TReal aAngle);
-
- /**
- * Gets ItemIndex of a quad at pointer position.
- * NOTE: This is only valid after drawing.
- *
- * @param aPointerPosition position of the pointer
- * @return ItemIndex or KErrNotFound if nothings if no hit.
- */
- TInt GetItemIndex(const TPoint& aPointerPosition) const;
-
- /**
- * This should be called by the client. When skin change event is triggered.
- * This rebuilds all renderers skin related internal resources.
- */
- void HandleSkinChange();
-
- /**
- *
- */
- TReal GetWorldSpaceRowHeight() const;
-
- /**
- *
- */
- void SetReflections(TBool aEnabled);
-
-
- /**
- *
- */
- TBool ReflectionsEnabled() const;
-
- /**
- *
- */
- TSize ImageSize() const;
-
- /**
- *
- */
- void SetFlippedRect(const TRect& aFlippedRect);
-
- /*
- *
- */
- void SetFlipAngle(TReal aAngle);
-
- /**
- *
- */
- void EnableBlurOnFlip(TBool aEnabled, TReal aBlurX, TReal aBlurY);
-
-
- /**
- *
- */
- void SetOffset(const TPoint& aOffset);
-
- /**
- *
- */
- void EnableFlipXY(TBool aEnabled);
-
-private:
-
- class TQuad
- {
- public:
- // quads world-space position
- VGfloat iX;
- VGfloat iY;
- VGfloat iZ;
- // quads angle
- VGfloat iAngle;
- // image used to draw this quad
- VGImage iImage;
- // transform constructed in TransformQuads for rendering
- VGfloat iTM[9];
- // transformed 2d points
- VGfloat iPoints[2*4];
- // index from CHgVgItem
- TInt iItemIndex;
- // flag indicating iImage is not valid, uses iDefaultImage then.
- TBool iNoImage;
- //
- VGfloat iAlpha;
- VGfloat iMirroredPoints[2*4];
- VGfloat iMirroredTM[9];
-
- TBool iFlipped;
- };
-
- /**
- *
- */
- void GetGroundColorFromSkin(VGfloat* aColor);
-
- /**
- * Transforms quads
- */
- void TransformQuads(TInt aNumVisibleQuads, TBool aMirrored,
- VGfloat aFov, CHgVgMediaWall::THgVgOpeningAnimationType aOpeningAnimationType);
-
- /**
- * Sorts quads by z from iQuads to sorted quads.
- */
- void SortQuads(TInt aNumVisibleNumQuads);
-
- /**
- * Draws quads using VG
- */
- void DrawQuads(TBool aDrawMirrored);
-
- /**
- * Draws one quad using OpenVG
- */
- void DrawQuad(TQuad* q, TBool aDrawMirrored);
-
- /**
- * Setups quads into their positions/orientations, after this they can by transformed
- * and rendered.
- */
- TInt SetupQuads(RPointerArray<CHgVgItem>& aItems,
- TInt aSelectedIndex, TReal aNextIndex,
- VGfloat aViewPosition,
- VGfloat aAnimationAlpha,
- CHgVgMediaWall::THgVgAnimationState aState,
- CHgVgMediaWall::THgVgOpeningAnimationType aAnimationType);
-
-
- /**
- * Setups quads for grid mediawall style.
- */
- void SetupQuadsToRow(
- TInt aRow,
- TInt aRowCount,
- TInt& aItemsOnScreen,
- RPointerArray<CHgVgItem>& aItems,
- TReal aViewX, TReal aViewY,
- TInt aCurItem, TInt aPrevItem,
- TReal aAnimationAlpha,
- CHgVgMediaWall::THgVgAnimationState aAnimationState,
- TInt aPickedItem,
- CHgVgMediaWall::THgVgOpeningAnimationType aAnimationType);
-
- /**
- * Applies flip animation to a quad.
- */
- void ApplyOpeningAnimation(CHgVgMediaWallRenderer::TQuad* aQuad,
- TReal aAnimationAlpha, TReal aZNear, CHgVgMediaWall::THgVgMediaWallStyle aMediaWallStyle,
- CHgVgMediaWall::THgVgOpeningAnimationType aAnimationStyle);
-
- /**
- * Creates path and paint for ground.
- */
- void CreateGround();
-
- /**
- * Draws ground.
- * @param aWidth width of the ground.
- * @param aHeight height of the ground.
- */
- void DrawGround(TInt aWidth, TInt aHeight);
-
-
- /**
- *
- */
- void TransformAndDraw(TInt itemsOnScreen,
- CHgVgMediaWall::THgVgOpeningAnimationType aOpeningAnimationType);
-
- /**
- *
- */
- void AdjustSettingsBasedOnRects(const TRect& aFrontRect,
- TReal aZOffset);
-
- /**
- *
- */
- VGfloat GetZInWorldSpaceBasedOnWidth(VGfloat aWidth);
-
- /**
- *
- */
- void UpdateBlurChildImage(VGImage aImage);
-
-private:
-
- VGint iMaxQuads;
- TRect iRect;
- VGfloat iCameraX;
- VGfloat iCameraY;
- VGfloat iCameraZ;
- VGfloat iCameraRotation;
- VGImage iDefaultImage;
- RPointerArray<TQuad> iQuads;
- RPointerArray<TQuad> iSortedQuads;
-
- VGPaint iGroundPaint;
- VGPath iGroundPath;
-
- VGfloat iSelectedQuadStartX;
- VGfloat iSelectedQuadStartY;
-
- TBool iReflectionsEnabled;
-
- TSize iImageSize;
-
- VGfloat iCameraBaseX;
- VGfloat iCameraBaseY;
- VGfloat iCameraBaseZ;
-
- VGfloat iFlippedX;
- VGfloat iFlippedY;
- VGfloat iFlippedZ;
-
- // Which item is the front item in coverflow
- TInt iSelectedItemIndex;
- // Ending position of the left album stack
- TReal iLeftStackEndX;
- // Ending position of the right album stack
- TReal iRightStackStartX;
- // Z-coordinate of the frontmost album
- TReal iZNear;
- // Z-coordinate of the albums on the back
- TReal iZFar;
- // Space between albums in stacks
- TReal iSpaceBetween;
- // How much to zoom when fast swiped
- TReal iFov;
- // angle to flip the item around X-axis in flip opening animation
- TReal iFlipAngle;
-
- VGImage iBlurImage;
- VGfloat iBlurAlpha;
- VGfloat iBlurDeviationX;
- VGfloat iBlurDeviationY;
-
- VGfloat iFlippedWidth;
- VGfloat iFlippedHeight;
-
- VGint iBlurImageWidth;
- VGint iBlurImageHeight;
- VGImage iChildBlurImage;
-
- TPoint iOffset;
-
- TBool iFlipXY;
- };
-
-#endif /* HGVGMEDIAWALLRENDERER */