www.pudn.com > 2DGameAnimS60C_v1_0.zip > FireAnim.cpp


//////////////////////////////////////////////////////////////////////// 
// 
// FireAnim.cpp 
// 
// Copyright (c) 2003 Nokia Mobile Phones Ltd.  All rights reserved. 
// 
//////////////////////////////////////////////////////////////////////// 
 
#include  
#include "RenderableFactory.h" 
#include "BitmapAnimFrame.h" 
#include "FireAnim.h" 
 
//////////////////////////////////////////////////////////////////////// 
//////////////////////////////////////////////////////////////////////// 
 
CFireAnim::CFireAnim() : 
CBaseAnim(TSize(16,16)) 
	{ 
	} 
 
//////////////////////////////////////////////////////////////////////// 
 
CFireAnim* CFireAnim::NewL(CFbsBitmap& aSourceImage) 
	{ 
	CFireAnim* self = new(ELeave) CFireAnim(); 
	CleanupStack::PushL(self); 
	self->ConstructL(aSourceImage); 
	CleanupStack::Pop(); 
	return self; 
	} 
 
//////////////////////////////////////////////////////////////////////// 
 
CFireAnim::~CFireAnim() 
	{ 
	} 
 
//////////////////////////////////////////////////////////////////////// 
 
void CFireAnim::ConstructL(CFbsBitmap& aSourceImage) 
    { 
	AllocRenderablesL(16); 
 
	// Create image, device and context (only needed briefly): 
	CFbsBitmap* image = new (ELeave) CFbsBitmap(); 
	CleanupStack::PushL(image); 
	User::LeaveIfError( image->Create(iSize, EColor4K ) ); 
	CFbsBitmapDevice* device = CFbsBitmapDevice::NewL(image); 
	CleanupStack::PushL(device); 
	CFbsBitGc* gc; 
	User::LeaveIfError(device->CreateContext(gc)); 
	gc->SetBrushColor(TRgb(0,0,0)); 
 
	// Create ship frames: 
	TInt frame; 
	for (frame = 0 ; frame < 16 ; frame++) 
	{ 
		gc->Clear(); 
		BuildFrame(aSourceImage,frame,gc); 
		AddRenderable(CBitmapAnimFrame::NewL(*image)); 
	} 
 
	// Destroy context, device and image; 
	delete gc; 
	CleanupStack::PopAndDestroy(2); 
	} 
 
//////////////////////////////////////////////////////////////////////// 
 
void CFireAnim::BuildFrame(CFbsBitmap& aSourceImage,TInt frame_no,CFbsBitGc* aGc) 
{ 
	// Convert frame to x-coord: 
	TInt frame_x = frame_no << 4; 
 
	aGc->BitBlt(TPoint(0,0),&aSourceImage,TRect(TPoint(frame_x,0),iSize)); 
} 
 
//////////////////////////////////////////////////////////////////////// 
////////////////////////////////////////////////////////////////////////