/
party.go
127 lines (105 loc) · 11.6 KB
/
party.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package main
import (
"fmt"
"os"
"text/template"
)
const (
partyTemplate = `<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid meet" viewBox="0 0 160 220" style="enable-background:new 0 0 160 220;">
<!-- https://vectr.com/n3wscott/bKHumLxdb -->
<defs>
<path d="M276.93 45.45C275.49 49.33 272.04 67.26 266.57 99.23C270.46 63.07 271.75 45.74 270.46 47.24C269.16 48.73 265.27 69.05 258.8 108.19C264.41 70.77 266.57 49.85 265.27 45.45C263.98 41.04 259.23 53.14 251.03 81.75C251.6 59.04 251.17 49.03 249.73 51.72C248.29 54.41 245.85 69.8 242.39 97.88C243.76 68.68 244.05 54.48 243.25 55.31C242.46 56.13 240.59 71.96 237.64 102.81C239.3 74.05 239.73 58.22 238.94 55.31C238.15 52.39 236.13 62.4 232.89 85.33C231.67 61.51 230.52 51.5 229.44 55.31C228.36 59.12 227.35 76.74 226.42 108.19C225.05 74.13 223.75 57.25 222.53 57.55C221.31 57.85 221.31 78.61 222.53 119.84C221.02 78.01 219.87 57.25 219.08 57.55C218.28 57.85 216.7 75.92 214.33 111.78C211.09 76 208.79 58.37 207.42 58.89C206.05 59.41 206.05 83.02 207.42 129.7C201.95 79.88 198.78 55.08 197.92 55.31C197.06 55.53 198.06 75.85 200.94 116.26C195.26 78.31 191.66 59.49 190.15 59.79C188.64 60.09 188.64 77.42 190.15 111.78C179.57 78.09 173.67 61.65 172.44 62.48C171.22 63.3 175.25 86.16 184.53 131.05C171.44 78.31 165.1 57.99 165.54 70.1C165.6 71.82 164.59 98.14 167.51 119.84C169.47 134.32 172.71 146.68 177.25 156.92C173.28 153.47 170.03 144.85 167.51 131.05C165 117.25 163.21 98.28 162.15 74.13C159.53 104.32 160.31 129.54 164.47 149.78C168.63 170.02 176.18 185.29 187.12 195.59L437.12 455.08C457.84 476.57 469.49 488.37 472.09 490.48C474.69 492.6 471.24 485.03 461.76 467.77C476.07 489.84 483.83 501.3 485.04 502.14C490.3 505.8 487.87 497.44 477.75 477.04C492.18 502.68 499.8 514.98 500.59 513.94C501.38 512.89 497.35 501.94 488.5 481.08C507.06 506.85 516.85 519.4 517.86 518.72C518.87 518.05 511.09 504.16 494.54 477.04C522.75 506.33 537.14 520.67 537.72 520.07C538.29 519.47 525.05 503.93 498 473.46C529.66 498.71 545.92 510.96 546.79 510.21C547.65 509.46 533.11 495.72 503.18 468.98C534.55 491.98 550.82 503.04 551.97 502.14C553.12 501.25 539.16 488.4 510.09 463.6C542.51 489.82 559.06 502.22 559.74 500.8C560.42 499.38 545.23 484.14 514.18 455.08C549.12 481.53 566.9 494.07 567.51 492.73C568.12 491.39 551.57 476.15 517.86 447.02C549.3 466.06 565.14 474.88 565.35 473.46C565.57 472.04 550.17 460.39 519.15 438.5C558.66 458.52 578.95 467.78 580.03 466.29C581.11 464.79 562.98 452.54 525.63 429.54C567.37 451.72 588.67 462.03 589.53 460.46C590.39 458.89 570.82 445.45 530.81 420.12C569.53 438.2 589.1 446.42 589.53 444.77C589.96 443.13 571.25 431.63 533.4 410.26C567.65 428.49 584.78 436.56 584.78 434.47C584.78 432.38 567.65 420.12 533.4 397.72C566.29 408.85 582.84 413.78 583.05 412.51C583.27 411.24 567.15 403.77 534.7 390.1C571.47 404.81 590.32 411.53 591.26 410.26C592.19 409 575.21 399.73 540.31 382.48C571.76 392.94 587.16 397.42 586.51 395.92C585.86 394.43 569.17 386.96 536.42 373.51C572.98 387.11 591.69 393.23 592.55 391.89C593.42 390.54 572.84 380.68 530.81 362.31C570.75 377.02 590.9 383.75 591.26 382.48C591.62 381.21 575.79 372.99 543.76 357.83C575.43 368.21 591.69 372.84 592.55 371.72C593.42 370.6 578.88 363.73 548.94 351.11C585 366.04 603.13 372.92 603.35 371.72C603.56 370.53 585.86 361.26 550.24 343.93C583.92 356.26 600.76 361.64 600.76 360.07C600.76 358.5 578.74 347.15 534.7 326.01C579.53 344.53 603.13 353.64 605.51 353.35C607.88 353.05 589.03 343.34 548.94 324.21C576.36 335.06 589.89 339.73 589.53 338.24C589.17 336.74 574.92 329.08 546.79 315.25C585.93 331.46 605.51 338.63 605.51 336.76C605.51 334.9 585.93 323.99 546.79 304.05C589.03 322.65 609.9 331.16 609.39 329.59C608.89 328.02 587.01 316.37 543.76 294.63C580.32 303.75 598.6 307.63 598.6 306.29C598.6 304.94 575.57 296.88 529.52 282.09C583.13 298.07 609.75 305.39 609.39 304.05C609.03 302.7 586.44 294.19 541.6 278.5C579.6 287.09 598.6 290.68 598.6 289.26C598.6 287.84 579.6 281.41 541.6 269.98C585 280.74 606.87 285.37 607.23 283.88C607.59 282.38 586.44 274.76 543.76 261.02C580.68 269.61 598.96 273.2 598.6 271.78C598.24 270.36 576.51 263.19 533.4 250.26C580.46 261.02 603.78 265.95 603.35 265.05C602.92 264.16 581.47 258.18 539.01 247.13C579.17 252.13 599.03 254.07 598.6 252.95C598.17 251.83 577.44 247.65 536.42 240.4C571.83 236.82 589.53 234.28 589.53 232.79C589.53 231.29 571.83 230.84 536.42 231.44C569.17 225.91 585.29 222.78 584.78 222.03C584.28 221.28 567.15 222.93 533.4 226.96C569.45 217.32 587.16 212.09 586.51 211.27C585.86 210.45 563.41 215.08 519.15 225.17C563.55 212.77 585.43 206.04 584.78 205C584.13 203.95 564.42 207.54 525.63 215.75C559.6 206.34 576.58 201.11 576.58 200.07C576.58 199.02 559.6 202.16 525.63 209.48C558.44 200.29 574.56 195.21 573.99 194.24C573.41 193.27 556.14 196.41 522.18 203.65C559.78 193.94 577.91 188.42 576.58 187.07C575.24 185.73 554.44 188.56 514.18 195.59C548.61 186.85 565.67 181.77 565.35 180.35C565.03 178.93 547.33 181.17 512.24 187.07C553.77 178.7 574.35 174.22 573.99 173.63C573.63 173.03 549.16 176.31 500.59 183.49C551.75 171.31 577.08 164.74 576.58 163.77C576.07 162.79 552.9 167.43 507.06 177.66C548.01 167.57 568.16 162.05 567.51 161.08C566.86 160.11 545.42 163.69 503.18 171.83C536.78 161.75 553.05 156.22 551.97 155.25C550.89 154.28 532.47 157.86 496.7 166.01C523.69 153.68 536.35 147.11 534.7 146.29C533.04 145.46 517.07 150.39 486.77 161.08C525.27 142.03 544.27 132.02 543.76 131.05C543.26 130.08 523.25 138.14 483.75 155.25C524.41 137.13 544.41 127.42 543.76 126.12C543.12 124.82 519.51 133.86 472.95 153.26C513.97 132.67 534.12 122.05 533.4 121.41C532.68 120.77 513.4 128.17 475.54 143.6C508.22 127.46 524.33 118.95 523.9 118.05C523.47 117.15 506.49 123.88 472.95 138.22C500.59 116.18 513.68 105.28 512.24 105.5C510.81 105.73 496.27 114.24 468.64 131.05C497.49 105.05 511.31 91.91 510.09 91.61C508.86 91.31 494.04 101.77 465.61 122.98C488.79 100.24 499.58 88.73 498 88.47C496.41 88.21 482.45 99.19 456.12 121.41C468.42 107.85 473.75 101.21 472.09 101.47C470.44 101.73 461.8 108.9 446.18 122.98C472.88 90.94 485.84 74.65 485.04 74.13C484.25 73.61 469.72 88.84 441.44 119.84C462.59 91.76 472.81 77.57 472.09 77.27C471.37 76.97 459.71 90.56 437.12 118.05C458.99 88.02 469.5 72.49 468.64 71.44C467.77 70.39 455.54 83.84 431.94 111.78C454.24 81 464.75 65.61 463.46 65.61C462.16 65.61 449.06 81 424.16 111.78C440.14 83.69 447.48 69.35 446.18 68.75C444.89 68.15 434.96 81.3 416.39 108.19C433.45 75.32 441.79 58.44 441.44 57.55C441.08 56.65 432.01 71.74 414.23 102.81C430.64 69.35 438.27 52.32 437.12 51.72C435.97 51.12 426.04 66.96 407.33 99.23C419.99 69.57 425.6 54.93 424.16 55.31C422.73 55.68 414.23 71.07 398.69 101.47C409.99 74.65 415.17 60.76 414.23 59.79C413.3 58.82 406.25 70.77 393.08 95.64C408.84 63.82 415.89 47.69 414.23 47.24C412.58 46.79 402.22 62.03 383.15 92.95L398.69 55.31L375.81 97.88C387.54 63.67 392.86 46.19 391.78 45.45C390.7 44.7 383.94 59.04 371.49 88.47C381.28 57.47 385.59 42.23 384.44 42.76C383.29 43.28 376.67 59.56 364.58 91.61C374.87 56.8 379.33 38.87 377.97 37.83C376.6 36.78 369.4 52.62 356.38 85.33C366.16 54.04 370.19 38.65 368.47 39.17C366.74 39.69 359.26 56.13 346.01 88.47C357.1 53.29 361.85 35.96 360.26 36.48C358.68 37 350.04 57.47 334.36 97.88C345.58 54.93 350.48 33.57 349.04 33.79C347.6 34.02 340.55 53.74 327.88 92.95C334.64 58.22 337.52 40.74 336.52 40.52C335.51 40.29 330.62 57.32 321.84 91.61C328.02 56.28 330.62 38.35 329.61 37.83C328.6 37.3 323.99 54.19 315.79 88.47C322.63 53.44 325.22 37 323.56 39.17C321.91 41.34 316.01 62.1 305.86 101.47C313.34 63.6 316.65 42.38 315.79 37.83C314.93 33.27 309.89 45.37 300.68 74.13C304.35 47.09 305.36 35.44 303.7 39.17C302.05 42.91 297.73 62.03 290.75 96.54C296.79 62.7 299.67 43.58 299.38 39.17C299.1 34.76 295.64 45.07 289.02 70.1C289.74 52.39 289.74 43.28 289.02 42.76C288.3 42.23 284.7 59.86 278.23 95.64C281.32 65.46 282.62 48.73 282.11 45.45C281.61 42.16 279.31 52.32 275.21 75.92C277.8 51.72 278.37 41.56 276.93 45.45Z" id="hawk"></path>
<path d="M416.54 172.75C444.7 197.1 437.1 189.51 440.73 194.06C444.35 198.61 470.5 209.5 478.08 274.58C483.13 317.97 483.85 350.87 480.23 373.27C457.87 470.18 429.63 518.63 395.48 518.63C376.19 518.63 355.28 518.21 295.78 544.26C246.12 566 156.98 603.71 128.03 579.99C126.78 578.97 117.87 566.39 118.82 547.21C119.77 528.03 133.54 521.01 133.03 517.37C131.64 507.4 126.43 499.84 126.84 496.06C127.47 490.2 129.54 485.32 133.03 481.42C127.98 478.73 125.92 475.62 126.84 472.09C132.27 451.34 134.33 442.28 133.03 444.92C122.24 443.28 114.68 440.04 110.33 435.21C103.82 427.96 106.97 417.26 106.98 415.91C107.02 406.45 143.28 373.62 143.77 366C144.82 349.78 131.64 353.63 129.22 340.21C126.81 326.79 134.12 318.71 134.12 312.31C134.12 307.52 137.33 298.58 143.77 285.49L146.64 265.67C148.49 245.04 155.62 228.54 168.04 216.16C204.55 179.74 234.06 153.85 277.37 153.85C314.65 153.85 388.38 148.41 416.54 172.75Z" id="head"></path>
<path d="M212.75 357.5C212.75 363.94 167.79 345.39 148.22 345.39C128.66 345.39 125.98 340.6 125.98 334.15C125.98 327.71 128.66 326.01 148.22 326.01C167.79 326.01 212.75 351.06 212.75 357.5Z" id="brow"></path>
<path d="M194 509.75C211.81 508.08 224.35 511.93 238.93 516.57C266.43 525.34 274.83 546.75 274.83 554.79C274.83 562.91 240.74 574.87 228.96 580.24C220.95 583.89 206.93 589.23 186.9 596.25C166.15 601.21 150.25 601.21 139.21 596.25C130.69 592.42 123.53 586.99 118.3 574.65C113.07 562.3 117.3 550 118.3 546.87C126.52 521 101.41 552.13 115.33 519.62C129.24 487.12 120.75 499.95 124.31 497.44C127.85 494.95 138.49 506.52 136.01 519.62C133.54 532.73 134.79 541.84 136.01 544.77C140.63 555.78 146.58 555.24 153.86 543.15C158.03 534.85 161.83 526.51 165.25 518.14C170.37 505.58 176.19 511.41 194 509.75Z" id="chin"></path>
<path d="M158.08 400.04C159.61 418.17 154.71 450 149.35 451.56C145.78 452.61 139.2 451.04 129.61 446.84C117.71 445.2 109.37 441.96 104.58 437.13C97.39 429.87 100.87 419.18 100.88 417.83C100.92 408.37 136.75 373 140.58 369.68C144.4 366.36 155.52 369.73 158.08 400.04Z" id="nose"></path>
</defs>
<g transform="rotate({{ .rotate }} 80 110)">
<g transform="translate(-25 10)">
<g transform="scale(0.30 0.30)">
<g>
<use xlink:href="#hawk" opacity="1" fill="{{ .color }}" fill-opacity="1"></use>
<use xlink:href="#hawk" opacity="1" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-opacity="1"></use>
<use xlink:href="#head" opacity="1" fill="#DDB7B1" fill-opacity="1"></use>
<use xlink:href="#brow" opacity="1" fill="#6e430a" fill-opacity="1"></use>
<use xlink:href="#chin" opacity="1" fill="#57360a" fill-opacity="1"></use>
<use xlink:href="#nose" opacity="1" fill="#CE9691" fill-opacity="1"></use>
</g>
</g>
</g>
</g>
</svg>
`
)
var colors = []string{
"#FECE7A",
"#FECE7A",
"#7EFF7A",
"#7EFF7A",
"#7EFFFF",
"#7EFFFF",
"#7BA3FE",
"#7BA3FE",
"#CB70FE",
"#CB70FE",
"#FC49F5",
"#FC49F5",
"#FC4EA7",
"#FC4EA7",
"#FD5258",
"#FD5258",
}
var rotations = []string{
"0",
"5",
"10",
"12.5",
"15",
"12.5",
"10",
"5",
"0",
"-5",
"-10",
"-12.5",
"-15",
"-12.5",
"-10",
"-5",
}
func main() {
party, err := template.New("party").Parse(partyTemplate)
if err != nil {
fmt.Printf("can't party :( %s\n\n", err)
return
}
for i, r := range rotations {
f, err := os.Create(fmt.Sprintf("pmorie-%02d.svg", i))
if err != nil {
fmt.Printf("can't party :( %s\n\n", err)
continue
}
fmt.Printf("writing file %s\n", f.Name())
if err := party.Execute(f, map[string]string{
"rotate": r,
"color": colors[i%len(colors)],
}); err != nil {
fmt.Printf("really can't party :( :( %s\n\n", err)
return
}
_ = f.Close()
}
}
/*
Parrot colors:
#FECE7A
#7EFF7A
#7EFFFF
#7BA3FE
#CB70FE
#FC49F5
#FC4EA7
#FD5258
*/