diff -r f5050f1da672 -r 04becd199f91 javauis/lcdui_akn/lcdgr/inc/LcdFbsImageCache.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/lcdui_akn/lcdgr/inc/LcdFbsImageCache.h Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,106 @@ +/* +* Copyright (c) 2005 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 LCDFBSIMAGECACHE_H +#define LCDFBSIMAGECACHE_H + +#include +#include +#include +#include +#include +#include "LcdFbsImage.h" + +struct TLcdFbsImageEntry +{ + MMIDImage* iImage; + TBool iPrimary; + TDisplayMode iColorMode; + TDisplayMode iAlphaMode; + TBool iInvertMask; + MMIDBitmapImage* iBitmapRep; +}; + +/** + * + */ +NONSHARABLE_CLASS(CLcdFbsImageCache) : public CBase +{ +public: + static CLcdFbsImageCache* NewL(CLcdGraphicsDriver& aDriver, TDisplayMode aDefaultColorMode, TDisplayMode aDefaultAlphaMode, TBool aDefaultInverted); + CLcdFbsImageCache(CLcdGraphicsDriver& aDriver); + ~CLcdFbsImageCache(); + + + /** + * Find the primary bitmap image representation of aImage. + * + *@return a bitmap image or NULL if no appropriate bitmap representation of aImage exists. + */ + MMIDBitmapImage* GetBitmapImage(MMIDImage* aImage); + + /** + * Find a bitmap image representation of aImage with color bitmap in displaymode aColorMode, and alpha + * bitmap (if present) in displaymode aAlphaMode. If aColorMode or aAlphaMode are equal to + * MMIDBitmapImage::EDefaultDisplayMode, then the implementation will select a mode based on the image + * pixel format. + * + *@return a bitmap image or NULL if no appropriate bitmap representation of aImage exists. + */ + MMIDBitmapImage* GetBitmapImage + ( + MMIDImage* aImage, + TInt aColorMode, + TInt aAlphaMode, + TBool aInvertMask + ); + + /** + * Find or create a bitmap image representation of aImage with a color bitmap in displaymode aColorMode and + * alpha bitmap (if present) in displaymode aAlphaMode. + * + *@return a bitmap image representation. + * + * Will leave with one of the system error codes if a bitmap representation does not exist and one cannot + * be created. + */ + MMIDBitmapImage* GetBitmapImageL + ( + MMIDImage* aImage, + TInt aColorMode=MMIDBitmapImage::EDefaultDisplayMode, + TInt aAlphaMode=MMIDBitmapImage::EDefaultDisplayMode, + TBool aInvertMask=EFalse + ); + + void RegisterL(MMIDImage* aImage, TBool aInverted, MMIDBitmapImage* aImageRep); + void Purge(MMIDImage* aImage); + +private: + MMIDBitmapImage* CreateBitmapImageRepLC(MMIDImage& aImage, TDisplayMode aColorMode, TDisplayMode aAlphaMode, TBool aInvertMask); + void RemoveEntry(TInt); + +private: + CLcdGraphicsDriver& iDriver; + TDisplayMode iDefaultColorMode; + TDisplayMode iDefaultAlphaMode; + TBool iDefaultInverted; + RArray iEntries; + TLinearOrder iOrder; +}; + +#endif // LCDFBSIMAGECACHE_H