void Sprite::render(BitmapCanvas& canvas) { // render the current frame at m_x,m_y if(m_visible) { int frame = m_animations[m_currentAnimation][m_currentFrame]; if( m_frames[frame]->m_imgMask != NULL ) { // we have a mask that we need to render first Blitter bltMask ( *(m_frames[frame]->m_imgMask) ); bltMask.SetMode (SRCPAINT); bltMask.SetDest (m_x, m_y); bltMask.BlitTo (canvas); Blitter blitFrame( *(m_frames[frame]->m_img) ); blitFrame.SetMode (SRCAND); blitFrame.SetDest (m_x, m_y); blitFrame.BlitTo(canvas); } else { // no mask, just render the frame Blitter bltMask ( *(m_frames[frame]->m_img) ); bltMask.SetMode (SRCPAINT); bltMask.SetDest (m_x, m_y); bltMask.BlitTo (canvas); } } }