📄 biaofengxpic.cpp
字号:
/*
============================================================================
Name : XPic.cpp
Author :
Version :
Copyright : Your copyright notice
Description : CXPic implementation
============================================================================
*/
#include <aknutils.h>
#include "BiaofengXPic.h"
// #include "travelv3App.h"
CXPic::CXPic()
{
m_bIsLoadFinish = EFalse;
m_iBitmap = NULL;
m_iBitmapMask = NULL;
m_iConverter = NULL;
m_iScaler = NULL;
m_iNewWidth=-1;
m_iNewHeight=-1;
}
CXPic::~CXPic()
{
delete m_iBitmap;
delete m_iBitmapMask;
delete m_iConverter;
delete m_iScaler;
}
CXPic* CXPic::CreatL(TSize asize)
{
CXPic* self = new (ELeave)CXPic();
CleanupStack::PushL(self);
self->ConstructL(asize);
CleanupStack::Pop(); // self;
return self;
}
CXPic* CXPic::LoadL(const TDesC& path,const TDesC& name)
{
CXPic* self = new (ELeave)CXPic();
CleanupStack::PushL(self);
self->ConstructL(path,name);
CleanupStack::Pop(); // self;
return self;
}
void CXPic::MiuoOpenComplete(TInt aError)
{
if (aError == KErrNone)
{
TFrameInfo frameInfo;
m_iConverter->FrameInfo(0,frameInfo);
m_iBitmap->Create(frameInfo.iOverallSizeInPixels,EColor64K);
if(m_iBitmapMask)
{
m_iBitmapMask->Create(frameInfo.iOverallSizeInPixels,EGray256);
m_iConverter->ConvertL(*m_iBitmap,*m_iBitmapMask);
}
else m_iConverter->ConvertL(*m_iBitmap);
}
}
void CXPic::MiuoConvertComplete(TInt aError)
{
if (aError == KErrNone)
{
m_iWidth=m_iBitmap->SizeInPixels().iWidth;
m_iHeight=m_iBitmap->SizeInPixels().iHeight;
m_bIsLoadFinish = ETrue;
if(m_iConverter)
{
delete m_iConverter;
m_iConverter = NULL;
}
if(m_iScaler)
{
delete m_iScaler;
m_iScaler=NULL;
}
if(m_iNewWidth!=-1)Scale(m_iNewWidth,m_iNewHeight);
}
}
void CXPic::MiuoCreateComplete(TInt aError)
{
}
void CXPic::ConstructL(TSize asize)
{
m_iWidth = asize.iWidth;
m_iHeight = asize.iHeight;
m_iBitmap = new (ELeave) CFbsBitmap();
m_iBitmap->Create(asize,EColor16M);
m_bIsLoadFinish = ETrue;
}
void CXPic::ConstructL(const TDesC& path,const TDesC& name)
{
TFileName fullpath;
fullpath=path;
fullpath.Append(name);
m_iBitmap = new (ELeave) CFbsBitmap;
TBuf<5> type=name.Right(3);
type.LowerCase();
if(type.Compare(_L("png"))==0)
m_iBitmapMask = new (ELeave) CFbsBitmap;
m_iConverter = CMdaImageFileToBitmapUtility::NewL(*this);
m_iConverter->OpenL(fullpath);
}
void CXPic::Scale(TInt width,TInt height)
{
if(!m_bIsLoadFinish)
{
m_iNewWidth=width;
m_iNewHeight=height;
}
else
{
m_iNewWidth=-1;
m_iNewHeight=-1;
m_bIsLoadFinish = EFalse;
if(!m_iScaler)m_iScaler = CMdaBitmapScaler::NewL();
m_iScaler->ScaleL(*this,*m_iBitmap,TSize(width,height),EFalse);
}
}
TInt CXPic::GetWidth()
{
return m_iWidth;
}
TInt CXPic::GetHeight()
{
return m_iHeight;
}
TBool CXPic::IsLoadFin()
{
return m_bIsLoadFinish;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -