vtengines/videoteleng/Inc/Media/CVtEngImageScaler.h
changeset 0 ed9695c8bcbe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtengines/videoteleng/Inc/Media/CVtEngImageScaler.h	Mon Nov 23 14:47:47 2009 +0200
@@ -0,0 +1,154 @@
+/*
+* Copyright (c) 2004-2006 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:  Scaler for bitmaps.
+*
+*/
+
+
+
+#ifndef CVTENGIMAGESCALER_H
+#define CVTENGIMAGESCALER_H
+
+//  INCLUDES
+#include "MVtEngImageScaler.h"
+#include <cvtimagescaler.h>
+
+// FORWARD DECLARATIONS
+class MVtEngScalerObserver;
+class CVtImageScaler;
+class CVtImageBitmap;
+
+/**
+* Image scaler implementation class.
+*
+*  @lib videoteleng.lib
+*  @since Series 60 2.8
+*/
+NONSHARABLE_CLASS( CVtEngImageScaler ) : public CBase,
+    public MVtImageScalerObserver,
+    public MVtEngImageScaler
+    {
+    public: // constructor and destructor
+
+        /**
+        * Two-phased constructor.
+        * @param aObserver scaling finished callback.
+        * @return scaler
+        */
+        static MVtEngImageScaler* NewL(
+            MVtEngScalerObserver& aObserver );
+
+        /**
+        * Destructor
+        */
+        virtual ~CVtEngImageScaler();
+
+    private: // constructor
+        
+        /**
+        * C++ constructor.
+        * @param aObserver scaling finished callback.
+        */
+        CVtEngImageScaler(
+            MVtEngScalerObserver& aObserver );
+
+
+        /**
+        * Symbian constructor that may leave.
+        */
+        void ConstructL();
+
+    public: // From MVtEngImageScaler.
+
+        /**
+        * @see MVtEngImageScaler.
+        */
+        virtual void ScaleL(
+            TInt aSourceIndex );
+
+        /**
+        * @see MVtEngImageScaler
+        */
+        virtual TBool ConfigureL(
+            TDisplayMode aDisplayMode,
+            TSize aSize, 
+            TInt aSourceHandle1,
+            TInt aSourceHandle2 );
+
+        /**
+        * @see MVtEngImageScaler.
+        */
+        virtual void Release();
+
+        /**
+        * @see MVtEngImageScaler.
+        */
+        virtual TInt Cancel();
+
+    public: // From MVtImageScalerObserver.
+
+        /**
+        * @ see MVtImageScalerObserver.
+        */
+        virtual void ScalingFinished( TInt aError );
+
+    private:
+        /**
+        * EFirstBitmap 
+        *  Use the first bitmap.
+        * ESecondBitmap 
+        *  Use the second bitmap.
+        */
+        enum 
+	        {
+            EFirstBitmap  = 0,
+            ESecondBitmap = 1
+            };
+
+        /**
+        * Fetches the used scaling method from locally.
+        * variated properties, and stores it into iScalingMethod.
+        */
+        void GetScalingMethodL();
+
+    private:
+
+        // Observer receiving scaled bitmaps.
+        MVtEngScalerObserver& iObserver;
+
+        // Actual component doing the scaling.
+        CVtImageScaler* iVtScaler;
+
+        // Target bitmaps.
+        RPointerArray<CVtImageBitmap> iTargets;
+
+        // Source bitmaps.
+        RPointerArray<CVtImageBitmap> iSources;
+
+        // Bitmap index in targets.
+        TInt                iTargetBitmapInUse;
+
+        // Display mode.
+        TDisplayMode        iMode;
+
+        // Scaled size.
+        TSize               iSize;
+
+        // Method of scaling
+        CVtImageScaler::TQuality    iScalingMethod;
+    };
+
+#endif  // CVTENGIMAGESCALER_H
+
+// End of File