📄 biaofengxsurface.cpp
字号:
/*
============================================================================
Name : XSurface.cpp
Author :
Version :
Copyright : Your copyright notice
Description : CXSurface implementation
============================================================================
*/
#include <aknutils.h>
#include "BiaofengXSurface.h"
//#include <eikapp.h>
CXSurface::CXSurface()
{
// No implementation required
}
CXSurface::~CXSurface()
{
if(m_iBitmapGc)
{
delete m_iBitmapGc;
m_iBitmapGc = NULL;
}
if(m_iBitmapDevice)
{
delete m_iBitmapDevice;
m_iBitmapDevice = NULL;
}
if (m_iBitmap)
{
delete m_iBitmap;
m_iBitmap = NULL;
}
}
CXSurface* CXSurface::NewLC(TSize asize )
{
CXSurface* self = new (ELeave)CXSurface();
CleanupStack::PushL(self);
self->ConstructL(asize);
return self;
}
CXSurface* CXSurface::NewL(TSize asize )
{
CXSurface* self=CXSurface::NewLC(asize );
CleanupStack::Pop(); // self;
return self;
}
void CXSurface::ConstructL(TSize asize )
{
m_iBitmap = CXPic::CreatL(asize);
//m_iBitmap = apic;
m_iBitmapDevice = CFbsBitmapDevice::NewL(m_iBitmap->m_iBitmap);
m_iBitmapDevice->CreateContext(m_iBitmapGc);
}
void CXSurface::BitBlt(TInt x,TInt y,CXPic *apic)
{
if(!apic)return;
if(!apic->m_bIsLoadFinish)return;
BitBlt(x,y,apic,TRect(0,0,apic->m_iWidth,apic->m_iHeight));
}
void CXSurface::BitBlt(TInt x,TInt y,CXPic *apic,TRect asrc_r)
{
if(!apic)return;
if(!apic->m_bIsLoadFinish)return;
if(apic->m_iBitmapMask)
m_iBitmapGc->BitBltMasked(TPoint(x,y),apic->m_iBitmap,asrc_r,apic->m_iBitmapMask,ETrue);
else
m_iBitmapGc->BitBlt(TPoint(x,y),apic->m_iBitmap,asrc_r);
}
void CXSurface::Fill(TInt x, TInt y,TInt w,TInt h,TRgb color)
{
Fill(TRect(x,y,x+w,y+h),color);
}
void CXSurface::Fill(const TRect& r,TRgb color)
{
m_iBitmapGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
m_iBitmapGc->SetBrushColor(color);
m_iBitmapGc->SetPenColor(color);
m_iBitmapGc->DrawRect(r);
m_iBitmapGc->SetBrushStyle(CGraphicsContext::ENullBrush);
}
void CXSurface::Rect(TInt x, TInt y,TInt w,TInt h,TRgb color)
{
Rect(TRect(x,y,x+w,y+h),color);
}
void CXSurface::Rect(const TRect& r,TRgb color)
{
m_iBitmapGc->SetBrushStyle(CGraphicsContext::ENullBrush);
m_iBitmapGc->SetBrushColor(color);
m_iBitmapGc->SetPenColor(color);
m_iBitmapGc->DrawRect(r);
}
void CXSurface::Line(TInt x1, TInt y1,TInt x2, TInt y2,TRgb color)
{
m_iBitmapGc->SetPenColor(color);
m_iBitmapGc->DrawLine(TPoint(x1,y1),TPoint(x2,y2));
}
void CXSurface::Text(const TDesC& text,TInt x,TInt y,TRgb color,const CFont * font,TInt mode)
{
if(mode&TEXT_RIGHT)x-=GetTextWidthInPix(text);
else if(mode&TEXT_HCENTER)x-=GetTextWidthInPix(text)/2;
if(mode&TEXT_TOP)y+=GetTextHeightInPix();
if(font)m_iBitmapGc->UseFont(font);
else m_iBitmapGc->UseFont(CEikonEnv::Static()->AnnotationFont());
m_iBitmapGc->SetPenColor(color);
m_iBitmapGc->DrawText(text,TPoint(x,y));
m_iBitmapGc->DiscardFont();
}
TInt CXSurface::GetTextWidthInPix(const TDesC& text,const CFont * font)
{
#ifdef __WINS__
return 12*text.Length();
#endif
if(font)return font->TextWidthInPixels(text);
return CEikonEnv::Static()->AnnotationFont()->TextWidthInPixels(text);
}
TInt CXSurface::GetTextHeightInPix(const CFont * font)
{
if(font)return font->HeightInPixels();
return CEikonEnv::Static()->AnnotationFont()->HeightInPixels();
}
void CXSurface::SetClip(TInt x,TInt y,TInt w,TInt h)
{
m_iBitmapGc->SetClippingRect(TRect(x,y,x+w,y+h));
}
CFbsBitmap* CXSurface::GetFbsBitmap()
{
return m_iBitmap->m_iBitmap;
}
CXPic* CXSurface::GetBitmap()
{
return m_iBitmap;
}
TInt CXSurface::GetWidth()
{
return m_iBitmap->m_iWidth;
}
TInt CXSurface::GetHeight()
{
return m_iBitmap->m_iHeight;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -