# File lib/rubygame/surface.rb, line 285
  def blit( target, pos, src_rect=nil )
    unless target.kind_of? Rubygame::Surface
      raise TypeError, "blit target must be a Surface"
    end

    src_x, src_y, src_w, src_h =
      case src_rect
      when SDL::Rect
        [src_rect.x, src_rect.y, src_rect.w, src_rect.h]
      when Array
        src_rect
      when nil
        [0, 0] + self.size
      end

    src_rect  = SDL::Rect.new([src_x,  src_y,  src_w, src_h])
    blit_x, blit_y = pos
    blit_rect = SDL::Rect.new([blit_x, blit_y, src_w, src_h])

    SDL.BlitSurface( @struct, src_rect, target.struct, blit_rect )

    return Rubygame::Rect.new( blit_rect.to_ary )
  end