--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingandcamerafws/cameraunittest/src/ECamUnitTestPlugin/extended_functionality.cpp Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,2281 @@
+// Copyright (c) 2007-2009 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:
+// extendedfunctionality.cpp
+//
+//
+
+#include "extended_functionality.h"
+#include "AdvancedSettings.h"
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <ecamcapturecontrolconst.h>
+#include <ecamviewfinderdef.h>
+#include "ecamdef.h"
+#endif
+
+//
+//pre image capture control impl
+CCamPreImageCaptureControl* CCamPreImageCaptureControl::NewL(CCamUnitTestPlugin& aOwner)
+ {
+ return new(ELeave) CCamPreImageCaptureControl(aOwner);
+ }
+
+CCamPreImageCaptureControl::CCamPreImageCaptureControl(CCamUnitTestPlugin& aOwner): iOwner(aOwner),
+ iPreImageCaptureControlObserver(NULL)
+ {
+ }
+
+CCamPreImageCaptureControl::~CCamPreImageCaptureControl()
+ {
+ }
+
+void CCamPreImageCaptureControl::Release()
+ {
+ delete this;
+ }
+
+void CCamPreImageCaptureControl::SetPreImageCaptureControlObserver(MPreImageCaptureControlObserver& aPreImageCaptureControlObserver)
+ {
+ iPreImageCaptureControlObserver = &aPreImageCaptureControlObserver;
+ }
+
+void CCamPreImageCaptureControl::GetDirectSnapshotSupportInfoL(TUint& aDirectSnapshotSupportInfo) const
+ {
+ aDirectSnapshotSupportInfo = CCamera::CCameraPreImageCaptureControl::EDirectSnapshotSupported;
+ }
+
+void CCamPreImageCaptureControl::GetSupportedEmbeddedStillCaptureSettingsL(RArray<TUid>& aSupportedEmbeddedStillCaptureSettings) const
+ {
+ aSupportedEmbeddedStillCaptureSettings.Reset();
+ }
+
+void CCamPreImageCaptureControl::GetSupportedDirectSavingTypeL(CCamera::CCameraPreImageCaptureControl::TDirectSavingType& aSupportedDirectSavingType) const
+ {
+ aSupportedDirectSavingType = CCamera::CCameraPreImageCaptureControl::EDirectSavingNotUsed;
+ }
+
+void CCamPreImageCaptureControl::SetSequentialImageFilenameL(const TDesC8& /*aFilename*/, TInt /*aStartingSequenceNumber*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamPreImageCaptureControl::SetLowerResolutionSequentialImageFilenameL(const TDesC8& /*aLowerResolutionFilename*/, TInt /*aStartingSequenceNumber*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamPreImageCaptureControl::GetDirectSavingTypeL(CCamera::CCameraPreImageCaptureControl::TDirectSavingType& aDirectSavingType) const
+ {
+ aDirectSavingType = CCamera::CCameraPreImageCaptureControl::EDirectSavingNotUsed;
+ }
+
+void CCamPreImageCaptureControl::SetDirectSavingTypeL(CCamera::CCameraPreImageCaptureControl::TDirectSavingType /*aDirectSavingType*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamPreImageCaptureControl::GetCaptureEventSupportInfoL(TUint& aSupportedDriveModes) const
+ {
+ aSupportedDriveModes = 0;
+ }
+
+void CCamPreImageCaptureControl::GetImageFormatsSupportedL(TUint& aImageFormatsSupported, const TSize& /*aSize*/) const
+ {
+ aImageFormatsSupported = CCamera::EFormatFbsBitmapColor16M;
+ }
+
+void CCamPreImageCaptureControl::GetPixelAspectsSupportedL(TUint& aPixelAspectsSupported, CCamera::TFormat /*aImageFormat*/, const TSize& /*aSize*/) const
+ {
+ aPixelAspectsSupported = CCamera::CCameraAdvancedSettings::EPixelAspect1To1;
+ }
+
+void CCamPreImageCaptureControl::PrepareImageCapture(const CCamera::CCameraPreImageCaptureControl::TPrepareImageParameters&
+ aPrepareImageParameters, MCaptureImageObserver& aCaptureImageObserver)
+ {
+ //perform any prepare operation at hardware level eg. memory allocation etc.
+ CCamera::CCameraImageCapture* cameraImageCapture = NULL;
+
+ TRAPD(err,CreateCaptureImageL(cameraImageCapture, aPrepareImageParameters, aCaptureImageObserver));
+
+ PreImageCaptureControlObserver()->PrepareImageComplete(cameraImageCapture, err);
+ }
+
+void CCamPreImageCaptureControl::GetImageMaxMemorySizeSettingSupportInfoL(TBool& aIsImageMaxMemorySizeSettingSupported) const
+ {
+ aIsImageMaxMemorySizeSettingSupported = EFalse;
+ }
+
+void CCamPreImageCaptureControl::GetImageMaxMemorySizeL(TUint& /*aMemorySize*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamPreImageCaptureControl::GetSupportedProcessingOptionsL(TUint& /*aSupportedProcessingOptions*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamPreImageCaptureControl::CreateCaptureImageL(CCamera::CCameraImageCapture*& aCameraImageCapture, const CCamera::
+ CCameraPreImageCaptureControl::TPrepareImageParameters& aPrepareImageParameters, MCaptureImageObserver& aCaptureImageObserver)
+ {
+ CCamera::CCameraImageCapture* cameraImageCapture = CCamera::CCameraImageCapture::CreateL(iOwner, aPrepareImageParameters, aCaptureImageObserver);
+ aCameraImageCapture = cameraImageCapture;
+ }
+
+//
+//image capture impl
+CCamImageCapture* CCamImageCapture::NewL(CCamUnitTestPlugin& aOwner)
+ {
+ return new(ELeave) CCamImageCapture(aOwner);
+ }
+
+CCamImageCapture::CCamImageCapture(CCamUnitTestPlugin& aOwner) : iOwner(aOwner),
+ iCaptureImageObserver(NULL),
+ iSnapshotImpForImage(NULL),
+ iCamImgProcImpForImage(NULL),
+ iCameraImageCapture(NULL)
+ {
+ iArrayPostCaptureControlId.Reset();
+ iArrayPostCaptureControlHandle.Reset();
+ iArrayPostCaptureControlImpl.Reset();
+ }
+
+CCamImageCapture::~CCamImageCapture()
+ {
+ iArrayPostCaptureControlId.Close();
+ iArrayPostCaptureControlHandle.Reset();
+ iArrayPostCaptureControlImpl.Reset();
+ iArrayPostCaptureControlHandle.Close();
+ iArrayPostCaptureControlImpl.Close();
+ }
+
+void CCamImageCapture::Release(CCamera::CCameraImageCapture* /*aCameraImageCapture*/)
+ {
+ delete this;
+ }
+
+void CCamImageCapture::CreateHistogramImplFactoryL(MImplementationFactory*& aImplFactoryPtr) const
+ {
+ aImplFactoryPtr = CHistogramFactoryForImage::NewL(const_cast<CCamImageCapture&>(*this));
+ }
+
+void CCamImageCapture::GetSnapshotImplFactoryL(MImplementationFactory*& aImplFactoryPtr) const
+ {
+ aImplFactoryPtr = CSnapshotFactoryForImage::NewL(const_cast<CCamImageCapture&>(*this), iSnapshotImpForImage);
+ }
+
+void CCamImageCapture::GetImageProcessingImplFactoryL(MImplementationFactory*& aImplFactoryPtr) const
+ {
+ aImplFactoryPtr = CImgProcFactoryForImage::NewL(const_cast<CCamImageCapture&>(*this), iCamImgProcImpForImage);
+ }
+
+void CCamImageCapture::SetCaptureImageObserver(MCaptureImageObserver& aCaptureImageObserver)
+ {
+ iCaptureImageObserver = &aCaptureImageObserver;
+ }
+
+void CCamImageCapture::GetPrepareImageParametersL(CCamera::CCameraPreImageCaptureControl::TPrepareImageParameters& aPrepareImageParameters) const
+ {
+ if(aPrepareImageParameters.Size() != sizeof(CCamera::CCameraPreImageCaptureControl::TPrepareImageParameters) ||
+ aPrepareImageParameters.Version() != KECamPrepareImageParametersCurrentVersion)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+ if(aPrepareImageParameters.iDriveModeAttributes.Size() != sizeof(CCamera::CCameraPreImageCaptureControl::TDriveModeDependentAttributes) ||
+ aPrepareImageParameters.iDriveModeAttributes.Version() != KECamDriveModeDependentAttributesCurrentVersion)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+ aPrepareImageParameters = iPrepareImageParameters;
+ }
+
+void CCamImageCapture::SetPrepareImageParameters(const CCamera::CCameraPreImageCaptureControl::TPrepareImageParameters& aPrepareImageParameters)
+ {
+ iPrepareImageParameters = aPrepareImageParameters;
+ }
+
+TAny* CCamImageCapture::CreatePostImageCaptureControlImpl(TUid aInterface, TPostCaptureControlId aPostCaptureControlId)
+ {
+ TInt err=KErrNone;
+ if(aInterface.iUid == KECamMCameraPostImageCaptureControlUidValue)
+ {
+ if(iArrayPostCaptureControlId.Find(aPostCaptureControlId) == KErrNotFound)
+ {
+ CCamPostImageCaptureControl* camPostImageCaptureControl = NULL;
+ TRAP(err, camPostImageCaptureControl = CCamPostImageCaptureControl::NewL(const_cast<CCamImageCapture&>(*this)));
+
+ if (err == KErrNone)
+ {
+ err = iArrayPostCaptureControlId.Append(aPostCaptureControlId);
+ if(err == KErrNone)
+ {
+ err = iArrayPostCaptureControlImpl.Append(camPostImageCaptureControl);
+ if(err != KErrNone)
+ {
+ iArrayPostCaptureControlId.Remove(iArrayPostCaptureControlId.Count()-1);
+ delete camPostImageCaptureControl;
+ return NULL;
+ }
+ else
+ {
+ return static_cast<MCameraPostImageCaptureControl*>(camPostImageCaptureControl);
+ }
+ }
+ else
+ {
+ delete camPostImageCaptureControl;
+ return NULL;
+ }
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+
+void CCamImageCapture::CaptureImage(CCamera::CCameraImageCapture* aCameraImageCapture)
+ {
+ TInt count = iArrayPostCaptureControlId.Count();
+ while(count > 0)
+ {
+ iArrayPostCaptureControlId.Remove(count-1);
+ iArrayPostCaptureControlImpl.Remove(count-1);
+ delete iArrayPostCaptureControlHandle[count-1];
+ iArrayPostCaptureControlHandle.Remove(count-1);
+
+ count = iArrayPostCaptureControlId.Count();
+ }
+
+ iCameraImageCapture = aCameraImageCapture;
+
+ //this will create Post Image capture control object. assume one such object is required. ( for demo purpose only)
+ CCamera::CCameraPostImageCaptureControl* postImageCaptureControl = NULL;
+
+ TRAPD(err,CreatePostImageCaptureControlL(postImageCaptureControl, 1));
+
+ if(err == KErrNone)
+ {
+ err = iArrayPostCaptureControlHandle.Append(postImageCaptureControl);
+ if(err != KErrNone)
+ {
+ iArrayPostCaptureControlId.Remove(iArrayPostCaptureControlId.Count()-1);
+ iArrayPostCaptureControlImpl.Remove(iArrayPostCaptureControlImpl.Count()-1);
+ delete postImageCaptureControl;
+ }
+ else
+ {
+ CaptureImageObserver()->IndividualImageControlHandle(*iCameraImageCapture, 1);
+ }
+ }
+
+ CaptureImageObserver()->ImageCaptureComplete(*iCameraImageCapture, KErrNotSupported);
+ }
+
+void CCamImageCapture::CancelCaptureImage()
+ {
+ return;
+ }
+
+void CCamImageCapture::GetNumImagesExposedL(TUint& /*aNumImagesExposed*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamImageCapture::GetNumTotalImagesL(TUint& aNumTotalImages) const
+ {
+ aNumTotalImages = 1;
+ }
+
+void CCamImageCapture::GetPostCaptureControlHandleL(CCamera::CCameraPostImageCaptureControl*& aPostCaptureControlHandle,
+ TPostCaptureControlId aPostCaptureControlId) const
+ {
+ TInt index = iArrayPostCaptureControlId.Find(aPostCaptureControlId);
+ User::LeaveIfError(index);
+
+ aPostCaptureControlHandle = iArrayPostCaptureControlHandle[index];
+ }
+
+void CCamImageCapture::SetCaptureImagePriorityL(TECamImagePriority /*aCaptureImagePriority*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamImageCapture::GetCaptureImagePriorityL(TECamImagePriority& /*aCaptureImagePriority*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamImageCapture::PauseProcessing(TUint /*aProcessingType*/)
+ {
+ return;
+ }
+
+void CCamImageCapture::ResumeProcessingL(TUint /*aProcessingType*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamImageCapture::CreatePostImageCaptureControlL(CCamera::CCameraPostImageCaptureControl*& aPostCaptureControlHandle,
+ TPostCaptureControlId aPostCaptureControlId)
+ {
+ CCamera::CCameraPostImageCaptureControl* postImageCaptureControl = CCamera::CCameraPostImageCaptureControl::
+ CreateL(iCameraImageCapture, aPostCaptureControlId);
+
+ aPostCaptureControlHandle = postImageCaptureControl;
+ }
+
+//
+//post image capture control impl
+
+CCamPostImageCaptureControl* CCamPostImageCaptureControl::NewL(CCamImageCapture& aCamImageCaptureImpl)
+ {
+ return new(ELeave) CCamPostImageCaptureControl(aCamImageCaptureImpl);
+ }
+
+CCamPostImageCaptureControl::CCamPostImageCaptureControl(CCamImageCapture& aCamImageCaptureImpl) :
+ iCamImageCaptureImpl(aCamImageCaptureImpl)
+ {
+ }
+
+CCamPostImageCaptureControl::~CCamPostImageCaptureControl()
+ {
+ }
+
+void CCamPostImageCaptureControl::Release(TPostCaptureControlId aPostCaptureControlId)
+ {
+ //remove this id from the CCamImageCapture arrays
+ TInt index = iCamImageCaptureImpl.iArrayPostCaptureControlId.Find(aPostCaptureControlId);
+
+ if(index >=0 )
+ {
+ iCamImageCaptureImpl.iArrayPostCaptureControlId.Remove(index);
+ iCamImageCaptureImpl.iArrayPostCaptureControlImpl.Remove(index);
+ iCamImageCaptureImpl.iArrayPostCaptureControlHandle.Remove(index);
+ }
+
+ delete this;
+ }
+
+void CCamPostImageCaptureControl::GetImageSequenceNumberL(TUint& /*aSequenceNumber*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamPostImageCaptureControl::CancelImage()
+ {
+ return;
+ }
+
+void CCamPostImageCaptureControl::SetImagePriorityL(TECamImagePriority /*aImagePriority*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamPostImageCaptureControl::GetImagePriorityL(TECamImagePriority& /*aImagePriority*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamPostImageCaptureControl::PauseProcessing(TUint /*aProcessingType*/)
+ {
+ return;
+ }
+
+void CCamPostImageCaptureControl::ResumeProcessingL(TUint /*aProcessingType*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamPostImageCaptureControl::GetImageBufferL(MCameraImageBuffer& /*aCameraImageBuffer*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamPostImageCaptureControl::GetImageStateL(CCamera::CCameraPostImageCaptureControl::TImageState& /*aImageState*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamPostImageCaptureControl::GetBufferStateL(CCamera::CCameraPostImageCaptureControl::TBufferState& /*aBufferState*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+//
+//video capture control impl
+
+CCamVideoCaptureControl* CCamVideoCaptureControl::NewL(CCamUnitTestPlugin& aOwner)
+ {
+ CCamVideoCaptureControl* self = new(ELeave) CCamVideoCaptureControl(aOwner);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+void CCamVideoCaptureControl::ConstructL()
+ {
+ User::LeaveIfError(RFbsSession::Connect());
+
+ iBitmap = new(ELeave) CFbsBitmap;
+ User::LeaveIfError(iBitmap->Create(TSize(320,240), EColor16M));
+ }
+
+CCamVideoCaptureControl::CCamVideoCaptureControl(CCamUnitTestPlugin& aOwner) :
+ iOwner(aOwner),
+ iCaptureVideoObserver(NULL),
+ iSnapshotImpForVideo(NULL)
+ {
+ }
+
+CCamVideoCaptureControl::~CCamVideoCaptureControl()
+ {
+ delete iBitmap;
+ RFbsSession::Disconnect();
+ }
+
+void CCamVideoCaptureControl::Release()
+ {
+ delete this;
+ }
+
+void CCamVideoCaptureControl::CreateHistogramImplFactoryL(MImplementationFactory*& aImplFactoryPtr) const
+ {
+ aImplFactoryPtr = CHistogramFactoryForVideo::NewL(const_cast<CCamVideoCaptureControl&>(*this));
+ }
+
+void CCamVideoCaptureControl::GetSnapshotImplFactoryL(MImplementationFactory*& aImplFactoryPtr) const
+ {
+ aImplFactoryPtr = CSnapshotFactoryForVideo::NewL(const_cast<CCamVideoCaptureControl&>(*this), iSnapshotImpForVideo);
+ }
+
+void CCamVideoCaptureControl::GetImageProcessingImplFactoryL(MImplementationFactory*& aImplFactoryPtr) const
+ {
+ aImplFactoryPtr = NULL;
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamVideoCaptureControl::SetCaptureVideoObserver(MCaptureVideoObserver& aCaptureVideoObserver)
+ {
+ iCaptureVideoObserver = &aCaptureVideoObserver;
+ }
+
+void CCamVideoCaptureControl::GetVideoFormatsSupportedL(TUint& aVideoFormatsSupported, const TSize& /*aSize*/) const
+ {
+ aVideoFormatsSupported = CCamera::EFormatFbsBitmapColor16M;
+ }
+
+void CCamVideoCaptureControl::GetPixelAspectsSupportedL(TUint& aPixelAspectsSupported, CCamera::TFormat /*aVideoFormat*/, const TSize& /*aSize*/) const
+ {
+ aPixelAspectsSupported = CCamera::CCameraAdvancedSettings::EPixelAspect1To1;
+ }
+
+void CCamVideoCaptureControl::GetEmbeddedStillCaptureSupportInfoL(TInt& aSupportedEmbeddedStillCaptureTypes) const
+ {
+ aSupportedEmbeddedStillCaptureTypes = CCamera::CCameraVideoCaptureControl::EEmbeddedStillCaptureNotSupported;
+ }
+
+void CCamVideoCaptureControl::PrepareVideoCapture(const CCamera::CCameraVideoCaptureControl::TPrepareVideoParameters& aPrepareVideoParameters)
+ {
+ if(((aPrepareVideoParameters.Size() != sizeof(CCamera::CCameraVideoCaptureControl::TPrepareVideoParameters)) ||
+ aPrepareVideoParameters.Version() != KECamPrepareVideoParametersCurrentVersion))
+ {
+ iOwner.Notify(KUidECamEventVideoCaptureControlPrepareComplete, KErrNotSupported);
+ }
+
+ iPrepareVideoParameters = aPrepareVideoParameters;
+
+ iOwner.Notify(KUidECamEventVideoCaptureControlPrepareComplete, KErrNone);
+ }
+
+void CCamVideoCaptureControl::GetRangeAffectedSettingsL(RArray<TUid>& aRangeAffectedSettings) const
+ {
+ aRangeAffectedSettings.Reset();
+ }
+
+void CCamVideoCaptureControl::GetValueAffectedSettingsL(RArray<TUid>& aValueAffectedSettings) const
+ {
+ aValueAffectedSettings.Reset();
+ }
+
+void CCamVideoCaptureControl::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const
+ {
+ aDisabledSettings.Reset();
+ }
+
+void CCamVideoCaptureControl::ReleaseVideoResource()
+ {
+ return;
+ }
+
+void CCamVideoCaptureControl::StartVideoCaptureL()
+ {
+ RCamBuffer2 videoBuffer(iBitmap);
+
+ if(iPrepareVideoParameters.VideoCaptureType() != CCamera::CCameraVideoCaptureControl::EVideoCaptureNotSupported)
+ {
+ CaptureVideoObserver()->DirectVideoCaptureFailed(KErrNotSupported);
+ }
+ else
+ {
+ if(iPrepareVideoParameters.VideoCaptureType() != CCamera::CCameraVideoCaptureControl::EClientVideoCapture)
+ {
+ CaptureVideoObserver()->VideoBufferReady(NULL, KErrNotSupported);
+ }
+ }
+ }
+
+void CCamVideoCaptureControl::StopVideoCapture()
+ {
+ }
+
+void CCamVideoCaptureControl::PauseVideoCapture()
+ {
+ return;
+ }
+
+void CCamVideoCaptureControl::ResumeVideoCaptureL()
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamVideoCaptureControl::GetFadingEffectStateL(CCamera::CCameraVideoCaptureControl::TFadingEffectState& /*aFadingEffectState*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamVideoCaptureControl::SetFadingEffectState(CCamera::CCameraVideoCaptureControl::TFadingEffectState /*aFadingEffectState*/)
+ {
+ iOwner.Notify(KUidECamEventVideoCaptureControlFadingEffect, KErrNotSupported);
+ }
+
+void CCamVideoCaptureControl::GetVideoCaptureStateL(CCamera::CCameraVideoCaptureControl::TVideoCaptureState& /*aVideoCaptureState*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamVideoCaptureControl::GetVideoCaptureSupportInfoL(TInt& aSupportedVideoCaptureTypes) const
+ {
+ aSupportedVideoCaptureTypes = KSupportedDirectVCType;
+ }
+
+void CCamVideoCaptureControl::GetPrepareVideoParametersL(CCamera::CCameraVideoCaptureControl::TPrepareVideoParameters& aPrepareVideoParameters) const
+ {
+ aPrepareVideoParameters = iPrepareVideoParameters;
+ }
+
+
+//
+//Direct Snapshot impl for version2 direct viewfinder
+//
+CCamDirectSnapshot::CCamDirectSnapshot() : iCameraV2DirectVF(NULL),
+ iDirectSnapshotState(CCamera::CCameraDirectSnapshot::EDirectSnapshotDisabled)
+ {
+ }
+
+CCamDirectSnapshot* CCamDirectSnapshot::NewL()
+ {
+ return new (ELeave) CCamDirectSnapshot;
+ }
+
+CCamDirectSnapshot::~CCamDirectSnapshot()
+ {
+ }
+
+void CCamDirectSnapshot::Release()
+ {
+ delete this;
+ }
+
+void CCamDirectSnapshot::SetDirectViewFinder(const CCamera::CCameraV2DirectViewFinder* aDirectViewFinder)
+ {
+ iCameraV2DirectVF = aDirectViewFinder;
+ }
+
+void CCamDirectSnapshot::GetDirectViewFinderL(CCamera::CCameraV2DirectViewFinder*& aDirectViewFinder) const
+ {
+ aDirectViewFinder = const_cast<CCamera::CCameraV2DirectViewFinder*>(iCameraV2DirectVF);
+ }
+
+void CCamDirectSnapshot::EnableDirectSnapshotL(CCamera::CCameraDirectSnapshot::TDirectSnapshotParameters& aDirectSnapshotParameters)
+ {
+ iDirectSnapshotState = CCamera::CCameraDirectSnapshot::EDirectSnapshotEnabled;
+ iDirectSnapshotParameters = aDirectSnapshotParameters;
+ }
+
+void CCamDirectSnapshot::DisableDirectSnapshot()
+ {
+ iDirectSnapshotState = CCamera::CCameraDirectSnapshot::EDirectSnapshotDisabled;
+ }
+
+void CCamDirectSnapshot::GetDirectSnapshotStateL(CCamera::CCameraDirectSnapshot::TDirectSnapshotState& aDirectSnapshotState) const
+ {
+ aDirectSnapshotState = iDirectSnapshotState;
+ }
+
+void CCamDirectSnapshot::GetDirectSnapshotParametersL(CCamera::CCameraDirectSnapshot::TDirectSnapshotParameters& aDirectSnapshotParameters) const
+ {
+ aDirectSnapshotParameters = iDirectSnapshotParameters;
+ }
+
+void CCamDirectSnapshot::SetDirectSnapshotParametersL(const CCamera::CCameraDirectSnapshot::TDirectSnapshotParameters& aDirectSnapshotParameters)
+ {
+ iDirectSnapshotParameters = aDirectSnapshotParameters;
+ }
+
+//
+//V2 direct viewfinder impl
+//
+CCamV2DirectViewFinder* CCamV2DirectViewFinder::NewL(CCamUnitTestPlugin& aOwner)
+ {
+ CDataGlobal* globalData = static_cast <CDataGlobal*> (Dll::Tls());
+
+ if(!globalData)
+ {
+ globalData = new (ELeave) CDataGlobal;
+ CleanupStack::PushL(globalData);
+
+ globalData->iReferenceCount = 0;
+ globalData->iCamV2DirectViewFinder = new (ELeave) CCamV2DirectViewFinder(aOwner);
+ globalData->iCamV2DirectViewFinder->iRefCount = 1;
+
+ TInt error = Dll::SetTls(globalData);
+ if (error)
+ {
+ delete globalData->iCamV2DirectViewFinder;
+ User::Leave(error);
+ }
+ CleanupStack::Pop(globalData);
+
+ return static_cast <CCamV2DirectViewFinder*> (globalData->iCamV2DirectViewFinder);
+ }
+ else
+ {
+ CCamV2DirectViewFinder* self = globalData->iCamV2DirectViewFinder;
+
+ globalData->iReferenceCount++;
+ self->iRefCount = globalData->iReferenceCount + 1;
+ if (globalData->iReferenceCount == 1)
+ {
+ delete globalData;
+ Dll::FreeTls();
+ }
+ else
+ {
+ TInt error = Dll::SetTls(globalData);
+ if (error)
+ {
+ delete globalData->iCamV2DirectViewFinder;
+ User::Leave(error);
+ }
+ }
+ return static_cast <CCamV2DirectViewFinder*> (self);
+ }
+ }
+
+CCamV2DirectViewFinder::CCamV2DirectViewFinder(CCamUnitTestPlugin& aOwner) : iOwner(aOwner), iVFHandle(0), iDirectSnapshot(NULL)
+ {
+ //dummy scheme or impl dependent scheme
+ //server may generate unique handle no. for each such objects
+ iOwner.GenerateVFHandle(iVFHandle);
+ }
+
+CCamV2DirectViewFinder::~CCamV2DirectViewFinder()
+ {
+ Dll::FreeTls();
+ }
+
+void CCamV2DirectViewFinder::Release(CCamera::CCameraV2DirectViewFinder* /*aDirectViewFinderHandle*/)
+ {
+ iRefCount--;
+ if(!iRefCount)
+ {
+ delete this;
+ }
+ }
+
+void CCamV2DirectViewFinder::Release()
+ {
+ iRefCount--;
+ if(!iRefCount)
+ {
+ delete this;
+ }
+ }
+
+void CCamV2DirectViewFinder::GetViewFinderFadingCapabilitiesL(CCameraViewFinder::TViewFinderFadingCapabilities& aVFFadingCapabilities) const
+ {
+ if((aVFFadingCapabilities.Size() != sizeof(CCameraViewFinder::TViewFinderFadingCapabilities)) ||
+ (aVFFadingCapabilities.Version() != KECamViewFinderFadingCapabilitiesCurrentVersion))
+ {
+ User::Leave(KErrNotSupported);
+ }
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamV2DirectViewFinder::GetViewFinderFadingEffectL(CCameraViewFinder::TViewFinderFadingEffect& aCurrentVFFadingEffect) const
+ {
+ if((aCurrentVFFadingEffect.Size() != sizeof(CCameraViewFinder::TViewFinderFadingEffect)) ||
+ (aCurrentVFFadingEffect.Version() != KECamViewFinderFadingEffectCurrentVersion))
+ {
+ User::Leave(KErrNotSupported);
+ }
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamV2DirectViewFinder::SetViewFinderFadingEffect(const CCameraViewFinder::TViewFinderFadingEffect& /*aVFFadingEffect*/)
+ {
+ iOwner.Notify2(KUidECamEvent2ViewFinderFadingEffect, KErrNotSupported, iVFHandle);
+ }
+
+void CCamV2DirectViewFinder::GetViewFinderHandleL(TInt& aVFHandle) const
+ {
+ aVFHandle = iVFHandle;
+ }
+
+void CCamV2DirectViewFinder::CreateHistogramImplFactoryL(MImplementationFactory*& aImplFactoryPtr) const
+ {
+ aImplFactoryPtr = CHistogramFactoryForDirectViewFinder::NewL(const_cast<CCamV2DirectViewFinder&>(*this));
+ }
+
+void CCamV2DirectViewFinder::GetImageProcessingImplFactoryL(MImplementationFactory*& aImplFactoryPtr) const
+ {
+ aImplFactoryPtr = NULL;
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamV2DirectViewFinder::SetDirectViewFinderObserver(MDirectViewFinderObserver& aDirectViewFinderObserver)
+ {
+ iDirectViewFinderObserver = &aDirectViewFinderObserver;
+ }
+
+void CCamV2DirectViewFinder::SetDirectViewFinderHandle(CCamera::CCameraV2DirectViewFinder* aDirectViewFinderHandle)
+ {
+ iDirectViewFinderHandle = aDirectViewFinderHandle;
+ }
+
+void CCamV2DirectViewFinder::StartViewFinderDirectL(RWsSession& /*aWs*/, CWsScreenDevice& /*aScreenDevice*/, RWindowBase& /*aWindow*/, TRect& /*aScreenRect*/)
+ {
+ DirectViewFinderObserver()->DirectViewFinderFirstFrameDisplayed(DirectViewFinderHandle(), KErrNotSupported);
+ }
+
+void CCamV2DirectViewFinder::StartViewFinderDirectL(RWsSession& /*aWs*/, CWsScreenDevice& /*aScreenDevice*/, RWindowBase& /*aWindow*/, TRect& /*aScreenRect*/, TRect& /*aClipRect*/)
+ {
+ DirectViewFinderObserver()->DirectViewFinderFirstFrameDisplayed(DirectViewFinderHandle(), KErrNotSupported);
+ }
+
+void CCamV2DirectViewFinder::GetDirectViewFinderPropertiesL(TInt& /*aScreenNumber*/, TRect& /*aScreenRect*/, TRect& /*aClipRect*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamV2DirectViewFinder::PauseViewFinderDirect()
+ {
+ return;
+ }
+
+void CCamV2DirectViewFinder::ResumeViewFinderDirect()
+ {
+ DirectViewFinderObserver()->DirectViewFinderFirstFrameDisplayed(DirectViewFinderHandle(), KErrNotSupported);
+ }
+
+void CCamV2DirectViewFinder::GetViewFinderStateL(CCamera::CCameraV2DirectViewFinder::TViewFinderState& /*aViewFinderState*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamV2DirectViewFinder::StopDirectViewFinder()
+ {
+ return;
+ }
+
+/* Dummy test*/
+TAny* CCamV2DirectViewFinder::GetDirectSnapshotImpl(TUid aInterface) const
+ {
+ switch(aInterface.iUid)
+ {
+ case KECamMCameraDirectSnapshotUidValue:
+ {
+ if(iDirectSnapshot == NULL)
+ {
+ TRAPD(err,iDirectSnapshot = CCamDirectSnapshot::NewL());
+ if (err != KErrNone)
+ {
+ return NULL;
+ }
+ }
+ return static_cast<MCameraDirectSnapshot*>(iDirectSnapshot);
+ }
+ default:
+ return NULL;
+ }
+ }
+
+//
+//Client viewfinder impl
+CCamClientViewFinder* CCamClientViewFinder::NewL(CCamUnitTestPlugin& aOwner)
+ {
+ CDataGlobal* globalData = static_cast <CDataGlobal*> (Dll::Tls());
+
+ if(!globalData)
+ {
+ globalData = new (ELeave) CDataGlobal;
+ CleanupStack::PushL(globalData);
+
+ globalData->iReferenceCount = 0;
+ globalData->iCamClientViewFinder = new (ELeave) CCamClientViewFinder(aOwner);
+ globalData->iCamClientViewFinder->iRefCount = 1;
+
+ TInt error = Dll::SetTls(globalData);
+ if (error)
+ {
+ delete globalData->iCamClientViewFinder;
+ User::Leave(error);
+ }
+ CleanupStack::Pop(globalData);
+
+ return static_cast <CCamClientViewFinder*> (globalData->iCamClientViewFinder);
+ }
+ else
+ {
+ CCamClientViewFinder* self = globalData->iCamClientViewFinder;
+
+ globalData->iReferenceCount++;
+ self->iRefCount = globalData->iReferenceCount + 1;
+ if (globalData->iReferenceCount == 1)
+ {
+ delete globalData;
+ Dll::FreeTls();
+ }
+ else
+ {
+ TInt error = Dll::SetTls(globalData);
+ if (error)
+ {
+ delete globalData->iCamClientViewFinder;
+ User::Leave(error);
+ }
+ }
+ return static_cast <CCamClientViewFinder*> (self);
+ }
+ }
+
+CCamClientViewFinder::CCamClientViewFinder(CCamUnitTestPlugin& aOwner) : iOwner(aOwner), iVFHandle(0)
+ {
+ //dummy scheme or impl dependent scheme
+ //server may generate unique handle no. for each such objects
+ iOwner.GenerateVFHandle(iVFHandle);
+ }
+
+CCamClientViewFinder::~CCamClientViewFinder()
+ {
+ Dll::FreeTls();
+ }
+
+void CCamClientViewFinder::Release(CCamera::CCameraClientViewFinder* /*aClientViewFinderHandle*/)
+ {
+ iRefCount--;
+ if(!iRefCount)
+ {
+ delete this;
+ }
+ }
+
+void CCamClientViewFinder::Release()
+ {
+ iRefCount--;
+ if(!iRefCount)
+ {
+ delete this;
+ }
+ }
+
+void CCamClientViewFinder::GetViewFinderFadingCapabilitiesL(CCameraViewFinder::TViewFinderFadingCapabilities& aVFFadingCapabilities) const
+ {
+ if((aVFFadingCapabilities.Size() != sizeof(CCameraViewFinder::TViewFinderFadingCapabilities)) ||
+ (aVFFadingCapabilities.Version() != KECamViewFinderFadingCapabilitiesCurrentVersion))
+ {
+ User::Leave(KErrNotSupported);
+ }
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamClientViewFinder::GetViewFinderFadingEffectL(CCameraViewFinder::TViewFinderFadingEffect& aCurrentVFFadingEffect) const
+ {
+ if((aCurrentVFFadingEffect.Size() != sizeof(CCameraViewFinder::TViewFinderFadingEffect)) ||
+ (aCurrentVFFadingEffect.Version() != KECamViewFinderFadingEffectCurrentVersion))
+ {
+ User::Leave(KErrNotSupported);
+ }
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamClientViewFinder::SetViewFinderFadingEffect(const CCameraViewFinder::TViewFinderFadingEffect& /*aVFFadingEffect*/)
+ {
+ iOwner.Notify2(KUidECamEvent2ViewFinderFadingEffect, KErrNotSupported, iVFHandle);
+ }
+
+void CCamClientViewFinder::GetViewFinderHandleL(TInt& aVFHandle) const
+ {
+ aVFHandle = iVFHandle;
+ }
+
+void CCamClientViewFinder::CreateHistogramImplFactoryL(MImplementationFactory*& aImplFactoryPtr) const
+ {
+ aImplFactoryPtr = CHistogramFactoryForClientViewFinder::NewL(const_cast<CCamClientViewFinder&>(*this));
+ }
+
+void CCamClientViewFinder::GetImageProcessingImplFactoryL(MImplementationFactory*& aImplFactoryPtr) const
+ {
+ aImplFactoryPtr = NULL;
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamClientViewFinder::SetClientViewFinderObserver(MClientViewFinderObserver& aClientViewFinderObserver)
+ {
+ iClientViewFinderObserver = &aClientViewFinderObserver;
+ }
+
+void CCamClientViewFinder::SetClientViewFinderHandle(CCamera::CCameraClientViewFinder* aClientViewFinderHandle)
+ {
+ iClientViewFinderHandle = aClientViewFinderHandle;
+ }
+
+void CCamClientViewFinder::StartClientViewFinderL(TInt /*aScreenNumber*/, CCamera::TFormat /*aImageFormat*/, TSize& /*aSize*/)
+ {
+ ClientViewFinderObserver()->ViewFinderBufferReady(ClientViewFinderHandle(), KErrNotSupported);
+ }
+
+void CCamClientViewFinder::StartClientViewFinderL(TInt /*aScreenNumber*/, CCamera::TFormat /*aImageFormat*/, TSize& /*aSize*/, TRect& /*aClipRect*/)
+ {
+ ClientViewFinderObserver()->ViewFinderBufferReady(ClientViewFinderHandle(), KErrNotSupported);
+ }
+
+void CCamClientViewFinder::GetClientViewFinderStateL(TBool& /*aIsActive*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamClientViewFinder::GetClientViewFinderPropertiesL(TInt& /*aScreenNumber*/, CCamera::TFormat& /*aImageFormat*/, TSize& /*aSize*/, TRect& /*aClipRect*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamClientViewFinder::StopClientViewFinder()
+ {
+ return;
+ }
+
+void CCamClientViewFinder::GetViewFinderBufferL(MCameraBuffer2& /*aClientViewFinderBuffer*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+//
+//Snapshot impl for Image
+CCamSnapshotForImage* CCamSnapshotForImage::NewL(CCamUnitTestPlugin& aOwner, CCamImageCapture& aCamImageCaptureImpl)
+ {
+ CCamSnapshotForImage* self = new(ELeave) CCamSnapshotForImage(aOwner, aCamImageCaptureImpl);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+void CCamSnapshotForImage::ConstructL()
+ {
+ User::LeaveIfError(RFbsSession::Connect());
+
+ iBitmap = new(ELeave) CFbsBitmap;
+ User::LeaveIfError(iBitmap->Create(TSize(320,240), EColor16M));
+ }
+
+CCamSnapshotForImage::CCamSnapshotForImage(CCamUnitTestPlugin& aOwner, CCamImageCapture& aCamImageCaptureImpl)
+ : iOwner(aOwner),
+ iCamImageCaptureImpl(aCamImageCaptureImpl),
+ iSnapshotbuffer(iBitmap),
+ iRefCount(2)
+ {
+ }
+
+CCamSnapshotForImage::~CCamSnapshotForImage()
+ {
+ delete iBitmap;
+ RFbsSession::Disconnect();
+ }
+
+TUint32 CCamSnapshotForImage::SupportedFormats()
+ {
+ return CCamera::EFormatFbsBitmapColor16M;
+ }
+
+void CCamSnapshotForImage::PrepareSnapshotL(CCamera::TFormat /*aFormat*/, const TPoint& /*aPosition*/, const TSize& /*aSize*/, const TRgb& /*aBgColor*/, TBool /*aMaintainAspectRatio*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamSnapshotForImage::PrepareSnapshotL(CCamera::TFormat /*aFormat*/, const TSize& /*aSize*/, TBool /*aMaintainAspectRatio*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamSnapshotForImage::SetBgColorL(const TRgb& /*aBgColor*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamSnapshotForImage::SetPositionL(const TPoint& /*aPosition*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+TBool CCamSnapshotForImage::IsSnapshotActive() const
+ {
+ return EFalse;
+ }
+
+void CCamSnapshotForImage::StartSnapshot()
+ {
+ return;
+ }
+
+void CCamSnapshotForImage::StopSnapshot()
+ {
+ return;
+ }
+
+MCameraBuffer& CCamSnapshotForImage::SnapshotDataL(RArray<TInt>& /*aFrameIndexOrder*/)
+ {
+ User::Leave(KErrNotSupported);
+ return iSnapshotbuffer;
+ }
+
+void CCamSnapshotForImage::CreateHistogramImplFactoryL(MImplementationFactory*& aImplFactoryPtr) const
+ {
+ aImplFactoryPtr = CHistogramFactoryForImageSnapshot::NewL(const_cast<CCamSnapshotForImage&>(*this));
+ }
+
+void CCamSnapshotForImage::PrepareSnapshotL(const CCamera::CCameraSnapshot::TSnapshotParameters& aSnapshotParameters)
+ {
+ if( aSnapshotParameters.Size() != sizeof(CCamera::CCameraSnapshot::TSnapshotParameters) ||
+ aSnapshotParameters.Version() != KECamSnapshotParametersCurrentVersion )
+ {
+ User::Leave(KErrNotSupported);
+ }
+ iSnapshotParameters = aSnapshotParameters;
+ }
+
+void CCamSnapshotForImage::GetSnapshotParametersL(CCamera::CCameraSnapshot::TSnapshotParameters& aSnapshotParameters)
+ {
+ aSnapshotParameters = iSnapshotParameters;
+ }
+
+void CCamSnapshotForImage::SetSnapshotParametersL(const CCamera::CCameraSnapshot::TSnapshotParameters& aSnapshotParameters)
+ {
+ iSnapshotParameters = aSnapshotParameters;
+ }
+
+void CCamSnapshotForImage::GetSnapshotStatusL(CCamera::CCameraSnapshot::TSnapshotState& /*aSnapshotState*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamSnapshotForImage::SelectSnapshotVideoFramesL(CCamera::CCameraSnapshot::TSnapshotVideoFrames /*aSnapshotVideoFrames*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamSnapshotForImage::EnableSnapshot()
+ {
+ CamImageCaptureImpl().CaptureImageObserver()->ClientSnapshotForImageReady(CameraImageCapture(), 1, NULL, KErrNotSupported);
+ }
+
+void CCamSnapshotForImage::DisableSnapshot()
+ {
+ return;
+ }
+
+/* dummy */
+void CCamSnapshotForImage::SetClientViewFinderId(TInt /*aClientViewFinderId*/)
+ {
+ return;
+ }
+
+void CCamSnapshotForImage::Release()
+ {
+ iRefCount--;
+ if(iRefCount == 0)
+ {
+ delete this;
+ }
+ }
+
+//
+//Snapshot factory for Image
+CSnapshotFactoryForImage* CSnapshotFactoryForImage::NewL(CCamImageCapture& aCamImageCaptureImpl, CCamSnapshotForImage* aSnapshotImpForImage)
+ {
+ CSnapshotFactoryForImage* self = new(ELeave) CSnapshotFactoryForImage();
+
+ CleanupStack::PushL(self);
+ self->ConstructL(aCamImageCaptureImpl, aSnapshotImpForImage);
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+void CSnapshotFactoryForImage::ConstructL(CCamImageCapture& aCamImageCaptureImpl, CCamSnapshotForImage* aSnapshotImpForImage)
+ {
+ if(aSnapshotImpForImage == NULL)
+ {
+ iSnapshotImpForImage = CCamSnapshotForImage::NewL(aCamImageCaptureImpl.Owner(), aCamImageCaptureImpl);
+ aCamImageCaptureImpl.iSnapshotImpForImage = iSnapshotImpForImage;
+ }
+ }
+
+CSnapshotFactoryForImage::CSnapshotFactoryForImage() : iSnapshotImpForImage(NULL),
+ iIsSnapshotImpPassed(EFalse)
+ {
+ }
+
+CSnapshotFactoryForImage::~CSnapshotFactoryForImage()
+ {
+ if(!iIsSnapshotImpPassed)
+ {
+ delete iSnapshotImpForImage;
+ }
+ iSnapshotImpForImage = NULL;
+ }
+
+TInt CSnapshotFactoryForImage::GetImpl(TAny*& aIfPtr, TUid aIfaceUid) const
+ {
+ switch(aIfaceUid.iUid)
+ {
+ //fall through
+ case KECamMCameraSnapshotUidValue:
+ {
+ aIfPtr = static_cast<MCameraSnapshot*>(iSnapshotImpForImage);
+ iIsSnapshotImpPassed = ETrue;
+ return KErrNone;
+ }
+
+ case KECamMCameraSnapshot2UidValue:
+ {
+ aIfPtr = static_cast<MCameraSnapshot2*>(iSnapshotImpForImage);
+ iIsSnapshotImpPassed = ETrue;
+ return KErrNone;
+ }
+ default:
+ {
+ aIfPtr = NULL;
+ return KErrNotSupported;
+ }
+ }
+ }
+
+TInt CSnapshotFactoryForImage::GetImpl1(TAny*& /*aIfPtr*/, TUid /*aIfaceUid*/, TECamImplFactoryParam /*aParam1*/) const
+ {
+ return KErrNotSupported;
+ }
+
+TInt CSnapshotFactoryForImage::GetImpl2(TAny*& /*aIfPtr*/, TUid /*aIfaceUid*/, TECamImplFactoryParam /*aParam1*/, TECamImplFactoryParam /*aParam2*/) const
+ {
+ return KErrNotSupported;
+ }
+
+void CSnapshotFactoryForImage::Release()
+ {
+ delete this;
+ }
+
+//
+//Snapshot impl for Video
+CCamSnapshotForVideo* CCamSnapshotForVideo::NewL(CCamUnitTestPlugin& aOwner, CCamVideoCaptureControl& aCamVideoCaptureControlImpl)
+ {
+ CCamSnapshotForVideo* self = new(ELeave) CCamSnapshotForVideo(aOwner, aCamVideoCaptureControlImpl);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+void CCamSnapshotForVideo::ConstructL()
+ {
+ User::LeaveIfError(RFbsSession::Connect());
+
+ iBitmap = new(ELeave) CFbsBitmap;
+ User::LeaveIfError(iBitmap->Create(TSize(320,240), EColor16M));
+ }
+
+CCamSnapshotForVideo::CCamSnapshotForVideo(CCamUnitTestPlugin& aOwner, CCamVideoCaptureControl& aCamVideoCaptureControlImpl) :
+ iOwner(aOwner),
+ iCamVideoCaptureControlImpl(aCamVideoCaptureControlImpl),
+ iSnapshotbuffer(iBitmap),
+ iRefCount(2)
+
+ {
+ }
+
+CCamSnapshotForVideo::~CCamSnapshotForVideo()
+ {
+ delete iBitmap;
+ RFbsSession::Disconnect();
+ }
+
+TUint32 CCamSnapshotForVideo::SupportedFormats()
+ {
+ return CCamera::EFormatFbsBitmapColor16M;
+ }
+
+void CCamSnapshotForVideo::PrepareSnapshotL(CCamera::TFormat /*aFormat*/, const TPoint& /*aPosition*/, const TSize& /*aSize*/, const TRgb& /*aBgColor*/, TBool /*aMaintainAspectRatio*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamSnapshotForVideo::PrepareSnapshotL(CCamera::TFormat /*aFormat*/, const TSize& /*aSize*/, TBool /*aMaintainAspectRatio*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamSnapshotForVideo::SetBgColorL(const TRgb& /*aBgColor*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamSnapshotForVideo::SetPositionL(const TPoint& /*aPosition*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+TBool CCamSnapshotForVideo::IsSnapshotActive() const
+ {
+ return EFalse;
+ }
+
+void CCamSnapshotForVideo::StartSnapshot()
+ {
+ return;
+ }
+
+void CCamSnapshotForVideo::StopSnapshot()
+ {
+ return;
+ }
+
+MCameraBuffer& CCamSnapshotForVideo::SnapshotDataL(RArray<TInt>& /*aFrameIndexOrder*/)
+ {
+ User::Leave(KErrNotSupported);
+ return iSnapshotbuffer;
+ }
+
+void CCamSnapshotForVideo::CreateHistogramImplFactoryL(MImplementationFactory*& aImplFactoryPtr) const
+ {
+ aImplFactoryPtr = NULL;
+ }
+
+void CCamSnapshotForVideo::PrepareSnapshotL(const CCamera::CCameraSnapshot::TSnapshotParameters& aSnapshotParameters)
+ {
+ if( aSnapshotParameters.Size() != sizeof(CCamera::CCameraSnapshot::TSnapshotParameters) ||
+ aSnapshotParameters.Version() != KECamSnapshotParametersCurrentVersion )
+ {
+ User::Leave(KErrNotSupported);
+ }
+ iSnapshotParameters = aSnapshotParameters;
+ }
+
+void CCamSnapshotForVideo::GetSnapshotParametersL(CCamera::CCameraSnapshot::TSnapshotParameters& aSnapshotParameters)
+ {
+ aSnapshotParameters = iSnapshotParameters;
+ }
+
+void CCamSnapshotForVideo::SetSnapshotParametersL(const CCamera::CCameraSnapshot::TSnapshotParameters& aSnapshotParameters)
+ {
+ iSnapshotParameters = aSnapshotParameters;
+ }
+
+void CCamSnapshotForVideo::GetSnapshotStatusL(CCamera::CCameraSnapshot::TSnapshotState& /*aSnapshotState*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamSnapshotForVideo::SelectSnapshotVideoFramesL(CCamera::CCameraSnapshot::TSnapshotVideoFrames /*aSnapshotVideoFrames*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CCamSnapshotForVideo::EnableSnapshot()
+ {
+ CamVideoCaptureControlImpl().CaptureVideoObserver()->ClientSnapshotReady(NULL, KErrNotSupported);
+ }
+
+void CCamSnapshotForVideo::DisableSnapshot()
+ {
+ return;
+ }
+
+/* dummy */
+void CCamSnapshotForVideo::SetClientViewFinderId(TInt /*aClientViewFinderId*/)
+ {
+ return;
+ }
+
+void CCamSnapshotForVideo::Release()
+ {
+ iRefCount--;
+ if(iRefCount == 0)
+ {
+ delete this;
+ }
+ }
+
+//
+//snapshot factory for video
+CSnapshotFactoryForVideo* CSnapshotFactoryForVideo::NewL(CCamVideoCaptureControl& aCamVideoCaptureControlImpl, CCamSnapshotForVideo* aSnapshotImpForVideo)
+ {
+ CSnapshotFactoryForVideo* self = new(ELeave) CSnapshotFactoryForVideo();
+
+ CleanupStack::PushL(self);
+ self->ConstructL(aCamVideoCaptureControlImpl, aSnapshotImpForVideo);
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+void CSnapshotFactoryForVideo::ConstructL(CCamVideoCaptureControl& aCamVideoCaptureControlImpl, CCamSnapshotForVideo* aSnapshotImpForVideo)
+ {
+ if(aSnapshotImpForVideo == NULL)
+ {
+ iSnapshotImpForVideo = CCamSnapshotForVideo::NewL(aCamVideoCaptureControlImpl.Owner(), aCamVideoCaptureControlImpl);
+ aCamVideoCaptureControlImpl.iSnapshotImpForVideo = iSnapshotImpForVideo;
+ }
+ }
+
+CSnapshotFactoryForVideo::CSnapshotFactoryForVideo() : iSnapshotImpForVideo(NULL),
+ iIsSnapshotImpPassed(EFalse)
+ {
+ }
+
+CSnapshotFactoryForVideo::~CSnapshotFactoryForVideo()
+ {
+ if(!iIsSnapshotImpPassed)
+ {
+ delete iSnapshotImpForVideo;
+ }
+ iSnapshotImpForVideo = NULL;
+ }
+
+TInt CSnapshotFactoryForVideo::GetImpl(TAny*& aIfPtr, TUid aIfaceUid) const
+ {
+ switch(aIfaceUid.iUid)
+ {
+ //fall through
+ case KECamMCameraSnapshotUidValue:
+ {
+ aIfPtr = static_cast<MCameraSnapshot*>(iSnapshotImpForVideo);
+ iIsSnapshotImpPassed = ETrue;
+ return KErrNone;
+ }
+
+ case KECamMCameraSnapshot2UidValue:
+ {
+ aIfPtr = static_cast<MCameraSnapshot2*>(iSnapshotImpForVideo);
+ iIsSnapshotImpPassed = ETrue;
+ return KErrNone;
+ }
+ default:
+ {
+ aIfPtr = NULL;
+ return KErrNotSupported;
+ }
+ }
+ }
+
+TInt CSnapshotFactoryForVideo::GetImpl1(TAny*& /*aIfPtr*/, TUid /*aIfaceUid*/, TECamImplFactoryParam /*aParam1*/) const
+ {
+ return KErrNotSupported;
+ }
+
+TInt CSnapshotFactoryForVideo::GetImpl2(TAny*& /*aIfPtr*/, TUid /*aIfaceUid*/, TECamImplFactoryParam /*aParam1*/, TECamImplFactoryParam /*aParam2*/) const
+ {
+ return KErrNotSupported;
+ }
+
+void CSnapshotFactoryForVideo::Release()
+ {
+ delete this;
+ }
+
+//
+// Histogram impl for video
+CHistogramImpForVideo* CHistogramImpForVideo::NewL(CCamUnitTestPlugin& aOwner, CCamVideoCaptureControl& aCamVideoCaptureControlImpl)
+ {
+ return new(ELeave) CHistogramImpForVideo(aOwner, aCamVideoCaptureControlImpl);
+ }
+
+CHistogramImpForVideo::CHistogramImpForVideo(CCamUnitTestPlugin& aOwner, CCamVideoCaptureControl& aCamVideoCaptureControlImpl):
+ iOwner(aOwner), iCamVideoCaptureControlImpl(aCamVideoCaptureControlImpl)
+ {
+ }
+
+CHistogramImpForVideo::~CHistogramImpForVideo()
+ {
+ }
+
+void CHistogramImpForVideo::Release(CCamera::CCameraV2Histogram* /*aHistogramHandle*/)
+ {
+ delete this;
+ }
+
+void CHistogramImpForVideo::SetHistogramHandle(CCamera::CCameraV2Histogram* /*aHistogramHandle*/)
+ {
+ return;
+ }
+
+void CHistogramImpForVideo::GetSupportedHistogramsL(TUint& aSupportedHistogramType) const
+ {
+ aSupportedHistogramType = CCamera::CCameraV2Histogram::EHistNone;
+ }
+
+void CHistogramImpForVideo::GetDirectHistogramSupportInfoL(TBool& /*aIsDirectHistogramSupported*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForVideo::PrepareClientHistogramL(CCamera::CCameraV2Histogram::THistogramType /*aType*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForVideo::PrepareDirectHistogramL(const CCamera::CCameraV2Histogram::TDirectHistogramParameters& aDirectHistogramParameters)
+ {
+ if((aDirectHistogramParameters.Size() != sizeof(CCamera::CCameraV2Histogram::TDirectHistogramParameters)) ||
+ (aDirectHistogramParameters.Version() != KECamDirectHistogramParametersCurrentVersion))
+ {
+ User::Leave(KErrNotSupported);
+ }
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForVideo::UpdateDirectHistogramPropertiesL(const CCamera::CCameraV2Histogram::TDirectHistogramParameters& /*aDirectHistogramParameters*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForVideo::GetDirectHistogramPropertiesL(CCamera::CCameraV2Histogram::TDirectHistogramParameters& /*aDirectHistogramParameters*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForVideo::StartHistogram()
+ {
+ RCamHistogramV2Buffer camHistogramV2Buffer;
+
+ CamVideoCaptureControlImpl().CaptureVideoObserver()->ClientHistogramReady(NULL, KErrNotSupported);
+ }
+
+void CHistogramImpForVideo::StopHistogram()
+ {
+ return;
+ }
+
+void CHistogramImpForVideo::GetHistogramStateL(TBool& /*aIsHistogramActive*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+//Hisotgram factory for Video
+CHistogramFactoryForVideo* CHistogramFactoryForVideo::NewL(CCamVideoCaptureControl& aCamVideoCaptureControlImpl)
+ {
+ CHistogramFactoryForVideo* self = new(ELeave) CHistogramFactoryForVideo();
+
+ CleanupStack::PushL(self);
+ self->ConstructL(aCamVideoCaptureControlImpl);
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+void CHistogramFactoryForVideo::ConstructL(CCamVideoCaptureControl& aCamVideoCaptureControlImpl)
+ {
+ iHistogramImpForVideo = CHistogramImpForVideo::NewL(aCamVideoCaptureControlImpl.Owner(), aCamVideoCaptureControlImpl);
+ }
+
+CHistogramFactoryForVideo::CHistogramFactoryForVideo() : iHistogramImpForVideo(NULL),
+ iIsHistogramImpPassed(EFalse)
+ {
+ }
+
+CHistogramFactoryForVideo::~CHistogramFactoryForVideo()
+ {
+ if(!iIsHistogramImpPassed)
+ {
+ delete iHistogramImpForVideo;
+ }
+ iHistogramImpForVideo = NULL;
+ }
+
+TInt CHistogramFactoryForVideo::GetImpl(TAny*& aIfPtr, TUid aIfaceUid) const
+ {
+ switch(aIfaceUid.iUid)
+ {
+ case KECamMCameraV2HistogramUidValue:
+ {
+ aIfPtr = static_cast<MCameraV2Histogram*>(iHistogramImpForVideo);
+ iIsHistogramImpPassed = ETrue;
+ return KErrNone;
+ }
+ default:
+ {
+ aIfPtr = NULL;
+ return KErrNotSupported;
+ }
+ }
+ }
+
+TInt CHistogramFactoryForVideo::GetImpl1(TAny*& /*aIfPtr*/, TUid /*aIfaceUid*/, TECamImplFactoryParam /*aParam1*/) const
+ {
+ return KErrNotSupported;
+ }
+
+TInt CHistogramFactoryForVideo::GetImpl2(TAny*& /*aIfPtr*/, TUid /*aIfaceUid*/, TECamImplFactoryParam /*aParam1*/, TECamImplFactoryParam /*aParam2*/) const
+ {
+ return KErrNotSupported;
+ }
+
+void CHistogramFactoryForVideo::Release()
+ {
+ delete this;
+ }
+
+// Histogram impl for image
+CHistogramImpForImage* CHistogramImpForImage::NewL(CCamUnitTestPlugin& aOwner, CCamImageCapture& aCamImageCaptureImpl)
+ {
+ return new(ELeave) CHistogramImpForImage(aOwner, aCamImageCaptureImpl);
+ }
+
+CHistogramImpForImage::CHistogramImpForImage(CCamUnitTestPlugin& aOwner, CCamImageCapture& aCamImageCaptureImpl):
+ iOwner(aOwner), iCamImageCaptureImpl(aCamImageCaptureImpl)
+ {
+ }
+
+CHistogramImpForImage::~CHistogramImpForImage()
+ {
+ }
+
+void CHistogramImpForImage::Release(CCamera::CCameraV2Histogram* /*aHistogramHandle*/)
+ {
+ delete this;
+ }
+
+void CHistogramImpForImage::SetHistogramHandle(CCamera::CCameraV2Histogram* aHistogramHandle)
+ {
+ iHistogramHandle = aHistogramHandle;
+ }
+
+void CHistogramImpForImage::GetSupportedHistogramsL(TUint& aSupportedHistogramType) const
+ {
+ aSupportedHistogramType = CCamera::CCameraV2Histogram::EHistNone;
+ }
+
+void CHistogramImpForImage::GetDirectHistogramSupportInfoL(TBool& /*aIsDirectHistogramSupported*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForImage::PrepareClientHistogramL(CCamera::CCameraV2Histogram::THistogramType /*aType*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForImage::PrepareDirectHistogramL(const CCamera::CCameraV2Histogram::TDirectHistogramParameters& aDirectHistogramParameters)
+ {
+ if((aDirectHistogramParameters.Size() != sizeof(CCamera::CCameraV2Histogram::TDirectHistogramParameters)) ||
+ (aDirectHistogramParameters.Version() != KECamDirectHistogramParametersCurrentVersion))
+ {
+ User::Leave(KErrNotSupported);
+ }
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForImage::UpdateDirectHistogramPropertiesL(const CCamera::CCameraV2Histogram::TDirectHistogramParameters& /*aDirectHistogramParameters*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForImage::GetDirectHistogramPropertiesL(CCamera::CCameraV2Histogram::TDirectHistogramParameters& /*aDirectHistogramParameters*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForImage::StartHistogram()
+ {
+ RCamHistogramV2Buffer camHistogramV2Buffer;
+ CamImageCaptureImpl().CaptureImageObserver()->ClientHistogramForImageReady(CameraImageCapture(), 1, NULL, KErrNotSupported);
+ }
+
+void CHistogramImpForImage::StopHistogram()
+ {
+ return;
+ }
+
+void CHistogramImpForImage::GetHistogramStateL(TBool& /*aIsHistogramActive*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+//Hisotgram factory for Image
+CHistogramFactoryForImage* CHistogramFactoryForImage::NewL(CCamImageCapture& aCamImageCaptureImpl)
+ {
+ CHistogramFactoryForImage* self = new(ELeave) CHistogramFactoryForImage();
+
+ CleanupStack::PushL(self);
+ self->ConstructL(aCamImageCaptureImpl);
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+void CHistogramFactoryForImage::ConstructL(CCamImageCapture& aCamImageCaptureImpl)
+ {
+ iHistogramImpForImage = CHistogramImpForImage::NewL(aCamImageCaptureImpl.Owner(), aCamImageCaptureImpl);
+ }
+
+CHistogramFactoryForImage::CHistogramFactoryForImage() : iHistogramImpForImage(NULL),
+ iIsHistogramImpPassed(EFalse)
+ {
+ }
+
+CHistogramFactoryForImage::~CHistogramFactoryForImage()
+ {
+ if(!iIsHistogramImpPassed)
+ {
+ delete iHistogramImpForImage;
+ }
+ iHistogramImpForImage = NULL;
+ }
+
+TInt CHistogramFactoryForImage::GetImpl(TAny*& aIfPtr, TUid aIfaceUid) const
+ {
+ switch(aIfaceUid.iUid)
+ {
+ case KECamMCameraV2HistogramUidValue:
+ {
+ aIfPtr = static_cast<MCameraV2Histogram*>(iHistogramImpForImage);
+ iIsHistogramImpPassed = ETrue;
+ return KErrNone;
+ }
+ default:
+ {
+ aIfPtr = NULL;
+ return KErrNotSupported;
+ }
+ }
+ }
+
+TInt CHistogramFactoryForImage::GetImpl1(TAny*& /*aIfPtr*/, TUid /*aIfaceUid*/, TECamImplFactoryParam /*aParam1*/) const
+ {
+ return KErrNotSupported;
+ }
+
+TInt CHistogramFactoryForImage::GetImpl2(TAny*& /*aIfPtr*/, TUid /*aIfaceUid*/, TECamImplFactoryParam /*aParam1*/, TECamImplFactoryParam /*aParam2*/) const
+ {
+ return KErrNotSupported;
+ }
+
+void CHistogramFactoryForImage::Release()
+ {
+ delete this;
+ }
+
+// Histogram impl for direct view finder
+CHistogramImpForDirectViewFinder* CHistogramImpForDirectViewFinder::NewL(CCamUnitTestPlugin& aOwner, CCamV2DirectViewFinder& aCamV2DirectViewFinderImpl)
+ {
+ return new(ELeave) CHistogramImpForDirectViewFinder(aOwner, aCamV2DirectViewFinderImpl);
+ }
+
+CHistogramImpForDirectViewFinder::CHistogramImpForDirectViewFinder(CCamUnitTestPlugin& aOwner,
+ CCamV2DirectViewFinder& aCamV2DirectViewFinderImpl): iOwner(aOwner),
+ iCamV2DirectViewFinderImpl(aCamV2DirectViewFinderImpl)
+ {
+ }
+
+CHistogramImpForDirectViewFinder::~CHistogramImpForDirectViewFinder()
+ {
+ }
+
+void CHistogramImpForDirectViewFinder::Release(CCamera::CCameraV2Histogram* /*aHistogramHandle*/)
+ {
+ delete this;
+ }
+
+void CHistogramImpForDirectViewFinder::SetHistogramHandle(CCamera::CCameraV2Histogram* aHistogramHandle)
+ {
+ iHistogramHandle = aHistogramHandle;
+ }
+
+void CHistogramImpForDirectViewFinder::GetSupportedHistogramsL(TUint& aSupportedHistogramType) const
+ {
+ aSupportedHistogramType = CCamera::CCameraV2Histogram::EHistNone;
+ }
+
+void CHistogramImpForDirectViewFinder::GetDirectHistogramSupportInfoL(TBool& /*aIsDirectHistogramSupported*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForDirectViewFinder::PrepareClientHistogramL(CCamera::CCameraV2Histogram::THistogramType /*aType*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForDirectViewFinder::PrepareDirectHistogramL(const CCamera::CCameraV2Histogram::TDirectHistogramParameters& aDirectHistogramParameters)
+ {
+ if((aDirectHistogramParameters.Size() != sizeof(CCamera::CCameraV2Histogram::TDirectHistogramParameters)) ||
+ (aDirectHistogramParameters.Version() != KECamDirectHistogramParametersCurrentVersion))
+ {
+ User::Leave(KErrNotSupported);
+ }
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForDirectViewFinder::UpdateDirectHistogramPropertiesL(const CCamera::CCameraV2Histogram::TDirectHistogramParameters& /*aDirectHistogramParameters*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForDirectViewFinder::GetDirectHistogramPropertiesL(CCamera::CCameraV2Histogram::TDirectHistogramParameters& /*aDirectHistogramParameters*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForDirectViewFinder::StartHistogram()
+ {
+ RCamHistogramV2Buffer camHistogramV2Buffer;
+ DirectViewFinderImpl().DirectViewFinderObserver()->ClientHistogramReady(DirectViewFinderImpl().DirectViewFinderHandle(), NULL, KErrNotSupported);
+ }
+
+void CHistogramImpForDirectViewFinder::StopHistogram()
+ {
+ return;
+ }
+
+void CHistogramImpForDirectViewFinder::GetHistogramStateL(TBool& /*aIsHistogramActive*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+//Hisotgram factory for Direct View Finder
+CHistogramFactoryForDirectViewFinder* CHistogramFactoryForDirectViewFinder::NewL(CCamV2DirectViewFinder& aCamV2DirectViewFinderImpl)
+ {
+ CHistogramFactoryForDirectViewFinder* self = new(ELeave) CHistogramFactoryForDirectViewFinder();
+
+ CleanupStack::PushL(self);
+ self->ConstructL(aCamV2DirectViewFinderImpl);
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+void CHistogramFactoryForDirectViewFinder::ConstructL(CCamV2DirectViewFinder& aCamV2DirectViewFinderImpl)
+ {
+ iHistogramImpForDirectViewFinder = CHistogramImpForDirectViewFinder::NewL(aCamV2DirectViewFinderImpl.Owner(), aCamV2DirectViewFinderImpl);
+ }
+
+CHistogramFactoryForDirectViewFinder::CHistogramFactoryForDirectViewFinder() : iHistogramImpForDirectViewFinder(NULL),
+ iIsHistogramImpPassed(EFalse)
+ {
+ }
+
+CHistogramFactoryForDirectViewFinder::~CHistogramFactoryForDirectViewFinder()
+ {
+ if(!iIsHistogramImpPassed)
+ {
+ delete iHistogramImpForDirectViewFinder;
+ }
+ iHistogramImpForDirectViewFinder = NULL;
+ }
+
+TInt CHistogramFactoryForDirectViewFinder::GetImpl(TAny*& aIfPtr, TUid aIfaceUid) const
+ {
+ switch(aIfaceUid.iUid)
+ {
+ case KECamMCameraV2HistogramUidValue:
+ {
+ aIfPtr = static_cast<MCameraV2Histogram*>(iHistogramImpForDirectViewFinder);
+ iIsHistogramImpPassed = ETrue;
+ return KErrNone;
+ }
+ default:
+ {
+ aIfPtr = NULL;
+ return KErrNotSupported;
+ }
+ }
+ }
+
+TInt CHistogramFactoryForDirectViewFinder::GetImpl1(TAny*& /*aIfPtr*/, TUid /*aIfaceUid*/, TECamImplFactoryParam /*aParam1*/) const
+ {
+ return KErrNotSupported;
+ }
+
+TInt CHistogramFactoryForDirectViewFinder::GetImpl2(TAny*& /*aIfPtr*/, TUid /*aIfaceUid*/, TECamImplFactoryParam /*aParam1*/, TECamImplFactoryParam /*aParam2*/) const
+ {
+ return KErrNotSupported;
+ }
+
+void CHistogramFactoryForDirectViewFinder::Release()
+ {
+ delete this;
+ }
+
+// Histogram impl for client view finder
+CHistogramImpForClientViewFinder* CHistogramImpForClientViewFinder::NewL(CCamUnitTestPlugin& aOwner, CCamClientViewFinder& aCamClientViewFinderImpl)
+ {
+ return new(ELeave) CHistogramImpForClientViewFinder(aOwner, aCamClientViewFinderImpl);
+ }
+
+CHistogramImpForClientViewFinder::CHistogramImpForClientViewFinder(CCamUnitTestPlugin& aOwner,
+ CCamClientViewFinder& aCamClientViewFinderImpl): iOwner(aOwner),
+ iCamClientViewFinderImpl(aCamClientViewFinderImpl)
+ {
+ }
+
+CHistogramImpForClientViewFinder::~CHistogramImpForClientViewFinder()
+ {
+ }
+
+void CHistogramImpForClientViewFinder::Release(CCamera::CCameraV2Histogram* /*aHistogramHandle*/)
+ {
+ delete this;
+ }
+
+void CHistogramImpForClientViewFinder::SetHistogramHandle(CCamera::CCameraV2Histogram* aHistogramHandle)
+ {
+ iHistogramHandle = aHistogramHandle;
+ }
+
+void CHistogramImpForClientViewFinder::GetSupportedHistogramsL(TUint& aSupportedHistogramType) const
+ {
+ aSupportedHistogramType = CCamera::CCameraV2Histogram::EHistNone;
+ }
+
+void CHistogramImpForClientViewFinder::GetDirectHistogramSupportInfoL(TBool& /*aIsDirectHistogramSupported*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForClientViewFinder::PrepareClientHistogramL(CCamera::CCameraV2Histogram::THistogramType /*aType*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForClientViewFinder::PrepareDirectHistogramL(const CCamera::CCameraV2Histogram::TDirectHistogramParameters& aDirectHistogramParameters)
+ {
+ if((aDirectHistogramParameters.Size() != sizeof(CCamera::CCameraV2Histogram::TDirectHistogramParameters)) ||
+ (aDirectHistogramParameters.Version() != KECamDirectHistogramParametersCurrentVersion))
+ {
+ User::Leave(KErrNotSupported);
+ }
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForClientViewFinder::UpdateDirectHistogramPropertiesL(const CCamera::CCameraV2Histogram::TDirectHistogramParameters& /*aDirectHistogramParameters*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForClientViewFinder::GetDirectHistogramPropertiesL(CCamera::CCameraV2Histogram::TDirectHistogramParameters& /*aDirectHistogramParameters*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForClientViewFinder::StartHistogram()
+ {
+ RCamHistogramV2Buffer camHistogramV2Buffer;
+ ClientViewFinderImpl().ClientViewFinderObserver()->ClientHistogramReady(ClientViewFinderHandle(), NULL, KErrNotSupported);
+ }
+
+void CHistogramImpForClientViewFinder::StopHistogram()
+ {
+ return;
+ }
+
+void CHistogramImpForClientViewFinder::GetHistogramStateL(TBool& /*aIsHistogramActive*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+//Hisotgram factory for Client View Finder
+CHistogramFactoryForClientViewFinder* CHistogramFactoryForClientViewFinder::NewL(CCamClientViewFinder& aCamClientViewFinderImpl)
+ {
+ CHistogramFactoryForClientViewFinder* self = new(ELeave) CHistogramFactoryForClientViewFinder();
+
+ CleanupStack::PushL(self);
+ self->ConstructL(aCamClientViewFinderImpl);
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+void CHistogramFactoryForClientViewFinder::ConstructL(CCamClientViewFinder& aCamClientViewFinderImpl)
+ {
+ iHistogramImpForClientViewFinder = CHistogramImpForClientViewFinder::NewL(aCamClientViewFinderImpl.Owner(), aCamClientViewFinderImpl);
+ }
+
+CHistogramFactoryForClientViewFinder::CHistogramFactoryForClientViewFinder() : iHistogramImpForClientViewFinder(NULL),
+ iIsHistogramImpPassed(EFalse)
+ {
+ }
+
+CHistogramFactoryForClientViewFinder::~CHistogramFactoryForClientViewFinder()
+ {
+ if(!iIsHistogramImpPassed)
+ {
+ delete iHistogramImpForClientViewFinder;
+ }
+
+ iHistogramImpForClientViewFinder = NULL;
+ }
+
+TInt CHistogramFactoryForClientViewFinder::GetImpl(TAny*& aIfPtr, TUid aIfaceUid) const
+ {
+ switch(aIfaceUid.iUid)
+ {
+ case KECamMCameraV2HistogramUidValue:
+ {
+ aIfPtr = static_cast<MCameraV2Histogram*>(iHistogramImpForClientViewFinder);
+ iIsHistogramImpPassed = ETrue;
+ return KErrNone;
+ }
+ default:
+ {
+ aIfPtr = NULL;
+ return KErrNotSupported;
+ }
+ }
+ }
+
+TInt CHistogramFactoryForClientViewFinder::GetImpl1(TAny*& /*aIfPtr*/, TUid /*aIfaceUid*/, TECamImplFactoryParam /*aParam1*/) const
+ {
+ return KErrNotSupported;
+ }
+
+TInt CHistogramFactoryForClientViewFinder::GetImpl2(TAny*& /*aIfPtr*/, TUid /*aIfaceUid*/, TECamImplFactoryParam /*aParam1*/, TECamImplFactoryParam /*aParam2*/) const
+ {
+ return KErrNotSupported;
+ }
+
+void CHistogramFactoryForClientViewFinder::Release()
+ {
+ delete this;
+ }
+
+// Histogram impl for image snapshot
+CHistogramImpForImageSnapshot* CHistogramImpForImageSnapshot::NewL(CCamUnitTestPlugin& aOwner, CCamSnapshotForImage& aCamSnapshotForImageImpl)
+ {
+ return new(ELeave) CHistogramImpForImageSnapshot(aOwner, aCamSnapshotForImageImpl);
+ }
+
+CHistogramImpForImageSnapshot::CHistogramImpForImageSnapshot(CCamUnitTestPlugin& aOwner, CCamSnapshotForImage& aCamSnapshotForImageImpl):
+ iOwner(aOwner),
+ iCamSnapshotForImageImpl(aCamSnapshotForImageImpl)
+ {
+ }
+
+CHistogramImpForImageSnapshot::~CHistogramImpForImageSnapshot()
+ {
+ }
+
+void CHistogramImpForImageSnapshot::Release(CCamera::CCameraV2Histogram* /*aHistogramHandle*/)
+ {
+ delete this;
+ }
+
+void CHistogramImpForImageSnapshot::SetHistogramHandle(CCamera::CCameraV2Histogram* aHistogramHandle)
+ {
+ iHistogramHandle = aHistogramHandle;
+ }
+
+void CHistogramImpForImageSnapshot::GetSupportedHistogramsL(TUint& aSupportedHistogramType) const
+ {
+ aSupportedHistogramType = CCamera::CCameraV2Histogram::EHistNone;
+ }
+
+void CHistogramImpForImageSnapshot::GetDirectHistogramSupportInfoL(TBool& /*aIsDirectHistogramSupported*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForImageSnapshot::PrepareClientHistogramL(CCamera::CCameraV2Histogram::THistogramType /*aType*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForImageSnapshot::PrepareDirectHistogramL(const CCamera::CCameraV2Histogram::TDirectHistogramParameters& aDirectHistogramParameters)
+ {
+ if((aDirectHistogramParameters.Size() != sizeof(CCamera::CCameraV2Histogram::TDirectHistogramParameters)) ||
+ (aDirectHistogramParameters.Version() != KECamDirectHistogramParametersCurrentVersion))
+ {
+ User::Leave(KErrNotSupported);
+ }
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForImageSnapshot::UpdateDirectHistogramPropertiesL(const CCamera::CCameraV2Histogram::TDirectHistogramParameters& /*aDirectHistogramParameters*/)
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForImageSnapshot::GetDirectHistogramPropertiesL(CCamera::CCameraV2Histogram::TDirectHistogramParameters& /*aDirectHistogramParameters*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+void CHistogramImpForImageSnapshot::StartHistogram()
+ {
+ RCamHistogramV2Buffer camHistogramV2Buffer;
+
+ CamImageCaptureImpl().CaptureImageObserver()->ClientHistogramForSnapshotReady(CameraImageCapture(), 1, NULL, KErrNotSupported);
+ }
+
+void CHistogramImpForImageSnapshot::StopHistogram()
+ {
+ return;
+ }
+
+void CHistogramImpForImageSnapshot::GetHistogramStateL(TBool& /*aIsHistogramActive*/) const
+ {
+ User::Leave(KErrNotSupported);
+ }
+
+//Hisotgram factory for Image Snapshot
+CHistogramFactoryForImageSnapshot* CHistogramFactoryForImageSnapshot::NewL(CCamSnapshotForImage& aCamSnapshotForImageImpl)
+ {
+ CHistogramFactoryForImageSnapshot* self = new(ELeave) CHistogramFactoryForImageSnapshot();
+
+ CleanupStack::PushL(self);
+ self->ConstructL(aCamSnapshotForImageImpl);
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+void CHistogramFactoryForImageSnapshot::ConstructL(CCamSnapshotForImage& aCamSnapshotForImageImpl)
+ {
+ iHistogramImpForImageSnapshot = CHistogramImpForImageSnapshot::NewL(aCamSnapshotForImageImpl.Owner(), aCamSnapshotForImageImpl);
+ }
+
+CHistogramFactoryForImageSnapshot::CHistogramFactoryForImageSnapshot() : iHistogramImpForImageSnapshot(NULL),
+ iIsHistogramImpPassed(EFalse)
+ {
+ }
+
+CHistogramFactoryForImageSnapshot::~CHistogramFactoryForImageSnapshot()
+ {
+ if(!iIsHistogramImpPassed)
+ {
+ delete iHistogramImpForImageSnapshot;
+ }
+ iHistogramImpForImageSnapshot = NULL;
+ }
+
+TInt CHistogramFactoryForImageSnapshot::GetImpl(TAny*& aIfPtr, TUid aIfaceUid) const
+ {
+ switch(aIfaceUid.iUid)
+ {
+ case KECamMCameraV2HistogramUidValue:
+ {
+ aIfPtr = static_cast<MCameraV2Histogram*>(iHistogramImpForImageSnapshot);
+ iIsHistogramImpPassed = ETrue;
+ return KErrNone;
+ }
+ default:
+ {
+ aIfPtr = NULL;
+ return KErrNotSupported;
+ }
+ }
+ }
+
+TInt CHistogramFactoryForImageSnapshot::GetImpl1(TAny*& /*aIfPtr*/, TUid /*aIfaceUid*/, TECamImplFactoryParam /*aParam1*/) const
+ {
+ return KErrNotSupported;
+ }
+
+TInt CHistogramFactoryForImageSnapshot::GetImpl2(TAny*& /*aIfPtr*/, TUid /*aIfaceUid*/, TECamImplFactoryParam /*aParam1*/, TECamImplFactoryParam /*aParam2*/) const
+ {
+ return KErrNotSupported;
+ }
+
+void CHistogramFactoryForImageSnapshot::Release()
+ {
+ delete this;
+ }
+
+//
+//img proc impl for still images.
+CCamImgProcImpForImage* CCamImgProcImpForImage::NewL(CCamUnitTestPlugin& aOwner)
+ {
+ return new(ELeave) CCamImgProcImpForImage(aOwner);
+ }
+
+CCamImgProcImpForImage::CCamImgProcImpForImage(CCamUnitTestPlugin& aOwner): iOwner(aOwner)
+ {
+ }
+
+CCamImgProcImpForImage::~CCamImgProcImpForImage()
+ {
+ }
+
+void CCamImgProcImpForImage::Release()
+ {
+ delete this;
+ }
+
+void CCamImgProcImpForImage::GetSupportedTransformationsL(RArray<TUid>& aTransformations) const
+ {
+ aTransformations.Reset();
+ }
+
+void CCamImgProcImpForImage::GetActiveTransformationsL(RArray<TUid>& aTransformations) const
+ {
+ aTransformations.Reset();
+ }
+
+void CCamImgProcImpForImage::GetTransformationSupportedValuesL(TUid /*aTransformation*/, RArray<TInt>& aValues, TValueInfo& aInfo) const
+ {
+ aValues.Reset();
+ aInfo = ENotActive;
+ }
+
+TInt CCamImgProcImpForImage::TransformationValue(TUid /*aTransformation*/) const
+ {
+ return KErrNotSupported;
+ }
+
+TInt CCamImgProcImpForImage::GetTransformationValue(TUid /*aTransformation*/, TInt& /*aTransformationValue*/) const
+ {
+ return KErrNotSupported;
+ }
+
+void CCamImgProcImpForImage::SetTransformationValue(TUid /*aTransformation*/, TInt /*aValue*/)
+ {
+ return;
+ }
+
+void CCamImgProcImpForImage::GetActiveTransformSequenceL(RArray<TUid>& aTransformSequence) const
+ {
+ aTransformSequence.Reset();
+ }
+
+void CCamImgProcImpForImage::SetActiveTransformSequenceL(RArray<TUid>& aTransformSequence)
+ {
+ aTransformSequence.Reset();
+ }
+
+void CCamImgProcImpForImage::SetSourceRect(const TRect& /*aRect*/)
+ {
+ return;
+ }
+
+void CCamImgProcImpForImage::GetSourceRect(TRect& /*aRect*/) const
+ {
+ return;
+ }
+
+//
+//img proc factory for still images.
+CImgProcFactoryForImage* CImgProcFactoryForImage::NewL(CCamImageCapture& aCamImageCaptureImpl, CCamImgProcImpForImage* aCamImgProcImpForImage)
+ {
+ CImgProcFactoryForImage* self = new(ELeave) CImgProcFactoryForImage();
+
+ CleanupStack::PushL(self);
+ self->ConstructL(aCamImageCaptureImpl, aCamImgProcImpForImage);
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+void CImgProcFactoryForImage::ConstructL(CCamImageCapture& aCamImageCaptureImpl, CCamImgProcImpForImage* aCamImgProcImpForImage)
+ {
+ if(aCamImgProcImpForImage == NULL)
+ {
+ iCamImgProcImpForImage = CCamImgProcImpForImage::NewL(aCamImageCaptureImpl.Owner());
+ aCamImageCaptureImpl.iCamImgProcImpForImage = iCamImgProcImpForImage;
+ }
+ }
+
+CImgProcFactoryForImage::CImgProcFactoryForImage() : iCamImgProcImpForImage(NULL),
+ iIsImgProcImpPassed(EFalse)
+ {
+ TAny* ptr = NULL;
+ TUint value = 0;
+ TInt param = -4;
+ TECamImplFactoryParam factoryParam(ptr);
+ TECamImplFactoryParam factoryParam1(value);
+ TECamImplFactoryParam factoryParam2(param);
+ }
+
+CImgProcFactoryForImage::~CImgProcFactoryForImage()
+ {
+ if(!iIsImgProcImpPassed)
+ {
+ delete iCamImgProcImpForImage;
+ }
+ iCamImgProcImpForImage = NULL;
+ }
+
+TInt CImgProcFactoryForImage::GetImpl(TAny*& aIfPtr, TUid aIfaceUid) const
+ {
+ switch(aIfaceUid.iUid)
+ {
+ //fall through
+ case KECamMCameraImageProcessingUidValue:
+ {
+ aIfPtr = static_cast<MCameraImageProcessing*>(iCamImgProcImpForImage);
+ iIsImgProcImpPassed = ETrue;
+ return KErrNone;
+ }
+ default:
+ {
+ aIfPtr = NULL;
+ return KErrNotSupported;
+ }
+ }
+ }
+
+TInt CImgProcFactoryForImage::GetImpl1(TAny*& /*aIfPtr*/, TUid /*aIfaceUid*/, TECamImplFactoryParam /*aParam1*/) const
+ {
+ return KErrNotSupported;
+ }
+
+TInt CImgProcFactoryForImage::GetImpl2(TAny*& /*aIfPtr*/, TUid /*aIfaceUid*/, TECamImplFactoryParam /*aParam1*/, TECamImplFactoryParam /*aParam2*/) const
+ {
+ return KErrNotSupported;
+ }
+
+void CImgProcFactoryForImage::Release()
+ {
+ delete this;
+ }