vtengines/videoteleng/Inc/Media/CVtEngImageScaler.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 23 Nov 2009 14:47:47 +0200
changeset 0 ed9695c8bcbe
permissions -rw-r--r--
Revision: 200948

/*
* 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