Mercurial > s60_experiments
view DemoCube/src/DemoCamera.cpp @ 0:43361e733c66
Origination.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Tue, 12 Feb 2008 17:18:02 -0600 |
parents | |
children |
line wrap: on
line source
/*===================================================================== Copyright © 2007 Nokia Corporation. All rights reserved. ======================================================================*/ #include "DemoCameraNotify.h" #include "DemoCamera.h" enum TInternalState { EUninitialized = 0x00, EReserved = 0x01, EPowered = 0x02, EReady = 0x03 }; CDemoCamera* CDemoCamera::NewL(const TSize& aSize, MDemoCameraNotify* aNotify) { CDemoCamera* self = new(ELeave) CDemoCamera(aSize); CleanupStack::PushL(self); self->ConstructL(aNotify); CleanupStack::Pop(); return self; } CDemoCamera::CDemoCamera(const TSize& aSize) : iState(EUninitialized), iSize(aSize), iCamera(NULL), iNotify(NULL) { } void CDemoCamera::ConstructL(MDemoCameraNotify* aNotify) { iNotify = aNotify; iCamera = CCamera::NewL(*this, 0); } CDemoCamera::~CDemoCamera() { iNotify = NULL; if(iState & EReady) { Release(); } if(iCamera) { delete iCamera; iCamera = NULL; } } void CDemoCamera::Acquire() { switch(iState) { case EUninitialized: iCamera->Reserve(); break; case EReserved: iCamera->PowerOn(); break; case EReady: iNotify->CameraReady(); break; default: break; } } void CDemoCamera::Release() { switch(iState) { case EReady: iCamera->PowerOff(); iState &= ~EPowered; case EReserved: iCamera->Release(); iState &= ~EReserved; case EUninitialized: default: break; } } void CDemoCamera::StartFeedL() { iCamera->StartViewFinderBitmapsL(iSize); } void CDemoCamera::StopFeed() { iCamera->StopViewFinder(); } void CDemoCamera::ReserveComplete(TInt /*aError*/) { iState |= EReserved; iCamera->PowerOn(); } void CDemoCamera::PowerOnComplete(TInt /*aError*/) { iState |= EPowered; iNotify->CameraReady(); } void CDemoCamera::ViewFinderFrameReady(CFbsBitmap& aFrame) { iNotify->SetCameraFrame(aFrame); } void CDemoCamera::ImageReady(CFbsBitmap* /*aBitmap*/, HBufC8* /*aData*/, TInt /*aError*/) { } void CDemoCamera::FrameBufferReady(MFrameBuffer* /*aFrameBuffer*/, TInt /*aError*/) { }