williamr@2: // Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // This is the public client API for the Image Display Library williamr@2: // williamr@2: // williamr@2: williamr@2: #ifndef __IMAGEDISPLAY_H__ williamr@2: #define __IMAGEDISPLAY_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: williamr@2: // fwd refs williamr@2: class CImageDisplayFramework; williamr@2: /** williamr@2: Uid value for the TDescriptorDataSource data source williamr@2: */ williamr@2: const TInt KUidDescDataSourceValue=0x10207087; williamr@2: /** williamr@2: Uid for the TDescriptorDataSource data source williamr@2: */ williamr@2: const TUid KUidDescDataSource={KUidDescDataSourceValue}; williamr@2: williamr@2: /** williamr@2: Descriptor-based image datasource. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class TDescriptorDataSource: public TMMSource williamr@2: { williamr@2: public: williamr@2: IMPORT_C TDescriptorDataSource(const TPtrC8& aData); williamr@2: IMPORT_C const TPtrC8& DataBuf() const; williamr@2: williamr@2: private: williamr@2: TPtrC8 iData; williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: Observer class for image display. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class MIclImageDisplayObserver williamr@2: { williamr@2: public: williamr@2: /** williamr@2: Called when the image is ready to display williamr@2: A plug-in should use this function to pass information asynchronously to an API client. This function is asynchronous. williamr@2: @param aBitmap williamr@2: a pointer to the bitmap that contains decoding result (may be NULL on error condition) williamr@2: williamr@2: @param aStatus williamr@2: the plugin status that should be combination of the TPluginStatus set williamr@2: williamr@2: @param aUpdatedArea williamr@2: a rectangle within the aBitmap that was updated during the latest operation williamr@2: williamr@2: @param aError williamr@2: error code of latest operation williamr@2: williamr@2: */ williamr@2: virtual void MiidoImageReady(const CFbsBitmap* aBitmap, TUint aStatus, const TRect& aUpdatedArea, TInt aError) = 0; williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: The public API for clients to call the Image Display library. williamr@2: This class provides functions to convert images stored in descriptors or williamr@2: files to bitmaps ready for display. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class CImageDisplay : public CBase williamr@2: { williamr@2: public: williamr@2: williamr@2: /** williamr@2: Flags to control how the image is handled williamr@2: These can be combined using an OR operation. williamr@2: Note that the rotate and mirror options have williamr@2: to be set together with EOptionThumbnail or williamr@2: EOptionMainImage. williamr@2: */ williamr@2: enum TImageOptions williamr@2: { williamr@2: /** No options defined */ williamr@2: EOptionsUndefined = 0x00000000, williamr@2: /** Use the thumbnail image as source */ williamr@2: EOptionThumbnail = 0x00000001, williamr@2: /** Use the main image as source */ williamr@2: EOptionMainImage = 0x00000002, williamr@2: /** Rotate the image by 90 degrees clockwise */ williamr@2: EOptionRotateCw90 = 0x00000004, williamr@2: /** Rotate the image by 180 degrees clockwise */ williamr@2: EOptionRotateCw180 = 0x00000008, williamr@2: /** Rotate the image by 270 degrees clockwise */ williamr@2: EOptionRotateCw270 = 0x00000010, williamr@2: /** Mirror an image about the horizontal axis */ williamr@2: EOptionMirrorHorizontal = 0x00000020, williamr@2: /** Mirror an image about the vertical axis */ williamr@2: EOptionMirrorVertical = 0x00000040, williamr@2: /** Rotate the image automatically (if necessary) */ williamr@2: EOptionAutoRotate = 0x00000080 williamr@2: }; williamr@2: williamr@2: /** williamr@2: Return flags from ImageStatus() williamr@2: */ williamr@2: enum TImageStatus williamr@2: { williamr@2: /** ImageStatus is unknown */ williamr@2: EImageTypeUnknown = 0x00000000, williamr@2: /** Image is single frame */ williamr@2: EImageSingleFrame = 0x00000001, williamr@2: /** Image is multiframe */ williamr@2: EImageMultiFrame = 0x00000002, williamr@2: /** Image is animated */ williamr@2: EImageAnimated = 0x00000004, williamr@2: /** Image has got a mask/alpha channel */ williamr@2: EImageMasked = 0x00000008, williamr@2: /** Image has got a thumbnail */ williamr@2: EImageHasThumbnail = 0x00000010, williamr@2: /** Image is fully scalable i.e. arbitrary scaling can be perofmed quite quickly */ williamr@2: EImageIsFullyScalable= 0x00000020 williamr@2: }; williamr@2: williamr@2: /** williamr@2: An array containing the sizes of images. williamr@2: */ williamr@2: typedef RArray RImageSizeArray; williamr@2: williamr@2: public: williamr@2: IMPORT_C static CImageDisplay* NewL(MIclImageDisplayObserver& aCallback, RFs& aFs); williamr@2: IMPORT_C ~CImageDisplay(); williamr@2: IMPORT_C void SetPluginUid(TUid aPluginUid); williamr@2: IMPORT_C TInt SetImageSource(const TMMSource& aSource); williamr@2: williamr@2: IMPORT_C void SetSourceMimeType(const TDesC8& aMIMEType); williamr@2: IMPORT_C void SetSourceImageType(TUid aImageType, TUid aImageSubType = KNullUid); williamr@2: williamr@2: IMPORT_C void SetSourceRect(const TRect& aRect); williamr@2: IMPORT_C void ResetSourceRect(); williamr@2: williamr@2: IMPORT_C void SetSizeInPixels(const TSize& aSize, TBool aMaintainAspectRatio = ETrue); williamr@2: IMPORT_C void SetDisplayMode(TDisplayMode aDisplayMode); williamr@2: williamr@2: IMPORT_C TInt SetOptions(TUint aOptions); williamr@2: williamr@2: IMPORT_C void SetupL(); williamr@2: williamr@2: IMPORT_C void Play(); williamr@2: IMPORT_C void Pause(); williamr@2: IMPORT_C void StopPlay(); williamr@2: IMPORT_C void Reset(); williamr@2: williamr@2: // getters williamr@2: IMPORT_C TInt ExtensionInterface(TUid aIFaceUid, TAny*& aIFacePtr); williamr@2: IMPORT_C TBool ValidBitmap() const; williamr@2: IMPORT_C const RImageSizeArray& RecommendedImageSizes() const; williamr@2: IMPORT_C void GetBitmap(const CFbsBitmap*& aBitmap, const CFbsBitmap*& aMask) const; williamr@2: IMPORT_C TUint ImageStatus() const; williamr@2: IMPORT_C TInt NumFrames(TInt& aNumFrames) const; williamr@2: williamr@2: private: williamr@2: CImageDisplay(); williamr@2: void ConstructL(MIclImageDisplayObserver& aCallback, RFs& aFs); williamr@2: williamr@2: private: williamr@2: CImageDisplayFramework* iBody; williamr@2: }; williamr@2: williamr@2: #endif // __IMAGEDISPLAY_H__