Commit e2b00d38 authored by Jonathan Wilkes's avatar Jonathan Wilkes
Browse files

fix jwilkes/purr-data#44

make [draw] arguments more closely follow the svg spec
* [draw circle 20 1 2]: radius=20, xcenter=1, ycenter=2
* [draw rect 5 10 20 40]: width=5, height=10, xoffset=20, yoffset=40
* [draw ellipse 5 10 20 40]: xradius=5, yradius=10, xcenter=20, ycenter=40
parent 35a664c6
#N struct arcs float x float y;
#N canvas 0 19 730 583 10;
#N canvas 145 33 730 583 10;
#N canvas 497 68 781 562 arcs 0;
#X obj 110 13 struct arcs float x float y;
#X obj 48 109 draw path M 20 350 l 50 -25 a 25 25 -30 0 1 50 -25 l
......@@ -65,7 +65,7 @@ M -6 -10 l -6 -6 M -6 -10 l -6 6;
#X connect 30 0 23 0;
#X connect 31 0 14 0;
#X connect 32 0 1 0;
#X restore 177 100 pd arcs;
#X restore 197 100 pd arcs;
#X scalar arcs 148 150 \;;
#X obj 248 100 pddp/pddplink http://tclbitprint.sourceforge.net/tkpath/quartz/
;
......
#N struct ball-and-bat float x float y;
#N canvas 0 19 624 562 10;
#X obj 132 -12 struct ball-and-bat float x float y;
#X scalar ball-and-bat -79 55 \;;
#X obj 132 9 route displace;
#X obj 132 30 unpack p f;
#X obj 189 82 t a b;
#X msg 216 109 clear;
#X obj 189 139 pipe 100;
#X obj 189 160 * 50;
#X msg 189 181 1000 \$1;
#X obj 189 202 -;
#X floatatom 127 226 5 0 0 0 - - -, f 5;
#X obj 189 244 line;
#X msg 188 223 0 \, 100 \$1;
#X obj 289 185 del;
#X obj 250 357 draw circle 0 20 20;
#X obj -45 304 loadbang;
#X obj 289 227 f;
#X msg 289 248 0 \$1;
#X obj 293 163 + 250;
#X obj 150 56 moses 1;
#X obj -45 429 draw path m 22.9167 966.945 c -5.21812 0 -8.33333 3.13916
#N canvas 200 61 624 577 10;
#X obj 132 12 struct ball-and-bat float x float y;
#X scalar ball-and-bat -79 79 \;;
#X obj 132 33 route displace;
#X obj 132 54 unpack p f;
#X obj 189 106 t a b;
#X msg 216 133 clear;
#X obj 189 163 pipe 100;
#X obj 189 184 * 50;
#X msg 189 205 1000 \$1;
#X obj 189 226 -;
#X floatatom 127 250 5 0 0 0 - - -, f 5;
#X obj 189 268 line;
#X msg 188 247 0 \, 100 \$1;
#X obj 289 209 del;
#X obj -45 328 loadbang;
#X obj 289 251 f;
#X msg 289 272 0 \$1;
#X obj 293 187 + 250;
#X obj 150 80 moses 1;
#X obj -45 453 draw path m 22.9167 966.945 c -5.21812 0 -8.33333 3.13916
-8.33333 8.33333 0 4.16666 8.33333 10.4166 12.5 14.5833 8.33312 8.3334
22.0911 15.8413 35.4167 29.1667 l 12.5 12.5 -2.08334 2.0833 c 0 2.0833
2.08334 4.1667 4.16667 4.1667 l 4.16667 -4.1667 4.16666 -4.1667 c 0
-2.0833 -2.08333 -4.1666 -4.16666 -4.1666 l -2.08334 2.0833 -12.5 -12.5
c -11.9306 -11.9304 -20.8335 -27.0833 -29.1667 -35.4167 -4.16667 -4.16666
-10.4167 -12.5 -14.5833 -12.5 z;
#X obj -45 367 loadbang;
#X obj 260 315 loadbang;
#X msg 250 294 transform translate \$1 0;
#X obj -45 346 draw rect -35 -35 225 205;
#X msg 432 15 0.57;
#X obj 432 36 * 180;
#X obj 432 57 / 3.14;
#X floatatom 432 78 5 0 0 0 - - -, f 5;
#X msg 260 336 stroke-width 2 \, stroke black \, fill none;
#X msg -45 388 transform translate 590 -1800 rotate 32.67 65 1010 scale
#X obj -45 391 loadbang;
#X obj 260 339 loadbang;
#X msg 250 318 transform translate \$1 0;
#X msg 260 360 stroke-width 2 \, stroke black \, fill none;
#X msg -45 412 transform translate 590 -1800 rotate 32.67 65 1010 scale
2 \, stroke black \, fill none;
#X msg -45 325 stroke-dasharray 5 5 \, stroke black \, fill none;
#X msg -45 349 stroke-dasharray 5 5 \, stroke black \, fill none;
#X obj 250 381 draw circle 20 0 20;
#X obj -45 370 draw rect 225 205 -35 -35;
#X connect 0 0 2 0;
#X connect 2 0 3 0;
#X connect 3 1 19 0;
#X connect 3 1 18 0;
#X connect 4 0 6 0;
#X connect 4 1 5 0;
#X connect 5 0 6 0;
......@@ -50,22 +46,19 @@ c -11.9306 -11.9304 -20.8335 -27.0833 -29.1667 -35.4167 -4.16667 -4.16666
#X connect 8 0 9 0;
#X connect 9 0 12 0;
#X connect 9 0 10 0;
#X connect 9 0 16 1;
#X connect 9 0 18 0;
#X connect 11 0 23 0;
#X connect 9 0 15 1;
#X connect 9 0 17 0;
#X connect 11 0 22 0;
#X connect 12 0 11 0;
#X connect 13 0 16 0;
#X connect 15 0 31 0;
#X connect 16 0 17 0;
#X connect 17 0 11 0;
#X connect 18 0 13 0;
#X connect 19 1 4 0;
#X connect 21 0 30 0;
#X connect 22 0 29 0;
#X connect 23 0 14 0;
#X connect 25 0 26 0;
#X connect 26 0 27 0;
#X connect 27 0 28 0;
#X connect 29 0 14 0;
#X connect 30 0 20 0;
#X connect 31 0 24 0;
#X connect 13 0 15 0;
#X connect 14 0 25 0;
#X connect 15 0 16 0;
#X connect 16 0 11 0;
#X connect 17 0 13 0;
#X connect 18 1 4 0;
#X connect 20 0 24 0;
#X connect 21 0 23 0;
#X connect 22 0 26 0;
#X connect 23 0 26 0;
#X connect 24 0 19 0;
#X connect 25 0 27 0;
#N struct circlehand float x float y;
#N canvas 0 23 826 503 10;
#X obj 481 1 struct circlehand float x float y;
#X scalar circlehand -135 -183 \;;
#X obj 594 205 draw path M 320 240 c -50 100 50 110 0 190;
#X obj 519 332 draw circle 320 430 5;
#X obj 357 452 draw circle 320 220 20;
#X obj 519 278 loadbang;
#X obj 519 403 draw circle 530 430 20;
#X obj 519 251 draw circle 320 220 20;
#X msg 519 135 transform rotate \$1 320 430;
#X obj 519 92 pow 2;
#X msg 518 48 0 \, 1 1000;
#X obj 357 408 loadbang;
#X msg 357 429 fill blue \, stroke blue \, stroke-width 2 \, fill-opacity
#N canvas 42 53 885 503 10;
#X obj 461 1 struct circlehand float x float y;
#X scalar circlehand -155 -183 \;;
#X obj 574 205 draw path M 320 240 c -50 100 50 110 0 190;
#X obj 499 278 loadbang;
#X msg 499 135 transform rotate \$1 320 430;
#X obj 499 92 pow 2;
#X msg 498 48 0 \, 1 1000;
#X obj 337 408 loadbang;
#X msg 337 429 fill blue \, stroke blue \, stroke-width 2 \, fill-opacity
0.4;
#X obj 519 68 line;
#X msg 519 305 fill blue \, stroke blue \, stroke-opacity 1 \, fill-opacity
#X obj 499 68 line;
#X msg 499 305 fill blue \, stroke blue \, stroke-opacity 1 \, fill-opacity
1;
#X msg 599 47 0;
#X obj 519 360 loadbang;
#X msg 519 381 stroke-width 2 \, stroke blue \, fill blue \, fill-opacity
#X msg 579 47 0;
#X obj 499 360 loadbang;
#X msg 499 381 stroke-width 2 \, stroke blue \, fill blue \, fill-opacity
0.4;
#X obj 481 22 route click;
#X obj 594 156 loadbang;
#X obj 531 205 loadbang;
#X text 81 303 This is just a quick animation \, based on a demo from
#X obj 461 22 route click;
#X obj 574 156 loadbang;
#X obj 511 205 loadbang;
#X text 61 303 This is just a quick animation \, based on a demo from
Raphael.js.;
#X text 81 343 It uses [line] to control the animation. You can essentially
#X text 61 343 It uses [line] to control the animation. You can essentially
control the frame rate using the second argument of [line].;
#X text 81 383 The original is here:;
#X obj 81 404 pddp/pddplink http://raphaeljs.com/hand.html;
#X obj 519 113 * 90;
#X msg 531 228 stroke-width 2 \, stroke blue \, stroke-opacity 0.4
#X text 61 383 The original is here:;
#X obj 61 404 pddp/pddplink http://raphaeljs.com/hand.html;
#X obj 499 113 * 90;
#X msg 511 228 stroke-width 2 \, stroke blue \, stroke-opacity 0.4
\, fill none;
#X msg 594 180 stroke-width 2 \, stroke blue \, fill none;
#X connect 0 0 18 0;
#X connect 5 0 14 0;
#X connect 8 0 2 0;
#X connect 8 0 7 0;
#X connect 9 0 25 0;
#X connect 10 0 13 0;
#X connect 11 0 12 0;
#X connect 12 0 4 0;
#X connect 13 0 9 0;
#X connect 14 0 3 0;
#X connect 15 0 13 0;
#X connect 16 0 17 0;
#X connect 17 0 6 0;
#X connect 18 0 10 0;
#X connect 19 0 27 0;
#X connect 20 0 26 0;
#X connect 25 0 8 0;
#X connect 26 0 7 0;
#X connect 27 0 2 0;
#X msg 574 180 stroke-width 2 \, stroke blue \, fill none;
#X obj 337 452 draw circle 20 320 220;
#X obj 499 403 draw circle 20 530 430;
#X obj 499 332 draw circle 5 320 430;
#X obj 499 251 draw circle 20 320 220;
#X connect 0 0 14 0;
#X connect 3 0 10 0;
#X connect 4 0 2 0;
#X connect 4 0 27 0;
#X connect 5 0 21 0;
#X connect 6 0 9 0;
#X connect 7 0 8 0;
#X connect 8 0 24 0;
#X connect 9 0 5 0;
#X connect 10 0 26 0;
#X connect 11 0 9 0;
#X connect 12 0 13 0;
#X connect 13 0 25 0;
#X connect 14 0 6 0;
#X connect 15 0 23 0;
#X connect 16 0 22 0;
#X connect 21 0 4 0;
#X connect 22 0 27 0;
#X connect 23 0 2 0;
#N struct rcurver float x float y float x1 float y1 float ax float
ay float bx float by float zx float zy float r float g float b;
#N canvas 0 19 813 626 10;
#N canvas 1 25 813 626 10;
#X obj 92 401 cnv 15 461 213 empty empty empty 20 12 0 14 -33289 -66577
0;
#X scalar rcurver 150 439 42 137 -18 141 29 -3 -29 -2 255 40 100 \;
#X scalar rcurver 150 439 42 137 -18 141 27 -1 -29 -2 255 40 100 \;
;
#X obj 95 69 loadbang;
#X obj 95 114 draw path M x1 y1 C ax ay bx by zx zy;
#X obj 95 177 draw path M x1 y1 L ax ay M bx by L zx zy;
#X msg 95 156 stroke #ccc \, stroke-dasharray 1 1;
#X obj 95 135 loadbang;
#X scalar rcurver 250 442 23 125 -31 135 23 -9 -28 -5 80 2 150 \;;
#X scalar rcurver 365 445 18 131 -31 135 18 -10 -39 -5 150 6 50 \;
#X scalar rcurver 250 442 23 125 -31 135 13 -5 -31 -6 80 2 150 \;;
#X scalar rcurver 365 445 18 131 -31 135 18 -10 -41 -4 150 6 50 \;
;
#X scalar rcurver 480 441 34 136 -32 143 17 -9 -37 -5 70 255 60 \;
#X scalar rcurver 480 441 34 136 -32 143 11 -8 -37 -5 70 255 60 \;
;
#X obj 95 17 struct rcurver float x float y float x1 float y1 float
ax float ay float bx float by float zx float zy float r float g float
b;
#X obj 95 228 draw circle x1 y1 5;
#X obj 95 269 draw circle ax ay 5;
#X obj 95 310 draw circle bx by 5;
#X obj 95 351 draw circle zx zy 5;
#X obj 16 182 loadbang;
#X text 424 112 Raphael Curver;
#X text 424 112 ______________;
#X text 424 322 So \, though it makes this patch easier to write \,
#X text 424 336 So \, though it makes this patch easier to write \,
a more powerful method of defining interactive behavior is needed.
;
#X text 575 430 <- Click and drag the white circles;
......@@ -36,14 +32,13 @@ this patch is a full port of the Raphael.js demo and it's much shorter.
This is because the mouse interaction with the variables is implicit--
we just define them in the drawing commands and Pd assumes that they
should be clickable.;
#X text 424 232 Unfortunately this isn't a very flexible system. There
#X text 424 241 Unfortunately this isn't a very flexible system. There
are times when you don't want mouse interaction at a variable \, or
would like it for some but not all of them. Or you may want some other
behavior than dragging a vertice of the polygon underneath the mouse.
At present you can't define any other behavior-- only turn off mouse
interaction altogether.;
#X msg 16 203 fill white \, mousedown 1 \, drag 1;
#X obj 95 249 drag-event rcurver x1 y1;
#X text 465 24 Note: this can be improved with a set method for [set]: the
[drag-event] abstraction can be removed;
#X obj 95 289 drag-event rcurver ax ay;
......@@ -51,16 +46,21 @@ interaction altogether.;
#X obj 95 373 drag-event rcurver zx zy;
#X msg 95 90 stroke-width 4 \, stroke-linecap 1 \, stroke r g b \,
fill none;
#X connect 2 0 28 0;
#X obj 95 228 draw circle 5 x1 y1;
#X obj 95 269 draw circle 5 ax ay;
#X obj 95 310 draw circle 5 bx by;
#X obj 95 351 draw circle 5 zx zy;
#X obj 95 249 drag-event rcurver x1 y1;
#X connect 2 0 23 0;
#X connect 5 0 4 0;
#X connect 6 0 5 0;
#X connect 11 0 23 0;
#X connect 12 0 25 0;
#X connect 13 0 26 0;
#X connect 14 0 27 0;
#X connect 15 0 22 0;
#X connect 22 0 11 0;
#X connect 22 0 12 0;
#X connect 22 0 13 0;
#X connect 22 0 14 0;
#X connect 28 0 3 0;
#X connect 11 0 18 0;
#X connect 18 0 24 0;
#X connect 18 0 25 0;
#X connect 18 0 26 0;
#X connect 18 0 27 0;
#X connect 23 0 3 0;
#X connect 24 0 28 0;
#X connect 25 0 20 0;
#X connect 26 0 21 0;
#X connect 27 0 22 0;
#N struct targets float x float y;
#N struct movers float x float y float x1 float y1 float style float
opacity float r float g float b float sw;
#N canvas 0 25 668 654 10;
#N canvas 651 83 645 479 targets 0;
#X obj 323 179 draw rect 0 50 400 450;
#N canvas 1 25 668 654 10;
#N canvas 651 83 645 479 targets 1;
#X obj 119 13 struct targets float x float y;
#X obj 119 60 loadbang;
#X obj 159 175 draw circle 300 150 20;
#X obj 159 215 draw circle 300 200 20;
#X obj 159 255 draw circle 300 250 20;
#X obj 159 295 draw circle 300 300 20;
#X obj 159 335 draw circle 300 350 20;
#X obj 159 375 draw circle 300 400 20;
#X obj 159 415 draw circle 300 450 20;
#X obj 159 135 draw circle 300 100 20;
#X msg 323 157 fill #333333;
#X obj 323 135 loadbang;
#X msg 119 81 fill #000 \, stroke #fff \, stroke-dasharray 4 3 \, stroke-opacity
1.2 \, fill-opacity 0.2;
#X connect 2 0 13 0;
#X connect 11 0 0 0;
#X connect 12 0 11 0;
#X connect 13 0 3 0;
#X connect 13 0 4 0;
#X connect 13 0 5 0;
#X connect 13 0 6 0;
#X connect 13 0 7 0;
#X connect 13 0 8 0;
#X connect 13 0 9 0;
#X connect 13 0 10 0;
#X obj 323 179 draw rect 400 450 0 50;
#X obj 159 135 draw circle 20 300 100;
#X obj 159 175 draw circle 20 300 150;
#X obj 159 215 draw circle 20 300 200;
#X obj 159 255 draw circle 20 300 250;
#X obj 159 295 draw circle 20 300 300;
#X obj 159 335 draw circle 20 300 350;
#X obj 159 375 draw circle 20 300 400;
#X obj 159 415 draw circle 20 300 450;
#X connect 1 0 4 0;
#X connect 2 0 5 0;
#X connect 3 0 2 0;
#X connect 4 0 6 0;
#X connect 4 0 7 0;
#X connect 4 0 8 0;
#X connect 4 0 9 0;
#X connect 4 0 10 0;
#X connect 4 0 11 0;
#X connect 4 0 12 0;
#X connect 4 0 13 0;
#X restore 33 19 pd targets;
#X scalar targets 33 9 \;;
#N canvas 710 109 645 479 movers 1;
#X scalar movers 133 109 200 0 0 1 255 0 0 3 \;;
#X scalar movers 133 159 200 0 1 1 100 100 0 3 \;;
#X scalar movers 133 209 200 0 2 1 0 100 100 3 \;;
#X scalar movers 133 310 200 -1 4 1 50 210 0 3 \;;
#X scalar movers 133 359 200 0 5 1 210 0 80 3 \;;
#X scalar movers 133 409 200 0 6 1 42 84 126 3 \;;
#X scalar movers 133 459 200 0 7 1 80 80 0 3 \;;
#X scalar movers 133 259 200 0 3 0.999999 100 0 0 3 \;;
#X text 450 99 linear;
#X text 450 149 easein;
#X text 450 199 easeout;
#X text 450 249 easeinout;
#X text 450 299 backin;
#X text 450 349 backout;
#X text 450 399 elastic;
#X text 450 449 bounce;
#X text 33 1021 Click a "mover" ^;
#X text 33 531 Easing;
#X text 33 531 ______;
#X text 33 551 Here are a few animation styles taken from Raphael.js.
This demo defines two different data structures-- one for the dashed
circles and background \, and another for the animated circles. Currently
this doesn't work well because you can't control z-ordering-- the most
recently moved scalar is always at the front. But since only one type
of scalar is being animated and none of them overlap \, it isn't a
problem here.;
#X text 450 531 Based on:;
#X obj 450 552 pddp/pddplink http://raphaeljs.com/easing.html;
#N canvas 710 109 645 479 movers 0;
#X obj 119 250 loadbang;
#X obj 119 312 draw circle x1 y1 20;
#X obj 119 52 route click;
#X obj 119 73 trigger anything anything;
#X obj 298 151 print junk;
......@@ -403,41 +430,14 @@ opacity float r float g float b float sw;
style float opacity float r float g float b float sw;
#X msg 119 270 fill r g b \, stroke #fff \, stroke-dasharray \, fill-opacity
opacity \, stroke-width sw;
#X connect 0 0 9 0;
#X connect 2 0 3 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 5 0 6 2;
#X connect 7 0 6 0;
#X connect 7 1 6 1;
#X connect 8 0 2 0;
#X connect 9 0 1 0;
#X obj 120 312 draw circle 20 x1 y1;
#X connect 0 0 8 0;
#X connect 1 0 2 0;
#X connect 2 0 6 0;
#X connect 2 1 4 0;
#X connect 4 0 5 2;
#X connect 6 0 5 0;
#X connect 6 1 5 1;
#X connect 7 0 1 0;
#X connect 8 0 9 0;
#X restore 113 19 pd movers;
#X scalar movers 133 109 0 0 0 0 255 0 0 1 \;;
#X scalar movers 133 159 0 0 1 0 100 100 0 1 \;;
#X scalar movers 133 209 0 0 2 0 0 100 100 1 \;;
#X scalar movers 133 310 0 -1 4 0 50 210 0 1 \;;
#X scalar movers 133 359 0 0 5 0 210 0 80 1 \;;
#X scalar movers 133 409 0 0 6 0 42 84 126 1 \;;
#X scalar movers 133 459 0 0 7 0 80 80 0 1 \;;
#X scalar movers 133 259 0.000244141 0 3 1.2207e-06 100 0 0 1 \;;
#X text 450 99 linear;
#X text 450 149 easein;
#X text 450 199 easeout;
#X text 450 249 easeinout;
#X text 450 299 backin;
#X text 450 349 backout;
#X text 450 399 elastic;
#X text 450 449 bounce;
#X text 33 511 Click a "mover" ^;
#X text 33 531 Easing;
#X text 33 531 ______;
#X text 33 551 Here are a few animation styles taken from Raphael.js.
This demo defines two different data structures-- one for the dashed
circles and background \, and another for the animated circles. Currently
this doesn't work well because you can't control z-ordering-- the most
recently moved scalar is always at the front. But since only one type
of scalar is being animated and none of them overlap \, it isn't a
problem here.;
#X text 450 531 Based on:;
#X obj 450 552 pddp/pddplink http://raphaeljs.com/easing.html;
#N struct ellipses float x float y;
#N canvas 0 19 638 643 10;
#N canvas 1 25 638 643 10;
#X obj 344 33 loadbang;
#X msg 344 53 stroke #c8c8c8 \, fill #e6e6e6;
#X obj 344 73 draw circle 60 60 32;
#X obj 344 93 loadbang;
#X msg 344 113 stroke #a19de2 \, fill #d6d6ff;
#X obj 344 133 draw circle 200 60 32;
#X obj 344 153 loadbang;
#X msg 344 173 stroke #9ac790 \, fill #cae2c5;
#X obj 344 193 draw circle 60 160 40;
#X obj 344 213 loadbang;
#X msg 344 233 stroke #e2a19d \, fill #ffd6d6;
#X obj 344 253 draw circle 200 160 40;
#X obj 344 273 loadbang;
#X obj 344 313 draw ellipse 200 280 20 60;
#X obj 344 333 loadbang;
#X obj 344 373 draw ellipse 100 260 60 20;
#X msg 344 353 stroke #666666 \, stroke-width 3 \, fill #bdbdbd;
#X obj 344 393 loadbang;
#X obj 344 433 draw ellipse 280 280 20 60;
#X obj 344 453 loadbang;
#X obj 344 493 draw circle 300 220 8;
#X obj 344 513 loadbang;
#X obj 344 553 draw circle 300 240 8;
#X obj 344 573 loadbang;
#X obj 344 610 draw circle 300 260 8;
#X obj 344 13 struct ellipses float x float y;
#X scalar ellipses 3 0 \;;
#X msg 344 593 fill blue;
......@@ -32,23 +22,33 @@
#X msg 344 473 fill red;
#X msg 344 293 stroke #999999 \, fill none;
#X msg 344 413 fill none \, stroke black;
#X obj 344 610 draw circle 8 300 260;
#X obj 344 553 draw circle 8 300 240;
#X obj 344 493 draw circle 8 300 220;
#X obj 344 433 draw ellipse 20 60 280 280;
#X obj 344 373 draw ellipse 60 20 100 260;
#X obj 344 313 draw ellipse 20 60 200 280;
#X obj 344 253 draw circle 40 200 160;
#X obj 344 193 draw circle 40 60 160;
#X obj 344 133 draw circle 32 200 60;
#X obj 344 73 draw circle 32 60 60;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 3 0 4 0;
#X connect 1 0 31 0;
#X connect 2 0 3 0;
#X connect 3 0 30 0;
#X connect 4 0 5 0;
#X connect 5 0 29 0;
#X connect 6 0 7 0;
#X connect 7 0 8 0;
#X connect 7 0 28 0;
#X connect 8 0 20 0;
#X connect 9 0 10 0;
#X connect 10 0 11 0;
#X connect 12 0 30 0;
#X connect 14 0 16 0;
#X connect 16 0 15 0;
#X connect 17 0 31 0;
#X connect 19 0 29 0;
#X connect 21 0 28 0;
#X connect 23 0 27 0;
#X connect 27 0 24 0;
#X connect 28 0 22 0;
#X connect 29 0 20 0;
#X connect 30 0 13 0;
#X connect 31 0 18 0;
#X connect 10 0 26 0;
#X connect 11 0 21 0;
#X connect 12 0 19 0;
#X connect 13 0 18 0;
#X connect 14 0 17 0;
#X connect 17 0 22 0;
#X connect 18 0 23 0;
#X connect 19 0 24 0;
#X connect 20 0 27 0;
#X connect 21 0 25 0;
#N struct http://prescottfoland.co/hexshifter/ float x float y;
#N canvas 122 24 947 656 10;
#X scalar http://prescottfoland.co/hexshifter/ 57 53 \;;
#X obj 708 611 draw rect -20 -20 863 615;
#N canvas 1 25 947 656 10;
#X obj 274 3 struct http://prescottfoland.co/hexshifter/ float x float
y;
#X msg 68 67 1;
#X obj 68 254 +;
#X msg 108 67 -1;
#X obj 68 275 min 15;
#X obj 68 296 max 0;
#X msg 198 67 1;
#X obj 198 224 +;
#X msg 238 67 -1;
#X obj 198 245 min 15;
#X obj 198 266 max 0;
#X msg 328 67 1;
#X obj 328 194 +;
#X msg 368 67 -1;
#X obj 328 215 min 15;
#X obj 328 236 max 0;
#X msg 458 67 1;
#X obj 458 164 +;
#X msg 498 67 -1;
#X obj 458 185 min 15;
#X obj 458 206 max 0;
#X msg 588 67 1;
#X obj 588 129 +;
#X msg 628 67 -1;
#X obj 588 150 min 15;
#X obj 588 171 max 0;
#X msg 718 67 1;
#X obj 718 104 +;
#X msg 758 67 -1;
#X obj 718 125 min 15;
#X obj 718 146 max 0;
#X symbolatom 778 585 10 0 0 0 - - -, f 10;
#X obj 68 438 << 20;
#X obj 778 541 +;
#X obj 198 408 << 16;
#X obj 328 378 << 12;
#X obj 778 468 t b a;
#X obj 778 489 +;
#X obj 778 510 t b a;
#X obj 458 348 << 8;
#X obj 778 445 +;
#X obj 778 397 +;
#X obj 588 313 << 4;
#X obj 778 352 +;
#X obj 778 420 t b a;
#X obj 778 374 t b a;
#X obj 778 328 t b a;
#X msg 112 418 fill \$1 0 0;
#X obj 112 358 + 1;
#X obj 112 378 << 4;
#X obj 112 398 - 1;
#X msg 245 388 fill \$1 0 0;
#X obj 245 328 + 1;
#X obj 245 348 << 4;
#X obj 245 368 - 1;
#X obj 375 298 + 1;
#X obj 375 318 << 4;
#X obj 375 338 - 1;
#X msg 375 358 fill 0 \$1 0;
#X obj 495 268 + 1;
#X obj 495 288 << 4;
#X obj 495 308 - 1;
#X msg 495 328 fill 0 \$1 0;
#X obj 626 233 + 1;
#X obj 626 253 << 4;
#X obj 626 273 - 1;
#X obj 718 208 + 1;
#X obj 718 228 << 4;
#X obj 718 248 - 1;
#X msg 718 268 fill 0 0 \$1;
#X msg 626 293 fill 0 0 \$1;
#X obj 68 327 t a a;