]> git.tdb.fi Git - libs/gl.git/blobdiff - scripts/maketex.py
Better naming algorithm for objects in scene export
[libs/gl.git] / scripts / maketex.py
index 04de1d38a57d51cc2e25c2ea16f8e5896481283a..520be8424b02f39740b663bd03fc83c736e05f54 100755 (executable)
@@ -11,10 +11,10 @@ def escape(str):
                        result += "\\%03o"%ord(c)
                else:
                        result += c
-       return result;
+       return result
 
-def make_tex(fn, filter="LINEAR", anisotropy=0, wrap=None):
-       import Image
+def make_tex(fn, filter="LINEAR", anisotropy=0, wrap=None, srgb=False):
+       from PIL import Image
 
        img = Image.open(fn)
 
@@ -24,6 +24,9 @@ def make_tex(fn, filter="LINEAR", anisotropy=0, wrap=None):
        elif fmt=="L":
                fmt = "LUMINANCE"
 
+       if srgb:
+               fmt = "S"+fmt
+
        result = "storage %s %d %d;\n"%(fmt, img.size[0], img.size[1])
        result += "filter %s;\n"%filter
        if "MIPMAP" in filter:
@@ -36,7 +39,10 @@ def make_tex(fn, filter="LINEAR", anisotropy=0, wrap=None):
        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 fmt=="LUMINANCE" or fmt=="SLUMINANCE":
+                       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
@@ -50,6 +56,7 @@ if __name__=="__main__":
        parser.add_argument("-f", "--filter", choices=["NEAREST", "LINEAR", "MIPMAP"], default="LINEAR", help="Filtering mode")
        parser.add_argument("-a", "--anisotropy", metavar="NUMBER", help="Maximum anisotropy, 0 = disable")
        parser.add_argument("-w", "--wrap", choices=["REPEAT", "CLAMP_TO_EDGE", "MIRRORED_REPEAT"], help="Wrapping mode")
+       parser.add_argument("--srgb", action="store_const", const=True, help="Use sRGB color space")
        parser.add_argument("image")
 
        args = parser.parse_args()
@@ -62,4 +69,4 @@ if __name__=="__main__":
        if not out_fn:
                out_fn = os.path.splitext(args.image)[0]+".tex2d"
        out = file(out_fn, "w")
-       out.write(make_tex(args.image, filter, args.anisotropy, args.wrap))
+       out.write(make_tex(args.image, filter, args.anisotropy, args.wrap, args.srgb))