⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 camengine.cpp

📁 Symbian 调用摄像头的简单程序。实现了最基本的功能。
💻 CPP
字号:
/*
============================================================================
 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -