📄 imagedisplayer.cpp
字号:
#include "ImageDisplayer.h"
#include "YahooImageSearchAppUi.h"
#include "Yahoo.hrh"
#include "SearchResults.h"
#include "ImageContainerView.h"
#include <COEMAIN.h>
CImageDisplayer::CImageDisplayer()
: CActive(EPriorityStandard), iDecoder(NULL), iBitmap(NULL)
{
}
CImageDisplayer::~CImageDisplayer()
{
Cancel();
delete iDecoder;
delete iBitmap;
iImageTitle.Close();
}
void CImageDisplayer::ConstructL()
{
CActiveScheduler::Add(this);
}
void CImageDisplayer::DisplayImageL(const TDesC16& imageTitle, const TDesC8& imageData)
{
Clear();
iImageTitle.SetLength(0);
iImageTitle.ReAllocL(imageTitle.Length());
iImageTitle.Copy(imageTitle);
iImageData.ReAllocL(imageData.Length());
iImageData.Copy(imageData);
RFs& rFs = CCoeEnv::Static()->FsSession();
_LIT8(kJPEG, "image/jpeg");
TBuf8<32> mimeType;
mimeType.Copy(kJPEG);
iDecoder = CImageDecoder::DataNewL(rFs, iImageData, mimeType);
const TFrameInfo& frameInfo = iDecoder->FrameInfo();
iBitmap = new (ELeave) CFbsBitmap;
TDisplayMode displayMode = CEikonEnv::Static()->DefaultDisplayMode(); // frameInfo.iFrameDisplayMode
User::LeaveIfError(iBitmap->Create(frameInfo.iOverallSizeInPixels, displayMode));
iDecoder->Convert(&iStatus, *iBitmap);
SetActive();
}
void CImageDisplayer::RunL()
{
Clear();
CYahooImageSearchAppUi *appUi = static_cast<CYahooImageSearchAppUi*>(CCoeEnv::Static()->AppUi());
CImageContainerView *imageView = appUi->ImageContainerView();
imageView->SetImageL(iImageTitle, iBitmap);
iBitmap = NULL;
appUi->ActivateLocalViewL(TUid::Uid(EImageContainerViewId));
}
void CImageDisplayer::Clear()
{
if (iDecoder)
iDecoder->Cancel();
delete iDecoder;
iDecoder = NULL;
iImageData.SetLength(0);
iImageData.ReAlloc(0);
}
void CImageDisplayer::DoCancel()
{
Clear();
delete iBitmap;
iBitmap = NULL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -