X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=scripts%2Fmaketex.py;h=72ff49acb7a1173e536a72721bed4844bd7f5065;hb=9d00429567a54023228edfa340cd2a4d1e877d1e;hp=57380c0b7a5ef11b1fa4c3883bc594a38cddc6f9;hpb=a3e08125394897156bb1b7cbea9edc1a5aecf0f9;p=libs%2Fgl.git diff --git a/scripts/maketex.py b/scripts/maketex.py index 57380c0b..72ff49ac 100755 --- a/scripts/maketex.py +++ b/scripts/maketex.py @@ -13,8 +13,21 @@ def escape(str): result += c return result +def values(data, size): + for y in range(size[1]-1, -1, -1): + for x in range(size[0]): + yield data[x+y*size[0]] + +def values_multi(data, size): + for y in range(size[1]-1, -1, -1): + for x in range(size[0]): + for c in data[x+y*size[0]]: + yield c + def make_tex(fn, mipmap=False, srgb=False): from PIL import Image + import base64 + import codecs img = Image.open(fn) @@ -30,15 +43,12 @@ def make_tex(fn, mipmap=False, srgb=False): result = "storage {} {} {};\n".format(fmt, img.size[0], img.size[1]) if mipmap: result += "generate_mipmap true;\n" - result += "raw_data \"" - data = list(img.getdata()) - for y in range(img.size[1]): - i = (img.size[1]-1-y)*img.size[0] - if len(img.getbands())==1: - result += escape("".join([chr(v) for v in data[i:i+img.size[0]]])) - else: - result += escape("".join(["".join([chr(v) for v in p]) for p in data[i:i+img.size[0]]])) - result += "\";\n" + + if len(img.getbands())==1: + pixels = values(img.getdata(), img.size) + else: + pixels = values_multi(img.getdata(), img.size) + result += "raw_data ={}=;\n".format(codecs.decode(base64.b64encode(bytes(pixels)), "ascii")) return result