📄 imagecapturerengine.cpp
字号:
/*
* ============================================================================
* Name : CImageCapturerEngine from ImageCapturerDocument.cpp
* Part of : ImageCapturer
* Created : 02.02.2006 by ToBeReplacedByAuthor
* Implementation notes:
*
* Version :
* Copyright: ToBeReplacedByCopyright
* ============================================================================
*/
// INCLUDE FILES
#include "ImageCapturerEngine.h"
// static constants
const TInt CImageCapturerEngine::KDefaultImageWidth=176;
const TInt CImageCapturerEngine::KDefaultImageHeight=144;
const CCamera::TFormat CImageCapturerEngine::KDefaultImageFormat=
CCamera::EFormatFbsBitmapColor16M;
const TInt CImageCapturerEngine::KDefaultImageIndex=0;
// Two-phased constructor.
CImageCapturerEngine* CImageCapturerEngine::NewL(MObserver& aObserver)
{
CImageCapturerEngine* self = new (ELeave) CImageCapturerEngine(aObserver);
CleanupStack::PushL(self);
self->ConstructL();
CleanupStack::Pop(self);
return self;
}
// destructor
CImageCapturerEngine::~CImageCapturerEngine()
{
iCamera->Release();
delete iCamera;
}
// constructor
CImageCapturerEngine::CImageCapturerEngine(MObserver& aObserver):
iObserver(aObserver)
{
}
// EPOC default constructor can leave.
void CImageCapturerEngine::ConstructL()
{
if (CCamera::CamerasAvailable()<=0)
{
User::Leave(KErrNotSupported);
}
iCamera = CCamera::NewL(*this,0);
iCamera->Reserve();
}
// Funtions from MCameraObserver
void CImageCapturerEngine::ReserveComplete(TInt aError)
{
if(aError == KErrNone)
{
iCamera->PowerOn();
}
else
{
iObserver.OnError(aError);
}
}
void CImageCapturerEngine::PowerOnComplete(TInt aError)
{
TInt err = aError;
if(aError == KErrNone)
{
TCameraInfo info;
iCamera->CameraInfo(info);
if ((info.iOptionsSupported&TCameraInfo::EContrastSupported)!=0)
{
TRAP(err, iCamera->SetContrastL(CCamera::EContrastAuto));
}
TRAP(err,StartViewFinderL());
if(err==KErrNone)
{
TRAP(err,PrepareImageCaptureL(KDefaultImageFormat));
}
}
if(err!=KErrNone)
{
iObserver.OnError(aError);
}
}
void CImageCapturerEngine::ViewFinderFrameReady(CFbsBitmap& aFrame)
{
iObserver.OnFrame(aFrame);
}
void CImageCapturerEngine::ImageReady(CFbsBitmap* aBitmap,HBufC8* /*aData*/,TInt aError)
{
if(aError == KErrNone)
{
iObserver.OnImage(aBitmap);
}
else
{
iObserver.OnError(aError);
}
}
void CImageCapturerEngine::FrameBufferReady(MFrameBuffer* /*aFrameBuffer*/,TInt /*aError*/)
{
}
// New functions
void CImageCapturerEngine::StartViewFinderL()
{
TSize imageSize(KDefaultImageWidth,KDefaultImageHeight);
if(iCamera->ViewFinderActive())
{
// iObserver.OnError(KErrAlreadyActive)
}
else
{
iCamera->StartViewFinderBitmapsL(imageSize);
}
if(!iCamera->ViewFinderActive())
{
// iObserver.OnError(KErrNotActivated);
}
}
void CImageCapturerEngine::StopViewFinder()
{
iCamera->StopViewFinder();
}
void CImageCapturerEngine::CaptureImage()
{
iCamera->CaptureImage();
}
// new private methods
void CImageCapturerEngine::PrepareImageCaptureL(CCamera::TFormat aImageFormat)
{
iCamera->EnumerateCaptureSizes(iSize, KDefaultImageIndex, aImageFormat);
iCamera->PrepareImageCaptureL(aImageFormat, KDefaultImageIndex);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -