williamr@2: // Copyright (c) 2003-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@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.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 GifScaler Library williamr@2: // williamr@2: // williamr@2: williamr@2: #ifndef __GIFSCALER_H__ williamr@2: #define __GIFSCALER_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: williamr@2: williamr@2: /** williamr@2: The public API for clients to call the GifScaler scaling and color quantization library. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class CGifScaler : public CBase williamr@2: { williamr@2: public: williamr@2: /** williamr@2: TOptions is an enumeration within the namespace CGifScaler williamr@2: The enumeration provides a set of supported quantization levels: williamr@2: (EHighQualityQuantization is the default setting as it provides the williamr@2: best balance between quality and speed) williamr@2: */ williamr@2: enum TOptions williamr@2: { williamr@2: /** Provides the lowest quality, but also the fastest. williamr@2: */ williamr@2: ELowQualityQuantization, williamr@2: /** Provides medium quality quantization williamr@2: */ williamr@2: EMediumQualityQuantization, williamr@2: /** Provides high quality quantization williamr@2: */ williamr@2: EHighQualityQuantization, williamr@2: /** Provides the highest quality quantization, but is also the slowest. williamr@2: */ williamr@2: EMaximumQualityQuantization williamr@2: }; williamr@2: williamr@2: public: williamr@2: IMPORT_C static CGifScaler* NewL(CFbsBitmap& aSource, TOptions aOptions = EHighQualityQuantization); williamr@2: IMPORT_C static CGifScaler* NewL(CFbsBitmap& aSource, CFbsBitmap& aSourceMask, TOptions aOptions = EHighQualityQuantization); williamr@2: IMPORT_C ~CGifScaler(); williamr@2: williamr@2: // Scale source and mask -> 8bpp destination. (One of the palette indices is transparent, if a mask is supplied) williamr@2: IMPORT_C void Scale(TRequestStatus* aStatus, CFbsBitmap& aDestination, CPalette& aPalette, TBool aMaintainAspectRatio = ETrue); williamr@2: williamr@2: // Scale source and mask -> 8bpp destination. (As above, except that the transparency threshold must be specified) williamr@2: IMPORT_C void ThresholdScale(TRequestStatus* aStatus, CFbsBitmap& aDestination, CPalette& aPalette, TUint8 aTransparencyThreshold, TBool aMaintainAspectRatio = ETrue); williamr@2: williamr@2: // Cancel scaling. williamr@2: IMPORT_C void Cancel(); williamr@2: williamr@2: private: williamr@2: CGifScaler(); williamr@2: void ConstructL(CFbsBitmap& aSource, CFbsBitmap* aSourceMask, TOptions aOptions); williamr@2: williamr@2: private: williamr@2: class CBody; williamr@2: CBody* iBody; williamr@2: }; williamr@2: williamr@2: #endif // __GIFSCALER_H__