| 
				
			 | 
			
			 | 
			@@ -10,7 +10,7 @@ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					* Add grid lines and edge labels to image. (DONE) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					* Add legend to image, based on the `symbols` dictionary. (DONE) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					* Correspond hex colors to floss colors, where possible. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					* (Maybe) add stitch count for each color. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					* (Maybe) add stitch count for each color. (DONE) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					* (Maybe) add GUI. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			""" | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -30,7 +30,8 @@ def main(img_name): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				symbols = defaultdict(str) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				symbols["transparent"] = " " | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				symbol_counts = defaultdict(int) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#	l = 0 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				lines = [] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				for i in range(h): | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -44,6 +45,7 @@ def main(img_name): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
							if cs not in symbols.keys(): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
								symbols[cs] = characters[0] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
								characters = characters[1:] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
							symbol_counts[cs] += 1 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
							d = symbols[cs] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						line.append(d) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#			print(d, end="") | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -65,19 +67,23 @@ def main(img_name): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#	print("\nLEGEND") | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				legend = [] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				keys = 0 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				for k,v in symbols.items(): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					if v != " ": | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						legend.append("{}: #{}".format(v,k)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						keys += 1 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						legend.append("{}: #{} ({}ct)".format(v, k, symbol_counts[k])) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				print("{} keys".format(keys)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#	print("\n".join(legend)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				owid, ohgt = (w*10)+10, (h*10)+30 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				owid, ohgt = (w*10)+10, (h*10)+10+(15*(int(keys/3)+1)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				print((owid, ohgt)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				oimg = Image.new("RGB", (owid, ohgt), "white") | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				draw = ImageDraw.Draw(oimg) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				for ww in range(1, w+1): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					posx = ww * 10 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					linecolor = 0 if posx % 100 == 0 else (128,128,128) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					linewidth = 2 if posx % 100 == 0 else 1 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					draw.line((posx, 10, posx, ohgt-20), fill=linecolor, width=linewidth) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					draw.line((posx, 10, posx, (h*10)), fill=linecolor, width=linewidth) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				for hh in range(1, h+1): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					posy = hh * 10 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					linecolor = 0 if posy % 100 == 0 else (128,128,128) | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -91,7 +97,16 @@ def main(img_name): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					for char in range(len(line)): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						draw.text((char_positions[char], char_positions[0]-4+adjust), line[char], fill=0) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					adjust += 10 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				draw.text((20, ohgt-10), "    ".join(legend), fill=0) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				legend_out = "" | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				item_ct = 0 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				for item in legend: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					item_ct += 1 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					legend_out += item | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					if item_ct % 3 == 0: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						legend_out += "\n" | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					else: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						legend_out += "    " | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				draw.text((20, (h*10)+10), legend_out, fill=0) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				oimg.save(oimg_name) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				print("Saved {}".format(oimg_name)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  |