camappengine/StillConverter/Src/CaeStillConverter.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 08:51:24 +0200
changeset 0 9b3e960ffc8a
permissions -rw-r--r--
Revision: 200949 Kit: 200951

/*
* Copyright (c) 2002-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:  Still Image Converter base class for Camera Application Engine
*
*/



// INCLUDE FILES
#include <eikenv.h>

#include "CaeStillConverter.h"

#ifdef CAE_TEST_VERSION
#include "CaeStillConverterTestErrors.h"
#endif

// CONSTANTS
const TInt KImageQueueGranularity = 6;



// ================= MEMBER FUNCTIONS =======================


// ---------------------------------------------------------
// CCaeStillConverter::~CCaeStillConverter
// Destructor.
// ---------------------------------------------------------
//
CCaeStillConverter::~CCaeStillConverter()
    {
    if ( iImageQueue )
        {
        iImageQueue->ResetAndDestroy();
        delete iImageQueue;
        }

    // For RTRT code coverage analysis.
    // #pragma attol insert _ATCPQ_DUMP(0);
    }


// ---------------------------------------------------------
// CCaeStillConverter::RunL
// Handles an active object’s request completion event.
// ---------------------------------------------------------
//
void CCaeStillConverter::RunL()
    {
    switch ( iState )
        {
        case EIdle:
            break;

        case EConvert:
            {
            ConversionComplete( iStatus.Int() );

            // Start the next image conversion
            if ( iImageQueue->Count() > 0 )
                {
                TRAPD( error, ConvertL() );
                if ( error != KErrNone )
                    {
                    ConversionComplete( error );
                    }
                }
            }
            break;

        default:
            break;
        }
    }


// ---------------------------------------------------------
// CCaeStillConverter::RunError
// From CActive, handles the leaving RunL().
// ---------------------------------------------------------
//
TInt CCaeStillConverter::RunError( TInt aError )
    {
    ConversionComplete( aError );
    return KErrNone;
    }


// ---------------------------------------------------------
// CCaeStillConverter::CCaeStillConverter
// Default constructor. 
// This can NOT leave.
// ---------------------------------------------------------
//
CCaeStillConverter::CCaeStillConverter() :
CActive( EPriorityStandard ),
iState( EIdle )
    {
    }


// ---------------------------------------------------------
// CCaeStillConverter::ConstructL
// Symbian 2nd phase constructor that can leave.
// ---------------------------------------------------------
//
void CCaeStillConverter::ConstructL()
    {
    iImageQueue = new( ELeave ) RPointerArray<CImageItem>( KImageQueueGranularity );
    }


// ---------------------------------------------------------
// CCaeStillConverter::IsBusy
// Returns ETrue if Still Converter is busy.
// ---------------------------------------------------------
//
TBool CCaeStillConverter::IsBusy() const
    {
    return ( iState != EIdle );
    }


//  End of File