williamr@2: // Copyright (c) 2002-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 BitmapTransforms Library williamr@2: // williamr@2: // williamr@2: williamr@2: #ifndef __BITMAPTRANSFORMS_H__ williamr@2: #define __BITMAPTRANSFORMS_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: class CBitmapRotatorBody; williamr@2: class CBitmapScalerBody; williamr@2: class CBitmapConverterBody; williamr@2: williamr@2: williamr@2: /** williamr@2: The public API for clients to call the BitmapTransforms Library bitmap rotation. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: williamr@2: //The public API for clients to call the BitmapTransforms Library bitmap rotation williamr@2: class CBitmapRotator : public CBase williamr@2: { williamr@2: public: williamr@2: williamr@2: /** williamr@2: The enumeration provides a set of supported rotation and mirror angles. williamr@2: TRotationAngle is an enumeration within the namespace CBitmapRotator. williamr@2: */ williamr@2: enum TRotationAngle williamr@2: { williamr@2: /** Used to rotate a bitmap 90 degrees clockwise. williamr@2: */ williamr@2: ERotation90DegreesClockwise, williamr@2: /** Used to rotate a bitmap 180 degrees clockwise. williamr@2: */ williamr@2: ERotation180DegreesClockwise, williamr@2: /** Used to rotate a bitmap 270 degrees clockwise. williamr@2: */ williamr@2: ERotation270DegreesClockwise, williamr@2: /** Used to mirror a bitmap about the horizontal axis. williamr@2: */ williamr@2: EMirrorHorizontalAxis, williamr@2: /** Used to mirror a bitmap about the vertical axis. williamr@2: */ williamr@2: EMirrorVerticalAxis williamr@2: }; williamr@2: williamr@2: public: williamr@2: IMPORT_C static CBitmapRotator* NewL(); williamr@2: IMPORT_C ~CBitmapRotator(); williamr@2: IMPORT_C void Rotate(TRequestStatus* aRequestStatus, CFbsBitmap& aSrcBitmap, CFbsBitmap& aTgtBitmap, TRotationAngle aAngle); williamr@2: IMPORT_C void Rotate(TRequestStatus* aRequestStatus, CFbsBitmap& aBitmap, TRotationAngle aAngle); williamr@2: IMPORT_C TInt CustomCommand(TUid aUid, TAny* aParam); williamr@2: IMPORT_C void Cancel(); williamr@2: williamr@2: private: williamr@2: CBitmapRotator(); williamr@2: void ConstructL(); williamr@2: williamr@2: private: williamr@2: CBitmapRotatorBody *iBody; williamr@2: }; williamr@2: williamr@2: /** williamr@2: The public API for clients to call the BitmapTransforms Library bitmap scaling. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: williamr@2: //The public API for clients to call the BitmapTransforms library bitmap scaling williamr@2: class CBitmapScaler : public CBase williamr@2: { williamr@2: public: williamr@2: /** An enumeration to specify the level of quality algorithm. williamr@2: */ williamr@2: enum TQualityAlgorithm williamr@2: { williamr@2: /** williamr@2: Fastest/lowest quality williamr@2: */ williamr@2: EMinimumQuality, williamr@2: /** williamr@2: Middle range speed/middle range quality williamr@2: */ williamr@2: EMediumQuality, williamr@2: /** williamr@2: Slowest/highest quality williamr@2: */ williamr@2: EMaximumQuality williamr@2: }; williamr@2: williamr@2: public: williamr@2: IMPORT_C static CBitmapScaler* NewL(); williamr@2: IMPORT_C ~CBitmapScaler(); williamr@2: IMPORT_C void Scale(TRequestStatus* aRequestStatus, CFbsBitmap& aSrcBitmap, CFbsBitmap& aTgtBitmap, TBool aMaintainAspectRatio = ETrue); williamr@2: IMPORT_C void Scale(TRequestStatus* aRequestStatus, CFbsBitmap& aBitmap, const TSize& aDestinationSize, TBool aMaintainAspectRatio = ETrue); williamr@2: IMPORT_C void Cancel(); williamr@2: IMPORT_C TInt CustomCommand(TUid aUid, TAny* aParam); williamr@2: inline TInt DisablePostProcessing( TBool aState ); williamr@2: inline TInt UseLowMemoryAlgorithm( TBool aState ); williamr@2: inline TInt SetQualityAlgorithm( TQualityAlgorithm aQualityLevel ); williamr@2: private: williamr@2: CBitmapScaler(); williamr@2: void ConstructL(); williamr@2: williamr@2: private: williamr@2: CBitmapScalerBody* iBody; williamr@2: }; williamr@2: williamr@2: #include williamr@2: williamr@2: #endif //__BITMAPTRANSFORMS_H__