Update contrib.
1 // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
14 // testimageprocessing.cpp
18 #include "test_image_processing.h"
19 #include <ecamerrors.h>
20 #include "ecamversion.h"
22 CTestCamImgProc::CTestCamImgProc(CTestCamera& aOwner): iOwner(aOwner)
25 CTestCamImgProc::~CTestCamImgProc()
27 iSupportedTranformations.Close();
28 iActiveTransformations.Close();
29 iActiveTransformSequence.Close();
31 CDataGlobal* globalData = static_cast <CDataGlobal*> (Dll::Tls());
32 if(globalData != NULL)
34 if(!globalData->iTestCamAdvSet && !globalData->iTestCamPresets && !globalData->iTestCamSnapshot)
41 globalData->iTestCamImgProc = NULL;
42 Dll::SetTls(globalData);
47 CTestCamImgProc* CTestCamImgProc::NewL(CTestCamera& aOwner)
49 CDataGlobal* globalData = static_cast <CDataGlobal*> (Dll::Tls());
51 if(globalData == NULL)
53 globalData = new (ELeave) CDataGlobal;
54 CleanupStack::PushL(globalData);
55 globalData->iImgProcReferenceCount = 0;
56 globalData->iTestCamImgProc = new (ELeave) CTestCamImgProc(aOwner);
57 CleanupStack::PushL(globalData->iTestCamImgProc);
58 globalData->iTestCamImgProc->ConstructL();
59 globalData->iTestCamImgProc->iRefCount = 1;
60 User::LeaveIfError(Dll::SetTls(globalData));
61 CleanupStack::Pop(globalData->iTestCamImgProc);
62 CleanupStack::Pop(globalData);
63 return globalData->iTestCamImgProc;
67 if(globalData->iTestCamImgProc == NULL)
69 globalData->iImgProcReferenceCount = 0;
70 globalData->iTestCamImgProc = new (ELeave) CTestCamImgProc(aOwner);
71 CleanupStack::PushL(globalData->iTestCamImgProc);
72 globalData->iTestCamImgProc->ConstructL();
73 globalData->iTestCamImgProc->iRefCount = 1;
74 User::LeaveIfError(Dll::SetTls(globalData));
75 CleanupStack::Pop(globalData->iTestCamImgProc);
76 return globalData->iTestCamImgProc;
79 CTestCamImgProc* self = globalData->iTestCamImgProc;
81 globalData->iImgProcReferenceCount++;
82 self->iRefCount = globalData->iImgProcReferenceCount + 1;
83 if (globalData->iImgProcReferenceCount == KNumOfImgProcExtensions-1)
85 globalData->iTestCamImgProc = NULL;
86 if(!globalData->iTestCamAdvSet && !globalData->iTestCamPresets && !globalData->iTestCamSnapshot)
93 User::LeaveIfError(Dll::SetTls(globalData));
98 User::LeaveIfError(Dll::SetTls(globalData));
104 void CTestCamImgProc::Release()
109 iOwner.iImgProcImpl = NULL;
114 void CTestCamImgProc::ConstructL()
116 iSupportedTranformations.Reset();
117 iSupportedTranformations.AppendL(KUidECamEventImageProcessingAdjustBrightness);
118 iSupportedTranformations.AppendL(KUidECamEventImageProcessingAdjustContrast);
120 iActiveTransformations.Reset();
122 iActiveTransformSequence.Reset();
125 void CTestCamImgProc::GetSupportedTransformationsL(RArray<TUid>& aTransformations) const
127 aTransformations.Reset();
128 for(TInt index=0; index < iSupportedTranformations.Count(); index++)
130 aTransformations.AppendL(iSupportedTranformations[index]);
134 void CTestCamImgProc::GetActiveTransformationsL(RArray<TUid>& aTransformations) const
136 aTransformations.Reset();
137 for(TInt index=0; index < iActiveTransformations.Count(); index++)
139 aTransformations.AppendL(iActiveTransformations[index]);
143 void CTestCamImgProc::GetTransformationSupportedValuesL(TUid aTransformation, RArray<TInt>& aValues, TValueInfo& aInfo) const
145 TInt err = iActiveTransformations.Find(aTransformation);
146 if(err == KErrNotFound)
151 switch(aTransformation.iUid)
153 case KUidECamEventImageProcessingAdjustBrightnessUidValue:
155 aInfo = EContinuousRangeMinMax;
157 aValues.AppendL(KMinBrightness);
158 aValues.AppendL(KMaxBrightness);
162 case KUidECamEventImageProcessingAdjustContrastUidValue:
164 aInfo = EContinuousRangeMinMax;
166 aValues.AppendL(KMinContrast);
167 aValues.AppendL(KMaxContrast);
172 User::Leave(KErrNotSupported);
176 TInt CTestCamImgProc::TransformationValue(TUid aTransformation) const
178 switch(aTransformation.iUid)
180 case KUidECamEventImageProcessingAdjustBrightnessUidValue:
182 return iOwner.iImgProcBrightness;
185 case KUidECamEventImageProcessingAdjustContrastUidValue:
187 return iOwner.iImgProcContrast;
195 TInt CTestCamImgProc::GetTransformationValue(TUid aTransformation, TInt& aTransformationValue) const
197 switch(aTransformation.iUid)
199 case KUidECamEventImageProcessingAdjustBrightnessUidValue:
201 aTransformationValue = iOwner.iImgProcBrightness;
205 case KUidECamEventImageProcessingAdjustContrastUidValue:
207 aTransformationValue = iOwner.iImgProcContrast;
212 return KErrNotSupported;
216 void CTestCamImgProc::SetTransformationValue(TUid aTransformation, TInt aValue)
218 TInt eventError = iOwner.CheckReserveAndPower();
220 if(eventError == KErrNone)
222 switch(aTransformation.iUid)
224 case KUidECamEventImageProcessingAdjustBrightnessUidValue:
226 if(aValue < KMinBrightness)
228 iOwner.iImgProcBrightness = KMinBrightness;
232 if(aValue > KMaxBrightness)
234 iOwner.iImgProcBrightness = KMaxBrightness;
238 iOwner.iImgProcBrightness = aValue;
244 case KUidECamEventImageProcessingAdjustContrastUidValue:
246 if(aValue < KMinContrast)
248 iOwner.iImgProcContrast = KMinContrast;
252 if(aValue > KMaxContrast)
254 iOwner.iImgProcContrast = KMaxContrast;
258 iOwner.iImgProcContrast = aValue;
265 eventError = KErrNotSupported;
269 if(eventError == KErrNone)
271 eventError = iActiveTransformations.Find(aTransformation);
273 if(eventError == KErrNotFound)
275 eventError = iActiveTransformations.Append(aTransformation);
277 if(eventError == KErrNone)
279 if(IsTransform(aTransformation))
281 eventError = iActiveTransformSequence.Append(aTransformation);
287 eventError = KErrNone;
291 TECAMEvent ecamevent(aTransformation, eventError);
293 iOwner.iECamEvent = ecamevent;
294 iOwner.iHandleEventAsync.CallBack();
297 void CTestCamImgProc::GetActiveTransformSequenceL(RArray<TUid>& aTransformSequence) const
299 aTransformSequence.Reset();
300 for(TInt index=0; index < iActiveTransformSequence.Count(); index++)
302 aTransformSequence.AppendL(iActiveTransformSequence[index]);
306 void CTestCamImgProc::SetActiveTransformSequenceL(RArray<TUid>& aTransformSequence)
309 for(TInt index=0; index < aTransformSequence.Count(); index++)
311 err = iActiveTransformations.Find(aTransformSequence[index]);
312 if(err == KErrNotFound)
318 iActiveTransformSequence.Reset();
319 for(TInt index=0; index < aTransformSequence.Count(); index++)
321 iActiveTransformSequence.AppendL(aTransformSequence[index]);
325 void CTestCamImgProc::SetSourceRect(const TRect& /*aRect*/)
330 void CTestCamImgProc::GetSourceRect(TRect& /*aRect*/) const
335 void CTestCamImgProc::GetConcurrentColorSwappingsSupportedL(TInt& /*aConcurrentColorSwappingSupported*/) const
337 User::Leave(KErrNotSupported);
340 void CTestCamImgProc::GetColorSwapCapabilitiesL(TInt /*aIndex*/, CCamera::CCameraImageProcessing::TColorOperationCapabilities& /*aColorSwapCapabilities*/) const
342 User::Leave(KErrNotSupported);
345 void CTestCamImgProc::SetColorSwapEntry(TInt aIndex, const CCamera::CCameraImageProcessing::TColorOperationEntry& /*aColorSwapParameters*/)
347 TECAMEvent2 ecamevent2(KUidECamEventCIPSetColorSwapEntry, KErrNotSupported, aIndex);
349 iOwner.iECamEvent2 = ecamevent2;
350 iOwner.iHandleEvent2Async.CallBack();
353 void CTestCamImgProc::RemoveColorSwapEntry(TInt aIndex)
355 TECAMEvent2 ecamevent2(KUidECamEventCIPRemoveColorSwapEntry, KErrNotSupported, aIndex);
357 iOwner.iECamEvent2 = ecamevent2;
358 iOwner.iHandleEvent2Async.CallBack();
361 void CTestCamImgProc::GetColorSwapEntryL(TInt /*aIndex*/, CCamera::CCameraImageProcessing::TColorOperationEntry& /*aColorSwapParameters*/) const
363 User::Leave(KErrNotSupported);
366 void CTestCamImgProc::StartColorSwapping()
368 TECAMEvent ecamevent(KUidECamEventCIPStartColorSwap, KErrNotSupported);
370 iOwner.iECamEvent = ecamevent;
371 iOwner.iHandleEventAsync.CallBack();
374 void CTestCamImgProc::CancelColorSwappingL()
376 User::Leave(KErrNotSupported);
379 void CTestCamImgProc::GetConcurrentColorAccentSupportedL(TInt& /*aConcurrentColorAccentSupported*/) const
381 User::Leave(KErrNotSupported);
384 void CTestCamImgProc::GetColorAccentCapabilitiesL(TInt /*aIndex*/, CCamera::CCameraImageProcessing::TColorOperationCapabilities& /*aColorAccentCapabilities*/) const
386 User::Leave(KErrNotSupported);
389 void CTestCamImgProc::SetColorAccentEntry(TInt aIndex, const CCamera::CCameraImageProcessing::TColorOperationEntry& /*aColorAccentParameters*/)
391 TECAMEvent2 ecamevent2(KUidECamEventCIPSetColorAccentEntry, KErrNotSupported, aIndex);
393 iOwner.iECamEvent2 = ecamevent2;
394 iOwner.iHandleEvent2Async.CallBack();
397 void CTestCamImgProc::RemoveColorAccentEntry(TInt aIndex)
399 TECAMEvent2 ecamevent2(KUidECamEventCIPRemoveColorAccentEntry, KErrNotSupported, aIndex);
401 iOwner.iECamEvent2 = ecamevent2;
402 iOwner.iHandleEvent2Async.CallBack();
405 void CTestCamImgProc::GetColorAccentEntryL(TInt /*aIndex*/, CCamera::CCameraImageProcessing::TColorOperationEntry& /*aColorAccentParameters*/) const
407 User::Leave(KErrNotSupported);
410 void CTestCamImgProc::StartColorAccent()
412 TECAMEvent ecamevent(KUidECamEventCIPStartColorAccent, KErrNotSupported);
414 iOwner.iECamEvent = ecamevent;
415 iOwner.iHandleEventAsync.CallBack();
418 void CTestCamImgProc::CancelColorAccentL()
420 User::Leave(KErrNotSupported);
423 TBool CTestCamImgProc::IsTransform(TUid aTransformation)
425 switch(aTransformation.iUid)
428 case KUidECamEventImageProcessingTransformCropUidValue:
429 case KUidECamEventImageProcessingTransformRotateUidValue:
430 case KUidECamEventImageProcessingTransformMirrorUidValue:
431 case KUidECamEventImageProcessingTransformScaleUidValue:
432 case KUidECamEventImageProcessingSourceRectUidValue:
433 case KUidECamEventImageProcessingNoiseReductionUidValue:
434 case KUidECamEventImageProcessingGlareRemovalUidValue: