diff options
Diffstat (limited to 'libs/png2rgba.py')
-rwxr-xr-x | libs/png2rgba.py | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/libs/png2rgba.py b/libs/png2rgba.py deleted file mode 100755 index 938597c..0000000 --- a/libs/png2rgba.py +++ /dev/null @@ -1,144 +0,0 @@ -#!/usr/bin/env python - -import os, numpy, sys -import Image - -# ----------------------------------------------------- - -def png2rgba(namespace, filenames): - - fdH = open("%s.hpp" % namespace, "w") - fdH.write("/* (Auto-generated binary data file). */\n") - fdH.write("\n") - fdH.write("#ifndef BINARY_%s_HPP\n" % namespace.upper()) - fdH.write("#define BINARY_%s_HPP\n" % namespace.upper()) - fdH.write("\n") - fdH.write("namespace %s\n" % namespace) - fdH.write("{\n") - - fdC = open("%s.cpp" % namespace, "w") - fdC.write("/* (Auto-generated binary data file). */\n") - fdC.write("\n") - fdC.write("#include \"%s.hpp\"\n" % namespace) - fdC.write("\n") - - tempIndex = 1 - - for filename in filenames: - shortFilename = filename.rsplit(os.sep, 1)[-1].split(".", 1)[0] - shortFilename = shortFilename.replace("-", "_") - - png = Image.open(filename) - pngNumpy = numpy.array(png) - pngData = pngNumpy.tolist() - #pngData.reverse() - - height = len(pngData) - for dataBlock in pngData: - width = len(dataBlock) - channels = len(dataBlock[0]) - break - else: - print("Invalid image found, cannot continue!") - quit() - - if channels not in (3, 4): - print("Invalid image channel count, cannot continue!") - quit() - - print("Generating data for \"%s\" using '%s' type" % (filename, "GL_BGR" if channels == 3 else "GL_BGRA")) - #print(" Width: %i" % width) - #print(" Height: %i" % height) - #print(" DataSize: %i" % (width * height * channels)) - - fdH.write(" extern const char* %sData;\n" % shortFilename) - fdH.write(" const unsigned int %sDataSize = %i;\n" % (shortFilename, width * height * channels)) - fdH.write(" const unsigned int %sWidth = %i;\n" % (shortFilename, width)) - fdH.write(" const unsigned int %sHeight = %i;\n" % (shortFilename, height)) - - if tempIndex != len(filenames): - fdH.write("\n") - - fdC.write("static const unsigned char temp%i[] = {\n" % tempIndex) - - curColumn = 1 - fdC.write(" ") - - for dataBlock in pngData: - if curColumn == 0: - fdC.write(" ") - - for data in dataBlock: - if channels == 3: - r, g, b = data - fdC.write(" %3u, %3u, %3u," % (b, g, r)) - else: - r, g, b, a = data - - if filename in ("artwork/claw1.png", - "artwork/claw2.png", - "artwork/run1.png", - "artwork/run2.png", - "artwork/run3.png", - "artwork/run4.png", - "artwork/scratch1.png", - "artwork/scratch2.png", - "artwork/sit.png", - "artwork/tail.png"): - if r == 255: - a -= 38 - if a < 0: a = 0 - #a = 0 - #else: - #r = g = b = 255 - - fdC.write(" %3u, %3u, %3u, %3u," % (b, g, r, a)) - - if curColumn > 20: - fdC.write("\n ") - curColumn = 1 - else: - curColumn += 1 - - fdC.write("};\n") - fdC.write("const char* %s::%sData = (const char*)temp%i;\n" % (namespace, shortFilename, tempIndex)) - - if tempIndex != len(filenames): - fdC.write("\n") - - tempIndex += 1 - - fdH.write("}\n") - fdH.write("\n") - fdH.write("#endif // BINARY_%s_HPP\n" % namespace.upper()) - fdH.write("\n") - fdH.close() - - fdC.write("\n") - fdC.close() - -# ----------------------------------------------------- - -if __name__ == '__main__': - if len(sys.argv) != 3: - print("Usage: %s <namespace> <artwork-folder>" % sys.argv[0]) - quit() - - namespace = sys.argv[1] - artFolder = sys.argv[2] - - if not os.path.exists(artFolder): - print("Folder '%s' does not exist" % artFolder) - quit() - - # find png files - pngFiles = [] - - for root, dirs, files in os.walk(artFolder): - for name in [name for name in files if name.lower().endswith(".png")]: - pngFiles.append(os.path.join(root, name)) - - pngFiles.sort() - - # create code now - png2rgba(namespace, pngFiles) |