diff -r 000000000000 -r 2f259fa3e83a uifw/EikStd/coctlinc/smileydrawer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uifw/EikStd/coctlinc/smileydrawer.h Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,122 @@ +/* +* 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: smiley utility class +* +*/ + +#ifndef C_SMILEYDRAWER_H +#define C_SMILEYDRAWER_H + +#include +#include +#include + +class CSmileyModel; +class CFbsBitmap; +class CBitmapContext; +class CFbsBitGc; +class CSmileyImageData; +class CSmileyIcon; +class CEikEdwin; +class CSmileyAsyncDraw; +class CSmileyDrawer; + +class MSmileyAnimChecker + { +public: + virtual TBool IsOnProgress() const = 0; + virtual void ResetStatus() = 0; + virtual void DoOnAnimStoppedL() = 0; + }; + +NONSHARABLE_CLASS( TSmileyAnimCheckerWrapper ) + { +public: + TSmileyAnimCheckerWrapper( MSmileyAnimChecker* aAnimChecker, TInt aMaxCheckTimes ); + TBool IsContainingAnimChecker( const MSmileyAnimChecker* aAnimChecker ) const; + void CheckAnimProgressL(); + +private: // data + // not own + MSmileyAnimChecker* iAnimChecker; + TInt iCheckTimes; + TInt iMaxCheckTimes; + }; + +/** + * class for reading and interpreting infomation stored in CenRep + * + * @lib ?library + * @since S60 v5.0 + */ + +NONSHARABLE_CLASS( CSmileyDrawer ): public CBase + { +public: + static const TInt KDisplayTimes = 2; + +public: +// constructor + CSmileyDrawer( CSmileyModel& aModel, CEikEdwin& aEdwin ); + ~CSmileyDrawer(); + +// new functions + void DrawTextView(); + + void SetHighlightColor( TRgb aColor ); + TRgb HighlightColor(){ return iHighlightColor; }; + + void DrawImageByIconL( CBitmapContext& aGc, CSmileyIcon* aNode ); + void CreateImageByIconL( CSmileyIcon* aIcon ); + void CreateImageL( CSmileyImageData* aImage ); + + void SetPlayTimes( TInt aPlayTimes ){ iPlayTimes = aPlayTimes; }; + + void SetVisibleRange( TInt aDocPos, TInt aLength ) + { + iVisibleStart = aDocPos; + iVisibleLength = aLength; + }; + + void StartAnimTimerL(); + static TInt AnimTimerCallbackL( TAny* aPtr ); + void CheckAnimStatusL(); + void RegisterAnimChecker( MSmileyAnimChecker* aAnimChecker ); + void RemoveAnimChecker( MSmileyAnimChecker* aAnimChecker ); + CEikEdwin& Editor(){ return iEdwin; }; + +private: + void DrawHighlightBmpL( CBitmapContext& aGc, CFbsBitmap* aBmp, + CFbsBitmap* aMask, TPoint& aPt ); + CSmileyImageData* FindImageDataByCode( TText aCode ); + CSmileyImageData* CreateImageDataL( TText aCode ); + +private: // data + CSmileyModel& iModel; + CEikEdwin& iEdwin; + + RPointerArray iImageArray; + + TRgb iHighlightColor; + TInt iPlayTimes; + TInt iVisibleStart; + TInt iVisibleLength; + // own + CSmileyAsyncDraw* iAsyncDraw; + // own + CPeriodic* iPeriodic; + RArray iAnimArray; + }; + +#endif C_SMILEYDRAWER_H