diff -r 000000000000 -r 15bf7259bb7c uiaccelerator_plat/alf_core_toolkit_api/inc/uiacceltk/huidropshadow.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiaccelerator_plat/alf_core_toolkit_api/inc/uiacceltk/huidropshadow.h Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,209 @@ +/* +* Copyright (c) 2008 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: Drop shadow handler +* +*/ + + + +#ifndef C_HUIDROPSHADOW_H +#define C_HUIDROPSHADOW_H + +#include +#include +#include +#include +#include +#include + +class TAknsItemID; +class MHuiSegmentedTexture; +class CHuiTexture; +class CHuiVisual; + +/** + * Drop shadow parameter handler + * + * This interface can be fetched from the visual + * @see CHuiVisual::EnableDropShadowL + * @see CHuiVisual::DropShadowHandler + * + * @code + * // get the pointer + * visual->EnableDropShadowL(); + * CHuiDropShadow* dropShadow = visual->DropShadowHandler(); + * + * // use it + * dropShadow->SetColor( KRgbRed ); + * dropShadow->iOffset.Set( THuiRealPoint( 10, 10 ) ); + * @endcode + * + * Disabling the drop shadow from the visual, deletes the instance and therefore loses + * all set paramteres. If you want to just hide the drops shadow temporally, you can + * a) set the opacity into 0 or + * b) set the scale into 0 + * + * @lib hitchcock.lib + * @since S60 v5.0.1 + */ +NONSHARABLE_CLASS( CHuiDropShadow ) : public CBase + { +public: // Exported functions + + /** + * Sets the shadow in polar coordinates. This will be converted into xy + * coordinates + * + * @param aAngle Angle of the shadow. 0 degrees is on the right hand side and 90 in directly above. + * @param aDistance Distance of the shadow in unit defined by the user component. + * @param aTransitionTime Time reach the target. + */ + IMPORT_C void SetOffset( TReal32 aAngle, THuiMetric aDistance, TInt aTransitionTime = 0 ) __SOFTFP; + + /** + * Sets the color of the shadow. + * + * @param aColor Text color. + * @param aTransitionTime Time reach the target. (not supported ) + */ + IMPORT_C void SetColor(const TRgb& aColor, TInt aTransitionTime = 0 ); + + /** + * Sets the color of the shadow via skin id. + * + * @param aID Skin ID of the color group to use + * @param aIndex Index within the color group + * @param aTransitionTime Time reach the target. (not supported ) + */ + IMPORT_C void SetColor(const TAknsItemID& aID,const TInt aIndex, TInt aTransitionTime = 0 ); + +public: // internal methods + + CHuiDropShadow(); + void ConstructL(); + ~CHuiDropShadow(); + + TBool Changed() const; + void ClearChanged(); + + TRgb Color() const; + + /** + * Calculates the drawing size of the shadow texture + * + * @param aImageDrawingSize Image drawing size + * @param aShadowTextureSize Shadow texture size + * + * @return Shadow drawing size + */ + THuiRealSize ShadowDrawingSize( + const TSize& aImageDrawingSize, + const TSize& aShadowTextureSize ) const; + + /** + * Checks if the shadow is visible (checks opacity and scale != 0) + * + * @return ETrue if visible. + */ + TBool IsShadowVisible() const; + + /** + * Casts 'const MHuiTexture' into 'CHuiTexture' if applicaple. + * + * @param aTextureIf Original texture interface + * + * @return Casted to CHuiTexture instance if possible. + */ + static CHuiTexture* ShadowedTextureInstance( const MHuiTexture& aTextureIf ); + + /** + * Calculates the shadow distance in pixels. + * + * @param aReferenceVisual Visual which determines the metrics. + * + * @return Shadow distance in pixels. + */ + THuiRealPoint DistanceInPixels( const CHuiVisual& aReferenceVisual ) const; + + /** + * Returns the rectangle in which the shadow is supposed to be drawn. + * Area is given as real/floating values. + * + * @param aImageDrawingPosition Position where the image is drawn + * @param aImageDrawingSize Size of the image to be drawn + * @param aShadowTextureSize Size of the shadow texture + * @prarm aReferenceVisual Reference visual for the relative metrics. + * + * @return Area used by the shadow. + */ + THuiRealRect ShadowDrawingRealRect( + const TPoint& aImageDrawingPosition, + const TSize& aImageDrawingSize, + const TSize& aShadowTextureSize, + const CHuiVisual& aReferenceVisual ) const; + + /** + * Returns the rectangle in which the shadow is supposed to be drawn. + * Area is given as integer/fixed values. + * + * @param aImageDrawingPosition Position where the image is drawn + * @param aImageDrawingSize Size of the image to be drawn + * @param aShadowTextureSize Size of the shadow texture + * @prarm aReferenceVisual Reference visual for the relative metrics. + * + * @return Area used by the shadow. + */ + TRect ShadowDrawingTRect( + const TPoint& aImageDrawingPosition, + const TSize& aImageDrawingSize, + const TSize& aShadowTextureSize, + const CHuiVisual& aReferenceVisual ) const; + +public: // public members + + /** + * Opacity of the shadow + */ + THuiTimedValue iOpacity; + + /** + * Shadow offset in timed xy-coordinates + */ + THuiTimedPoint iOffset; + + /** + * Shadow offset unit + */ + TInt iOffsetUnit; + + /** + * Sets the blur filter radius. This is used to generate the shadow from the + * texture. Normally between 2-5 pixels (in texture coordinates). + */ + THuiTimedValue iRadius; + + /** + * Scale of the shadow - default 1.0. + */ + THuiTimedValue iScale; + +private: + + struct THuiDropShadowData; + THuiDropShadowData* iData; + + }; + + +#endif // C_HUIDROPSHADOW_H