title: Map small surface onto larger surface in PyGame
body: <p>I'm using PyGame's graphics library to display graphics on an LED display. </p>
  
  <p>My LED display is 25x7. For testing without hardware, I've been able to use PyGame's <code>display</code> to view a 40x amplified version:</p>
  
  <pre><code>screen = pygame.display.set_mode((1000,280))
  </code></pre>
  
  <p>I'd like to actually draw boxes, rects, etc on a 25x7 grid and then project it onto a larger 1000x280 window on my computer, which will look like a 25x7 grid of 40x40 "pixels". That way, if I start working with hardware, I can skip the large projection, and just write 25x7=175 pixels worth of data out to my LEDs. </p>
  
  <p>I came up with a solution, but it's prohibitively slow:</p>
  
  <pre><code>xDim = 25
  yDim = 7
  
  pixelMultiplier = 40
  surf = pygame.Surface((xDim,yDim))
  bigSurf = pygame.Surface((pixelMultiplier*xDim,pixelMultiplier*yDim))
  
  # ... manipulate surf ...
  
  # map surf to bigSurf
    for x in range(xDim):
      for y in range(yDim):
        # grab color of pixel
        tmpColor = surf.get_at((x,y))
  
        # write to all pixels in larger surface  
        for i in range(pixelMultiplier):
          for j in range(pixelMultiplier):
            bigSurf.set_at((pixelMultiplier*x+i,pixelMultiplier*y+j),tmpColor)
  </code></pre>
  
  <p>Is there some built-in PyGame function that does this efficiently?</p>