示例#1
0
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);      
      }
      
   }
}