def scale(surface, size, dest_surface=None): """ scale(Surface, (width, height), DestSurface = None) -> Surface resize to new resolution """ width, height = size if width < 0 or height < 0: raise ValueError("Cannot scale to negative size") c_surf = surface._c_surface if dest_surface is None: new_surf = new_surface_from_surface(c_surf, width, height) else: new_surf = dest_surface._c_surface if new_surf.w != width or new_surf.h != height: raise ValueError("Destination surface not the given width or height.") if c_surf.format.BytesPerPixel != new_surf.format.BytesPerPixel: raise ValueError( "Source and destination surfaces need the same format.") if width and height: with locked(new_surf): with locked(c_surf): sdl.stretch(c_surf, new_surf) return Surface._from_sdl_surface(new_surf)
if dest_surface is None: new_surf = new_surface_from_surface(c_surf, width, height) else: new_surf = dest_surface._c_surface if new_surf.w != width or new_surf.h != height: raise ValueError("Destination surface not the given width or height.") if c_surf.format.BytesPerPixel != new_surf.format.BytesPerPixel: raise ValueError( "Source and destination surfaces need the same format.") if width and height: with locked(new_surf): with locked(c_surf): sdl.stretch(c_surf, new_surf) return Surface._from_sdl_surface(new_surf) def rotozoom(surface, angle, scale): """ rotozoom(Surface, angle, scale) -> Surface filtered scale and rotation """ raise NotImplementedError def scale2x(surface, dest_surface=None): """ scale2x(Surface, DestSurface = None) -> Surface specialized image doubler """