| The Android Open Source Project | 8b23a6c | 2009-03-03 19:30:32 -0800 | [diff] [blame] | 1 | #!/usr/bin/python | 
 | 2 | # | 
 | 3 | # a python script used to generate the "default-skin.h' header file | 
 | 4 | # from a given skin directory | 
 | 5 | # | 
 | 6 | # usage: | 
 | 7 | #    progname skin-directory-path > default-skin.h | 
 | 8 | # | 
 | 9 | import sys, os, string, re | 
 | 10 |  | 
 | 11 | header = """\ | 
 | 12 | /* automatically generated, do not touch */ | 
 | 13 |  | 
 | 14 | """ | 
 | 15 |  | 
 | 16 |  | 
 | 17 | footer = """\ | 
 | 18 |  | 
 | 19 | static const FileEntry  _file_entries[] = | 
 | 20 | { | 
 | 21 | """ | 
 | 22 |  | 
 | 23 | footer2 = """\ | 
 | 24 |     { NULL, NULL, 0 } | 
 | 25 | }; | 
 | 26 | """ | 
 | 27 |  | 
 | 28 |  | 
 | 29 | entries = [] | 
 | 30 |  | 
 | 31 | def process_files( basepath, files ): | 
 | 32 |     for file in files: | 
 | 33 |         fp = open(basepath + "/" + file, "rb") | 
 | 34 |         data = fp.read() | 
 | 35 |         data_len  = len(data) | 
 | 36 |         data_add  = 0 | 
 | 37 |         data_name = "_data_" + string.replace(file,".","_") | 
 | 38 |  | 
 | 39 |         entries.append( (file, data_name, len(data)) ) | 
 | 40 |         print "static const unsigned char %s[%d] = {" % (data_name, data_len + data_add) | 
 | 41 |         comma = "    " | 
 | 42 |         do_line = 0 | 
 | 43 |         do_comma = 0 | 
 | 44 |         count = 0 | 
 | 45 |         line  = "    " | 
 | 46 |         for b in data: | 
 | 47 |             d = ord(b) | 
 | 48 |  | 
 | 49 |             if do_comma: | 
 | 50 |                 line = line + "," | 
 | 51 |                 do_comma = 0 | 
 | 52 |  | 
 | 53 |             if do_line: | 
 | 54 |                 print line | 
 | 55 |                 line = "    " | 
 | 56 |                 do_line = 0 | 
 | 57 |  | 
 | 58 |             line = line + "%3d" % d | 
 | 59 |             do_comma = 1 | 
 | 60 |             count += 1 | 
 | 61 |             if count == 16: | 
 | 62 |                 count = 0 | 
 | 63 |                 do_line = 1 | 
 | 64 |  | 
 | 65 |         if len(line) > 0: | 
 | 66 |             print line | 
 | 67 |         print "};\n" | 
 | 68 |  | 
 | 69 | if len(sys.argv) != 2: | 
 | 70 |     print "usage: progname  skindirpath > default-skin.h" | 
 | 71 | else: | 
 | 72 |     print header | 
 | 73 |     skindir = sys.argv[1] | 
 | 74 |     process_files( skindir, os.listdir(skindir) ) | 
 | 75 |     print footer | 
 | 76 |     for e in entries: | 
 | 77 |         print "    { \"%s\", %s, %d }," % (e[0], e[1], e[2]) | 
 | 78 |     print footer2 |