Fix Emergo. Add Avalam 1 & 2
[vchess.git] / client / public / images / pieces / Emergo / generateSVG_composite.py
CommitLineData
e0798172
BA
1#!/usr/bin/env python
2
3# Compose each piece SVG with numbers
4# https://travishorn.com/removing-parts-of-shapes-in-svg-b539a89e5649
5# https://developer.mozilla.org/fr/docs/Web/SVG/Tutoriel/Paths
6
7preamble = """<?xml version="1.0" encoding="UTF-8" ?>
8<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
9<svg xmlns="http://www.w3.org/2000/svg" version="1.0" width="230" height="230">
10<defs>
11 <mask id="stripe">
12 <rect x="0" y="0" width="230" height="230" fill="white"/>
13 <rect x="130" y="0" width="90" height="230"/>
14 </mask>
15</defs>"""
16
17black_left = '<circle cx="115" cy="115" r="100" fill="black" stroke="orange" mask="url(#stripe)"/>'
18white_right = '<circle cx="115" cy="115" r="100" fill="whitesmoke"/>'
19white_left = '<circle cx="115" cy="115" r="100" fill="whitesmoke" stroke="orange" mask="url(#stripe)"/>'
20black_right = '<circle cx="115" cy="115" r="100" fill="black"/>'
21
22digits = {
23 "left": [
24 # 1
b27300c2 25 '<path d="M90,95 v40"',
e0798172 26 # 2
b27300c2 27 '<path d="M70,95 h20 v20 h-20 v20 h20"',
e0798172 28 # 3
b27300c2 29 '<path d="M70,95 h20 v20 h-20 M90,115 v20 h-20"',
e0798172 30 # 4
b27300c2 31 '<path d="M70,95 v20 h20 v20 M90,95 v20"',
e0798172 32 # 5
b27300c2 33 '<path d="M90,95 h-20 v20 h20 v20 h-20"',
e0798172 34 # 6
b27300c2 35 '<path d="M90,95 h-20 v40 h20 v-20 h-20"',
e0798172 36 # 7
b27300c2 37 '<path d="M70,95 h20 v40"',
e0798172 38 # 8
b27300c2 39 '<path d="M70,95 h20 v40 h-20 z M70,115 h20"',
e0798172 40 # 9
b27300c2 41 '<path d="M70,135 h20 v-40 h-20 v20 h20"',
e0798172 42 # 10
b27300c2 43 '<path d="M60,95 v40 M70,95 h20 v40 h-20 v-40"',
e0798172 44 # 11
b27300c2 45 '<path d="M60,95 v40 M90,95 v40"',
e0798172 46 # 12
b27300c2 47 '<path d="M60,95 v40 M70,95 h20 v20 h-20 M90,115 v20 h-20"'
e0798172
BA
48 ],
49 "right": [
50 # 1
b27300c2 51 '<path d="M180,95 v40"',
e0798172 52 # 2
b27300c2 53 '<path d="M160,95 h20 v20 h-20 v20 h20"',
e0798172 54 # 3
b27300c2 55 '<path d="M160,95 h20 v20 h-20 M180,115 v20 h-20"',
e0798172 56 # 4
b27300c2 57 '<path d="M160,95 v20 h20 v20 M180,95 v20"',
e0798172 58 # 5
b27300c2 59 '<path d="M180,95 h-20 v20 h20 v20 h-20"',
e0798172 60 # 6
b27300c2 61 '<path d="M180,95 h-20 v40 h20 v-20 h-20"',
e0798172 62 # 7
b27300c2 63 '<path d="M160,95 h20 v40"',
e0798172 64 # 8
b27300c2 65 '<path d="M160,95 h20 v40 h-20 z M160,115 h20"',
e0798172 66 # 9
b27300c2 67 '<path d="M160,135 h20 v-40 h-20 v20 h20"',
e0798172 68 # 10
b27300c2 69 '<path d="M150,95 v40 M160,95 h20 v40 h-20 v-40"',
e0798172 70 # 11
b27300c2 71 '<path d="M150,95 v40 M180,95 v40"',
e0798172 72 # 12
b27300c2 73 '<path d="M150,95 v40 M160,95 h20 v20 h-20 M180,115 v20 h-20"'
e0798172
BA
74 ]
75}
76
77final = "</svg>"
78
79for colorLeft in ["white", "black"]:
80 chrShift = 0 if colorLeft == "white" else 32
81 for left in range(12):
82 for right in range(12):
83 filename = chr(65 + left + chrShift) + chr(65 + right + chrShift) + ".svg"
84 f = open(filename, "w")
85 f.write(preamble)
b27300c2 86 f.write("\n")
e0798172 87 f.write(black_right if colorLeft == "white" else white_right)
b27300c2 88 f.write("\n")
e0798172 89 f.write(white_left if colorLeft == "white" else black_left)
b27300c2
BA
90 f.write("\n")
91 f.write(digits["left"][left] + ' fill="none" stroke-width="4" ' + ('stroke="red"' if colorLeft == "white" else 'stroke="orange"') + '/>')
92 f.write("\n")
93 f.write(digits["right"][right] + ' fill="none" stroke-width="4" ' + ('stroke="red"' if colorLeft == "black" else 'stroke="orange"') + '/>')
94 f.write("\n")
e0798172
BA
95 f.write(final)
96 f.close()