📄 bitmapscalerobserver.cpp
字号:
#include "BitmapScalerObserver.h"
CMyBitmapScaler* CMyBitmapScaler::NewL(CFbsBitmap* bitmap,
MBitmapScalerObserver* aObserver )
{
CMyBitmapScaler* self =
new(ELeave) CMyBitmapScaler( aObserver );
CleanupStack::PushL( self );
self->ConstructL(bitmap);
CleanupStack::Pop(self);
return self;
}
CMyBitmapScaler::CMyBitmapScaler(
MBitmapScalerObserver* aObserver ) :
CActive( EPriorityStandard ), iObserver( aObserver )
{
}
void CMyBitmapScaler::ConstructL(CFbsBitmap* bitmap)
{
iBitmap = bitmap;
iScaler = CBitmapScaler::NewL();
CActiveScheduler::Add(this);
}
CMyBitmapScaler::~CMyBitmapScaler()
{
Cancel();
//delete iBitmap;
delete iScaler;
}
void CMyBitmapScaler::DoCancel()
{
iScaler->Cancel();
}
void CMyBitmapScaler::RunL()
{
iObserver->Completed(iStatus.Int());
}
TInt CMyBitmapScaler::RunError(TInt aError)
{
iObserver->Completed(aError);
return KErrNone;
}
void CMyBitmapScaler::Scale(TInt aPercent)
{
if (IsActive())
{
return;
}
TReal32 multiplier;
multiplier = aPercent/(TReal32)100.0;
TInt newWidth = (TInt)(iBitmap->SizeInPixels().iWidth * multiplier);
TInt newHeight = (TInt)(iBitmap->SizeInPixels().iHeight * multiplier);
// The maintain aspect ratio is by default set to true
iScaler->Scale( &iStatus, *iBitmap, TSize(newWidth,newHeight) );
SetActive();
}
CFbsBitmap* CMyBitmapScaler::GetBitmap()
{
return iBitmap;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -