📄 imagehelper.cpp
字号:
/*
============================================================================
Name : ImageHelper.cpp
Author :
Version : 1.0
Copyright : Your copyright notice
Description : CImageHelper implementation
============================================================================
*/
#include "helper/ImageHelper.h"
#include "Common.h"
CImageHelper::CImageHelper(RFs& aFs) :
CActive(EPriorityStandard), // Standard priority
iFs(aFs)
{
}
CImageHelper* CImageHelper::NewLC(RFs& aFs)
{
CImageHelper* self = new ( ELeave ) CImageHelper(aFs);
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
CImageHelper* CImageHelper::NewL(RFs& aFs)
{
CImageHelper* self = CImageHelper::NewLC(aFs);
CleanupStack::Pop(); // self;
return self;
}
void CImageHelper::ConstructL()
{
CActiveScheduler::Add( this); // Add to scheduler
iActiveSchedulerWait = new (ELeave)CActiveSchedulerWait;
}
CImageHelper::~CImageHelper()
{
Cancel(); // Cancel any request, if outstanding
if (iActiveSchedulerWait)
{
if (iActiveSchedulerWait->IsStarted())
{
iActiveSchedulerWait->AsyncStop();
}
delete iActiveSchedulerWait;
iActiveSchedulerWait = NULL;
}
if (iImgDecoder)
{
iImgDecoder->Cancel();
delete iImgDecoder;
iImgDecoder = NULL;
}
}
void CImageHelper::LoadPngImageL(const TDesC& aFileName, CFbsBitmap& aBitmap, CFbsBitmap& aBitmapMask)
{
Cancel();
delete iImgDecoder;
iImgDecoder = NULL;
// 获取图片
iImgDecoder = CImageDecoder::FileNewL(iFs, aFileName, KMIMEType);
TSize size = iImgDecoder->FrameInfo().iOverallSizeInPixels;
TDisplayMode mode = iImgDecoder->FrameInfo().iFrameDisplayMode;
// 创建位图
User::LeaveIfError(aBitmap.Create(size, mode));
User::LeaveIfError(aBitmapMask.Create(size, EGray256));
// 调用转换异步函数
// iStatus = KRequestPending;
iImgDecoder->Convert(&iStatus, aBitmap, aBitmapMask);
SetActive();
iActiveSchedulerWait->Start();
}
void CImageHelper::DoCancel()
{
if (iImgDecoder)
{
iImgDecoder->Cancel();
}
}
void CImageHelper::RunL()
{
if (iStatus == KErrNone)
{
iActiveSchedulerWait->AsyncStop();
}
else
if (iStatus == KErrUnderflow)
{
iImgDecoder->ContinueConvert(&iStatus);
SetActive();
iActiveSchedulerWait->Start();
}
}
TInt CImageHelper::RunError(TInt aError)
{
return aError;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -