ncats-protvista-viewer
Version:
A collection of nightingale and custom components to show details of a protein sequence
148 lines (143 loc) • 18.9 kB
text/typescript
// https://danmarshall.github.io/google-font-to-svg-path/ font = ALATA
// The I is a different font though, because we need a roof and floor
const letters = [
'M 35.2 1.101 L 36.3 1.101 L 71.7 74.701 L 58.8 74.701 L 52.5 60.301 L 18.8 60.301 L 12.5 74.701 L 0 74.701 L 35.2 1.101 Z M 35.7 22.401 L 31.3 32.401 L 23.3 50.201 L 48.1 50.201 L 40.2 32.501 L 35.9 22.401 L 35.7 22.401 Z',
'M 77.9 74.701 L 77.9 1.201 L 96.6 1.201 A 73.799 73.799 0 0 1 103.424 1.493 Q 113.619 2.444 117.6 6.501 A 17.604 17.604 0 0 1 122.8 19.243 A 21.528 21.528 0 0 1 122.8 19.301 Q 122.8 24.301 120.6 28.751 A 13.947 13.947 0 0 1 114.044 35.19 A 17.492 17.492 0 0 1 113.6 35.401 A 24.622 24.622 0 0 1 118.129 37.001 Q 120.765 38.254 122.621 40.069 A 13.825 13.825 0 0 1 124.05 41.701 A 16.945 16.945 0 0 1 127.359 50.975 A 21.299 21.299 0 0 1 127.4 52.301 A 34.707 34.707 0 0 1 126.989 57.773 A 25.162 25.162 0 0 1 125.4 63.501 A 13.18 13.18 0 0 1 122.194 68.026 Q 120.152 69.951 117.1 71.501 Q 110.8 74.701 98.9 74.701 L 77.9 74.701 Z M 88.9 65.301 L 100.4 65.301 A 35.401 35.401 0 0 0 104.519 65.08 Q 108.792 64.578 111.202 62.932 A 7.446 7.446 0 0 0 112.65 61.651 A 12.798 12.798 0 0 0 115.591 55.159 A 17.519 17.519 0 0 0 115.8 52.401 A 12.467 12.467 0 0 0 115.335 48.902 A 9.211 9.211 0 0 0 112.2 44.201 Q 109.615 42.119 105.123 41.532 A 29.575 29.575 0 0 0 101.3 41.301 L 88.9 41.301 L 88.9 65.301 Z M 88.9 32.401 L 98.4 32.401 Q 105.5 32.401 108.5 28.951 Q 111.5 25.501 111.5 20.201 A 9.195 9.195 0 0 0 110.371 15.516 Q 108.223 11.808 101.987 10.956 A 30.297 30.297 0 0 0 97.9 10.701 L 88.9 10.701 L 88.9 32.401 Z',
'M 194.5 5.701 L 189.6 15.701 A 21.018 21.018 0 0 0 179.599 10.856 A 29.942 29.942 0 0 0 173.7 10.301 A 24.03 24.03 0 0 0 163.896 12.294 A 23.311 23.311 0 0 0 161.2 13.701 Q 155.6 17.101 152.4 23.401 A 29.15 29.15 0 0 0 149.613 32.294 A 38.038 38.038 0 0 0 149.2 38.001 A 35.071 35.071 0 0 0 150.205 46.533 A 30.011 30.011 0 0 0 152.05 51.801 Q 154.9 58.001 160.4 61.601 A 21.88 21.88 0 0 0 169.282 64.901 A 28.642 28.642 0 0 0 173.5 65.201 A 31.517 31.517 0 0 0 188.182 61.509 A 38.523 38.523 0 0 0 190.5 60.201 L 193.8 69.701 A 9.915 9.915 0 0 1 192.274 70.815 Q 190.544 71.864 187.764 72.871 A 51.728 51.728 0 0 1 185.75 73.551 Q 179.9 75.401 173.9 75.401 A 42.874 42.874 0 0 1 163.883 74.281 A 33.543 33.543 0 0 1 154.15 70.301 Q 145.8 65.201 141.4 56.651 A 40.105 40.105 0 0 1 137.039 39.717 A 47.113 47.113 0 0 1 137 37.801 A 42.878 42.878 0 0 1 138.503 26.267 A 36.823 36.823 0 0 1 141.75 18.301 Q 146.5 9.701 155.1 4.851 Q 163.7 0.001 174.6 0.001 A 40.385 40.385 0 0 1 180.751 0.454 A 34.213 34.213 0 0 1 183.75 1.051 A 50.296 50.296 0 0 1 186.734 1.881 Q 189.05 2.608 190.8 3.451 A 36.336 36.336 0 0 1 192.063 4.089 Q 193.821 5.023 194.5 5.701 Z',
'M 205.4 74.701 L 205.4 1.201 L 223.1 1.201 A 73.62 73.62 0 0 1 233.952 1.942 Q 247.267 3.933 253.78 11.274 A 22.253 22.253 0 0 1 254.15 11.701 Q 263 22.201 263 36.701 A 46.952 46.952 0 0 1 261.058 50.349 A 42.727 42.727 0 0 1 259.2 55.351 A 30.31 30.31 0 0 1 249.264 67.537 A 37.863 37.863 0 0 1 246.65 69.301 A 33.329 33.329 0 0 1 237.426 73.132 Q 231.355 74.701 223.7 74.701 L 205.4 74.701 Z M 216.6 64.801 L 224.9 64.801 A 38.204 38.204 0 0 0 232.383 64.119 Q 236.654 63.264 239.897 61.341 A 18.389 18.389 0 0 0 244.95 56.951 A 28.224 28.224 0 0 0 250.59 44.243 A 38.955 38.955 0 0 0 251.2 37.201 A 34.859 34.859 0 0 0 250.239 28.795 A 25.018 25.018 0 0 0 244.9 18.301 A 19.346 19.346 0 0 0 236.436 12.714 Q 233.22 11.59 229.257 11.204 A 44.941 44.941 0 0 0 224.9 11.001 L 216.6 11.001 L 216.6 64.801 Z',
'M 274.1 74.701 L 274.1 1.201 L 306.3 1.201 L 306.3 11.001 L 285.2 11.001 L 285.2 31.301 L 302.2 31.301 L 302.2 41.301 L 285.2 41.301 L 285.2 64.801 L 309.6 64.801 L 309.6 74.701 L 274.1 74.701 Z',
'M 320.8 74.701 L 320.8 1.201 L 355.3 1.201 L 355.3 10.901 L 331.9 10.901 L 331.9 31.701 L 350.1 31.701 L 350.1 41.501 L 331.9 41.501 L 331.9 74.701 L 320.8 74.701 Z',
'M 421.2 5.901 L 416.8 15.301 A 19.906 19.906 0 0 0 410.519 11.973 Q 407.693 11.033 404.243 10.621 A 48.605 48.605 0 0 0 398.5 10.301 A 30.851 30.851 0 0 0 391.461 11.071 A 24.123 24.123 0 0 0 384.6 13.801 Q 378.7 17.301 375.6 23.301 A 28.008 28.008 0 0 0 372.592 34.199 A 33.711 33.711 0 0 0 372.5 36.701 A 36.109 36.109 0 0 0 373.445 45.118 A 29.794 29.794 0 0 0 375.85 51.701 A 25.71 25.71 0 0 0 381.806 59.489 A 24.378 24.378 0 0 0 385.15 61.951 A 24.877 24.877 0 0 0 397.207 65.569 A 29.962 29.962 0 0 0 398.6 65.601 Q 403.3 65.601 407.6 64.451 A 20.745 20.745 0 0 0 411.914 62.79 A 17.037 17.037 0 0 0 414.9 60.801 L 414.9 46.601 L 399.8 46.601 L 399.8 36.301 L 426 36.301 L 426 65.101 A 20.936 20.936 0 0 1 421.906 68.942 Q 419.948 70.362 417.489 71.583 A 41.092 41.092 0 0 1 415.15 72.651 A 38.081 38.081 0 0 1 406.015 75.159 A 51.176 51.176 0 0 1 398.4 75.701 A 40.665 40.665 0 0 1 386.416 73.985 A 35.773 35.773 0 0 1 378.9 70.701 Q 370.3 65.701 365.45 56.951 A 39.01 39.01 0 0 1 360.696 40.325 A 47.064 47.064 0 0 1 360.6 37.301 A 39.45 39.45 0 0 1 362.514 24.872 A 35.719 35.719 0 0 1 365.5 18.201 Q 370.4 9.701 379.1 4.901 Q 387.8 0.101 398.7 0.101 Q 404.6 0.101 409.35 1.151 Q 412.769 1.907 415.281 2.818 A 26.244 26.244 0 0 1 417.1 3.551 Q 420.1 4.901 421.2 5.901 Z',
'M 438.4 74.701 L 438.4 1.201 L 449.6 1.201 L 449.6 31.201 L 475.5 31.201 L 475.5 1.201 L 486.7 1.201 L 486.7 74.701 L 475.5 74.701 L 475.5 40.601 L 449.6 40.601 L 449.6 74.701 L 438.4 74.701 Z',
'M 0 0 L 32.959 0 L 32.959 7.08 L 20.996 7.08 L 20.996 64.209 L 32.959 64.209 L 32.959 71.289 L 0 71.289 L 0 64.209 L 11.719 64.209 L 11.719 7.08 L 0 7.08 L 0 0 Z',
'M 527.4 71.101 L 531.9 60.801 A 12.93 12.93 0 0 0 534.196 62.925 A 11.06 11.06 0 0 0 535.95 63.951 A 10.436 10.436 0 0 0 538.29 64.705 Q 539.383 64.927 540.642 64.983 A 19.469 19.469 0 0 0 541.5 65.001 A 14.305 14.305 0 0 0 543.489 64.871 Q 545.253 64.623 546.5 63.901 Q 548.103 62.973 549.03 60.764 A 11.422 11.422 0 0 0 549.35 59.901 Q 550.208 57.282 550.291 52.622 A 57.36 57.36 0 0 0 550.3 51.601 L 550.3 1.201 L 561.4 1.201 L 561.4 54.401 A 39.307 39.307 0 0 1 561.001 60.215 Q 559.98 67.022 556.35 70.651 Q 551.3 75.701 543.1 75.701 Q 538.9 75.701 534.6 74.651 Q 530.3 73.601 527.4 71.101 Z',
'M 617.2 74.701 L 594.7 41.801 L 588.7 49.201 L 588.7 74.701 L 577.7 74.701 L 577.7 1.201 L 588.7 1.201 L 588.7 34.001 L 613.9 1.201 L 627.3 1.201 L 602 33.501 L 630.9 74.701 L 617.2 74.701 Z',
'M 637.2 74.701 L 637.2 1.201 L 648.5 1.201 L 648.5 64.701 L 669.6 64.701 L 669.6 74.701 L 637.2 74.701 Z',
'M 717 74.701 L 699.3 40.401 L 694.7 30.001 L 692.6 40.401 L 685.8 74.701 L 674.7 74.701 L 689.9 1.201 L 691.1 1.201 L 711.3 40.901 L 717.3 54.201 L 723.3 40.901 L 743.1 1.201 L 744.2 1.201 L 760 74.701 L 749 74.701 L 741.6 40.401 L 739.4 30.001 L 735.4 40.401 L 717.6 74.701 L 717 74.701 Z',
'M 823.8 74.701 L 780.8 27.101 L 781.1 35.101 L 781.1 74.701 L 769.9 74.701 L 769.9 1.101 L 771.3 1.101 L 814.5 49.301 L 814.1 40.901 L 814.1 1.201 L 825.3 1.201 L 825.3 74.701 L 823.8 74.701 Z',
'M 874.7 75.701 Q 864.7 75.701 856.25 71.051 Q 847.8 66.401 842.8 57.801 A 36.784 36.784 0 0 1 838.196 43.992 A 47.108 47.108 0 0 1 837.8 37.801 A 44.593 44.593 0 0 1 838.973 27.353 A 35.208 35.208 0 0 1 842.8 17.751 Q 847.8 9.201 856.25 4.601 Q 864.7 0.001 874.7 0.001 Q 884.7 0.001 893.15 4.601 Q 901.6 9.201 906.6 17.751 A 36.279 36.279 0 0 1 911.112 30.902 A 47.19 47.19 0 0 1 911.6 37.801 Q 911.6 49.201 906.6 57.801 Q 901.6 66.401 893.15 71.051 Q 884.7 75.701 874.7 75.701 Z M 874.7 65.601 Q 881.6 65.601 887.3 62.351 A 22.918 22.918 0 0 0 895.589 54.183 A 27.853 27.853 0 0 0 896.35 52.851 Q 899.7 46.601 899.7 37.901 Q 899.7 29.258 896.468 23.075 A 24.254 24.254 0 0 0 896.35 22.851 A 24.661 24.661 0 0 0 891.744 16.679 A 21.786 21.786 0 0 0 887.35 13.401 A 24.862 24.862 0 0 0 876.108 10.234 A 29.762 29.762 0 0 0 874.7 10.201 A 26.4 26.4 0 0 0 865.737 11.697 A 24.462 24.462 0 0 0 862 13.401 A 22.272 22.272 0 0 0 853.751 21.521 A 27.188 27.188 0 0 0 853 22.851 Q 849.792 28.928 849.703 37.414 A 46.367 46.367 0 0 0 849.7 37.901 A 37.307 37.307 0 0 0 850.351 45.045 A 27.067 27.067 0 0 0 853.1 52.851 A 24.719 24.719 0 0 0 858.192 59.424 A 22.506 22.506 0 0 0 862.25 62.351 Q 868 65.601 874.7 65.601 Z',
'M 924.1 74.701 L 924.1 1.201 L 940.3 1.201 A 51.02 51.02 0 0 1 947.425 1.664 Q 951.083 2.182 954.014 3.277 A 19.087 19.087 0 0 1 960.35 7.051 A 19.254 19.254 0 0 1 966.278 18.131 A 27.993 27.993 0 0 1 966.7 23.101 A 32.366 32.366 0 0 1 965.957 30.253 Q 964.816 35.29 961.923 38.93 A 19.51 19.51 0 0 1 959.8 41.201 Q 954.299 46.224 944.54 47.242 A 50.538 50.538 0 0 1 939.3 47.501 L 935.4 47.501 L 935.4 74.701 L 924.1 74.701 Z M 935.4 37.601 L 939.6 37.601 A 31.128 31.128 0 0 0 943.887 37.328 Q 949.326 36.569 951.9 33.701 Q 955.4 29.801 955.4 24.301 A 16.736 16.736 0 0 0 954.881 20.028 A 12.417 12.417 0 0 0 952 14.701 A 9.923 9.923 0 0 0 948.313 12.238 Q 946.684 11.586 944.629 11.278 A 27.25 27.25 0 0 0 940.6 11.001 L 935.4 11.001 L 935.4 37.601 Z',
'M 1031.1 70.001 L 1040.2 84.101 L 1029.1 84.101 L 1022.5 74.001 Q 1016.8 75.701 1010.9 75.701 Q 1000.9 75.701 992.45 71.051 Q 984 66.401 979 57.801 A 36.784 36.784 0 0 1 974.396 43.992 A 47.108 47.108 0 0 1 974 37.801 A 44.593 44.593 0 0 1 975.173 27.353 A 35.208 35.208 0 0 1 979 17.751 Q 984 9.201 992.45 4.601 Q 1000.9 0.001 1010.9 0.001 Q 1020.9 0.001 1029.35 4.601 Q 1037.8 9.201 1042.8 17.751 A 36.279 36.279 0 0 1 1047.312 30.902 A 47.19 47.19 0 0 1 1047.8 37.801 A 44.079 44.079 0 0 1 1046.604 48.274 A 35.833 35.833 0 0 1 1043.3 56.901 Q 1038.8 65.201 1031.1 70.001 Z M 1016.7 65.001 L 1010 54.101 L 1021.2 54.101 L 1025.5 61.101 Q 1030.4 57.601 1033.15 51.701 A 28.642 28.642 0 0 0 1035.411 44.211 A 38.887 38.887 0 0 0 1035.9 37.901 Q 1035.9 29.258 1032.668 23.075 A 24.254 24.254 0 0 0 1032.55 22.851 A 24.661 24.661 0 0 0 1027.944 16.679 A 21.786 21.786 0 0 0 1023.55 13.401 A 24.862 24.862 0 0 0 1012.308 10.234 A 29.762 29.762 0 0 0 1010.9 10.201 A 26.4 26.4 0 0 0 1001.937 11.697 A 24.462 24.462 0 0 0 998.2 13.401 A 22.272 22.272 0 0 0 989.951 21.521 A 27.188 27.188 0 0 0 989.2 22.851 Q 985.992 28.928 985.903 37.414 A 46.367 46.367 0 0 0 985.9 37.901 A 37.307 37.307 0 0 0 986.551 45.045 A 27.067 27.067 0 0 0 989.3 52.851 A 24.719 24.719 0 0 0 994.392 59.424 A 22.506 22.506 0 0 0 998.45 62.351 Q 1004.2 65.601 1010.9 65.601 A 28.343 28.343 0 0 0 1014.796 65.343 A 23.942 23.942 0 0 0 1016.7 65.001 Z',
'M 1109.9 74.701 L 1097 74.701 L 1082.2 46.901 A 233.913 233.913 0 0 1 1078.366 47.038 Q 1076.61 47.086 1075.032 47.098 A 137.33 137.33 0 0 1 1074 47.101 L 1071.2 47.101 L 1071.2 74.701 L 1060.3 74.701 L 1060.3 1.201 L 1077 1.201 A 50.558 50.558 0 0 1 1085.892 1.94 Q 1092.775 3.17 1097.9 6.451 Q 1106.1 11.701 1106.1 23.501 A 26.586 26.586 0 0 1 1105.348 29.963 A 20.834 20.834 0 0 1 1102.65 36.251 A 20.565 20.565 0 0 1 1096.142 42.564 A 27.144 27.144 0 0 1 1092.4 44.501 L 1109.9 74.701 Z M 1071.2 38.001 L 1078.3 38.001 Q 1086.719 38.001 1090.599 34.865 A 8.824 8.824 0 0 0 1091.75 33.751 A 15.031 15.031 0 0 0 1095.399 23.785 A 18.948 18.948 0 0 0 1095.4 23.601 A 13.738 13.738 0 0 0 1094.165 17.566 Q 1091.368 11.777 1082.234 10.732 A 38.207 38.207 0 0 0 1077.9 10.501 L 1071.2 10.501 L 1071.2 38.001 Z',
'M 1117.8 68.901 L 1123.1 59.401 A 14.736 14.736 0 0 0 1124.642 60.604 Q 1126.317 61.754 1128.812 62.956 A 53.074 53.074 0 0 0 1129.65 63.351 A 23.826 23.826 0 0 0 1133.745 64.823 A 18.05 18.05 0 0 0 1138.2 65.401 A 18.409 18.409 0 0 0 1141.901 65.05 Q 1144.265 64.565 1146.108 63.41 A 11.085 11.085 0 0 0 1146.85 62.901 A 7.974 7.974 0 0 0 1150.146 57.088 A 10.678 10.678 0 0 0 1150.2 56.001 Q 1150.2 52.601 1148.4 50.101 Q 1146.6 47.601 1144 45.951 Q 1141.4 44.301 1136.6 41.901 A 193.031 193.031 0 0 1 1134.013 40.608 Q 1130.549 38.841 1128.949 37.799 A 16.52 16.52 0 0 1 1128.8 37.701 Q 1119.551 31.504 1119.121 20.761 A 26.466 26.466 0 0 1 1119.1 19.701 A 22.86 22.86 0 0 1 1119.844 13.696 A 16.061 16.061 0 0 1 1125.4 5.151 A 22.59 22.59 0 0 1 1135.622 0.595 A 31.325 31.325 0 0 1 1141.3 0.101 A 29.862 29.862 0 0 1 1150.413 1.441 A 25.184 25.184 0 0 1 1158.8 6.001 L 1153.5 15.101 A 12.078 12.078 0 0 0 1151.541 13.457 Q 1150.544 12.776 1149.315 12.178 A 23.208 23.208 0 0 0 1148.15 11.651 Q 1144.7 10.201 1140.8 10.201 A 17.935 17.935 0 0 0 1137.683 10.455 Q 1134.843 10.957 1132.95 12.451 A 7.25 7.25 0 0 0 1130.325 16.797 A 11.15 11.15 0 0 0 1130.1 19.101 Q 1130.1 22.201 1131.9 24.651 A 17.078 17.078 0 0 0 1135.695 28.382 A 19.754 19.754 0 0 0 1136.45 28.901 Q 1139.074 30.619 1143.475 33.066 A 230.377 230.377 0 0 0 1143.9 33.301 Q 1148.4 35.801 1150.8 37.251 Q 1153.2 38.701 1155.3 40.701 Q 1158.2 43.301 1160 46.901 A 17.265 17.265 0 0 1 1161.791 54.2 A 20.202 20.202 0 0 1 1161.8 54.801 A 24.506 24.506 0 0 1 1161.216 60.281 A 18.27 18.27 0 0 1 1158.75 66.201 Q 1155.7 70.901 1150.35 73.301 A 27.202 27.202 0 0 1 1142.704 75.418 A 34.682 34.682 0 0 1 1138.2 75.701 Q 1132.2 75.701 1126.3 73.601 Q 1120.4 71.501 1117.8 68.901 Z',
'M 1184.8 74.701 L 1184.8 11.001 L 1166 11.001 L 1166 1.201 L 1214.9 1.201 L 1214.9 11.001 L 1195.9 11.001 L 1195.9 74.701 L 1184.8 74.701 Z',
'M 1222.8 43.301 L 1222.8 1.201 L 1234 1.201 L 1234 43.501 Q 1234 55.201 1237.5 60.251 Q 1240.803 65.018 1248.116 65.286 A 24.177 24.177 0 0 0 1249 65.301 Q 1257 65.301 1260.45 60.351 A 14.689 14.689 0 0 0 1262.269 56.579 Q 1263.536 52.775 1263.819 46.987 A 71.582 71.582 0 0 0 1263.9 43.501 L 1263.9 1.201 L 1275.2 1.201 L 1275.2 43.301 A 60.376 60.376 0 0 1 1274.56 52.396 Q 1273.153 61.611 1268.65 67.351 A 21.034 21.034 0 0 1 1256.375 74.926 A 33.011 33.011 0 0 1 1249 75.701 Q 1239.521 75.701 1233.628 71.785 A 18.555 18.555 0 0 1 1229 67.401 Q 1224.414 61.262 1223.22 51.02 A 66.791 66.791 0 0 1 1222.8 43.301 Z',
'M 1314.5 74.701 L 1280.5 1.201 L 1293.2 1.201 L 1315.2 51.701 L 1337.3 1.201 L 1349.9 1.201 L 1316 74.701 L 1314.5 74.701 Z',
'M 1391.8 0.801 L 1411.9 48.501 L 1429.5 1.201 L 1441.4 1.201 L 1412.8 74.701 L 1411.4 74.701 L 1391.4 27.101 L 1371.5 74.601 L 1370.1 74.601 L 1341.5 1.201 L 1353.4 1.201 L 1371 48.501 L 1391.2 0.801 L 1391.8 0.801 Z',
'M 1441.6 74.701 L 1464.1 36.401 L 1442.9 1.201 L 1456.4 1.201 L 1470.3 26.901 L 1484.6 1.201 L 1497.8 1.201 L 1476.5 36.201 L 1499.9 74.701 L 1486.6 74.701 L 1470.4 45.601 L 1454.5 74.701 L 1441.6 74.701 Z',
'M 1524.8 74.701 L 1524.8 40.401 L 1499.3 1.201 L 1512.7 1.201 L 1530.4 30.201 L 1548.1 1.201 L 1561.4 1.201 L 1536 40.601 L 1536 74.701 L 1524.8 74.701 Z',
'M 1558.6 74.701 L 1595.4 10.801 L 1563.3 10.801 L 1563.3 1.201 L 1613 1.201 L 1576.7 64.901 L 1611.5 64.901 L 1611.5 74.701 L 1558.6 74.701 Z'
];
letters.forEach((path) => {
const commands: any[] = [];
const pieces = path.split(' ');
// tslint:disable-next-line:prefer-for-of
for (let i = 0; i < pieces.length; i++) {
switch (pieces[i]) {
case 'M':
commands.push({
type: 'M',
x: pieces[i + 1],
y: pieces[i + 2]
});
break;
case 'L':
commands.push({
type: 'L',
x: pieces[i + 1],
y: pieces[i + 2]
});
break;
case 'Z':
commands.push({
type: 'Z'
});
break;
case 'Q':
commands.push({
type: 'Q',
x1: pieces[i + 1],
y1: pieces[i + 2],
x: pieces[i + 3],
y: pieces[i + 4]
});
break;
case 'A':
commands.push({
type: 'A',
x1: pieces[i + 1],
y1: pieces[i + 2],
angle: pieces[i + 3],
large_arc: pieces[i + 4],
sweep: pieces[i + 5],
x: pieces[i + 6],
y: pieces[i + 7]
});
break;
default:
// console.log(`I don't know what to do with this`);
break;
}
}
const Xs: number[] = commands.filter(c => c.type !== 'Z').map(c => c.x);
const Ys: number[] = commands.filter(c => c.type !== 'Z').map(c => c.y);
const minX = Math.min(...Xs);
const maxX = Math.max(...Xs);
const minY = Math.min(...Ys);
const maxY = Math.max(...Ys);
const xRange = maxX - minX;
const yRange = maxY - minY;
commands.forEach(c => {
switch (c.type) {
case 'M':
case 'L':
c.x = (100 * (c.x - minX) / xRange);
c.y = (100 * (c.y - minY) / yRange);
break;
case 'Q':
c.x = (100 * (c.x - minX) / xRange);
c.y = (100 * (c.y - minY) / yRange);
c.x1 = (100 * (c.x1 - minX) / xRange);
c.y1 = (100 * (c.y1 - minY) / yRange);
break;
case 'A':
c.x = (100 * (c.x - minX) / xRange);
c.y = (100 * (c.y - minY) / yRange);
// c.x1 = (100 * (c.x1 - minX) / xRange).toFixed(1);
// c.y1 = (100 * (c.y1 - minY) / yRange).toFixed(1);
break;
}
});
const scaledPieces: string[] = [];
// tslint:disable-next-line:prefer-for-of
for (let i = 0; i < commands.length; i++) {
const c = commands[i];
scaledPieces.push(c.type);
switch (c.type) {
case 'M':
case 'L':
scaledPieces.push(c.x);
scaledPieces.push(c.y);
break;
case 'Q':
scaledPieces.push(c.x1);
scaledPieces.push(c.y1);
scaledPieces.push(c.x);
scaledPieces.push(c.y);
break;
case 'A':
scaledPieces.push(c.x1);
scaledPieces.push(c.y1);
scaledPieces.push(c.angle);
scaledPieces.push(c.large_arc);
scaledPieces.push(c.sweep);
scaledPieces.push(c.x);
scaledPieces.push(c.y);
break;
}
}
// console.log(path);
// console.log(scaledPieces.join(' '));
console.log(`<path d="${scaledPieces.join(' ')}"/>`);
}
);