1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/mm/imagingandcamerafws/camerafw/testapps/testcameraapp/TestCameraApp.cpp Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,744 @@
1.4 +// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 +// All rights reserved.
1.6 +// This component and the accompanying materials are made available
1.7 +// under the terms of "Eclipse Public License v1.0"
1.8 +// which accompanies this distribution, and is available
1.9 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.10 +//
1.11 +// Initial Contributors:
1.12 +// Nokia Corporation - initial contribution.
1.13 +//
1.14 +// Contributors:
1.15 +//
1.16 +// Description:
1.17 +//
1.18 +
1.19 +#include <eikenv.h>
1.20 +#include <testcameraapp.rsg>
1.21 +#include "TestCameraApp.h"
1.22 +#include "TestCameraApp.hrh"
1.23 +#include "TestCamera.h"
1.24 +
1.25 +const TInt KMaxErrLength=50;
1.26 +_LIT(KErrorFormat,"Error - %d (%S)");
1.27 +
1.28 +//
1.29 +// CTCamAppUi
1.30 +//
1.31 +
1.32 +void CTCamAppUi::ConstructL()
1.33 + {
1.34 + CEikAppUi::ConstructL();
1.35 + iAppView = new(ELeave) CTCamAppView;
1.36 + iAppView->ConstructL(ClientRect());
1.37 + AddToStackL(iAppView);
1.38 +
1.39 + // The plugin relies on a specific file existing
1.40 + // hence this has to be created.
1.41 + CreateDependencyFileL();
1.42 +
1.43 + iCamera = CCamera::NewL(*this,0,0);
1.44 +
1.45 + iCameraAdvSet = CCamera::CCameraAdvancedSettings::NewL(*iCamera);
1.46 + iCameraPresets = CCamera::CCameraPresets::NewL(*iCamera);
1.47 + iCameraImgProc = CCamera::CCameraImageProcessing::NewL(*iCamera);
1.48 + iCameraSnapshot = CCamera::CCameraSnapshot::NewL(*iCamera);
1.49 +
1.50 + iCamera->Reserve();
1.51 + }
1.52 +
1.53 +CTCamAppUi::~CTCamAppUi()
1.54 + {
1.55 + if (iCamera!=NULL)
1.56 + iCamera->Release();
1.57 +
1.58 + delete iCameraSnapshot;
1.59 + delete iCameraImgProc;
1.60 + delete iCameraPresets;
1.61 + delete iCameraAdvSet;
1.62 + delete iCamera;
1.63 +
1.64 + // as the application is being closed, delete the file
1.65 + // so that the plugin will not be reactivated accidentaly
1.66 + RemoveDependencyFile();
1.67 +
1.68 + if (iAppView)
1.69 + {
1.70 + RemoveFromStack(iAppView);
1.71 + delete iAppView;
1.72 + }
1.73 + }
1.74 +
1.75 +void CTCamAppUi::HandleCommandL(TInt aCommand)
1.76 + {
1.77 + switch (aCommand)
1.78 + {
1.79 + case ETCamCmdPowerOn:
1.80 + iCamera->PowerOn();
1.81 + break;
1.82 + case ETCamCmdPowerOff:
1.83 + iCamera->PowerOff();
1.84 + break;
1.85 + case ETCamCmdViewFinder:
1.86 + ViewFinderL();
1.87 + break;
1.88 + case ETCamCmdCaptureImage:
1.89 + SingleShotL();
1.90 + break;
1.91 + case ETCamCmdBurstMode:
1.92 + BurstModeL();
1.93 + break;
1.94 + case ETCamCmdCaptureVideo:
1.95 + CaptureVideoL();
1.96 + break;
1.97 + case ETCamCmdIncBrightness:
1.98 + iCamera->SetBrightnessL(iCamera->Brightness() + 10);
1.99 + break;
1.100 + case ETCamCmdIncContrast:
1.101 + iCamera->SetContrastL(iCamera->Contrast() + 10);
1.102 + break;
1.103 + case ETCamCmdDecBrightness:
1.104 + iCamera->SetBrightnessL(iCamera->Brightness() - 10);
1.105 + break;
1.106 + case ETCamCmdDecContrast:
1.107 + iCamera->SetContrastL(iCamera->Contrast() - 10);
1.108 + break;
1.109 + case ETCamCmdResetBrightness:
1.110 + iCamera->SetBrightnessL(0);
1.111 + break;
1.112 + case ETCamCmdResetContrast:
1.113 + iCamera->SetContrastL(0);
1.114 + break;
1.115 + case ETCamCmdIncNumBurstImages:
1.116 + iCameraAdvSet->SetBurstImages(iCameraAdvSet->BurstImages() + 1);
1.117 + break;
1.118 + case ETCamCmdDecNumBurstImages:
1.119 + iCameraAdvSet->SetBurstImages(iCameraAdvSet->BurstImages() - 1);
1.120 + break;
1.121 + case ETCamCmdResetNumBurstImages:
1.122 + iCameraAdvSet->SetBurstImages(4);
1.123 + break;
1.124 +
1.125 + case ETCamCmdFactoryPreset:
1.126 + iCameraPresets->SetPreset(KUidECamPresetFactoryDefault);
1.127 + break;
1.128 +
1.129 + case ETCamCmdOutdoorPreset:
1.130 + iCameraPresets->SetPreset(KUidECamPresetOutdoor);
1.131 + break;
1.132 +
1.133 + case ETCamCmdOutdoorSportPreset:
1.134 + iCameraPresets->SetPreset(KUidECamPresetOutdoorSport);
1.135 + break;
1.136 +
1.137 + case ETCamCmdFogPreset:
1.138 + iCameraPresets->SetPreset(KUidECamPresetFog);
1.139 + break;
1.140 +
1.141 + case ETCamCmdNightPartyIndoorPreset:
1.142 + iCameraPresets->SetPreset(KUidECamPresetNightPartyIndoor);
1.143 + break;
1.144 +
1.145 + case ETCamCmdTextDocumentPreset:
1.146 + iCameraPresets->SetPreset(KUidECamPresetTextDocument);
1.147 + break;
1.148 +
1.149 + case ETCamCmdImgProcIncBrightness:
1.150 + IncImgProcAdjustmentL(KUidECamEventImageProcessingAdjustBrightness);
1.151 + break;
1.152 +
1.153 + case ETCamCmdImgProcDecBrightness:
1.154 + DecImgProcAdjustmentL(KUidECamEventImageProcessingAdjustBrightness);
1.155 + break;
1.156 +
1.157 + case ETCamCmdImgProcIncContrast:
1.158 + IncImgProcAdjustmentL(KUidECamEventImageProcessingAdjustContrast);
1.159 + break;
1.160 +
1.161 + case ETCamCmdImgProcDecContrast:
1.162 + DecImgProcAdjustmentL(KUidECamEventImageProcessingAdjustContrast);
1.163 + break;
1.164 +
1.165 + case ETCamCmdEnableSnapshot:
1.166 + EnableSnapshotL();
1.167 + break;
1.168 +
1.169 + case ETCamCmdDisableSnapshot:
1.170 + DisableSnapshot();
1.171 + break;
1.172 +
1.173 + case EEikCmdExit:
1.174 + Exit();
1.175 + break;
1.176 + }
1.177 + }
1.178 +
1.179 +void CTCamAppUi::ViewFinderL()
1.180 + {
1.181 + TSize imageSize;
1.182 + iCamera->EnumerateCaptureSizes(imageSize,1,CCamera::EFormatFbsBitmapColor16M);
1.183 + const TPoint pos = iAppView->DrawBorders(imageSize);
1.184 + TRect screenRect(pos,imageSize);
1.185 + TRect clipRect;
1.186 +
1.187 + if (!iCamera->ViewFinderActive())
1.188 + {
1.189 + iCamera->StartViewFinderDirectL(iCoeEnv->WsSession(),*iCoeEnv->ScreenDevice(),*iAppView->DrawableWindow(),screenRect,clipRect);
1.190 + }
1.191 + else
1.192 + {
1.193 + iCamera->StopViewFinder();
1.194 + }
1.195 + }
1.196 +
1.197 +void CTCamAppUi::BurstModeL()
1.198 + {
1.199 + if (!iCameraAdvSet)
1.200 + {
1.201 + User::Leave(KErrNotSupported);
1.202 + }
1.203 +
1.204 + if(CCamera::CCameraAdvancedSettings::EDriveModeBurst & iCameraAdvSet->SupportedDriveModes() )
1.205 + {
1.206 + iCameraAdvSet->SetDriveMode(CCamera::CCameraAdvancedSettings::EDriveModeBurst);
1.207 + }
1.208 + else
1.209 + {
1.210 + User::Leave(KErrNotSupported);
1.211 + }
1.212 + }
1.213 +
1.214 +void CTCamAppUi::EnableSnapshotL()
1.215 + {
1.216 + if(!iCameraSnapshot->IsSnapshotActive())
1.217 + {
1.218 + TSize size;
1.219 + iCamera->EnumerateCaptureSizes(size,1,CCamera::EFormatFbsBitmapColor16M);
1.220 + if(iCameraSnapshot->SupportedFormats() & CCamera::EFormatFbsBitmapColor4K)
1.221 + {
1.222 + iCameraSnapshot->PrepareSnapshotL(CCamera::EFormatFbsBitmapColor4K, TPoint(0,0), size, KRgbWhite, EFalse);
1.223 + iCameraSnapshot->StartSnapshot();
1.224 + }
1.225 + }
1.226 + }
1.227 +
1.228 +void CTCamAppUi::DisableSnapshot()
1.229 + {
1.230 + if(iCameraSnapshot->IsSnapshotActive())
1.231 + {
1.232 + iCameraSnapshot->StopSnapshot();
1.233 + }
1.234 + }
1.235 +
1.236 +void CTCamAppUi::SingleShotL()
1.237 + {
1.238 + if (!iCameraAdvSet)
1.239 + {
1.240 + User::Leave(KErrNotSupported);
1.241 + }
1.242 +
1.243 + if(CCamera::CCameraAdvancedSettings::EDriveModeSingleShot & iCameraAdvSet->SupportedDriveModes() )
1.244 + {
1.245 + iCameraAdvSet->SetDriveMode(CCamera::CCameraAdvancedSettings::EDriveModeSingleShot);
1.246 + }
1.247 + else
1.248 + {
1.249 + User::Leave(KErrNotSupported);
1.250 + }
1.251 + }
1.252 +
1.253 +void CTCamAppUi::CaptureImageL()
1.254 + {
1.255 + TSize size;
1.256 + iCamera->EnumerateCaptureSizes(size,1,CCamera::EFormatFbsBitmapColor16M);
1.257 + iCamera->PrepareImageCaptureL(CCamera::EFormatFbsBitmapColor16M,1);
1.258 + iCamera->CaptureImage();
1.259 + }
1.260 +
1.261 +void CTCamAppUi::CaptureVideoL()
1.262 + {
1.263 + if (!iCamera->VideoCaptureActive())
1.264 + {
1.265 + iCameraSnapshot->StopSnapshot();
1.266 +
1.267 + TSize size;
1.268 + TReal32 rate = 0;
1.269 + iCamera->EnumerateVideoFrameSizes(size,0,CCamera::EFormatFbsBitmapColor16M);
1.270 + iCamera->EnumerateVideoFrameRates(rate,0,CCamera::EFormatFbsBitmapColor16M,0);
1.271 + iCamera->PrepareVideoCaptureL(CCamera::EFormatFbsBitmapColor16M,0,0,2,1);
1.272 + iCamera->StartVideoCapture();
1.273 + }
1.274 + else
1.275 + {
1.276 + iCamera->StopVideoCapture();
1.277 + }
1.278 + }
1.279 +
1.280 +void CTCamAppUi::IncImgProcAdjustmentL(TUid aTransformation)
1.281 + {
1.282 + if(!iCameraImgProc)
1.283 + {
1.284 + User::Leave(KErrNotSupported);
1.285 + }
1.286 +
1.287 + RArray<TUid> supportedTransformations;
1.288 + CleanupClosePushL(supportedTransformations);
1.289 + iCameraImgProc->GetSupportedTransformationsL(supportedTransformations);
1.290 +
1.291 + TInt error = supportedTransformations.Find(aTransformation);
1.292 + CleanupStack::PopAndDestroy();
1.293 +
1.294 + if(error == KErrNotFound)
1.295 + {
1.296 + User::Leave(error);
1.297 + }
1.298 +
1.299 + TInt valuetx;
1.300 + User::LeaveIfError(iCameraImgProc->GetTransformationValue(aTransformation, valuetx));
1.301 +
1.302 + iCameraImgProc->SetTransformationValue(aTransformation, valuetx + 10);
1.303 + }
1.304 +
1.305 +void CTCamAppUi::DecImgProcAdjustmentL(TUid aTransformation)
1.306 + {
1.307 + if(!iCameraImgProc)
1.308 + {
1.309 + User::Leave(KErrNotSupported);
1.310 + }
1.311 +
1.312 + RArray<TUid> supportedTransformations;
1.313 + CleanupClosePushL(supportedTransformations);
1.314 + iCameraImgProc->GetSupportedTransformationsL(supportedTransformations);
1.315 +
1.316 + TInt error = supportedTransformations.Find(aTransformation);
1.317 + CleanupStack::PopAndDestroy();
1.318 +
1.319 + if(error == KErrNotFound)
1.320 + {
1.321 + User::Leave(error);
1.322 + }
1.323 +
1.324 + TInt valuetx;
1.325 + User::LeaveIfError(iCameraImgProc->GetTransformationValue(aTransformation, valuetx));
1.326 +
1.327 + iCameraImgProc->SetTransformationValue(aTransformation, valuetx - 10);
1.328 + }
1.329 +
1.330 +void CTCamAppUi::ReserveComplete(TInt /*aError*/)
1.331 + {
1.332 + }
1.333 +
1.334 +void CTCamAppUi::PowerOnComplete(TInt /*aError*/)
1.335 + {
1.336 + }
1.337 +
1.338 +void CTCamAppUi::ViewFinderFrameReady(CFbsBitmap& /*aFrame*/)
1.339 + {
1.340 + }
1.341 +
1.342 +void CTCamAppUi::ImageReady(CFbsBitmap* aBitmap,HBufC8* /*aData*/,TInt aError)
1.343 + {
1.344 + TBuf<KMaxErrLength> msgBuffer;
1.345 + _LIT(KErrMessage,"CTCamAppUi::ImageReady");
1.346 + if (aBitmap)
1.347 + {
1.348 + iAppView->DrawImage(aBitmap);
1.349 + delete aBitmap;
1.350 + }
1.351 + if (aError)
1.352 + {
1.353 + msgBuffer.Format(KErrorFormat,aError,&KErrMessage);
1.354 + iEikonEnv->InfoMsg(msgBuffer);
1.355 + }
1.356 + }
1.357 +
1.358 +void CTCamAppUi::FrameBufferReady(MFrameBuffer* aFrameBuffer,TInt aError)
1.359 + {
1.360 + TBuf<KMaxErrLength> msgBuffer;
1.361 + _LIT(KErrMessage,"CTCamAppUi::FrameBufferReady");
1.362 + if (aError)
1.363 + {
1.364 + msgBuffer.Format(KErrorFormat,aError,&KErrMessage);
1.365 + iEikonEnv->InfoMsg(msgBuffer);
1.366 + return;
1.367 + }
1.368 + TRAPD(error,iAppView->DrawImage(aFrameBuffer->FrameL(0)));
1.369 + aFrameBuffer->Release();
1.370 + if (error)
1.371 + {
1.372 + msgBuffer.Format(KErrorFormat,error,&KErrMessage);
1.373 + iEikonEnv->InfoMsg(msgBuffer);
1.374 + }
1.375 + }
1.376 +
1.377 +void CTCamAppUi::HandleEvent(const TECAMEvent& aEvent)
1.378 + {
1.379 + if(!TECAMEvent2::IsEventEncapsulationValid(aEvent))
1.380 + {
1.381 + HandleEvent1(aEvent);
1.382 + }
1.383 + else
1.384 + {
1.385 + HandleEvent2(static_cast<const TECAMEvent2&>(aEvent));
1.386 + }
1.387 + }
1.388 +
1.389 +void CTCamAppUi::HandleEvent2(const TECAMEvent2& /*aEvent2*/)
1.390 + {
1.391 +
1.392 + }
1.393 +
1.394 +void CTCamAppUi::HandleEvent1(const TECAMEvent& aEvent)
1.395 + {
1.396 + TBuf<KMaxErrLength> msgBuffer;
1.397 +
1.398 + switch(aEvent.iEventType.iUid)
1.399 + {
1.400 + case KUidECamEventCameraSettingDriveModeUidValue:
1.401 + {
1.402 + if(!aEvent.iErrorCode)
1.403 + {
1.404 + TRAPD(error,CaptureImageL());
1.405 + if(error)
1.406 + {
1.407 + _LIT(KErrMessage,"CaptureImage");
1.408 + msgBuffer.Format(KErrorFormat,error,&KErrMessage);
1.409 + iEikonEnv->InfoMsg(msgBuffer);
1.410 + }
1.411 + }
1.412 + else
1.413 + {
1.414 + _LIT(KErrMessage,"SettingDriveMode");
1.415 + msgBuffer.Format(KErrorFormat,aEvent.iErrorCode,&KErrMessage);
1.416 + iEikonEnv->InfoMsg(msgBuffer);
1.417 + }
1.418 + break;
1.419 + }
1.420 + case KUidECamEventBurstImagesUidValue:
1.421 + {
1.422 + if(aEvent.iErrorCode)
1.423 + {
1.424 + _LIT(KErrMessage,"SettingNumOfBurstImage");
1.425 + msgBuffer.Format(KErrorFormat,aEvent.iErrorCode,&KErrMessage);
1.426 + iEikonEnv->InfoMsg(msgBuffer);
1.427 + }
1.428 + break;
1.429 + }
1.430 + case KUidECamEventSnapshotUidValue:
1.431 + {
1.432 + if(aEvent.iErrorCode)
1.433 + {
1.434 + _LIT(KErrMessage,"SnapshotDataNotification");
1.435 + msgBuffer.Format(KErrorFormat,aEvent.iErrorCode,&KErrMessage);
1.436 + iEikonEnv->InfoMsg(msgBuffer);
1.437 + }
1.438 + else
1.439 + {
1.440 + if(iCamera->ViewFinderActive())
1.441 + {
1.442 + iCamera->StopViewFinder();
1.443 + }
1.444 +
1.445 + TRAPD(error, SnapshotDataDisplayL());
1.446 +
1.447 + if(error != KErrNone)
1.448 + {
1.449 + _LIT(KErrMessage,"SnapshotDataDisplay");
1.450 + msgBuffer.Format(KErrorFormat,error,&KErrMessage);
1.451 + iEikonEnv->InfoMsg(msgBuffer);
1.452 + }
1.453 + }
1.454 + break;
1.455 + }
1.456 +
1.457 + case KUidECamPresetFactoryDefaultUidValue:
1.458 + {
1.459 + if(aEvent.iErrorCode)
1.460 + {
1.461 + _LIT(KErrMessage,"FactoryPreset");
1.462 + msgBuffer.Format(KErrorFormat,aEvent.iErrorCode,&KErrMessage);
1.463 + iEikonEnv->InfoMsg(msgBuffer);
1.464 + }
1.465 + break;
1.466 + }
1.467 +
1.468 + case KUidECamPresetOutdoorUidValue:
1.469 + {
1.470 + if(aEvent.iErrorCode)
1.471 + {
1.472 + _LIT(KErrMessage,"OutdoorPreset");
1.473 + msgBuffer.Format(KErrorFormat,aEvent.iErrorCode,&KErrMessage);
1.474 + iEikonEnv->InfoMsg(msgBuffer);
1.475 + }
1.476 + break;
1.477 + }
1.478 +
1.479 + case KUidECamPresetOutdoorSportUidValue:
1.480 + {
1.481 + if(aEvent.iErrorCode)
1.482 + {
1.483 + _LIT(KErrMessage,"OutdoorSportPreset");
1.484 + msgBuffer.Format(KErrorFormat,aEvent.iErrorCode,&KErrMessage);
1.485 + iEikonEnv->InfoMsg(msgBuffer);
1.486 + }
1.487 + break;
1.488 + }
1.489 +
1.490 + case KUidECamPresetFogUidValue:
1.491 + {
1.492 + if(aEvent.iErrorCode)
1.493 + {
1.494 + _LIT(KErrMessage,"FogPreset");
1.495 + msgBuffer.Format(KErrorFormat,aEvent.iErrorCode,&KErrMessage);
1.496 + iEikonEnv->InfoMsg(msgBuffer);
1.497 + }
1.498 + break;
1.499 + }
1.500 +
1.501 + case KUidECamPresetNightPartyIndoorUidValue:
1.502 + {
1.503 + if(aEvent.iErrorCode)
1.504 + {
1.505 + _LIT(KErrMessage,"NightPartyIndoorPreset");
1.506 + msgBuffer.Format(KErrorFormat,aEvent.iErrorCode,&KErrMessage);
1.507 + iEikonEnv->InfoMsg(msgBuffer);
1.508 + }
1.509 + break;
1.510 + }
1.511 +
1.512 + case KUidECamPresetTextDocumentUidValue:
1.513 + {
1.514 + if(aEvent.iErrorCode)
1.515 + {
1.516 + _LIT(KErrMessage,"TextDocumentPreset");
1.517 + msgBuffer.Format(KErrorFormat,aEvent.iErrorCode,&KErrMessage);
1.518 + iEikonEnv->InfoMsg(msgBuffer);
1.519 + }
1.520 + break;
1.521 + }
1.522 +
1.523 + case KUidECamEventImageProcessingAdjustBrightnessUidValue:
1.524 + {
1.525 + if(aEvent.iErrorCode)
1.526 + {
1.527 + _LIT(KErrMessage,"ImageProcessingAdjustBrightness");
1.528 + msgBuffer.Format(KErrorFormat,aEvent.iErrorCode,&KErrMessage);
1.529 + iEikonEnv->InfoMsg(msgBuffer);
1.530 + }
1.531 + break;
1.532 + }
1.533 +
1.534 + case KUidECamEventImageProcessingAdjustContrastUidValue:
1.535 + {
1.536 + if(aEvent.iErrorCode)
1.537 + {
1.538 + _LIT(KErrMessage,"ImageProcessingAdjustContrast");
1.539 + msgBuffer.Format(KErrorFormat,aEvent.iErrorCode,&KErrMessage);
1.540 + iEikonEnv->InfoMsg(msgBuffer);
1.541 + }
1.542 + break;
1.543 + }
1.544 +
1.545 + default:
1.546 + break;
1.547 + }
1.548 + }
1.549 +
1.550 +void CTCamAppUi::ViewFinderReady(MCameraBuffer& /*aCameraBuffer*/,TInt /*aError*/)
1.551 + {
1.552 +
1.553 + }
1.554 +
1.555 +void CTCamAppUi::ImageBufferReady(MCameraBuffer& aCameraBuffer,TInt aError)
1.556 + {
1.557 + TBuf<KMaxErrLength> msgBuffer;
1.558 + _LIT(KErrMessage,"CTCamAppUi::ImageBufferReady");
1.559 + if(aError)
1.560 + {
1.561 + msgBuffer.Format(KErrorFormat,aError,&KErrMessage);
1.562 + iEikonEnv->InfoMsg(msgBuffer);
1.563 + return;
1.564 + }
1.565 + if(!iCameraSnapshot->IsSnapshotActive())
1.566 + {
1.567 + if (iCamera->ViewFinderActive())
1.568 + {
1.569 + iCamera->StopViewFinder();
1.570 + }
1.571 + TRAP(aError,iAppView->DrawImage(&aCameraBuffer.BitmapL(0)));
1.572 + }
1.573 +
1.574 + aCameraBuffer.Release();
1.575 +
1.576 + if (aError)
1.577 + {
1.578 + msgBuffer.Format(KErrorFormat,aError,&KErrMessage);
1.579 + iEikonEnv->InfoMsg(msgBuffer);
1.580 + }
1.581 +
1.582 + }
1.583 +
1.584 +void CTCamAppUi::VideoBufferReady(MCameraBuffer& aCameraBuffer,TInt aError)
1.585 + {
1.586 + TBuf<KMaxErrLength> msgBuffer;
1.587 + _LIT(KErrMessage,"CTCamAppUi::FrameBufferReady");
1.588 + if (aError)
1.589 + {
1.590 + msgBuffer.Format(KErrorFormat,aError,&KErrMessage);
1.591 + iEikonEnv->InfoMsg(msgBuffer);
1.592 + return;
1.593 + }
1.594 + TRAPD(error,iAppView->DrawImage(&aCameraBuffer.BitmapL(0)));
1.595 + aCameraBuffer.Release();
1.596 + if (error)
1.597 + {
1.598 + msgBuffer.Format(KErrorFormat,error,&KErrMessage);
1.599 + iEikonEnv->InfoMsg(msgBuffer);
1.600 + }
1.601 + }
1.602 +
1.603 +void CTCamAppUi::SnapshotDataDisplayL()
1.604 + {
1.605 + RArray<TInt> array;
1.606 + array.Reset();
1.607 + RTestCameraFrameBuffer& buffer = static_cast<RTestCameraFrameBuffer&>(iCameraSnapshot->SnapshotDataL(array));
1.608 + iAppView->DrawImage(&buffer.BitmapL(0));
1.609 + array.Close();
1.610 + buffer.Release();
1.611 + }
1.612 +
1.613 +void CTCamAppUi::CreateDependencyFileL()
1.614 + {
1.615 + // enforce dependency
1.616 + // create the file the plugin depends on.
1.617 + User::LeaveIfError(ifsSession.Connect());
1.618 + RFile file;
1.619 + TInt err = file.Replace(ifsSession, KTestCameraPluginName, EFileShareAny);
1.620 + file.Close();
1.621 + if(err != KErrNone)
1.622 + {
1.623 + User::LeaveIfError(KErrNotSupported);
1.624 + }
1.625 + }
1.626 +
1.627 +void CTCamAppUi::RemoveDependencyFile()
1.628 + {
1.629 + ifsSession.Delete(KTestCameraPluginName);
1.630 + ifsSession.Close();
1.631 + }
1.632 +
1.633 +//
1.634 +// CTCamAppView
1.635 +//
1.636 +
1.637 +CTCamAppView::CTCamAppView():
1.638 + CCoeControl()
1.639 + {
1.640 + }
1.641 +
1.642 +void CTCamAppView::ConstructL(const TRect& /*aRect*/)
1.643 + {
1.644 + CreateWindowL();
1.645 + EnableDragEvents();
1.646 + SetExtentToWholeScreen();
1.647 + ActivateL();
1.648 + }
1.649 +
1.650 +CTCamAppView::~CTCamAppView()
1.651 + {
1.652 + }
1.653 +
1.654 +void CTCamAppView::DrawImage(CFbsBitmap* aImage) const
1.655 + {
1.656 + CWindowGc& gc = SystemGc();
1.657 + gc.Activate(Window());
1.658 + TRect drawRect=Rect();
1.659 + TPoint pos;
1.660 + pos.iX = (3 * drawRect.iBr.iX / 4) - (aImage->SizeInPixels().iWidth / 2);
1.661 + pos.iY = (drawRect.iBr.iY - aImage->SizeInPixels().iWidth) / 2;
1.662 + gc.BitBlt(pos,aImage);
1.663 + TRect border(pos,aImage->SizeInPixels());
1.664 + border.Grow(1,1);
1.665 + gc.DrawRect(border);
1.666 + gc.Deactivate();
1.667 + iCoeEnv->WsSession().Flush();
1.668 + }
1.669 +
1.670 +void CTCamAppView::Draw(const TRect& /*aRect*/) const
1.671 + {
1.672 + CWindowGc& gc = SystemGc();
1.673 + TRect drawRect(Rect());
1.674 + drawRect.Shrink(1,1);
1.675 + gc.DrawRect(drawRect);
1.676 + gc.Clear();
1.677 + }
1.678 +
1.679 +TPoint CTCamAppView::DrawBorders(const TSize& aSize) const
1.680 + {
1.681 + CWindowGc& gc = SystemGc();
1.682 + gc.Activate(Window());
1.683 + TRect drawRect(Rect());
1.684 + TPoint pos;
1.685 + pos.iX = (drawRect.iBr.iX / 4) - (aSize.iWidth / 2);
1.686 + pos.iY = (drawRect.iBr.iY - aSize.iWidth) / 2;
1.687 + TRect border(pos,aSize);
1.688 + border.Grow(1,1);
1.689 + gc.SetPenColor(KRgbBlack);
1.690 + gc.DrawRect(border);
1.691 + gc.Deactivate();
1.692 + iCoeEnv->WsSession().Flush();
1.693 + return pos;
1.694 + }
1.695 +
1.696 +//
1.697 +// CTCamDocument
1.698 +//
1.699 +
1.700 +CTCamDocument::CTCamDocument(CEikApplication& aApp)
1.701 + : CEikDocument(aApp)
1.702 + {
1.703 + }
1.704 +
1.705 +CEikAppUi* CTCamDocument::CreateAppUiL()
1.706 + {
1.707 + return new(ELeave) CTCamAppUi;
1.708 + }
1.709 +
1.710 +//
1.711 +// CTCamApp
1.712 +//
1.713 +
1.714 +TUid CTCamApp::AppDllUid() const
1.715 + {
1.716 + return KUidTestCameraApp;
1.717 + }
1.718 +
1.719 +CApaDocument* CTCamApp::CreateDocumentL()
1.720 + {
1.721 + return new(ELeave) CTCamDocument(*this);
1.722 + }
1.723 +
1.724 +
1.725 +
1.726 +//
1.727 +// Base factory function
1.728 +//
1.729 +
1.730 +#include <eikstart.h>
1.731 +LOCAL_C CApaApplication* NewApplication()
1.732 + {
1.733 + return new CTCamApp;
1.734 + }
1.735 +
1.736 +//
1.737 +// EXE Entry point
1.738 +//
1.739 +
1.740 +GLDEF_C TInt E32Main()
1.741 + {
1.742 + return EikStart::RunApplication(NewApplication);
1.743 + }
1.744 +
1.745 +
1.746 +
1.747 +