1.1 --- a/optimiser.py Tue Oct 06 22:22:52 2015 +0200
1.2 +++ b/optimiser.py Wed Oct 07 00:35:48 2015 +0200
1.3 @@ -41,15 +41,19 @@
1.4 def invert(srgb):
1.5 return tuple(map(lambda x: 1.0 - x, srgb))
1.6
1.7 +cache = {}
1.8 +
1.9 def combination(rgb):
1.10 - rgb = square(scale(rgb))
1.11 - rgbi = invert(rgb)
1.12 - pairs = zip(rgbi, rgb)
1.13 - d = []
1.14 - for corner in corners:
1.15 - rs, gs, bs = scale(corner)
1.16 - d.append((pairs[0][int(rs)] * pairs[1][int(gs)] * pairs[2][int(bs)], corner))
1.17 - return balance(d)
1.18 + if not cache.has_key(rgb):
1.19 + rgb = square(scale(rgb))
1.20 + rgbi = invert(rgb)
1.21 + pairs = zip(rgbi, rgb)
1.22 + d = []
1.23 + for corner in corners:
1.24 + rs, gs, bs = scale(corner)
1.25 + d.append((pairs[0][int(rs)] * pairs[1][int(gs)] * pairs[2][int(bs)], corner))
1.26 + cache[rgb] = balance(d)
1.27 + return cache[rgb]
1.28
1.29 def complements(rgb):
1.30 r, g, b = rgb
1.31 @@ -213,15 +217,12 @@
1.32 if saturate or desaturate or darken or brighten:
1.33 for y in range(0, height):
1.34 for x in range(0, width):
1.35 + rgb = im.getpixel((x, y))
1.36 if saturate or desaturate:
1.37 - rgb = im.getpixel((x, y))
1.38 rgb = saturate_rgb(rgb, saturate and math.pow(0.5, saturate) or math.pow(2, desaturate))
1.39 - im.putpixel((x, y), rgb)
1.40 -
1.41 if darken or brighten:
1.42 - rgb = im.getpixel((x, y))
1.43 rgb = amplify_rgb(rgb, brighten and math.pow(0.5, brighten) or math.pow(2, darken))
1.44 - im.putpixel((x, y), rgb)
1.45 + im.putpixel((x, y), rgb)
1.46
1.47 if preview:
1.48 imp = im.copy()