camengine.cpp
来自「Symbian 调用摄像头的简单程序。实现了最基本的功能。」· C++ 代码 · 共 116 行
CPP
116 行
/*
============================================================================
Name : CamEngine.cpp
Author : Augusta
Version :
Copyright : All Right Reserved
Description : CCamEngine implementation
============================================================================
*/
#include "CamEngine.h"
#include <ECam.h>
#include <fbs.h>
#include <aknnotewrappers.h>
CCamEngine::CCamEngine(CCamDecodeContainer& aContainer)//:iContainer(aContainer)
{
// No implementation required
iContainer=&aContainer;
//CAknWarningNote* warningNote = new ( ELeave ) CAknWarningNote;
//warningNote->ExecuteLD(_L("in engine construct"));
}
CCamEngine::~CCamEngine()
{
delete iCamera;
}
CCamEngine* CCamEngine::NewLC(CCamDecodeContainer& aContainer)
{
CCamEngine* self = new (ELeave)CCamEngine(aContainer);
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
CCamEngine* CCamEngine::NewL(CCamDecodeContainer& aContainer)
{
//iContainer=&aContainer;
CCamEngine* self=CCamEngine::NewLC(aContainer);
CleanupStack::Pop(); // self;
return self;
}
void CCamEngine::ConstructL()
{
if(!CCamera::CamerasAvailable())
{
HandleError(KErrHardwareNotAvailable);
return;
}
iCamera=CCamera::NewL(*this,0);
iCamera->CameraInfo(iInfo);
}
void CCamEngine::Reserve()
{
iCamera->Reserve();
// iWidth=176;
// iHeight=176;
//CAknWarningNote* warningNote = new ( ELeave ) CAknWarningNote;
//warningNote->ExecuteLD(_L("in camera start view"));
}
void CCamEngine::ReserveComplete(TInt aError)
{
if (aError)
{
HandleError(aError);
}
else
{
iCamera->PowerOn();
}
}
void CCamEngine::PowerOnComplete(TInt aError)
{
if(aError)
{
HandleError(aError);
}
else
{
iSize=TSize(176,208); //TSize不可静态生成
iCamera->StartViewFinderBitmapsL(iSize);
}
}
void CCamEngine::HandleError(TInt aError)
{
}
void CCamEngine::Exit()
{
iCamera->StopViewFinder();
iCamera->PowerOff();
iCamera->Release();
}
void CCamEngine::ViewFinderFrameReady(CFbsBitmap& aFrame)
{
iContainer->iCamStart=ETrue;
iContainer->DrawImageNow(&aFrame);
}
void CCamEngine::ImageReady(CFbsBitmap* aBitmap,HBufC8* aData,TInt aError)
{
}
void CCamEngine::FrameBufferReady(MFrameBuffer* aFrameBuffer,TInt aError)
{
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?