X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=scripts%2Fmaketex.py;h=57380c0b7a5ef11b1fa4c3883bc594a38cddc6f9;hb=a3e08125394897156bb1b7cbea9edc1a5aecf0f9;hp=8c7d5a199def423855c23e6d4f7cad0738ed8036;hpb=4acc43935d3b19bae688e89ed42119e326a26f2d;p=libs%2Fgl.git diff --git a/scripts/maketex.py b/scripts/maketex.py index 8c7d5a19..57380c0b 100755 --- a/scripts/maketex.py +++ b/scripts/maketex.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python3 def escape(str): result = "" @@ -8,39 +8,54 @@ def escape(str): elif c=='\\': result += '\\\\' elif ord(c)<0x20: - result += "\\%03o"%ord(c) + result += "\\{:03o}".format(ord(c)) else: result += c - return result; + return result -def make_tex(fn): - import Image +def make_tex(fn, mipmap=False, srgb=False): + from PIL import Image img = Image.open(fn) fmt = "".join(img.getbands()) if fmt=="LA": - fmt = "LUMINANCE_ALPHA" + fmt = "LUMINANCE8_ALPHA8" elif fmt=="L": - fmt = "LUMINANCE" + fmt = "LUMINANCE8" + + if srgb: + fmt = "S"+fmt - result = "storage %s %d %d;\n"%(fmt, img.size[0], img.size[1]) - result += "min_filter LINEAR;\n" + 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] - result += escape("".join(["".join([chr(v) for v in p]) for p in data[i:i+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" return result if __name__=="__main__": - import sys import os + import argparse + + parser = argparse.ArgumentParser() + parser.add_argument("-o", "--output", metavar="FILE", help="Output filename") + parser.add_argument("-m", "--mipmap", action="store_true", help="Enable mipmaps") + parser.add_argument("--srgb", action="store_const", const=True, help="Use sRGB color space") + parser.add_argument("image") + + args = parser.parse_args() - if len(sys.argv)<2: - print "Usage: %s "%sys.argv[0] - else: - out = file(os.path.splitext(sys.argv[1])[0]+".tex", "w") - out.write(make_tex(sys.argv[1])) + out_fn = args.output + if not out_fn: + out_fn = os.path.splitext(args.image)[0]+".tex2d" + out = open(out_fn, "w") + out.write(make_tex(args.image, args.mipmap, args.srgb))