From d089f677adfca9e71d434945d0a1fdfd7ee75169 Mon Sep 17 00:00:00 2001 From: srs5694 Date: Sun, 2 Dec 2012 20:24:02 -0500 Subject: [PATCH] Added raw images directory for those who might want to change & recompile --- images/back-normal-big.png | Bin 0 -> 3021 bytes images/back-normal-small.png | Bin 0 -> 2872 bytes images/back-selected-big.png | Bin 0 -> 3928 bytes images/back-selected-small.png | Bin 0 -> 3669 bytes images/font.png | Bin 0 -> 3912 bytes images/imgprepare.py | 114 +++++++++++++++++++++ images/linux-bootlogo.png | Bin 0 -> 9242 bytes images/mkeei.py | 179 +++++++++++++++++++++++++++++++++ images/mkegemb.py | 159 +++++++++++++++++++++++++++++ images/refind_banner.bmp | Bin 0 -> 26166 bytes images/refind_banner.odt | Bin 0 -> 8725 bytes images/txt.pl | 7 ++ images/windows-bootlogo.png | Bin 0 -> 1720 bytes 13 files changed, 459 insertions(+) create mode 100644 images/back-normal-big.png create mode 100644 images/back-normal-small.png create mode 100644 images/back-selected-big.png create mode 100644 images/back-selected-small.png create mode 100644 images/font.png create mode 100755 images/imgprepare.py create mode 100644 images/linux-bootlogo.png create mode 100755 images/mkeei.py create mode 100755 images/mkegemb.py create mode 100644 images/refind_banner.bmp create mode 100644 images/refind_banner.odt create mode 100755 images/txt.pl create mode 100644 images/windows-bootlogo.png diff --git a/images/back-normal-big.png b/images/back-normal-big.png new file mode 100644 index 0000000000000000000000000000000000000000..3484611ff55b8e3206cee6e3ac370ec87872b477 GIT binary patch literal 3021 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 Jt=6!O{6F7{U@!mx literal 0 HcmV?d00001 diff --git a/images/back-selected-big.png b/images/back-selected-big.png new file mode 100644 index 0000000000000000000000000000000000000000..752d2d2d436f1b7e4a38f2e2ec2bcbc8ce365fb7 GIT binary patch literal 3928 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 literal 0 HcmV?d00001 diff --git a/images/font.png b/images/font.png new file mode 100644 index 0000000000000000000000000000000000000000..49ba0a8212ae519af3c6a60833a9a54f79bdd34e GIT binary patch literal 3912 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 z 128: + compdata.append(127) + compdata.extend(backbuffer[0:128]) + backbuffer = backbuffer[128:] + compdata.append(len(backbuffer)-1) + compdata.extend(backbuffer) + return compdata + +def packbits(rawdata): + compdata = [] + backbuffer = [] + + while len(rawdata) >= 3: + c = rawdata[0] + if rawdata[1] == c and rawdata[2] == c: + runlength = 3 + while runlength < 130 and len(rawdata) > runlength: + if rawdata[runlength] == c: + runlength = runlength + 1 + else: + break + compdata.extend(enc_backbuffer(backbuffer)) + backbuffer = [] + compdata.append(runlength + 125) + compdata.append(c) + rawdata = rawdata[runlength:] + + else: + backbuffer.append(c) + rawdata = rawdata[1:] + + backbuffer.extend(rawdata) + compdata.extend(enc_backbuffer(backbuffer)) + + return compdata + + +for filename in sys.argv[1:]: + + origimage = Image.open(filename) + + (width, height) = origimage.size + mode = origimage.mode + data = origimage.getdata() + + print "%s: %d x %d %s" % (filename, width, height, mode) + + basename = filename[:-4] + identname = basename.replace("-", "_") + + planecount = 1 + imgmode = 0 + rawdata = [] + + if mode == "RGB" or mode == "RGBA": + planes = [ [], [], [] ] + for pixcount in range(0, width*height): + pixeldata = data[pixcount] + planes[0].append(pixeldata[2]) + planes[1].append(pixeldata[1]) + planes[2].append(pixeldata[0]) + + if planes[0] == planes[1] and planes[0] == planes[2]: + print " encoding as greyscale" + planecount = 1 + rawdata.extend(planes[0]) + + if basename[0:4] == "font": + print " font detected, using alpha-only mode" + imgmode = 1 + # invert all values + rawdata = map(lambda x: 255-x, rawdata) + + else: + print " encoding as true color" + planecount = 3 + rawdata.extend(planes[0]) + rawdata.extend(planes[1]) + rawdata.extend(planes[2]) + + else: + print " Mode not supported!" + continue + + rawlen = len(rawdata) + compdata = packbits(rawdata) + complen = len(compdata) + print " compressed %d to %d" % (rawlen, complen) + + output = """static UINT8 image_%s_compdata[] = { +""" % identname + for i in range(0, len(compdata)): + output = output + " 0x%02x," % compdata[i] + if (i % 12) == 11: + output = output + "\n" + output = output + """ +}; +static BUILTIN_IMAGE image_%s = { NULL, %d, %d, %d, %d, image_%s_compdata, %d }; +""" % (identname, width, height, imgmode, planecount, identname, len(compdata)) + + f = file("image_%s.h" % identname, "w") + f.write(output) + f.close() + +print "Done!" diff --git a/images/linux-bootlogo.png b/images/linux-bootlogo.png new file mode 100644 index 0000000000000000000000000000000000000000..203c5dcea661950b43ea90623b03a5f2c2812470 GIT binary patch literal 9242 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 128: + compdata.append(127) + compdata.extend(backbuffer[0:128]) + backbuffer = backbuffer[128:] + compdata.append(len(backbuffer)-1) + compdata.extend(backbuffer) + return compdata + +def compress_rle(rawdata): + """Compresses the string using a RLE scheme.""" + compdata = [] + backbuffer = [] + + while len(rawdata) >= 3: + c = rawdata[0] + if rawdata[1] == c and rawdata[2] == c: + runlength = 3 + while runlength < 130 and len(rawdata) > runlength: + if rawdata[runlength] == c: + runlength = runlength + 1 + else: + break + compdata.extend(enc_backbuffer(backbuffer)) + backbuffer = [] + compdata.append(runlength + 125) + compdata.append(c) + rawdata = rawdata[runlength:] + + else: + backbuffer.append(c) + rawdata = rawdata[1:] + + backbuffer.extend(rawdata) + compdata.extend(enc_backbuffer(backbuffer)) + + return compdata + +def encode_plane(rawdata, identname, planename): + """Encodes the data of a single plane.""" + + rawlen = len(rawdata) + compdata = compress_rle(rawdata) + complen = len(compdata) + print " plane %s: compressed %d to %d (%.1f%%)" % (planename, rawlen, complen, float(complen) / float(rawlen) * 100.0) + + output = """static const UINT8 eei_%s_planedata_%s[%d] = { +""" % (identname, planename, complen) + for i in range(0, len(compdata)): + output = output + " 0x%02x," % compdata[i] + if (i % 12) == 11: + output = output + "\n" + output = output + """ +}; +""" + return (output, "eei_%s_planedata_%s, %d" % (identname, planename, complen)) + + +### main loop + +print "mkeei 0.1, Copyright (c) 2006 Christoph Pfisterer" + +planenames = ( "blue", "green", "red", "alpha", "grey" ) + +for filename in sys.argv[1:]: + + origimage = Image.open(filename) + + (width, height) = origimage.size + mode = origimage.mode + data = origimage.getdata() + + print "%s: %d x %d %s" % (filename, width, height, mode) + + basename = filename[:-4] # TODO!!!!!! + identname = basename.replace("-", "_") + + planes = [ [], [], [], [] ] + + if mode == "RGB": + for pixcount in range(0, width*height): + pixeldata = data[pixcount] + planes[0].append(pixeldata[2]) + planes[1].append(pixeldata[1]) + planes[2].append(pixeldata[0]) + + elif mode == "RGBA": + for pixcount in range(0, width*height): + pixeldata = data[pixcount] + planes[0].append(pixeldata[2]) + planes[1].append(pixeldata[1]) + planes[2].append(pixeldata[0]) + planes[3].append(pixeldata[3]) + + elif mode == "L": + for pixcount in range(0, width*height): + pixeldata = data[pixcount] + planes[0].append(pixeldata) + planes[1].append(pixeldata) + planes[2].append(pixeldata) + + else: + print " Error: Mode not supported!" + continue + + # special treatment for fonts + + if basename[0:4] == "font": + if planes[0] != planes[1] or planes[0] != planes[2]: + print " Error: Font detected, but it is not greyscale!" + continue + print " font detected, encoding as alpha-only" + # invert greyscale values for use as alpha + planes[3] = map(lambda x: 255-x, planes[0]) + planes[0] = [] + planes[1] = [] + planes[2] = [] + + # generate optimal output + + output = "" + planeinfo = [ "NULL, 0", "NULL, 0", "NULL, 0", "NULL, 0" ] + + if len(planes[0]) > 0 and planes[0] == planes[1] and planes[0] == planes[2]: + print " encoding as greyscale" + (output_part, planeinfo[0]) = encode_plane(planes[0], identname, planenames[4]) + output = output + output_part + planeinfo[1] = planeinfo[0] + planeinfo[2] = planeinfo[0] + + elif len(planes[0]) > 0: + print " encoding as true color" + + (output_part, planeinfo[0]) = encode_plane(planes[0], identname, planenames[0]) + output = output + output_part + + if planes[1] == planes[0]: + print " encoding plane 1 is a copy of plane 0" + planeinfo[1] = planeinfo[0] + else: + (output_part, planeinfo[1]) = encode_plane(planes[1], identname, planenames[1]) + output = output + output_part + + if planes[2] == planes[0]: + print " encoding plane 2 is a copy of plane 0" + planeinfo[2] = planeinfo[0] + elif planes[2] == planes[1]: + print " encoding plane 2 is a copy of plane 1" + planeinfo[2] = planeinfo[1] + else: + (output_part, planeinfo[2]) = encode_plane(planes[2], identname, planenames[2]) + output = output + output_part + + if len(planes[3]) > 0: + if reduce(lambda x,y: x+y, planes[3]) == 0: + print " skipping alpha plane because it is empty" + else: + (output_part, planeinfo[3]) = encode_plane(planes[3], identname, planenames[3]) + output = output + output_part + + output = output + "static EEI_IMAGE eei_%s = { %d, %d, NULL, {\n" % (identname, width, height) + for i in range(0,4): + output = output + " { %s },\n" % planeinfo[i] + output = output + "} };\n" + + f = file("eei_%s.h" % identname, "w") + f.write(output) + f.close() + +print "Done!" diff --git a/images/mkegemb.py b/images/mkegemb.py new file mode 100755 index 0000000..6a7c63d --- /dev/null +++ b/images/mkegemb.py @@ -0,0 +1,159 @@ +#!/usr/bin/env python + +import sys, os.path +import Image + +def enc_backbuffer(backbuffer): + """Helper function for RLE compression, encodes a string of uncompressable data.""" + compdata = [] + if len(backbuffer) == 0: + return compdata + while len(backbuffer) > 128: + compdata.append(127) + compdata.extend(backbuffer[0:128]) + backbuffer = backbuffer[128:] + compdata.append(len(backbuffer)-1) + compdata.extend(backbuffer) + return compdata + +def compress_rle(rawdata): + """Compresses the string using a RLE scheme.""" + compdata = [] + backbuffer = [] + + while len(rawdata) >= 3: + c = rawdata[0] + if rawdata[1] == c and rawdata[2] == c: + runlength = 3 + while runlength < 130 and len(rawdata) > runlength: + if rawdata[runlength] == c: + runlength = runlength + 1 + else: + break + compdata.extend(enc_backbuffer(backbuffer)) + backbuffer = [] + compdata.append(runlength + 125) + compdata.append(c) + rawdata = rawdata[runlength:] + + else: + backbuffer.append(c) + rawdata = rawdata[1:] + + backbuffer.extend(rawdata) + compdata.extend(enc_backbuffer(backbuffer)) + + return compdata + +def encode_plane(rawdata, planename): + """Encodes the data of a single plane.""" + + rawlen = len(rawdata) + compdata = compress_rle(rawdata) + complen = len(compdata) + print " plane %s: compressed %d to %d (%.1f%%)" % (planename, rawlen, complen, float(complen) / float(rawlen) * 100.0) + + return compdata + + +### main loop + +print "mkegemb 0.1, Copyright (c) 2006 Christoph Pfisterer" + +planenames = ( "blue", "green", "red", "alpha", "grey" ) + +for filename in sys.argv[1:]: + + origimage = Image.open(filename) + + (width, height) = origimage.size + mode = origimage.mode + data = origimage.getdata() + + print "%s: %d x %d %s" % (filename, width, height, mode) + + (basename, extension) = os.path.splitext(filename) + identname = basename.replace("-", "_") + + # extract image data from PIL object + + planes = [ [], [], [], [] ] + + if mode == "RGB": + for pixcount in range(0, width*height): + pixeldata = data[pixcount] + planes[0].append(pixeldata[0]) + planes[1].append(pixeldata[1]) + planes[2].append(pixeldata[2]) + + elif mode == "RGBA": + for pixcount in range(0, width*height): + pixeldata = data[pixcount] + planes[0].append(pixeldata[0]) + planes[1].append(pixeldata[1]) + planes[2].append(pixeldata[2]) + planes[3].append(pixeldata[3]) + + elif mode == "L": + for pixcount in range(0, width*height): + pixeldata = data[pixcount] + planes[0].append(pixeldata) + planes[1].append(pixeldata) + planes[2].append(pixeldata) + + else: + print " Error: Mode not supported!" + continue + + # special treatment for fonts + + if basename[0:4] == "font": + if planes[0] != planes[1] or planes[0] != planes[2]: + print " Error: Font detected, but it is not greyscale!" + continue + print " font detected, encoding as alpha-only" + # invert greyscale values for use as alpha + planes[3] = map(lambda x: 255-x, planes[0]) + planes[0] = [] + planes[1] = [] + planes[2] = [] + + # encode planes + + imagedata = [] + pixelformat = "EG_EIPIXELMODE" + + if len(planes[0]) > 0 and planes[0] == planes[1] and planes[0] == planes[2]: + print " encoding as greyscale" + imagedata.extend(encode_plane(planes[0], planenames[4])) + pixelformat = pixelformat + "_GRAY" + + elif len(planes[0]) > 0: + print " encoding as true color" + imagedata.extend(encode_plane(planes[0], planenames[0])) + imagedata.extend(encode_plane(planes[1], planenames[1])) + imagedata.extend(encode_plane(planes[2], planenames[2])) + pixelformat = pixelformat + "_COLOR" + + if len(planes[3]) > 0: + if reduce(lambda x,y: x+y, planes[3]) == 0: + print " skipping alpha plane because it is empty" + else: + imagedata.extend(encode_plane(planes[3], planenames[3])) + pixelformat = pixelformat + "_ALPHA" + + # generate compilable header file + + output = "static const UINT8 egemb_%s_data[%d] = {\n" % (identname, len(imagedata)) + for i in range(0, len(imagedata)): + output = output + " 0x%02x," % imagedata[i] + if (i % 12) == 11: + output = output + "\n" + output = output + "\n};\n" + output = output + "static EG_EMBEDDED_IMAGE egemb_%s = { %d, %d, %s, EG_EICOMPMODE_RLE, egemb_%s_data, %d };\n" % (identname, width, height, pixelformat, identname, len(imagedata)) + + f = file("egemb_%s.h" % identname, "w") + f.write(output) + f.close() + +print "Done!" diff --git a/images/refind_banner.bmp b/images/refind_banner.bmp new file mode 100644 index 0000000000000000000000000000000000000000..de8150a37fcb785ca32b53aad7873d0895df19aa GIT binary patch literal 26166 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 literal 0 HcmV?d00001 diff --git a/images/refind_banner.odt b/images/refind_banner.odt new file mode 100644 index 0000000000000000000000000000000000000000..35704ad64d1f6381053876d311f2de5b9266d93a GIT binary patch literal 8725 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 O0000