X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=icons%2Fmkicon.py;h=30f41b6a7f6c2587d0d101cfb1991410e6933175;hb=095072fa46b2d7b8beafaddb2f873d2f500a1e10;hp=3e6d81c9352cfc38842bb5af542f2491d3bf8368;hpb=80623557c651e97a80c6023bb6eaad7664f35bc2;p=PuTTY.git diff --git a/icons/mkicon.py b/icons/mkicon.py index 3e6d81c9..30f41b6a 100755 --- a/icons/mkicon.py +++ b/icons/mkicon.py @@ -893,17 +893,18 @@ def testrun(func, fname): for canvas in canvases: minx, miny, maxx, maxy = bbox(canvas) block.extend(render(canvas, minx-2, miny-2, minx-2+wid, maxy+2)) - p = os.popen("convert -depth 8 -size %dx%d rgb:- %s" % (wid,ht,fname), "w") - assert len(block) == ht - for line in block: - assert len(line) == wid - for r, g, b, a in line: - # Composite on to orange. - r = int(round((r * a + 255 * (255-a)) / 255.0)) - g = int(round((g * a + 128 * (255-a)) / 255.0)) - b = int(round((b * a + 0 * (255-a)) / 255.0)) - p.write("%c%c%c" % (r,g,b)) - p.close() + with open(fname, "w") as f: + f.write(("P7\nWIDTH %d\nHEIGHT %d\nDEPTH 3\nMAXVAL 255\n" + + "TUPLTYPE RGB\nENDHDR\n") % (wid, ht)) + assert len(block) == ht + for line in block: + assert len(line) == wid + for r, g, b, a in line: + # Composite on to orange. + r = int(round((r * a + 255 * (255-a)) / 255.0)) + g = int(round((g * a + 128 * (255-a)) / 255.0)) + b = int(round((b * a + 0 * (255-a)) / 255.0)) + f.write("%c%c%c" % (r,g,b)) def drawicon(func, width, fname, orangebackground = 0): canvas = func(width / 32.0) @@ -912,19 +913,20 @@ def drawicon(func, width, fname, orangebackground = 0): assert minx >= 0 and miny >= 0 and maxx <= width and maxy <= width block = render(canvas, 0, 0, width, width) - p = os.popen("convert -depth 8 -size %dx%d rgba:- %s" % (width,width,fname), "w") - assert len(block) == width - for line in block: - assert len(line) == width - for r, g, b, a in line: - if orangebackground: - # Composite on to orange. - r = int(round((r * a + 255 * (255-a)) / 255.0)) - g = int(round((g * a + 128 * (255-a)) / 255.0)) - b = int(round((b * a + 0 * (255-a)) / 255.0)) - a = 255 - p.write("%c%c%c%c" % (r,g,b,a)) - p.close() + with open(fname, "w") as f: + f.write(("P7\nWIDTH %d\nHEIGHT %d\nDEPTH 4\nMAXVAL 255\n" + + "TUPLTYPE RGB_ALPHA\nENDHDR\n") % (width, width)) + assert len(block) == width + for line in block: + assert len(line) == width + for r, g, b, a in line: + if orangebackground: + # Composite on to orange. + r = int(round((r * a + 255 * (255-a)) / 255.0)) + g = int(round((g * a + 128 * (255-a)) / 255.0)) + b = int(round((b * a + 0 * (255-a)) / 255.0)) + a = 255 + f.write("%c%c%c%c" % (r,g,b,a)) args = sys.argv[1:]