diff -r 000000000000 -r 15bf7259bb7c uiaccelerator_plat/alf_core_toolkit_api/inc/uiacceltk/huiframebrush.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiaccelerator_plat/alf_core_toolkit_api/inc/uiacceltk/huiframebrush.h Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,244 @@ +/* +* Copyright (c) 2006-2007 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: Defines a CHuiFrameBrush class - a brush that draws a frame element +* +*/ + + + +#ifndef __HUIFRAMEBRUSH_H__ +#define __HUIFRAMEBRUSH_H__ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class CHuiImageLoaderUtil; + +/** + * Frame brush + * + * @lib hitchcock.lib + * @since S60 v5.0 + */ +NONSHARABLE_CLASS(CHuiFrameBrush): public CHuiBrush, public MHuiActionObserver + { +public: + + enum TFrameParts + { + EFramePartCornerTl = 0, + EFramePartCornerTr, + EFramePartCornerBl, + EFramePartCornerBr, + EFramePartSideT, + EFramePartSideB, + EFramePartSideL, + EFramePartSideR, + EFramePartCenter + }; + + /** + * NewL. Creates new instance of CHuiFrameBrush. + * + * @param aImage Image for the frame. Image will be used as such, + * framerects (if set) are ignored. + * @param aEdgeOffset Coordinates of the offset in metric units. + * @return New instance. Onwership tranferred to the caller. + */ + IMPORT_C static CHuiFrameBrush* NewL( + const THuiImage& aImage, + const THuiXYMetric& aEdgeOffset); + + /** + * NewLC. Creates new instance of CHuiFrameBrush and leaves + * it onto the cleanup stack. + * + * @param aImage Image for the frame. Image will be used as such, + * framerects (if set) are ignored. + * @param aEdgeOffset Coordinates of the offset in metric units. + * @return New instance. Onwership tranferred to the caller. + */ + IMPORT_C static CHuiFrameBrush* NewLC( + const THuiImage& aImage, + const THuiXYMetric& aEdgeOffset); + + + /** + * NewL. Creates new instance of CHuiFrameBrush. + * + * @param aIID Skin ID for the frame. + * @param aEdgeOffset Coordinates of the offset in metric units. + * @return New instance. Onwership tranferred to the caller. + */ + IMPORT_C static CHuiFrameBrush* NewL( + const TAknsItemID& aIID, + const THuiXYMetric& aEdgeOffset); + + /** + * NewLC. Creates new instance of CHuiFrameBrush and leaves + * it onto the cleanup stack. + * + * @param aIID Skin ID for the frame. + * @param aEdgeOffset Coordinates of the offset in metric units. + * @return New instance. Onwership tranferred to the caller. + */ + IMPORT_C static CHuiFrameBrush* NewLC( + const TAknsItemID& aIID, + const THuiXYMetric& aEdgeOffset); + + /** + * NewL. Creates new instance of CHuiFrameBrush. + * + * @deprecated + * @param aIID Skin ID for the frame. + * @param aEdgeOffsetX X coordinate of the offset in pixels. + * @param aEdgeOffsetY Y coordinate of the offset in pixels. + * @return New instance. Onwership tranferred to the caller. + */ + IMPORT_C static CHuiFrameBrush* NewL( + const TAknsItemID& aIID, + TInt aEdgeOffsetX = 0, + TInt aEdgeOffsetY = 0 ); + + /** + * NewLC. Creates new instance of CHuiFrameBrush and leaves + * it onto the cleanup stack. + * + * @deprecated + * @param aIID Skin ID for the frame. + * @param aEdgeOffsetX X coordinate of the offset in pixels. + * @param aEdgeOffsetY Y coordinate of the offset in pixels. + * @return New instance. Onwership tranferred to the caller. + */ + IMPORT_C static CHuiFrameBrush* NewLC( + const TAknsItemID& aIID, + TInt aEdgeOffsetX = 0, + TInt aEdgeOffsetY = 0); + + /** + * Destructor + */ + ~CHuiFrameBrush(); + + + /** + * Sets the frame rectangles which define the nine frame areas. + * + * @param aInnerRect Inner rect (pixels) in where the EFramePartCenter is drawn. + * @param aOuterRect Outter rect (pixels). + */ + IMPORT_C void SetFrameRectsL(const TRect& aInnerRect, const TRect& aOuterRect); + + /** + * Sets edge offset. + * @param aEdgeOffset Coordinates of the offset in metric units. + */ + IMPORT_C void SetEdgeOffset(const THuiXYMetric& aEdgeOffset); + + /** + * Sets frame image. Whole frame will be constrcuted from this image. + * @param aImage Image for the frame. + */ + IMPORT_C void SetImage(const THuiImage& aImage); + + /** + * Sets framepart image. Whole frame will be constrcuted from 9 parts, each part has + * to be set separately using this method. Genrally using 9-piece frame is not as + * efficient as 1-pice frame, so this method should be used only when really needed. + * @param aFramePart Frame part to which the image is intended. + * @param aImage Image for the frame part. + */ + IMPORT_C void SetImage(TFrameParts aFramePart, const THuiImage& aImage); + + /** + * From CHuiBrush. + * @see CHuiBrush::ExpandVisualRect(TRect& aRect) + */ + void ExpandVisualRect(TRect& aRect) const; + + /** + * From CHuiBrush. + * @see CHuiBrush::Changed() const + */ + TBool Changed() const; + + /** + * From CHuiBrush. + * @see CHuiBrush::ClearChanged() + */ + void ClearChanged(); + + /** + * From CHuiBrush. + * @see CHuiBrush::Draw(CHuiGc& aGc, const MHuiBrushGuide& aGuide) const; + */ + void Draw(CHuiGc& aGc, const MHuiBrushGuide& aGuide) const; + +protected: + + CHuiFrameBrush(const THuiImage& aImage, const THuiXYMetric& aEdgeOffset); + CHuiFrameBrush(const TAknsItemID& aIID, const THuiXYMetric& aEdgeOffset); + CHuiFrameBrush(const TAknsItemID& aIID, TInt aEdgeOffsetX, TInt aEdgeOffsetY); + CHuiFrameBrush(); + + // from MHuiActionObserver + void HandleActionL(const THuiActionCommand& aActionCommand); + +private: + TSize GetFramePartSize(const TFrameParts aFramePart) const; + void ConstructFrameL(); + static void ResetAndDestroyImageArray( TAny* aAny ); + THuiRealPoint PointInPixels(const CHuiVisual* aVisual, const THuiTimedPoint& aPoint, const THuiXYMetric& aMetric) const; + void InitImagesL(TInt aNumberOfImages); + void ConstructL(const THuiImage& aImage); + TRect AdjustedOuterRect(const TSize& aFullFrameSize) const; + TRect AdjustedInnerRect(const TSize& aFullFrameSize) const; +private: + TAknsItemID iFrameIID; + TRect iInnerRect; + TRect iOuterRect; + + NONSHARABLE_CLASS(CHuiImageWithID): public CBase + { + public: + CHuiImageWithID(THuiImage aImage, TInt aId):iImage(aImage),iId(aId){} + ~CHuiImageWithID(); + const MHuiSegmentedTexture& Texture(); + THuiImage& Image(); + void SetImage(const THuiImage& aImage); + private: + THuiImage iImage; + TInt iId; + }; + + RPointerArray iImages; + CHuiImageLoaderUtil* iImageloader; + +public: + THuiTimedPoint iEdgeOffset; +private: + THuiXYMetric iEdgeOffsetMetric; + TBool iEnvReleased; + TBool iSkinChanged; + }; + +#endif \ No newline at end of file