--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/PECengine/AttributeLibrary2/SrcWVAttributes/CPEngMyLogoConverter.h Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,321 @@
+/*
+* 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: MyLogo converter.
+*
+*/
+
+#ifndef CPENGMYLOGOCONVERTER_H_
+#define CPENGMYLOGOCONVERTER_H_
+
+// INCLUDES
+#include <E32Base.h>
+#include <F32file.h>
+
+
+
+//FORWARD DECLARATION
+class CImageDecoder;
+class CImageEncoder;
+class CBitmapScaler;
+class CFbsBitmap;
+class MPEngMyLogoConversionObserver;
+
+
+// CLASS DECLARATION
+
+/**
+ * MyLogo converter.
+ *
+ * @since 3.0
+ */
+NONSHARABLE_CLASS( CPEngMyLogoConverter ) : public CActive
+ {
+private: // private enumerations
+
+ /**
+ * Logo converter states.
+ */
+ enum TLogoConverterState
+ {
+ EConverterIdle = 0, //Idle state, no operation running
+ EImageOpenToBitmap,
+ EBitmapScaleDown,
+ EBitmapStoreToImage,
+ };
+
+
+public: // Two-phased constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * Constructs the converter for image file.
+ */
+ static CPEngMyLogoConverter* FileNewL( const TDesC& aFileName,
+ MPEngMyLogoConversionObserver& aObserver );
+
+ /**
+ * Two-phased constructor.
+ * Constructs the converter for image buffer.
+ */
+ static CPEngMyLogoConverter* DataNewL( const TDesC8& aImageData,
+ MPEngMyLogoConversionObserver& aObserver );
+
+
+ /**
+ * Destructor.
+ */
+ virtual ~CPEngMyLogoConverter();
+
+
+private:
+
+ /**
+ * C++ default constructor.
+ */
+ CPEngMyLogoConverter( MPEngMyLogoConversionObserver& aObserver );
+
+
+ /**
+ * Symbian 2nd phase constructor.
+ */
+ void ConstructFromFileL( const TDesC& aImageFile );
+ void ConstructFromDataL( const TDesC8& aImageData );
+
+
+
+public: // New functions
+
+ /**
+ * Conversion service.
+ *
+ * @since 3.0
+ *
+ * @param
+ */
+ void IssueConvert( TRequestStatus& aRequestStatus );
+
+
+
+protected: // From CActive
+
+
+ /**
+ * RunL().
+ *
+ * Performs the conversion steps
+ * according the states.
+ *
+ * @since 3.0
+ */
+ void RunL();
+
+
+ /**
+ * RunError().
+ *
+ * Completes the client request with reported error.
+ *
+ * @since 3.0
+ * @param aError The leave code from RunL leave.
+ * @return Always KErrNone.
+ */
+ TInt RunError( TInt aError );
+
+
+ /**
+ * DoCancel().
+ *
+ * cancels the currently active processing state.
+ *
+ * @since 3.0
+ */
+ void DoCancel();
+
+
+
+private: // Private helper methods
+
+ /**
+ * Sets the active object active and advances the
+ * state to given one.
+ *
+ * @since 3.0
+ * @param aNewState The new state.
+ */
+ void SetStateActive( TLogoConverterState aNewState );
+
+
+ /**
+ * Checks does the processed image fulfil MyLogo
+ * requirements.
+ *
+ * @since 3.0
+ * @return ETrue if source image satisfies MyLogo
+ * requirements. Else EFalse.
+ */
+ TBool VerifyMyLogoRequirementsL();
+
+
+ /**
+ * Issues the image open to bitmap.
+ *
+ * @since 3.0
+ */
+ void IssueImageOpenToBitmapL();
+
+
+ /**
+ * Issues the image scale down.
+ *
+ * @since 3.0
+ */
+ void IssueBitmapScaleDownL();
+
+
+ /**
+ * Issues the bitmap store to destination image.
+ *
+ * @since 3.0
+ */
+ void IssueBitmapStoreToImageL();
+
+
+ /**
+ * Notifies registered observer from
+ * new logo data.
+ *
+ * @since 3.0
+ */
+ void NotifyNewLogo();
+
+
+ /**
+ * Completes the original client request with
+ * given status and deletes the object itself.
+ *
+ * @since 3.0
+ * @param aStatus The completion code.
+ */
+ void ConversionCompletedD( TInt aStatus );
+
+
+ /**
+ * Panics the converter with given reason.
+ *
+ * @since 3.0
+ * @param aPanicReason The reason code.
+ */
+ void PanicConverter( TInt aPanicReason ) const;
+
+
+
+
+private: // Data
+
+ //OWN: The file server session.
+ RFs iFs;
+
+ //OWN: The converter state.
+ TLogoConverterState iState;
+
+ //OWN: The convert observer.
+ MPEngMyLogoConversionObserver& iObserver;
+
+ //REF: Request status from client
+ TRequestStatus* iClientRequest;
+
+ //OWN: The image data buffer
+ HBufC8* iImageDataBuffer;
+
+ //OWN: The image mime type buffer
+ HBufC8* iImageMimeTypeBuffer;
+
+ //OWN: The image filename buffer
+ HBufC16* iImageFileNameBuffer;
+
+ //OWN: The image decoder. Lazy initialized.
+ CImageDecoder* iImageDecoder;
+
+ //OWN: The image encoder. Lazy initialized.
+ CImageEncoder* iImageEncoder;
+
+ //OWN: Image scaler. Lazy initialized.
+ CBitmapScaler* iBitmapScaler;
+
+ //OWN: MyLogo fbs bitmap. Lazy initialized.
+ CFbsBitmap* iMyLogoBitmap;
+ };
+
+
+
+
+// CLASS DECLARATION
+
+/**
+ * Logo converter observer interface.
+ *
+ * @since 3.0
+ */
+class MPEngMyLogoConversionObserver
+ {
+ public: //Observation methods
+
+
+ /**
+ * Reports the observer new MyLogo contents.
+ *
+ * NOTE: Observer must take the ownership
+ * of parameters in all cases.
+ *
+ * @since 3.0
+ * @param aImageData The MyLogo image data.
+ * @param aImageMimeType The MyLogo mime type.
+ * @param aImageSoureFileName The source file name.
+ */
+ virtual void HandleNewMyLogo( HBufC8* aImageData,
+ HBufC8* aImageMimeType,
+ HBufC* aImageSoureFileName ) = 0;
+
+
+ /**
+ * Reports the converter complete.
+ *
+ * @since 3.0
+ */
+ virtual void HandleConverterDestroy() = 0;
+
+
+
+
+ protected: //Prohibited destructor
+
+ /**
+ * Inline virtual destructor. Concrete
+ * observer can't be destroyed using
+ * this interface.
+ *
+ * @since 3.0
+ */
+ virtual ~MPEngMyLogoConversionObserver() {};
+
+ };
+
+
+
+
+
+
+#endif // CPENGMYLOGOCONVERTER_H_
+
+// End of File