PECengine/AttributeLibrary2/SrcWVAttributes/CPEngMyLogoConverter.h
changeset 0 094583676ce7
--- /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