diff -r 3104fc151679 -r 9a48e301e94b uiservicetab/vimpstutils/src/cvimpstengineaimagehandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiservicetab/vimpstutils/src/cvimpstengineaimagehandler.cpp Wed Sep 01 12:33:36 2010 +0100 @@ -0,0 +1,256 @@ +/* +* Copyright (c) 2008 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: Image handler for VImpst engine handler +* +*/ + +// INCLUDE FILES +#include "cvimpstengineimagehandler.h" + +#include "uiservicetabtracer.h" +#include "tvimpstenums.h" + + +#include "vimpstallerrors.h" +#include "tvimpstconsts.h" + +#include "cvimpstimageprocessor.h" // image processor + +const TInt KOFFSETSIZE = 10000; +const TInt KSIZEMULTIPLE = 3; +const TInt KQUALITYFACTOR = 55; +// ================= MEMBER FUNCTIONS ======================= +// --------------------------------------------------------- +// CVIMPSTEngineImageHandler::NewL +// Two-phased constructor. +// --------------------------------------------------------- +EXPORT_C CVIMPSTEngineImageHandler* CVIMPSTEngineImageHandler::NewL() + { + TRACER_AUTO; + CVIMPSTEngineImageHandler* self = + CVIMPSTEngineImageHandler::NewLC( ); + CleanupStack::Pop( self ); + + return self; + } + +// --------------------------------------------------------- +// CVIMPSTEngineImageHandler::NewLC +// Two-phased constructor. +// --------------------------------------------------------- +EXPORT_C CVIMPSTEngineImageHandler* CVIMPSTEngineImageHandler::NewLC( ) + { + TRACER_AUTO; + CVIMPSTEngineImageHandler* self = new (ELeave) + CVIMPSTEngineImageHandler(); + CleanupStack::PushL( self ); + self->ConstructL(); + + return self; + } + + +// --------------------------------------------------------- +// CVIMPSTEngineImageHandler::CVIMPSTEngineImageHandler +// --------------------------------------------------------- +CVIMPSTEngineImageHandler::CVIMPSTEngineImageHandler():iError(0) + { + + } +// --------------------------------------------------------- +// CVIMPSTEngineImageHandler::ConstructL +// --------------------------------------------------------- +void CVIMPSTEngineImageHandler::ConstructL() + { + TRACER_AUTO; + iProcessor = CVimpstImageProcessor::NewL(this); + iFormat.iSettings.iQualityFactor = KQUALITYFACTOR; + iFormat.iSettings.iSampleScheme = TMdaJpgSettings::TColorSampling(TMdaJpgSettings::EColor420); + + } +// --------------------------------------------------------- +// CVIMPSTEngineImageHandler::~CVIMPSTEngineImageHandler +// --------------------------------------------------------- +CVIMPSTEngineImageHandler::~CVIMPSTEngineImageHandler() + { + TRACER_AUTO; + delete iProcessor; + if(iToDesc) + { + delete iToDesc; + } + + } + +// ------------------------------------------------------------------------ +// CVIMPSTEngineImageHandler::HandleProcessingCompleteL +// +// ------------------------------------------------------------------------ +void CVIMPSTEngineImageHandler::HandleProcessingCompleteL( TInt aStatus ) + { + TRACER_AUTO; + if (!aStatus) + { + iContent = iProcessor->GetContentData(); + } + + if(iWait.IsStarted() ) + { + iWait.AsyncStop(); + } + + } +// ------------------------------------------------------------------------ +// CVIMPSTEngineImageHandler::ProcessImageFromFileL +// +// ------------------------------------------------------------------------ +EXPORT_C HBufC8* CVIMPSTEngineImageHandler::ProcessImageFromFileL(const TDesC& aFilename , + const TDesC8& aMimetype) + { + TRACER_AUTO; + if(aFilename.Length()) + { + TRACE(" called"); + iProcessor->ProcessFromFileL( aFilename , aMimetype); + if( ! iWait.IsStarted() ) + { + // codescanner warning can be ignored, we are not starting an active object but + // CActiveSchedulerWait. + iWait.Start(); + } + } + + return iContent; + } +// ------------------------------------------------------------------------ +// CVIMPSTEngineImageHandler::ProcessImageFromDataL +// +// ------------------------------------------------------------------------ +EXPORT_C HBufC8* CVIMPSTEngineImageHandler::ProcessImageFromDataL( const TDesC8& aImageData , const TDesC8& aMimeType) + { + TRACER_AUTO; + if(aImageData.Length()) + { + TRACE("ProcessImageFromDataL called"); + TInt err = iProcessor->ProcessFromDataL( aImageData , aMimeType); + if(KErrNone != err) + { + iContent = KNullDesC8().AllocL(); + return iContent; + } + if( ! iWait.IsStarted() ) + { + // codescanner warning can be ignored, we are not starting an active object but + // CActiveSchedulerWait. + iWait.Start(); + } + } + + return iContent; + } +// ------------------------------------------------------------------------ +// CVIMPSTEngineImageHandler::ProcessFromBitmapL +// +// ------------------------------------------------------------------------ +EXPORT_C HBufC8* CVIMPSTEngineImageHandler::ProcessFromBitmapL( CFbsBitmap& aBitMap ) + { + + TRACER_AUTO; + + //bitmap to desc + const TSize size = aBitMap.SizeInPixels(); + const TInt descSize = (size.iWidth * size.iHeight * KSIZEMULTIPLE) + KOFFSETSIZE; + iBuf = HBufC8::NewL(descSize); + TPtr8 imageBuffer(iBuf->Des()); + if(iToDesc) + { + delete iToDesc;//delete the old one + iToDesc = NULL; + } + iToDesc = CMdaImageBitmapToDescUtility::NewL(*this); + iToDesc->CreateL(imageBuffer, &iFormat, 0, 0); + if( ! iWait.IsStarted() ) + { + // codescanner warning can be ignored, we are not starting an active object but + // CActiveSchedulerWait. + iWait.Start(); + } + User::LeaveIfError(iError);//CreateL is a asynch call.leave if error in creating + iToDesc->ConvertL(aBitMap); + if( ! iWait.IsStarted() ) + { + // codescanner warning can be ignored, we are not starting an active object but + // CActiveSchedulerWait. + iWait.Start(); + } + User::LeaveIfError(iError);//CreateL is a asynch call.leave if error in creating + + + return iBuf; + } +// ------------------------------------------------------------------------ +// CVIMPSTEngineImageHandler::MiuoCreateComplete +// +// ------------------------------------------------------------------------ +void CVIMPSTEngineImageHandler::MiuoCreateComplete(TInt aError) + { + TRACER_AUTO; + iError = aError; + if(iWait.IsStarted() ) + { + iWait.AsyncStop(); + } + + + } +// ------------------------------------------------------------------------ +// CVIMPSTEngineImageHandler::MiuoOpenComplete +// +// ------------------------------------------------------------------------ +void CVIMPSTEngineImageHandler::MiuoOpenComplete(TInt aError) + { + TRACER_AUTO; + iError = aError; + if(iWait.IsStarted() ) + { + iWait.AsyncStop(); + } + + + } +// ------------------------------------------------------------------------ +// CVIMPSTEngineImageHandler::MiuoConvertComplete +// +// ------------------------------------------------------------------------ +void CVIMPSTEngineImageHandler::MiuoConvertComplete(TInt aError) + { + TRACER_AUTO; + iError = aError; + if(iWait.IsStarted() ) + { + iWait.AsyncStop(); + } + + + } +// CVIMPSTEngineImageHandler::Bitmap +// +// ------------------------------------------------------------------------ +EXPORT_C CFbsBitmap& CVIMPSTEngineImageHandler::Bitmap() + { + TRACER_AUTO; + return iProcessor->Bitmap(); + } + +// end of file