Skip to content

Instantly share code, notes, and snippets.

@chrsan
Created October 13, 2016 13:49
Show Gist options
  • Save chrsan/6bbd33dafd755a98276f85952bebb8e2 to your computer and use it in GitHub Desktop.
Save chrsan/6bbd33dafd755a98276f85952bebb8e2 to your computer and use it in GitHub Desktop.
Go rasterizing test
package main
import (
"bufio"
"io"
"log"
"os"
"strconv"
"strings"
)
type callback interface {
moveTo(x, y float32)
lineTo(x, y float32)
draw(argb uint32)
}
func xy(args []string) (float32, float32) {
x, err := strconv.ParseFloat(args[0], 32)
if err != nil {
log.Fatal(err)
}
y, err := strconv.ParseFloat(args[1], 32)
if err != nil {
log.Fatal(err)
}
return float32(x), float32(y)
}
func argb(s string) uint32 {
i, err := strconv.ParseInt(s, 0, 64)
if err != nil {
log.Fatal(err)
}
return uint32(i)
}
func parse(cb callback) {
file, err := os.Open("draw-cmds.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close()
r := bufio.NewReader(file)
for {
s, err := r.ReadString('\n')
if err != nil {
if err == io.EOF {
break
}
log.Fatal(err)
}
s = strings.TrimSpace(s)
if s[0] == '#' {
continue
}
a := strings.Split(strings.TrimSpace(s[1:]), " ")
switch s[0] {
case 'm':
x, y := xy(a)
cb.moveTo(x, y)
case 'l':
x, y := xy(a)
cb.lineTo(x, y)
case 'd':
cb.draw(argb(a[0]))
}
}
}
m 281.600006 618.264832
l 677.993774 618.264832
l 677.993774 676.799988
l 281.600006 676.799988
l 281.600006 618.264832
d 0x8C000000
m 312.515533 664.568542
l 308.243835 664.154053
l 302.874146 662.910278
l 302.469635 664.354675
l 303.969635 664.354675
l 303.969635 658.870300
l 302.469635 658.870300
l 301.838715 660.231201
l 308.151123 662.629028
l 310.873444 663.228760
l 313.306549 663.428894
l 316.778992 662.906433
l 319.546570 661.350830
l 320.640472 660.184937
l 321.423584 658.855530
l 321.895935 657.362671
l 322.057526 655.706238
l 321.645081 653.082703
l 320.417664 650.859436
l 318.365662 648.958008
l 315.177673 646.911682
l 312.502197 645.364014
l 308.475494 642.754883
l 305.889343 640.352112
l 304.605286 638.069885
l 304.180573 635.429871
l 304.349640 633.594788
l 304.867401 631.932556
l 305.733795 630.443176
l 306.948883 629.126648
l 308.472809 628.016113
l 310.203003 627.223877
l 312.139435 626.749817
l 314.282135 626.593933
l 318.698334 626.953796
l 323.369659 628.033630
l 323.800690 626.596863
l 322.300690 626.596863
l 322.300690 631.659363
l 323.800690 631.659363
l 324.349091 630.263245
l 318.694275 628.366211
l 314.598541 627.733582
l 311.471252 628.202820
l 308.902618 629.601929
l 307.092957 631.846924
l 306.480377 634.612488
l 306.924500 636.993591
l 308.243134 639.077332
l 310.350769 640.884644
l 313.615875 642.954224
l 316.416809 644.539673
l 320.475494 647.166504
l 323.041443 649.590881
l 324.307465 651.970581
l 324.726471 654.809753
l 324.531097 656.892883
l 323.931152 658.756348
l 322.926636 660.400024
l 321.517548 661.824097
l 319.702209 663.026733
l 317.596741 663.885010
l 315.201172 664.398926
l 312.515533 664.568542
m 312.515533 667.568542
l 315.721283 667.352539
l 318.607422 666.709656
l 321.173889 665.639832
l 323.420715 664.143127
l 325.299316 662.231689
l 326.643127 660.039001
l 327.452179 657.565002
l 327.726471 654.809753
l 327.143890 650.992371
l 325.403656 647.741577
l 322.433411 644.893250
l 317.895508 641.929443
l 315.100586 640.347412
l 312.225739 638.542847
l 310.459808 637.055847
l 309.721802 635.909607
l 309.480377 634.612488
l 309.804382 633.131836
l 310.802246 631.923889
l 312.479889 631.028625
l 314.598541 630.733582
l 318.136108 631.313843
l 323.252258 633.055542
l 324.645477 632.898865
l 325.300690 631.659363
l 325.300690 626.596863
l 325.004028 625.701538
l 324.231689 625.160156
l 319.133972 623.985596
l 314.282135 623.593933
l 311.587311 623.801941
l 309.133911 624.420349
l 306.921906 625.449219
l 304.951324 626.888428
l 303.305939 628.684021
l 302.129028 630.706116
l 301.420563 632.954712
l 301.180573 635.429871
l 301.777557 639.071899
l 303.558685 642.241028
l 306.531433 645.040344
l 311.007538 647.965149
l 313.688995 649.516235
l 316.425262 651.247192
l 318.087006 652.748352
l 318.817352 654.084717
l 319.057526 655.706238
l 318.696075 657.606262
l 317.587036 659.079224
l 315.733734 660.094421
l 313.306549 660.428894
l 308.797241 659.699219
l 303.100555 657.509460
l 301.663239 657.605530
l 300.969635 658.870300
l 300.969635 664.354675
l 301.274292 665.261292
l 302.065125 665.799133
l 307.835541 667.126160
l 312.515533 667.568542
m 342.705963 664.252136
l 339.768463 663.802979
l 337.609619 662.437012
l 336.264221 660.209839
l 335.821198 657.182800
l 335.821198 640.360535
l 335.381927 639.299805
l 334.321198 638.860535
l 330.735260 638.860535
l 330.735260 640.360535
l 332.235260 640.360535
l 332.235260 636.458191
l 330.735260 636.458191
l 330.735260 637.958191
l 334.321198 637.958191
l 335.381927 637.518921
l 335.821198 636.458191
l 335.821198 631.263855
l 334.321198 631.263855
l 334.465942 632.756897
l 339.660278 632.255920
l 339.515533 630.762878
l 338.015533 630.762878
l 338.015533 636.458191
l 338.454803 637.518921
l 339.515533 637.958191
l 347.003815 637.958191
l 347.003815 636.458191
l 345.503815 636.458191
l 345.503815 640.360535
l 347.003815 640.360535
l 347.003815 638.860535
l 339.515533 638.860535
l 338.454803 639.299805
l 338.015533 640.360535
l 338.015533 656.233582
l 338.412750 659.213867
l 339.594116 661.427246
l 341.620270 662.862976
l 344.367096 663.349792
l 347.211853 662.968018
l 346.871979 661.507019
l 345.371979 661.507019
l 345.371979 665.092957
l 346.871979 665.092957
l 346.474121 663.646667
l 342.705963 664.252136
m 342.705963 667.252136
l 347.269836 666.539246
l 348.065308 666.002380
l 348.371979 665.092957
l 348.371979 661.507019
l 347.805664 660.333069
l 346.532104 660.046021
l 344.367096 660.349792
l 342.867645 660.134094
l 341.862732 659.464233
l 341.224335 658.166321
l 341.015533 656.233582
l 341.015533 640.360535
l 339.515533 640.360535
l 339.515533 641.860535
l 347.003815 641.860535
l 348.064545 641.421265
l 348.503815 640.360535
l 348.503815 636.458191
l 348.064545 635.397461
l 347.003815 634.958191
l 339.515533 634.958191
l 339.515533 636.458191
l 341.015533 636.458191
l 341.015533 630.762878
l 340.524567 629.653015
l 339.370789 629.269897
l 334.176453 629.770874
l 333.210510 630.255676
l 332.821198 631.263855
l 332.821198 636.458191
l 334.321198 636.458191
l 334.321198 634.958191
l 330.735260 634.958191
l 329.674530 635.397461
l 329.235260 636.458191
l 329.235260 640.360535
l 329.674530 641.421265
l 330.735260 641.860535
l 334.321198 641.860535
l 334.321198 640.360535
l 332.821198 640.360535
l 332.821198 657.182800
l 332.989319 659.382690
l 333.485596 661.340881
l 334.309967 663.057312
l 335.462433 664.532104
l 336.912720 665.718689
l 338.603424 666.567505
l 340.534485 667.078674
l 342.705963 667.252136
m 355.807526 665.092957
l 355.807526 636.458191
l 354.307526 636.458191
l 354.307526 637.958191
l 359.501862 637.958191
l 359.501862 636.458191
l 358.001862 636.458191
l 358.001862 641.837097
l 358.322784 642.764587
l 359.148560 643.294922
l 360.126404 643.200623
l 360.836487 642.521790
l 362.339661 640.204041
l 364.120819 638.574219
l 366.138580 637.636169
l 368.466705 637.325378
l 369.903198 637.440308
l 370.127838 635.957214
l 368.627838 635.957214
l 368.627838 640.808777
l 370.127838 640.808777
l 370.602722 639.385925
l 367.754791 638.860535
l 364.934784 639.297119
l 362.358765 640.600220
l 360.150543 642.647522
l 358.196716 645.474731
l 358.001862 646.214050
l 358.001862 665.092957
l 359.501862 665.092957
l 359.501862 663.592957
l 354.307526 663.592957
l 354.307526 665.092957
l 355.807526 665.092957
m 354.307526 666.592957
l 359.501862 666.592957
l 360.562592 666.153687
l 361.001862 665.092957
l 361.001862 646.214050
l 359.501862 646.214050
l 360.806976 646.953430
l 362.376495 644.658752
l 364.093689 643.047668
l 365.845184 642.155640
l 367.754791 641.860535
l 369.652954 642.231628
l 371.004669 642.025818
l 371.627838 640.808777
l 371.627838 635.957214
l 371.264771 634.979553
l 370.352478 634.474121
l 368.466705 634.325378
l 365.265442 634.765686
l 362.450287 636.082397
l 360.098358 638.209900
l 358.167236 641.152466
l 359.501862 641.837097
l 361.001862 641.837097
l 361.001862 636.458191
l 360.562592 635.397461
l 359.501862 634.958191
l 354.307526 634.958191
l 353.246796 635.397461
l 352.807526 636.458191
l 352.807526 665.092957
l 353.246796 666.153687
l 354.307526 666.592957
m 387.609283 664.252136
l 385.010559 664.032776
l 382.695313 663.363342
l 380.663513 662.243896
l 378.915192 660.674500
l 377.477905 658.689575
l 376.452209 656.378174
l 375.838135 653.740173
l 375.635651 650.775574
l 375.838684 647.782288
l 376.453857 645.131775
l 377.481171 642.823914
l 378.920654 640.858826
l 380.686005 639.308899
l 382.753357 638.203308
l 385.122620 637.542175
l 387.793854 637.325378
l 390.465942 637.542542
l 392.835480 638.203796
l 394.902527 639.309265
l 396.667053 640.858826
l 398.106842 642.821472
l 399.134277 645.119690
l 399.749359 647.753479
l 399.952057 650.722839
l 399.748413 653.760254
l 399.131378 656.440369
l 398.100891 658.763123
l 396.656982 660.728516
l 394.875580 662.274109
l 392.773834 663.376587
l 390.351746 664.035950
l 387.609283 664.252136
m 387.609283 667.252136
l 390.979858 666.967773
l 393.979218 666.124268
l 396.607361 664.721741
l 398.864319 662.760193
l 400.650055 660.342896
l 401.926575 657.530884
l 402.693909 654.324219
l 402.952057 650.722839
l 402.695313 647.191895
l 401.931152 644.033447
l 400.659576 641.247437
l 398.880615 638.833923
l 396.639801 636.865540
l 394.045105 635.457947
l 391.096436 634.611267
l 387.793854 634.325378
l 384.492126 634.610901
l 381.543732 635.457458
l 378.948730 636.865173
l 376.707092 638.833923
l 374.928436 641.249878
l 373.656982 644.045471
l 372.892731 647.220703
l 372.635651 650.775574
l 372.891296 654.295715
l 373.651581 657.453552
l 374.916565 660.249084
l 376.686188 662.682312
l 378.912689 664.677429
l 381.475372 666.104126
l 384.374237 666.962341
l 387.609283 667.252136
m 387.688385 663.349792
l 389.977875 663.131653
l 391.973450 662.494202
l 393.675140 661.437561
l 395.082886 659.961609
l 396.113251 658.191284
l 396.849792 656.061401
l 397.441315 650.722839
l 396.856384 645.441956
l 396.128082 643.334717
l 395.109253 641.582947
l 393.716339 640.121460
l 392.032776 639.075073
l 390.058624 638.443848
l 387.793854 638.227722
l 385.533783 638.444763
l 383.563812 639.079407
l 381.883942 640.131714
l 380.494110 641.601685
l 379.479919 643.359375
l 378.754974 645.474304
l 378.172760 650.775574
l 378.746582 656.082336
l 379.461212 658.199768
l 380.460968 659.959961
l 381.835999 661.436279
l 383.498932 662.493347
l 385.449707 663.131165
l 387.688385 663.349792
m 387.688385 660.349792
l 384.864166 659.822021
l 383.771698 659.148743
l 382.892334 658.202576
l 381.600891 655.158752
l 381.172760 650.775574
l 381.606049 646.408875
l 382.911926 643.377686
l 383.807037 642.430481
l 384.919067 641.756470
l 387.793854 641.227722
l 390.683929 641.754761
l 391.801086 642.426392
l 392.699646 643.370056
l 394.007813 646.382996
l 394.441315 650.722839
l 394.001221 655.120361
l 393.448212 656.815369
l 392.673279 658.174500
l 391.759888 659.132629
l 390.624603 659.814514
l 387.688385 660.349792
m 411.073151 665.092957
l 411.073151 623.459167
l 409.573151 623.459167
l 409.573151 624.959167
l 414.767487 624.959167
l 414.767487 623.459167
l 413.267487 623.459167
l 413.267487 650.353699
l 413.533966 651.208374
l 414.240540 651.758118
l 415.134338 651.808838
l 415.897278 651.340393
l 428.026154 637.444885
l 426.896393 636.458191
l 426.896393 637.958191
l 432.486237 637.958191
l 432.486237 636.458191
l 431.351929 635.476685
l 419.776733 648.844849
l 419.411224 649.847046
l 419.804260 650.838806
l 433.778870 666.105408
l 434.885651 665.092957
l 434.885651 663.592957
l 428.241119 663.592957
l 428.241119 665.092957
l 429.346344 664.078857
l 415.872711 649.392334
l 415.107361 648.945374
l 414.223358 649.008606
l 413.529236 649.559692
l 413.267487 650.406433
l 413.267487 665.092957
l 414.767487 665.092957
l 414.767487 663.592957
l 409.573151 663.592957
l 409.573151 665.092957
l 411.073151 665.092957
m 409.573151 666.592957
l 414.767487 666.592957
l 415.828217 666.153687
l 416.267487 665.092957
l 416.267487 650.406433
l 414.767487 650.406433
l 413.662262 651.420593
l 427.135895 666.107117
l 428.241119 666.592957
l 434.885651 666.592957
l 436.257874 665.698730
l 435.992432 664.080505
l 422.017822 648.813904
l 420.911041 649.826355
l 422.045349 650.807861
l 433.620544 637.439697
l 433.850952 635.835632
l 432.486237 634.958191
l 426.896393 634.958191
l 425.766602 635.471497
l 413.637695 649.367004
l 414.767487 650.353699
l 416.267487 650.353699
l 416.267487 623.459167
l 415.828217 622.398438
l 414.767487 621.959167
l 409.573151 621.959167
l 408.512421 622.398438
l 408.073151 623.459167
l 408.073151 665.092957
l 408.512421 666.153687
l 409.573151 666.592957
m 461.687531 662.734680
l 457.057892 663.872864
l 453.184479 664.252136
l 450.473938 664.021851
l 448.031281 663.322083
l 445.856537 662.152771
l 443.949677 660.513916
l 442.379425 658.483398
l 441.258911 656.161560
l 440.588135 653.548340
l 440.367096 650.643738
l 440.563202 647.799072
l 441.156281 645.232300
l 442.146332 642.943481
l 443.533386 640.932556
l 445.174225 639.337952
l 447.030853 638.200867
l 449.103271 637.521240
l 451.391510 637.299011
l 453.492889 637.487488
l 455.333252 638.067871
l 456.912537 639.040100
l 458.230743 640.404175
l 459.336609 642.235596
l 460.125916 644.442810
l 460.598633 647.025818
l 460.754791 649.984558
l 460.728638 651.567688
l 462.228424 651.592957
l 462.228424 650.092957
l 444.166901 650.092957
l 443.049316 650.592468
l 442.676025 651.758301
l 443.129028 654.396851
l 443.860718 656.699158
l 444.871063 658.665283
l 446.160095 660.295227
l 447.763367 661.605103
l 449.631104 662.541992
l 451.763336 663.106018
l 454.160065 663.297058
l 458.036194 662.838745
l 462.643433 661.463623
l 462.122955 660.056824
l 460.622955 660.056824
l 460.622955 664.170105
l 462.122955 664.170105
l 461.687531 662.734680
m 463.622955 664.170105
l 463.622955 660.056824
l 462.981018 658.826477
l 461.602478 658.650024
l 457.507385 659.885498
l 454.160065 660.297058
l 450.794189 659.776123
l 449.439667 659.118774
l 448.304077 658.196838
l 446.572052 655.414246
l 445.657745 651.427612
l 444.166901 651.592957
l 444.166901 653.092957
l 462.228424 653.092957
l 463.280487 652.662903
l 463.728210 651.618286
l 463.754578 650.009888
l 463.556793 646.544617
l 462.966766 643.484009
l 461.984436 640.828003
l 460.609863 638.576660
l 458.799500 636.711243
l 456.659637 635.376465
l 454.190308 634.572388
l 451.391510 634.299011
l 448.441742 634.597168
l 445.766724 635.479675
l 443.366425 636.946472
l 441.240845 638.997559
l 439.548187 641.445129
l 438.338318 644.202026
l 437.611298 647.268250
l 437.367096 650.643738
l 437.645050 654.124146
l 438.472137 657.273499
l 439.848389 660.091858
l 441.773773 662.579224
l 444.152374 664.619873
l 446.847015 666.078918
l 449.857727 666.956360
l 453.184479 667.252136
l 457.498077 666.840393
l 462.558380 665.605530
l 463.327301 665.063293
l 463.622955 664.170105
m 444.404205 649.190613
l 457.034088 649.190613
l 458.094818 648.751343
l 458.534088 647.690613
l 458.085205 643.722595
l 456.746399 640.801453
l 455.661377 639.670227
l 454.354523 638.859802
l 452.825745 638.370178
l 451.075104 638.201355
l 449.329102 638.364807
l 447.778564 638.841797
l 446.423523 639.632324
l 445.263977 640.736450
l 443.691498 643.623413
l 442.909729 647.561951
l 443.298981 648.704773
l 444.404205 649.190613
m 445.898682 647.819336
l 446.464905 644.767212
l 447.565399 642.660889
l 449.048737 641.559631
l 451.075104 641.201355
l 453.009796 641.541565
l 454.342285 642.595947
l 455.238068 644.668030
l 455.534088 647.690613
l 457.034088 647.690613
l 457.034088 646.190613
l 444.404205 646.190613
l 444.404205 647.690613
l 445.898682 647.819336
m 502.055359 660.350647
l 499.968781 662.060181
l 497.944031 663.280334
l 495.981110 664.010986
l 494.079987 664.252136
l 491.379059 663.801514
l 489.206360 662.436157
l 487.791901 660.410034
l 487.327057 657.894714
l 487.522125 656.065918
l 488.128845 654.465027
l 489.147217 653.091980
l 490.577271 651.946899
l 492.572693 650.947754
l 494.986206 650.234436
l 501.067291 649.665222
l 502.306549 649.665222
l 503.367279 649.225952
l 503.806549 648.165222
l 503.806549 644.711121
l 503.369110 641.948364
l 502.075287 639.899963
l 499.994720 638.649902
l 497.191315 638.227722
l 492.550995 638.904968
l 487.602539 640.933960
l 488.305573 642.258972
l 489.805573 642.258972
l 489.805573 637.961121
l 488.305573 637.961121
l 488.871063 639.350464
l 493.675964 637.831421
l 498.140533 637.325378
l 501.754425 637.759521
l 503.118561 638.307251
l 504.187469 639.075439
l 504.984589 640.071045
l 505.552521 641.342163
l 506.000885 644.711121
l 506.000885 657.683777
l 506.229095 660.042236
l 506.909393 661.812744
l 508.312042 663.170959
l 510.243073 663.639832
l 511.483307 663.515320
l 511.245026 662.034363
l 509.757446 662.227112
l 510.126587 665.101135
l 511.614166 664.908386
l 510.968658 663.554382
l 509.424377 664.078186
l 507.711823 664.252136
l 506.604126 664.086548
l 505.751526 663.577148
l 505.034088 662.581299
l 504.532166 661.114441
l 503.513214 660.020935
l 502.055359 660.350647
m 501.610199 661.794189
l 502.439850 664.087952
l 503.713104 665.778259
l 505.509277 666.880066
l 507.711823 667.252136
l 510.086182 667.004272
l 512.259644 666.262390
l 512.931458 665.625549
l 513.101746 664.715637
l 512.732605 661.841614
l 512.142273 660.832336
l 511.006744 660.553406
l 510.243073 660.639832
l 509.463470 660.238953
l 509.000885 657.683777
l 509.000885 644.711121
l 508.825745 642.272644
l 508.309357 640.157898
l 507.451691 638.366882
l 506.252747 636.899536
l 504.727020 635.776245
l 502.866394 634.972778
l 500.670898 634.489136
l 498.140533 634.325378
l 493.099731 634.887268
l 487.740051 636.571838
l 487.060730 637.123840
l 486.805573 637.961121
l 486.805573 642.258972
l 487.532440 643.544373
l 489.008606 643.584045
l 493.275482 641.816162
l 497.191315 641.227722
l 498.863708 641.428528
l 499.980164 642.047180
l 500.604584 643.113403
l 500.806549 644.711121
l 500.806549 648.165222
l 502.306549 648.165222
l 502.306549 646.665222
l 501.067291 646.665222
l 497.388092 646.838074
l 494.143921 647.354736
l 491.334747 648.215332
l 488.960632 649.419739
l 486.941986 651.063721
l 485.496826 653.024231
l 484.625183 655.301208
l 484.327057 657.894714
l 484.506287 659.829773
l 485.035034 661.594299
l 485.913300 663.188416
l 487.141083 664.612061
l 488.618225 665.764221
l 490.267059 666.588318
l 492.087646 667.084290
l 494.079987 667.252136
l 496.545074 666.956421
l 499.034607 666.075500
l 501.548584 664.609375
l 504.087036 662.557983
l 503.071198 661.454285
l 501.610199 661.794189
m 503.806549 658.632996
l 503.806549 651.223816
l 503.383392 650.179504
l 502.352539 649.724548
l 500.612305 649.671814
l 496.306091 650.133484
l 492.871216 651.515625
l 491.414734 652.639526
l 490.370911 653.936707
l 489.739807 655.407227
l 489.521393 657.050964
l 489.967804 659.358398
l 491.288879 661.285400
l 493.235474 662.572510
l 495.556549 663.007019
l 497.453674 662.804626
l 499.369354 662.201599
l 503.256348 659.794006
l 503.806549 658.632996
m 501.356720 657.472046
l 498.360718 659.375854
l 495.556549 660.007019
l 494.370758 659.795593
l 493.390594 659.144653
l 492.734131 658.197632
l 492.521393 657.050964
l 492.990204 655.399353
l 494.444977 654.069702
l 497.112457 653.019653
l 500.566315 652.671082
l 502.260529 652.723145
l 502.306549 651.223816
l 500.806549 651.223816
l 500.806549 658.632996
l 502.306549 658.632996
l 501.356720 657.472046
m 519.626831 665.092957
l 519.626831 636.458191
l 518.126831 636.458191
l 518.126831 637.958191
l 523.321167 637.958191
l 523.321167 636.458191
l 521.821167 636.458191
l 521.821167 641.837097
l 522.113892 642.726807
l 522.876953 643.269836
l 523.814758 643.254150
l 524.559387 642.683838
l 526.483032 640.331970
l 528.596558 638.654907
l 530.900024 637.652710
l 533.393433 637.325378
l 536.139709 637.792236
l 538.231812 639.211182
l 539.592346 641.502808
l 540.040894 644.526550
l 540.040894 665.092957
l 541.540894 665.092957
l 541.540894 663.592957
l 536.346558 663.592957
l 536.346558 665.092957
l 537.846558 665.092957
l 537.846558 646.214050
l 537.545288 643.036987
l 536.646118 640.815247
l 534.866638 639.319641
l 532.312378 638.807800
l 529.588501 639.246948
l 526.974731 640.545044
l 524.471191 642.701965
l 522.077820 645.717773
l 521.821167 646.556824
l 521.821167 665.092957
l 523.321167 665.092957
l 523.321167 663.592957
l 518.126831 663.592957
l 518.126831 665.092957
l 519.626831 665.092957
m 518.126831 666.592957
l 523.321167 666.592957
l 524.381897 666.153687
l 524.821167 665.092957
l 524.821167 646.556824
l 523.321167 646.556824
l 524.564575 647.395935
l 526.460022 644.943359
l 528.383118 643.194519
l 530.333923 642.149292
l 532.312378 641.807800
l 533.470459 641.975586
l 534.174988 642.516235
l 534.680237 643.927734
l 534.846558 646.214050
l 534.846558 665.092957
l 535.285828 666.153687
l 536.346558 666.592957
l 541.540894 666.592957
l 542.601624 666.153687
l 543.040894 665.092957
l 543.040894 644.526550
l 542.874695 642.352051
l 542.382507 640.399353
l 541.564392 638.668457
l 540.420349 637.159302
l 538.982788 635.923340
l 537.332458 635.039001
l 535.469299 634.506348
l 533.393433 634.325378
l 530.159424 634.749084
l 527.196350 636.001099
l 524.504211 638.081543
l 522.083008 640.990417
l 523.321167 641.837097
l 524.821167 641.837097
l 524.821167 636.458191
l 524.381897 635.397461
l 523.321167 634.958191
l 518.126831 634.958191
l 517.066101 635.397461
l 516.626831 636.458191
l 516.626831 665.092957
l 517.066101 666.153687
l 518.126831 666.592957
m 571.517456 665.092957
l 571.517456 659.714050
l 571.198608 658.789368
l 570.377502 658.257935
l 569.401855 658.345215
l 568.689209 659.017151
l 567.130981 661.339355
l 565.246704 662.975342
l 563.044189 663.934143
l 560.472534 664.252136
l 558.369690 664.057495
l 556.509399 663.459473
l 554.891663 662.458130
l 553.516541 661.053345
l 552.357788 659.206360
l 551.530823 657.027161
l 551.035522 654.515686
l 550.871948 651.672058
l 551.061157 648.522461
l 551.632324 645.709473
l 552.585449 643.233093
l 553.920532 641.093384
l 555.488647 639.438965
l 557.287964 638.259460
l 559.318420 637.554932
l 561.579956 637.325378
l 563.687927 637.531860
l 565.607056 638.163757
l 567.337280 639.221130
l 568.878662 640.703979
l 569.640564 641.180359
l 570.537964 641.134521
l 571.249084 640.585266
l 571.517456 639.727722
l 571.517456 623.459167
l 570.017456 623.459167
l 570.017456 624.959167
l 575.238159 624.959167
l 575.238159 623.459167
l 573.738159 623.459167
l 573.738159 665.092957
l 575.238159 665.092957
l 575.238159 663.592957
l 570.017456 663.592957
l 570.017456 665.092957
l 571.517456 665.092957
m 570.017456 666.592957
l 575.238159 666.592957
l 576.298889 666.153687
l 576.738159 665.092957
l 576.738159 623.459167
l 576.298889 622.398438
l 575.238159 621.959167
l 570.017456 621.959167
l 568.956787 622.398438
l 568.517456 623.459167
l 568.517456 639.727722
l 570.017456 639.727722
l 571.156311 638.751465
l 569.131531 636.819763
l 566.860535 635.438171
l 564.343323 634.606750
l 561.579956 634.325378
l 558.623352 634.639221
l 555.965698 635.566040
l 553.606873 637.105835
l 551.547058 639.258606
l 549.940857 641.817932
l 548.792908 644.739929
l 548.103271 648.024658
l 547.871948 651.672058
l 548.078918 655.020569
l 548.695923 658.009705
l 549.722961 660.639465
l 551.160034 662.909912
l 553.025574 664.803955
l 555.199524 666.158997
l 557.681824 666.975037
l 560.472534 667.252136
l 563.879700 666.815430
l 566.851685 665.509888
l 569.336975 663.372925
l 571.345764 660.411011
l 570.017456 659.714050
l 568.517456 659.714050
l 568.517456 665.092957
l 568.956787 666.153687
l 570.017456 666.592957
m 571.009399 642.162048
l 568.796814 640.443176
l 566.619568 639.214478
l 564.477661 638.476013
l 562.370972 638.227722
l 560.243774 638.456421
l 558.392639 639.121704
l 556.817566 640.223572
l 555.518494 641.762085
l 554.596619 643.558777
l 553.937744 645.721436
l 553.409058 651.144714
l 553.887634 655.971375
l 554.484253 657.900513
l 555.319214 659.506775
l 556.502319 660.891663
l 557.935791 661.883972
l 559.619568 662.483582
l 561.553589 662.690613
l 564.027344 662.359558
l 566.450623 661.377319
l 568.823425 659.743896
l 571.145752 657.459351
l 571.517456 656.470886
l 571.517456 643.287292
l 571.009399 642.162048
m 568.517456 643.287292
l 568.517456 656.470886
l 570.017456 656.470886
l 568.889221 655.482483
l 567.047974 657.328064
l 565.211609 658.644592
l 563.380188 659.432129
l 561.553589 659.690613
l 559.356323 659.240967
l 557.821228 657.851563
l 556.760742 655.107056
l 556.409058 651.144714
l 556.813538 646.576965
l 558.030640 643.401917
l 559.821289 641.760315
l 562.370972 641.227722
l 563.930237 641.424744
l 565.559082 642.021240
l 569.025574 644.412537
l 570.017456 643.287292
l 568.517456 643.287292
m 607.409058 640.360535
l 607.409058 665.092957
l 608.909058 665.092957
l 608.909058 663.592957
l 603.688354 663.592957
l 603.688354 665.092957
l 605.188354 665.092957
l 605.188354 640.360535
l 604.749084 639.299805
l 603.688354 638.860535
l 599.627808 638.860535
l 599.627808 640.360535
l 601.127808 640.360535
l 601.127808 636.458191
l 599.627808 636.458191
l 599.627808 637.958191
l 603.688354 637.958191
l 604.749084 637.518921
l 605.188354 636.458191
l 605.188354 633.030457
l 605.670410 629.096619
l 606.278076 627.581787
l 607.130188 626.368347
l 608.204407 625.459351
l 609.544495 624.811646
l 613.022339 624.299988
l 615.619629 624.505371
l 618.574890 625.121155
l 618.954956 623.670105
l 617.454956 623.670105
l 617.454956 627.783386
l 618.954956 627.783386
l 619.396973 626.350037
l 616.021606 625.489380
l 613.338745 625.202332
l 610.521851 625.663879
l 608.652771 627.018311
l 607.722107 629.197571
l 607.409058 632.476746
l 607.409058 636.458191
l 607.848389 637.518921
l 608.909058 637.958191
l 616.054565 637.958191
l 616.054565 636.458191
l 614.554565 636.458191
l 614.554565 640.360535
l 616.054565 640.360535
l 616.054565 638.860535
l 608.909058 638.860535
l 607.848389 639.299805
l 607.409058 640.360535
m 608.909058 641.860535
l 616.054565 641.860535
l 617.115295 641.421265
l 617.554565 640.360535
l 617.554565 636.458191
l 617.115295 635.397461
l 616.054565 634.958191
l 608.909058 634.958191
l 608.909058 636.458191
l 610.409058 636.458191
l 610.409058 632.476746
l 610.564453 630.158386
l 611.037476 628.838501
l 611.852356 628.353271
l 613.338745 628.202332
l 615.574585 628.456055
l 618.512939 629.216797
l 619.844849 628.990967
l 620.454956 627.783386
l 620.454956 623.670105
l 620.142212 622.753784
l 619.335022 622.219055
l 616.002869 621.529846
l 613.022339 621.299988
l 610.518921 621.494507
l 608.333008 622.067139
l 606.464539 623.017944
l 604.913513 624.346863
l 603.723816 626.010742
l 602.873108 628.012634
l 602.361267 630.352539
l 602.188354 633.030457
l 602.188354 636.458191
l 603.688354 636.458191
l 603.688354 634.958191
l 599.627808 634.958191
l 598.567139 635.397461
l 598.127808 636.458191
l 598.127808 640.360535
l 598.567139 641.421265
l 599.627808 641.860535
l 603.688354 641.860535
l 603.688354 640.360535
l 602.188354 640.360535
l 602.188354 665.092957
l 602.627686 666.153687
l 603.688354 666.592957
l 608.909058 666.592957
l 609.969788 666.153687
l 610.409058 665.092957
l 610.409058 640.360535
l 608.909058 640.360535
l 608.909058 641.860535
m 624.067261 665.092957
l 624.067261 636.458191
l 622.567261 636.458191
l 622.567261 637.958191
l 627.761597 637.958191
l 627.761597 636.458191
l 626.261597 636.458191
l 626.261597 665.092957
l 627.761597 665.092957
l 627.761597 663.592957
l 622.567261 663.592957
l 622.567261 665.092957
l 624.067261 665.092957
m 622.567261 666.592957
l 627.761597 666.592957
l 628.822327 666.153687
l 629.261597 665.092957
l 629.261597 636.458191
l 628.822327 635.397461
l 627.761597 634.958191
l 622.567261 634.958191
l 621.506592 635.397461
l 621.067261 636.458191
l 621.067261 665.092957
l 621.506592 666.153687
l 622.567261 666.592957
m 624.067261 631.263855
l 624.067261 626.069519
l 622.567261 626.069519
l 622.567261 627.569519
l 627.761597 627.569519
l 627.761597 626.069519
l 626.261597 626.069519
l 626.261597 631.263855
l 627.761597 631.263855
l 627.761597 629.763855
l 622.567261 629.763855
l 622.567261 631.263855
l 624.067261 631.263855
m 622.567261 632.763855
l 627.761597 632.763855
l 628.822327 632.324585
l 629.261597 631.263855
l 629.261597 626.069519
l 628.822327 625.008789
l 627.761597 624.569519
l 622.567261 624.569519
l 621.506592 625.008789
l 621.067261 626.069519
l 621.067261 631.263855
l 621.506592 632.324585
l 622.567261 632.763855
m 639.676636 665.092957
l 639.676636 623.459167
l 638.176636 623.459167
l 638.176636 624.959167
l 643.370972 624.959167
l 643.370972 623.459167
l 641.870972 623.459167
l 641.870972 665.092957
l 643.370972 665.092957
l 643.370972 663.592957
l 638.176636 663.592957
l 638.176636 665.092957
l 639.676636 665.092957
m 638.176636 666.592957
l 643.370972 666.592957
l 644.431702 666.153687
l 644.870972 665.092957
l 644.870972 623.459167
l 644.431702 622.398438
l 643.370972 621.959167
l 638.176636 621.959167
l 637.115967 622.398438
l 636.676636 623.459167
l 636.676636 665.092957
l 637.115967 666.153687
l 638.176636 666.592957
m 655.286011 665.092957
l 655.286011 623.459167
l 653.786011 623.459167
l 653.786011 624.959167
l 658.980347 624.959167
l 658.980347 623.459167
l 657.480347 623.459167
l 657.480347 665.092957
l 658.980347 665.092957
l 658.980347 663.592957
l 653.786011 663.592957
l 653.786011 665.092957
l 655.286011 665.092957
m 653.786011 666.592957
l 658.980347 666.592957
l 660.041077 666.153687
l 660.480347 665.092957
l 660.480347 623.459167
l 660.041077 622.398438
l 658.980347 621.959167
l 653.786011 621.959167
l 652.725342 622.398438
l 652.286011 623.459167
l 652.286011 665.092957
l 652.725342 666.153687
l 653.786011 666.592957
d 0x99000000
m 312.515533 666.068542
l 308.039703 665.640076
l 302.469635 664.354675
l 302.469635 658.870300
l 308.474762 661.164246
l 313.306549 661.928894
l 316.256378 661.500427
l 318.566803 660.215027
l 320.059845 658.230896
l 320.557526 655.706238
l 320.231232 653.583679
l 319.252350 651.803894
l 317.396759 650.103210
l 314.440338 648.217957
l 311.750885 646.662292
l 307.502472 643.897034
l 304.724030 641.296570
l 303.191437 638.570862
l 302.680573 635.429871
l 302.884918 633.275208
l 303.497955 631.319885
l 304.519684 629.564026
l 305.950104 628.007507
l 307.696930 626.732849
l 309.667877 625.822327
l 311.862946 625.276062
l 314.282135 625.093933
l 318.916168 625.469666
l 323.800690 626.596863
l 323.800690 631.659363
l 318.415192 629.840027
l 314.598541 629.233582
l 311.975006 629.615906
l 309.852448 630.762878
l 308.448395 632.489929
l 307.980377 634.612488
l 308.323151 636.451599
l 309.351471 638.066589
l 311.289459 639.714539
l 314.361237 641.652527
l 317.156158 643.234558
l 321.454010 646.029480
l 324.222565 648.666199
l 325.725494 651.480896
l 326.226471 654.809753
l 325.991638 657.228943
l 325.287140 659.397644
l 324.112976 661.315857
l 322.469147 662.983582
l 320.438049 664.333252
l 318.102081 665.297302
l 315.461243 665.875732
l 312.515533 666.068542
m 342.705963 665.752136
l 339.185944 665.185242
l 337.752228 664.476624
l 336.536041 663.484558
l 335.567047 662.240356
l 334.874908 660.775330
l 334.321198 657.182800
l 334.321198 640.360535
l 330.735260 640.360535
l 330.735260 636.458191
l 334.321198 636.458191
l 334.321198 631.263855
l 339.515533 630.762878
l 339.515533 636.458191
l 347.003815 636.458191
l 347.003815 640.360535
l 339.515533 640.360535
l 339.515533 656.233582
l 339.818756 658.690674
l 340.728424 660.445740
l 342.244537 661.498779
l 344.367096 661.849792
l 346.871979 661.507019
l 346.871979 665.092957
l 342.705963 665.752136
m 354.307526 665.092957
l 354.307526 636.458191
l 359.501862 636.458191
l 359.501862 641.837097
l 361.219025 639.206970
l 363.285553 637.328308
l 365.701447 636.201111
l 368.466705 635.825378
l 370.127838 635.957214
l 370.127838 640.808777
l 367.754791 640.360535
l 365.389984 640.726379
l 363.226227 641.823914
l 361.263519 643.653137
l 359.501862 646.214050
l 359.501862 665.092957
m 387.609283 665.752136
l 384.692413 665.497559
l 382.085358 664.733704
l 379.788116 663.460693
l 377.800690 661.678406
l 376.197235 659.469360
l 375.051910 656.915833
l 374.364716 654.017944
l 374.135651 650.775574
l 374.365540 647.501953
l 375.055206 644.589172
l 376.204651 642.037354
l 377.813873 639.846375
l 379.816956 638.087219
l 382.147980 636.830627
l 384.806946 636.076721
l 387.793854 635.825378
l 390.780762 636.076721
l 393.439728 636.830627
l 395.770752 638.087219
l 397.773834 639.846375
l 399.383057 642.034058
l 400.532501 644.575989
l 401.222168 647.472290
l 401.452057 650.722839
l 401.221344 654.041809
l 400.529205 656.985046
l 399.375641 659.552551
l 397.760651 661.744324
l 395.741913 663.497742
l 393.377106 664.750183
l 390.666229 665.501648
l 387.609283 665.752136
m 387.688385 661.849792
l 389.622650 661.675964
l 391.299042 661.154358
l 392.717499 660.285095
l 393.878082 659.068054
l 394.780731 657.503357
l 395.425507 655.590881
l 395.941315 650.722839
l 395.432098 645.912476
l 394.795563 644.022705
l 393.904449 642.476501
l 392.758698 641.273926
l 391.358368 640.414917
l 389.703400 639.899536
l 387.793854 639.727722
l 385.890472 639.900330
l 384.240875 640.418213
l 382.845062 641.281311
l 381.703033 642.489685
l 380.814789 644.043274
l 380.180328 645.942139
l 379.672760 650.775574
l 380.173737 655.620544
l 380.799957 657.523926
l 381.676666 659.081238
l 382.803864 660.292480
l 384.181549 661.157654
l 385.809723 661.676758
l 387.688385 661.849792
m 409.573151 665.092957
l 409.573151 623.459167
l 414.767487 623.459167
l 414.767487 650.353699
l 426.896393 636.458191
l 432.486237 636.458191
l 420.911041 649.826355
l 434.885651 665.092957
l 428.241119 665.092957
l 414.767487 650.406433
l 414.767487 665.092957
m 462.122955 664.170105
l 457.277985 665.356628
l 453.184479 665.752136
l 450.166260 665.489319
l 447.439728 664.700745
l 445.004883 663.386536
l 442.861725 661.546570
l 441.114075 659.288086
l 439.865753 656.718079
l 439.116760 653.836670
l 438.867096 650.643738
l 439.087097 647.534058
l 439.747101 644.717712
l 440.847107 642.194702
l 442.387115 639.965027
l 444.269897 638.142395
l 446.398224 636.840515
l 448.772095 636.059387
l 451.391510 635.799011
l 453.841187 636.029724
l 455.995880 636.721863
l 457.855591 637.875427
l 459.420319 639.490417
l 460.660400 641.530579
l 461.546173 643.959656
l 462.077637 646.777649
l 462.254791 649.984558
l 462.228424 651.592957
l 444.166901 651.592957
l 445.216644 656.057251
l 446.103638 657.811096
l 447.232086 659.246033
l 448.601929 660.362122
l 450.213226 661.159302
l 452.065918 661.637634
l 454.160065 661.797058
l 457.772369 661.362000
l 462.122955 660.056824
m 444.404205 647.690613
l 457.034088 647.690613
l 456.661652 644.195313
l 455.544342 641.698669
l 453.682159 640.200684
l 451.075104 639.701355
l 448.413666 640.200684
l 446.414703 641.698669
l 445.078217 644.195313
l 444.404205 647.690613
m 503.071198 661.454285
l 500.759125 663.334595
l 498.489899 664.677673
l 496.263519 665.483521
l 494.079987 665.752136
l 490.823639 665.195129
l 488.173737 663.524109
l 486.413727 661.002747
l 485.827057 657.894714
l 486.073425 655.684021
l 486.812531 653.745178
l 488.044373 652.078308
l 489.768951 650.683289
l 491.953308 649.581665
l 494.564484 648.794739
l 497.602478 648.322632
l 501.067291 648.165222
l 502.306549 648.165222
l 502.306549 644.711121
l 501.986847 642.530884
l 501.027740 640.973572
l 499.429230 640.039185
l 497.191315 639.727722
l 492.913239 640.360535
l 488.305573 642.258972
l 488.305573 637.961121
l 493.387848 636.359314
l 498.140533 635.825378
l 502.309845 636.365906
l 503.922363 637.041565
l 505.220123 637.987488
l 506.217957 639.218506
l 506.930695 640.749451
l 507.500885 644.711121
l 507.500885 657.683777
l 507.672272 659.633301
l 508.186432 661.025818
l 509.043365 661.861328
l 510.243073 662.139832
l 511.245026 662.034363
l 511.614166 664.908386
l 509.755280 665.541199
l 507.711823 665.752136
l 506.057281 665.483521
l 504.732330 664.677673
l 503.736969 663.334595
l 503.071198 661.454285
m 502.306549 658.632996
l 502.306549 651.223816
l 500.566315 651.171082
l 496.703522 651.576477
l 493.658112 652.792664
l 491.680573 654.668030
l 491.186188 655.796082
l 491.021393 657.050964
l 491.350983 658.778015
l 492.339752 660.215027
l 493.803131 661.184021
l 495.556549 661.507019
l 497.194611 661.327393
l 498.865631 660.788513
l 502.306549 658.632996
m 518.126831 665.092957
l 518.126831 636.458191
l 523.321167 636.458191
l 523.321167 641.837097
l 525.493164 639.206970
l 527.895874 637.328308
l 530.529297 636.201111
l 533.393433 635.825378
l 536.735474 636.415344
l 538.124695 637.152832
l 539.326050 638.185242
l 540.295044 639.466553
l 540.987183 640.950500
l 541.540894 644.526550
l 541.540894 665.092957
l 536.346558 665.092957
l 536.346558 646.214050
l 536.112549 643.481750
l 535.410522 641.665710
l 534.167969 640.647278
l 532.312378 640.307800
l 529.960754 640.698364
l 527.678345 641.870056
l 525.465149 643.822876
l 523.321167 646.556824
l 523.321167 665.092957
m 570.017456 665.092957
l 570.017456 659.714050
l 568.234375 662.355713
l 566.049194 664.242615
l 563.461914 665.374756
l 560.472534 665.752136
l 558.026184 665.516479
l 555.854980 664.809509
l 553.959045 663.631226
l 552.338257 661.981628
l 551.040527 659.923340
l 550.113525 657.518982
l 549.557373 654.768555
l 549.371948 651.672058
l 549.582092 648.273987
l 550.212402 645.225281
l 551.263000 642.525940
l 552.733765 640.175964
l 554.547363 638.272583
l 556.626221 636.913025
l 558.970459 636.097290
l 561.579956 635.825378
l 564.015625 636.069275
l 566.233765 636.800964
l 568.234375 638.020447
l 570.017456 639.727722
l 570.017456 623.459167
l 575.238159 623.459167
l 575.238159 665.092957
m 570.017456 643.287292
l 568.026733 641.729980
l 566.088745 640.617615
l 564.203491 639.950195
l 562.370972 639.727722
l 560.622131 639.906128
l 559.106384 640.441284
l 557.823914 641.333252
l 556.774536 642.581970
l 555.958435 644.187500
l 555.375427 646.149780
l 554.909058 651.144714
l 555.324341 655.539795
l 556.570190 658.679138
l 557.504578 659.777893
l 558.646606 660.562744
l 559.996277 661.033630
l 561.553589 661.190613
l 563.704163 660.895630
l 565.831665 660.010681
l 567.936096 658.535767
l 570.017456 656.470886
m 608.909058 640.360535
l 608.909058 665.092957
l 603.688354 665.092957
l 603.688354 640.360535
l 599.627808 640.360535
l 599.627808 636.458191
l 603.688354 636.458191
l 603.688354 633.030457
l 604.271729 628.554626
l 605.000977 626.796265
l 606.021851 625.357605
l 607.334473 624.238647
l 608.938721 623.439392
l 610.834717 622.959839
l 613.022339 622.799988
l 615.810669 623.017517
l 618.954956 623.670105
l 618.954956 627.783386
l 615.797485 626.972595
l 613.338745 626.702332
l 611.186523 627.008850
l 609.845093 627.928406
l 609.143066 629.678528
l 608.909058 632.476746
l 608.909058 636.458191
l 616.054565 636.458191
l 616.054565 640.360535
m 622.567261 665.092957
l 622.567261 636.458191
l 627.761597 636.458191
l 627.761597 665.092957
m 622.567261 631.263855
l 622.567261 626.069519
l 627.761597 626.069519
l 627.761597 631.263855
m 638.176636 665.092957
l 638.176636 623.459167
l 643.370972 623.459167
l 643.370972 665.092957
m 653.786011 665.092957
l 653.786011 623.459167
l 658.980347 623.459167
l 658.980347 665.092957
d 0x99000000
m 312.515533 666.068542
l 308.039703 665.640076
l 302.469635 664.354675
l 302.469635 658.870300
l 308.474762 661.164246
l 313.306549 661.928894
l 316.256378 661.500427
l 318.566803 660.215027
l 320.059845 658.230896
l 320.557526 655.706238
l 320.231232 653.583679
l 319.252350 651.803894
l 317.396759 650.103210
l 314.440338 648.217957
l 311.750885 646.662292
l 307.502472 643.897034
l 304.724030 641.296570
l 303.191437 638.570862
l 302.680573 635.429871
l 302.884918 633.275208
l 303.497955 631.319885
l 304.519684 629.564026
l 305.950104 628.007507
l 307.696930 626.732849
l 309.667877 625.822327
l 311.862946 625.276062
l 314.282135 625.093933
l 318.916168 625.469666
l 323.800690 626.596863
l 323.800690 631.659363
l 318.415192 629.840027
l 314.598541 629.233582
l 311.975006 629.615906
l 309.852448 630.762878
l 308.448395 632.489929
l 307.980377 634.612488
l 308.323151 636.451599
l 309.351471 638.066589
l 311.289459 639.714539
l 314.361237 641.652527
l 317.156158 643.234558
l 321.454010 646.029480
l 324.222565 648.666199
l 325.725494 651.480896
l 326.226471 654.809753
l 325.991638 657.228943
l 325.287140 659.397644
l 324.112976 661.315857
l 322.469147 662.983582
l 320.438049 664.333252
l 318.102081 665.297302
l 315.461243 665.875732
l 312.515533 666.068542
m 342.705963 665.752136
l 339.185944 665.185242
l 337.752228 664.476624
l 336.536041 663.484558
l 335.567047 662.240356
l 334.874908 660.775330
l 334.321198 657.182800
l 334.321198 640.360535
l 330.735260 640.360535
l 330.735260 636.458191
l 334.321198 636.458191
l 334.321198 631.263855
l 339.515533 630.762878
l 339.515533 636.458191
l 347.003815 636.458191
l 347.003815 640.360535
l 339.515533 640.360535
l 339.515533 656.233582
l 339.818756 658.690674
l 340.728424 660.445740
l 342.244537 661.498779
l 344.367096 661.849792
l 346.871979 661.507019
l 346.871979 665.092957
l 342.705963 665.752136
m 354.307526 665.092957
l 354.307526 636.458191
l 359.501862 636.458191
l 359.501862 641.837097
l 361.219025 639.206970
l 363.285553 637.328308
l 365.701447 636.201111
l 368.466705 635.825378
l 370.127838 635.957214
l 370.127838 640.808777
l 367.754791 640.360535
l 365.389984 640.726379
l 363.226227 641.823914
l 361.263519 643.653137
l 359.501862 646.214050
l 359.501862 665.092957
m 387.609283 665.752136
l 384.692413 665.497559
l 382.085358 664.733704
l 379.788116 663.460693
l 377.800690 661.678406
l 376.197235 659.469360
l 375.051910 656.915833
l 374.364716 654.017944
l 374.135651 650.775574
l 374.365540 647.501953
l 375.055206 644.589172
l 376.204651 642.037354
l 377.813873 639.846375
l 379.816956 638.087219
l 382.147980 636.830627
l 384.806946 636.076721
l 387.793854 635.825378
l 390.780762 636.076721
l 393.439728 636.830627
l 395.770752 638.087219
l 397.773834 639.846375
l 399.383057 642.034058
l 400.532501 644.575989
l 401.222168 647.472290
l 401.452057 650.722839
l 401.221344 654.041809
l 400.529205 656.985046
l 399.375641 659.552551
l 397.760651 661.744324
l 395.741913 663.497742
l 393.377106 664.750183
l 390.666229 665.501648
l 387.609283 665.752136
m 387.688385 661.849792
l 389.622650 661.675964
l 391.299042 661.154358
l 392.717499 660.285095
l 393.878082 659.068054
l 394.780731 657.503357
l 395.425507 655.590881
l 395.941315 650.722839
l 395.432098 645.912476
l 394.795563 644.022705
l 393.904449 642.476501
l 392.758698 641.273926
l 391.358368 640.414917
l 389.703400 639.899536
l 387.793854 639.727722
l 385.890472 639.900330
l 384.240875 640.418213
l 382.845062 641.281311
l 381.703033 642.489685
l 380.814789 644.043274
l 380.180328 645.942139
l 379.672760 650.775574
l 380.173737 655.620544
l 380.799957 657.523926
l 381.676666 659.081238
l 382.803864 660.292480
l 384.181549 661.157654
l 385.809723 661.676758
l 387.688385 661.849792
m 409.573151 665.092957
l 409.573151 623.459167
l 414.767487 623.459167
l 414.767487 650.353699
l 426.896393 636.458191
l 432.486237 636.458191
l 420.911041 649.826355
l 434.885651 665.092957
l 428.241119 665.092957
l 414.767487 650.406433
l 414.767487 665.092957
m 462.122955 664.170105
l 457.277985 665.356628
l 453.184479 665.752136
l 450.166260 665.489319
l 447.439728 664.700745
l 445.004883 663.386536
l 442.861725 661.546570
l 441.114075 659.288086
l 439.865753 656.718079
l 439.116760 653.836670
l 438.867096 650.643738
l 439.087097 647.534058
l 439.747101 644.717712
l 440.847107 642.194702
l 442.387115 639.965027
l 444.269897 638.142395
l 446.398224 636.840515
l 448.772095 636.059387
l 451.391510 635.799011
l 453.841187 636.029724
l 455.995880 636.721863
l 457.855591 637.875427
l 459.420319 639.490417
l 460.660400 641.530579
l 461.546173 643.959656
l 462.077637 646.777649
l 462.254791 649.984558
l 462.228424 651.592957
l 444.166901 651.592957
l 445.216644 656.057251
l 446.103638 657.811096
l 447.232086 659.246033
l 448.601929 660.362122
l 450.213226 661.159302
l 452.065918 661.637634
l 454.160065 661.797058
l 457.772369 661.362000
l 462.122955 660.056824
m 444.404205 647.690613
l 457.034088 647.690613
l 456.661652 644.195313
l 455.544342 641.698669
l 453.682159 640.200684
l 451.075104 639.701355
l 448.413666 640.200684
l 446.414703 641.698669
l 445.078217 644.195313
l 444.404205 647.690613
m 503.071198 661.454285
l 500.759125 663.334595
l 498.489899 664.677673
l 496.263519 665.483521
l 494.079987 665.752136
l 490.823639 665.195129
l 488.173737 663.524109
l 486.413727 661.002747
l 485.827057 657.894714
l 486.073425 655.684021
l 486.812531 653.745178
l 488.044373 652.078308
l 489.768951 650.683289
l 491.953308 649.581665
l 494.564484 648.794739
l 497.602478 648.322632
l 501.067291 648.165222
l 502.306549 648.165222
l 502.306549 644.711121
l 501.986847 642.530884
l 501.027740 640.973572
l 499.429230 640.039185
l 497.191315 639.727722
l 492.913239 640.360535
l 488.305573 642.258972
l 488.305573 637.961121
l 493.387848 636.359314
l 498.140533 635.825378
l 502.309845 636.365906
l 503.922363 637.041565
l 505.220123 637.987488
l 506.217957 639.218506
l 506.930695 640.749451
l 507.500885 644.711121
l 507.500885 657.683777
l 507.672272 659.633301
l 508.186432 661.025818
l 509.043365 661.861328
l 510.243073 662.139832
l 511.245026 662.034363
l 511.614166 664.908386
l 509.755280 665.541199
l 507.711823 665.752136
l 506.057281 665.483521
l 504.732330 664.677673
l 503.736969 663.334595
l 503.071198 661.454285
m 502.306549 658.632996
l 502.306549 651.223816
l 500.566315 651.171082
l 496.703522 651.576477
l 493.658112 652.792664
l 491.680573 654.668030
l 491.186188 655.796082
l 491.021393 657.050964
l 491.350983 658.778015
l 492.339752 660.215027
l 493.803131 661.184021
l 495.556549 661.507019
l 497.194611 661.327393
l 498.865631 660.788513
l 502.306549 658.632996
m 518.126831 665.092957
l 518.126831 636.458191
l 523.321167 636.458191
l 523.321167 641.837097
l 525.493164 639.206970
l 527.895874 637.328308
l 530.529297 636.201111
l 533.393433 635.825378
l 536.735474 636.415344
l 538.124695 637.152832
l 539.326050 638.185242
l 540.295044 639.466553
l 540.987183 640.950500
l 541.540894 644.526550
l 541.540894 665.092957
l 536.346558 665.092957
l 536.346558 646.214050
l 536.112549 643.481750
l 535.410522 641.665710
l 534.167969 640.647278
l 532.312378 640.307800
l 529.960754 640.698364
l 527.678345 641.870056
l 525.465149 643.822876
l 523.321167 646.556824
l 523.321167 665.092957
m 570.017456 665.092957
l 570.017456 659.714050
l 568.234375 662.355713
l 566.049194 664.242615
l 563.461914 665.374756
l 560.472534 665.752136
l 558.026184 665.516479
l 555.854980 664.809509
l 553.959045 663.631226
l 552.338257 661.981628
l 551.040527 659.923340
l 550.113525 657.518982
l 549.557373 654.768555
l 549.371948 651.672058
l 549.582092 648.273987
l 550.212402 645.225281
l 551.263000 642.525940
l 552.733765 640.175964
l 554.547363 638.272583
l 556.626221 636.913025
l 558.970459 636.097290
l 561.579956 635.825378
l 564.015625 636.069275
l 566.233765 636.800964
l 568.234375 638.020447
l 570.017456 639.727722
l 570.017456 623.459167
l 575.238159 623.459167
l 575.238159 665.092957
m 570.017456 643.287292
l 568.026733 641.729980
l 566.088745 640.617615
l 564.203491 639.950195
l 562.370972 639.727722
l 560.622131 639.906128
l 559.106384 640.441284
l 557.823914 641.333252
l 556.774536 642.581970
l 555.958435 644.187500
l 555.375427 646.149780
l 554.909058 651.144714
l 555.324341 655.539795
l 556.570190 658.679138
l 557.504578 659.777893
l 558.646606 660.562744
l 559.996277 661.033630
l 561.553589 661.190613
l 563.704163 660.895630
l 565.831665 660.010681
l 567.936096 658.535767
l 570.017456 656.470886
m 608.909058 640.360535
l 608.909058 665.092957
l 603.688354 665.092957
l 603.688354 640.360535
l 599.627808 640.360535
l 599.627808 636.458191
l 603.688354 636.458191
l 603.688354 633.030457
l 604.271729 628.554626
l 605.000977 626.796265
l 606.021851 625.357605
l 607.334473 624.238647
l 608.938721 623.439392
l 610.834717 622.959839
l 613.022339 622.799988
l 615.810669 623.017517
l 618.954956 623.670105
l 618.954956 627.783386
l 615.797485 626.972595
l 613.338745 626.702332
l 611.186523 627.008850
l 609.845093 627.928406
l 609.143066 629.678528
l 608.909058 632.476746
l 608.909058 636.458191
l 616.054565 636.458191
l 616.054565 640.360535
m 622.567261 665.092957
l 622.567261 636.458191
l 627.761597 636.458191
l 627.761597 665.092957
m 622.567261 631.263855
l 622.567261 626.069519
l 627.761597 626.069519
l 627.761597 631.263855
m 638.176636 665.092957
l 638.176636 623.459167
l 643.370972 623.459167
l 643.370972 665.092957
m 653.786011 665.092957
l 653.786011 623.459167
l 658.980347 623.459167
l 658.980347 665.092957
d 0xFFDFDFDF
package main
import (
"image/color"
"log"
"github.com/fogleman/gg"
)
type ctx struct {
dc *gg.Context
}
func (c *ctx) moveTo(x, y float32) {
c.dc.MoveTo(float64(x), float64(y))
}
func (c *ctx) lineTo(x, y float32) {
c.dc.LineTo(float64(x), float64(y))
}
func (c *ctx) draw(argb uint32) {
c.dc.SetColor(color.NRGBA{
A: uint8((argb >> 24) & 0xff),
R: uint8((argb >> 16) & 0xff),
G: uint8((argb >> 8) & 0xff),
B: uint8(argb & 0xff),
})
c.dc.Fill()
c.dc.ClearPath()
}
func (c *ctx) writePng(fn string) {
if err := c.dc.SavePNG(fn); err != nil {
log.Fatal(err)
}
}
func main() {
ctx := ctx{gg.NewContext(1280, 720)}
parse(&ctx)
ctx.writePng("gg.png")
}
go run vector.go command.go
go run gg.go command.go
package main
import (
"image"
"image/color"
"image/png"
"log"
"os"
"golang.org/x/image/math/f32"
"golang.org/x/image/vector"
)
type ctx struct {
dst *image.RGBA
ra *vector.Rasterizer
}
func (c *ctx) moveTo(x, y float32) {
c.ra.MoveTo(f32.Vec2{x, y})
}
func (c *ctx) lineTo(x, y float32) {
c.ra.LineTo(f32.Vec2{x, y})
}
func (c *ctx) draw(argb uint32) {
src := image.NewUniform(color.NRGBA{
A: uint8((argb >> 24) & 0xff),
R: uint8((argb >> 16) & 0xff),
G: uint8((argb >> 8) & 0xff),
B: uint8(argb & 0xff),
})
c.ra.Draw(c.dst, c.dst.Bounds(), src, image.ZP)
c.ra.Reset(c.dst.Bounds().Dx(), c.dst.Bounds().Dy())
}
func (c *ctx) writePng(fn string) {
file, err := os.Create(fn)
if err != nil {
log.Fatal(err)
}
defer file.Close()
if err := png.Encode(file, c.dst); err != nil {
log.Fatal(err)
}
}
func main() {
const w, h = 1280, 720
ctx := ctx{
dst: image.NewRGBA(image.Rect(0, 0, w, h)),
ra: vector.NewRasterizer(w, h),
}
parse(&ctx)
ctx.writePng("vector.png")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment