]> git.tdb.fi Git - libs/gl.git/blob - scripts/maketex.py
Remove deprecated things from the maketex script
[libs/gl.git] / scripts / maketex.py
1 #!/usr/bin/python3
2
3 def escape(str):
4         result = ""
5         for c in str:
6                 if c=='"':
7                         result += '\\"'
8                 elif c=='\\':
9                         result += '\\\\'
10                 elif ord(c)<0x20:
11                         result += "\\{:03o}".format(ord(c))
12                 else:
13                         result += c
14         return result
15
16 def make_tex(fn, mipmap=False, srgb=False):
17         from PIL import Image
18
19         img = Image.open(fn)
20
21         fmt = "".join(img.getbands())
22         if fmt=="LA":
23                 fmt = "LUMINANCE8_ALPHA8"
24         elif fmt=="L":
25                 fmt = "LUMINANCE8"
26
27         if srgb:
28                 fmt = "S"+fmt
29
30         result = "storage {} {} {};\n".format(fmt, img.size[0], img.size[1])
31         if mipmap:
32                 result += "generate_mipmap true;\n"
33         result += "raw_data \""
34         data = list(img.getdata())
35         for y in range(img.size[1]):
36                 i = (img.size[1]-1-y)*img.size[0]
37                 if len(img.getbands())==1:
38                         result += escape("".join([chr(v) for v in data[i:i+img.size[0]]]))
39                 else:
40                         result += escape("".join(["".join([chr(v) for v in p]) for p in data[i:i+img.size[0]]]))
41         result += "\";\n"
42
43         return result
44
45 if __name__=="__main__":
46         import os
47         import argparse
48
49         parser = argparse.ArgumentParser()
50         parser.add_argument("-o", "--output", metavar="FILE", help="Output filename")
51         parser.add_argument("-m", "--mipmap", action="store_true", help="Enable mipmaps")
52         parser.add_argument("--srgb", action="store_const", const=True, help="Use sRGB color space")
53         parser.add_argument("image")
54
55         args = parser.parse_args()
56
57         out_fn = args.output
58         if not out_fn:
59                 out_fn = os.path.splitext(args.image)[0]+".tex2d"
60         out = open(out_fn, "w")
61         out.write(make_tex(args.image, args.mipmap, args.srgb))