def bilinear_scale(src, dst, sx=0, sy=0, sw=None, sh=None, dx=0, dy=0, dw=None, dh=None, precise=0): if sw is None: sw, sh = src.get_size() if dw is None: dw, dh = dst.get_size() while True: if sw <= dw * 2 and sh <= dh * 2: break nsw = max(sw / 2, dw) nsh = max(sh / 2, dh) nsrc = renpy.display.pgrender.surface((nsw, nsh), src.get_masks()[3]) _renpy.bilinear(src, nsrc, sx, sy, sw, sh, precise=precise) sx = 0 sy = 0 sw = nsw sh = nsh src = nsrc _renpy.bilinear(src, dst, sx, sy, sw, sh, dx, dy, dw, dh, precise=precise)