aboutsummaryrefslogtreecommitdiff
path: root/externals/gridflow/doc
diff options
context:
space:
mode:
authorN.N. <matju@users.sourceforge.net>2008-04-28 18:10:15 +0000
committerN.N. <matju@users.sourceforge.net>2008-04-28 18:10:15 +0000
commit91c0003b158e5f0ed9d0677fb136ae8bb6f86ec5 (patch)
treed413a48086819f6a2620cd27d030861d122d4f3f /externals/gridflow/doc
parent98dfdfa2fc1c92ba69e33fd77ed3392034297c1f (diff)
this is an old gridflow, and there's already a svn repository at http://gridflow.ca/svn/trunk
svn path=/trunk/; revision=9739
Diffstat (limited to 'externals/gridflow/doc')
-rw-r--r--externals/gridflow/doc/Makefile2
-rw-r--r--externals/gridflow/doc/architecture.html217
-rw-r--r--externals/gridflow/doc/architecture.xml395
-rw-r--r--externals/gridflow/doc/flow_classes/#+-help.pd364
-rw-r--r--externals/gridflow/doc/flow_classes/#-help.pd309
-rw-r--r--externals/gridflow/doc/flow_classes/#-icon.pngbin198 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#apply_colormap_channelwise-icon.pngbin521 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#cast-help.pd45
-rw-r--r--externals/gridflow/doc/flow_classes/#cast-icon.pngbin307 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#checkers-icon.pngbin294 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#clip-help.pd67
-rw-r--r--externals/gridflow/doc/flow_classes/#color-icon.pngbin549 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#complex_sq-icon.pngbin319 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#contrast-help.pd46
-rw-r--r--externals/gridflow/doc/flow_classes/#contrast-icon.pngbin289 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#convolve-icon.pngbin281 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#dim-help.pd32
-rw-r--r--externals/gridflow/doc/flow_classes/#dim-icon.pngbin223 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#downscale_by-icon.pngbin353 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#draw_image-icon.pngbin367 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#draw_polygon-icon.pngbin404 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#export-icon.pngbin263 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#export_list-icon.pngbin337 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#export_symbol-icon.pngbin366 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#fade-help.pd80
-rw-r--r--externals/gridflow/doc/flow_classes/#fade-icon.pngbin242 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#fade_lin-icon.pngbin295 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#finished-icon.pngbin291 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#fold-icon.pngbin255 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#for-icon.pngbin305 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#grade-icon.pngbin256 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#greyscale_to_rgb-icon.pngbin393 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#import-icon.pngbin428 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#in-help.pd135
-rw-r--r--externals/gridflow/doc/flow_classes/#inner-icon.pngbin287 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#join-icon.pngbin265 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#layer-icon.pngbin268 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#numop-help.pd366
-rw-r--r--externals/gridflow/doc/flow_classes/#outer-icon.pngbin270 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#pack-help.pd75
-rw-r--r--externals/gridflow/doc/flow_classes/#pack-icon.pngbin252 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#pack_and_#unpack-help.pd85
-rw-r--r--externals/gridflow/doc/flow_classes/#perspective-icon.pngbin337 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#posterize-icon.pngbin309 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#print-help.pd68
-rw-r--r--externals/gridflow/doc/flow_classes/#print-help2.pd113
-rw-r--r--externals/gridflow/doc/flow_classes/#print-icon.pngbin250 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#ravel-icon.pngbin258 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#redim-icon.pngbin326 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#remap_image-help.pd73
-rw-r--r--externals/gridflow/doc/flow_classes/#remap_image-icon.pngbin323 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#reverse-help.pd46
-rw-r--r--externals/gridflow/doc/flow_classes/#rgb_to_greyscale-icon.pngbin407 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#rgb_to_yuv-help.pd11
-rw-r--r--externals/gridflow/doc/flow_classes/#rgb_to_yuv-icon.pngbin328 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#rgb_to_yuv_and_#yuv_to_rgb-help.pd44
-rw-r--r--externals/gridflow/doc/flow_classes/#rotate-icon.pngbin261 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#scale_by-icon.pngbin311 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#scale_to-icon.pngbin287 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#scan-icon.pngbin262 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#solarize-icon.pngbin294 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#spread-icon.pngbin279 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#store-icon.pngbin253 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#transpose-icon.pngbin311 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#type-icon.pngbin253 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/#unpack-#pack-help.pd45
-rw-r--r--externals/gridflow/doc/flow_classes/#yuv_to_rgb-icon.pngbin315 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/@complex_sq-icon.pngbin336 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/@global-icon.pngbin264 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/@join-icon.pngbin242 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/bindpatcher-icon.pngbin299 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/demux-icon.pngbin235 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/exec-help.pd13
-rw-r--r--externals/gridflow/doc/flow_classes/exec-icon.pngbin219 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/foreach-icon.pngbin255 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/fork-icon.pngbin218 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/fps-icon.pngbin317 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/inv+-icon.pngbin219 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/inv_mul-icon.pngbin226 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/listappend-icon.pngbin302 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/listelement-help.pd61
-rw-r--r--externals/gridflow/doc/flow_classes/listelement-icon.pngbin331 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/listflatten-icon.pngbin305 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/listlength-icon.pngbin308 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/listmake-icon.pngbin287 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/listprepend-icon.pngbin320 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/listreverse-icon.pngbin312 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/listsublist-icon.pngbin375 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/ls-help.pd21
-rw-r--r--externals/gridflow/doc/flow_classes/ls-icon.pngbin203 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/messageappend-icon.pngbin329 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/messageprepend-icon.pngbin344 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/oneshot-icon.pngbin261 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/pd_netreceive-icon.pngbin400 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/pd_netsend-icon.pngbin476 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/pingpong-icon.pngbin248 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/plotter_control-help.pd64
-rw-r--r--externals/gridflow/doc/flow_classes/plotter_control-icon.pngbin327 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/printargs-icon.pngbin285 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/range-icon.pngbin230 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/renamefile-help.pd9
-rw-r--r--externals/gridflow/doc/flow_classes/renamefile-icon.pngbin280 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/rubyarray.pngbin288 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/rubyprint-icon.pngbin285 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/rubysprintf-icon.pngbin339 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/shunt-icon.pngbin265 -> 0 bytes
-rw-r--r--externals/gridflow/doc/flow_classes/unix_time-help.pd29
-rw-r--r--externals/gridflow/doc/flow_classes/unix_time-icon.pngbin292 -> 0 bytes
-rw-r--r--externals/gridflow/doc/format.html485
-rw-r--r--externals/gridflow/doc/format.xml780
-rw-r--r--externals/gridflow/doc/format/#camera-icon.pngbin302 -> 0 bytes
-rw-r--r--externals/gridflow/doc/format/#in-help.pd189
-rw-r--r--externals/gridflow/doc/format/#in-icon.pngbin252 -> 0 bytes
-rw-r--r--externals/gridflow/doc/format/#mouse-icon.pngbin287 -> 0 bytes
-rw-r--r--externals/gridflow/doc/format/#out-icon.pngbin215 -> 0 bytes
-rw-r--r--externals/gridflow/doc/format/#peephole-icon.pngbin319 -> 0 bytes
-rw-r--r--externals/gridflow/doc/format/#quicktime-help.pd10
-rw-r--r--externals/gridflow/doc/format/#videodev-help.pd15
-rw-r--r--externals/gridflow/doc/format/aalib-icon.pngbin338 -> 0 bytes
-rw-r--r--externals/gridflow/doc/format/jpeg-icon.pngbin474 -> 0 bytes
-rw-r--r--externals/gridflow/doc/format/opengrid-icon.pngbin406 -> 0 bytes
-rw-r--r--externals/gridflow/doc/format/openmpeg-icon.pngbin409 -> 0 bytes
-rw-r--r--externals/gridflow/doc/format/openppm-icon.pngbin394 -> 0 bytes
-rw-r--r--externals/gridflow/doc/format/opentarga-icon.pngbin418 -> 0 bytes
-rw-r--r--externals/gridflow/doc/format/openx11-icon.pngbin336 -> 0 bytes
-rw-r--r--externals/gridflow/doc/format/png-icon.pngbin451 -> 0 bytes
-rw-r--r--externals/gridflow/doc/format/quartz-icon.pngbin360 -> 0 bytes
-rw-r--r--externals/gridflow/doc/format/quicktime-icon.pngbin528 -> 0 bytes
-rw-r--r--externals/gridflow/doc/format/sdl-icon.pngbin331 -> 0 bytes
-rw-r--r--externals/gridflow/doc/format/videodev-icon.pngbin425 -> 0 bytes
-rw-r--r--externals/gridflow/doc/format/window-icon.pngbin299 -> 0 bytes
-rw-r--r--externals/gridflow/doc/format/window2-icon.pngbin358 -> 0 bytes
-rw-r--r--externals/gridflow/doc/gridflow.css15
-rw-r--r--externals/gridflow/doc/images/black.pngbin85 -> 0 bytes
-rw-r--r--externals/gridflow/doc/images/crop_icons12
-rw-r--r--externals/gridflow/doc/images/pingpong.pngbin765 -> 0 bytes
-rw-r--r--externals/gridflow/doc/images/see_screenshot.pngbin870 -> 0 bytes
-rw-r--r--externals/gridflow/doc/images/titre_gridflow.pngbin2530 -> 0 bytes
-rw-r--r--externals/gridflow/doc/index.html149
-rw-r--r--externals/gridflow/doc/install.html122
-rw-r--r--externals/gridflow/doc/install.xml140
-rw-r--r--externals/gridflow/doc/internals.html206
-rw-r--r--externals/gridflow/doc/internals.xml228
-rw-r--r--externals/gridflow/doc/introduction.html125
-rw-r--r--externals/gridflow/doc/license.html75
-rw-r--r--externals/gridflow/doc/moulinette.rb660
-rw-r--r--externals/gridflow/doc/op/abs-icon.pngbin268 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/add-icon.pngbin198 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/and-icon.pngbin209 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/atan-icon.pngbin248 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/avg-icon.pngbin243 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/bus-icon.pngbin247 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/clip+-icon.pngbin263 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/clip--icon.pngbin255 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/cmp-icon.pngbin240 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/cos-icon.pngbin250 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/div-icon.pngbin203 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/div2-icon.pngbin236 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/dom-icon.pngbin286 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/eq-icon.pngbin205 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/gamma-icon.pngbin258 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/gcd-icon.pngbin241 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/ge-icon.pngbin212 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/gt-icon.pngbin197 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/hypot-icon.pngbin273 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/ignore-icon.pngbin276 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/lcm-icon.pngbin227 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/le-icon.pngbin214 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/log-icon.pngbin248 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/lt-icon.pngbin196 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/max-icon.pngbin238 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/mer-icon.pngbin293 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/min-icon.pngbin233 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/mod-icon.pngbin213 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/mul-icon.pngbin203 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/ne-icon.pngbin209 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/or-icon.pngbin185 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/pow-icon.pngbin210 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/put-icon.pngbin227 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/rand-icon.pngbin246 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/rem-icon.pngbin236 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/sc_and-icon.pngbin228 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/sc_or-icon.pngbin183 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/shl-icon.pngbin204 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/shr-icon.pngbin204 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/sin-icon.pngbin257 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/sq-icon.pngbin241 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/sqrt-icon.pngbin264 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/sub-icon.pngbin189 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/tanh-icon.pngbin264 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/vid-icon.pngbin250 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/vid2-icon.pngbin313 -> 0 bytes
-rw-r--r--externals/gridflow/doc/op/xor-icon.pngbin200 -> 0 bytes
-rw-r--r--externals/gridflow/doc/profiling.html151
-rw-r--r--externals/gridflow/doc/project_policy.html98
-rw-r--r--externals/gridflow/doc/project_policy.xml99
-rw-r--r--externals/gridflow/doc/reference.html1165
-rw-r--r--externals/gridflow/doc/reference.xml1607
-rwxr-xr-xexternals/gridflow/doc/tutorials/0-0-intro_page.pd89
-rwxr-xr-xexternals/gridflow/doc/tutorials/2-3-4-image-modification-2-remap-image.pd55
-rwxr-xr-xexternals/gridflow/doc/tutorials/2-3-5-image-modification-2-convolve.pd120
-rwxr-xr-xexternals/gridflow/doc/tutorials/2-3-6-image-modification-2-cross-fade.pd93
-rwxr-xr-xexternals/gridflow/doc/tutorials/2nd-part-numop.pd80
-rwxr-xr-xexternals/gridflow/doc/tutorials/3-1-0-open-video.pd38
-rwxr-xr-xexternals/gridflow/doc/tutorials/3-2-video-manipulation.pd1
-rwxr-xr-xexternals/gridflow/doc/tutorials/3-3-record-video.pd51
-rwxr-xr-xexternals/gridflow/doc/tutorials/4-0-open-live-stream.pd24
-rwxr-xr-xexternals/gridflow/doc/tutorials/4-1-2-simple-motion-detection-absolute-value.pd31
-rwxr-xr-xexternals/gridflow/doc/tutorials/4-1-3-motion-detection-more-advanced-and-more-options.pd49
-rwxr-xr-xexternals/gridflow/doc/tutorials/4-1-simple-motion-detection.pd37
-rwxr-xr-xexternals/gridflow/doc/tutorials/PD-GF-Lecture.pd80
-rwxr-xr-xexternals/gridflow/doc/tutorials/PD-Lecture.pd64
-rwxr-xr-xexternals/gridflow/doc/tutorials/colors.pd12
-rw-r--r--externals/gridflow/doc/tutorials/d_gf_2_0-Intro_to_images_open_image.pd62
-rw-r--r--externals/gridflow/doc/tutorials/d_gf_2_2_1-image-modification-1-numop-all-in-one2.pd127
-rw-r--r--externals/gridflow/doc/tutorials/d_gf_2_2_2.pd68
-rwxr-xr-xexternals/gridflow/doc/tutorials/gf_1_0-Introduction_to_grids.pd98
-rw-r--r--externals/gridflow/doc/tutorials/gf_2-2-3-resize-image_dec_2005.pd60
-rw-r--r--externals/gridflow/doc/tutorials/gf_2-2-4-greyscale_dec_2005.pd27
-rwxr-xr-xexternals/gridflow/doc/tutorials/gf_2_0-Intro_to_images_open_image.pd62
-rwxr-xr-xexternals/gridflow/doc/tutorials/gf_2_2_1-image-modification-1-numop-all-in-one2.pd127
-rw-r--r--externals/gridflow/doc/tutorials/gf_2_2_2.pd68
-rwxr-xr-xexternals/gridflow/doc/tutorials/grid-intro.pd10
-rwxr-xr-xexternals/gridflow/doc/tutorials/probably_not_good_2-3-0-1-image-modification-1-numop-all-in-one.pd123
-rw-r--r--externals/gridflow/doc/tutorials/probably_not_good_2-3-0-2.pd61
-rwxr-xr-xexternals/gridflow/doc/tutorials/pure-data-1.pd71
-rwxr-xr-xexternals/gridflow/doc/tutorials/pure-data-2.pd73
-rwxr-xr-xexternals/gridflow/doc/tutorials/pure-data-3.pd70
-rwxr-xr-xexternals/gridflow/doc/tutorials/pure-data-4.pd87
-rwxr-xr-xexternals/gridflow/doc/tutorials/pure-data-5.pd108
-rwxr-xr-xexternals/gridflow/doc/tutorials/pure-data-6.pd92
-rwxr-xr-xexternals/gridflow/doc/tutorials/pure-data-7.pd106
-rwxr-xr-xexternals/gridflow/doc/tutorials/pure-data-8.pd89
-rwxr-xr-xexternals/gridflow/doc/tutorials/pure-data-9.pd43
-rwxr-xr-xexternals/gridflow/doc/tutorials/randomly-select-an-image.pd53
-rwxr-xr-xexternals/gridflow/doc/tutorials/title-page-pd-gf-in-one.pd129
-rwxr-xr-xexternals/gridflow/doc/tutorials/txt-for-resize-image.pd3
237 files changed, 0 insertions, 11787 deletions
diff --git a/externals/gridflow/doc/Makefile b/externals/gridflow/doc/Makefile
deleted file mode 100644
index 9171db3f..00000000
--- a/externals/gridflow/doc/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-all::
- ruby moulinette.rb \ No newline at end of file
diff --git a/externals/gridflow/doc/architecture.html b/externals/gridflow/doc/architecture.html
deleted file mode 100644
index 009464a1..00000000
--- a/externals/gridflow/doc/architecture.html
+++ /dev/null
@@ -1,217 +0,0 @@
-<html><head>
-<!-- $Id: architecture.html,v 1.2 2006-03-15 04:44:50 matju Exp $ -->
-<title>GridFlow 0.8.1 - Reference Manual: Architecture</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<link rel="stylesheet" href="gridflow.css" type="text/css">
-</head>
-<body bgcolor="#FFFFFF"
- leftmargin="0" topmargin="0"
- marginwidth="0" marginheight="0">
-<table width="100%" bgcolor="white" border="0" cellspacing="2">
-<tr><td colspan="4" bgcolor="#082069">
-<img src="images/titre_gridflow.png" width="253" height="23">
-</td></tr><tr><td>&nbsp;</td></tr>
-<tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4" height="16">
- <h4>GridFlow 0.8.1 - Reference Manual: Architecture</h4>
-</td></tr>
-<tr>
- <td width="5%" rowspan="2">&nbsp;</td>
- <td width="15%" height="23">&nbsp;</td>
- <td width="80%" height="23">&nbsp;</td>
- <td width="5%" height="23">&nbsp;</td>
-</tr>
-<tr><td colspan="2"><div cols="1"><h4><a href="#Numbers">Numbers</a></h4><ul>
-</ul>
-<h4><a href="#Grid_Literals">Grid Literals</a></h4><ul>
-</ul>
-<h4><a href="#Grid_Protocol">Grid Protocol</a></h4><ul>
-</ul>
-<h4><a href="#Picture_Protocol">Picture Protocol</a></h4><ul>
-</ul>
-<h4><a href="#Numeric_Operators">Numeric Operators</a></h4><ul>
-</ul>
-<h4><a href="#Synchronisation">Synchronisation</a></h4><ul>
-</ul>
-<h4><a href="#Bridges">Bridges</a></h4><ul>
-</ul>
-<br><br>
-</div></td></tr> <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Numbers"></a><h4>Numbers</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>High-performance computation requires precise and quite peculiar
- definitions of numbers and their representation.</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>Inside most programs, numbers are written down as strings of
- bits. A bit is either zero or one. Just like the decimal system
- uses units, tens, hundreds, the binary system uses units, twos,
- fours, eights, sixteens, and so on, doubling every time.</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>One notation, called integer allows for only integer values to be
- written (no fractions). when it is unsigned, no negative values may
- be written. when it is signed, one bit indicates whether the number
- is positive or negative. Integer storage is usually fixed-size, so you have
- bounds on the size of numbers, and if a result is too big it "wraps around", truncating the biggest
- bits.</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>Another notation, called floating point (or float) stores numbers using
- a fixed number of significant digits, and a scale factor that allows for huge numbers
- and tiny fractions at once. Note that 1/3 has periodic digits, but even 0.1 has periodic digits,
- in binary coding; so expect some slight roundings; the precision offered should be
- sufficient for most purposes. Make sure the errors of rounding don't accumulate, though.</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>This little program of mine prints 1/3 in base 2 (only digits after the period): <kbd><font color="#007777">ruby -e 'x=1/3.0;for i in 0..52 do x*=2;y=x.floor;print y;x-=y end;puts'</font></kbd></p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>In GridFlow, there are six kinds of numbers:</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><tr><td></td><td></td><td><table border="0" bgcolor="black" cellspacing="1"><tr><td valign="top" align="left"><table bgcolor="white" border="0" cellpadding="4" cellspacing="1"><tr><td bgcolor="#808080"><font color="#ffffff"><b>name</b></font></td><td bgcolor="#808080"><font color="#ffffff"><b>aliases</b></font></td><td bgcolor="#808080"><font color="#ffffff"><b>range</b></font></td><td bgcolor="#808080"><font color="#ffffff"><b>size (bytes)</b></font></td><td bgcolor="#808080"><font color="#ffffff"><b>precision</b></font></td><td bgcolor="#808080"><font color="#ffffff"><b>description</b></font></td></tr> <tr><td bgcolor="#ffffff">uint8</td><td bgcolor="#ffffff">u8 b</td><td bgcolor="#ffffff">0..255</td><td bgcolor="#ffffff">1</td><td bgcolor="#ffffff">1</td><td bgcolor="#ffffff">
- unsigned 8-bit integer.
- this is the usual size of numbers taken from files and cameras, and
- written to files and to windows. (however this gets converted to <kbd><font color="#007777">int32</font></kbd>
- unless otherwise specified.) </td></tr> <tr><td bgcolor="#f0f8ff">int16</td><td bgcolor="#f0f8ff">i16 s</td><td bgcolor="#f0f8ff">±2<sup>15</sup> = -32768..32767</td><td bgcolor="#f0f8ff">2</td><td bgcolor="#f0f8ff">1</td><td bgcolor="#f0f8ff">...</td></tr> <tr><td bgcolor="#ffffff">int32</td><td bgcolor="#ffffff">i32 i</td><td bgcolor="#ffffff">±2<sup>31</sup> = -2147483648..2147483647</td><td bgcolor="#ffffff">4</td><td bgcolor="#ffffff">1</td><td bgcolor="#ffffff">
- signed 32-bit integer.
- this is used for most computations. </td></tr> <tr><td bgcolor="#f0f8ff">int64</td><td bgcolor="#f0f8ff">i64 l</td><td bgcolor="#f0f8ff">±2<sup>63</sup></td><td bgcolor="#f0f8ff">8</td><td bgcolor="#f0f8ff">1</td><td bgcolor="#f0f8ff">...</td></tr> <tr><td bgcolor="#ffffff">float32</td><td bgcolor="#ffffff">f32 f</td><td bgcolor="#ffffff">±10<sup>±38</sup></td><td bgcolor="#ffffff">4</td><td bgcolor="#ffffff">23 bits = 0.000012% (about 7 digits)</td><td bgcolor="#ffffff">...</td></tr> <tr><td bgcolor="#f0f8ff">float64</td><td bgcolor="#f0f8ff">f64 d</td><td bgcolor="#f0f8ff">±10<sup>±308</sup></td><td bgcolor="#f0f8ff">8</td><td bgcolor="#f0f8ff">52 bits (about 15 digits)</td><td bgcolor="#f0f8ff">...</td></tr> </table></td></tr></table></td></tr></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Grid_Literals"></a><h4>Grid Literals</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>
- In every grid-accepting inlet, a list may be sent instead; if
- it consists only of integers, it will be converted to a
- one-dimensional grid. Else it may contain a single "#" sign and
- integers on both sides of it, where the ones to the left of it are
- fed as arguments to an imaginary <kbd><font color="#007777">[#redim]</font></kbd> object and the one to the
- right of it are fed through that <kbd><font color="#007777">[#redim]</font></kbd>. </p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>
- In every grid-accepting inlet, an integer or float may also be sent;
- it will be converted to a zero-dimensional grid (a <b>scalar</b>). </p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Grid_Protocol"></a><h4>Grid Protocol</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>
- a grid has an associated number type that defines what are the possible values for its elements
- (and how much space it takes). the default is <b>int32</b>. </p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>
- a single-dimensional grid of 3 elements (a triplet) is called dim(3). a
- three-dimensional grid of 240 rows of 320 columns of triplets is called
- dim(240,320,3). </p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>
- There is a sequence in which elements of a Grid are stored and
- transmitted. Dimension 0 is called "first" and dimension N-1 is
- called "last". They are called so because if you select a
- position in the first dimension of a grid, the selected part is of the same
- shape minus the first dimension; so in dim(240,320,3) if you select
- row 51 (or whichever valid row number), you get a dim(320,3). if you select
- a subpart two more times you get to a single number. </p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>
- At each such level, elements are sent/stored in their numeric order,
- and are numbered using natural numbers starting at 0. This ordering usually
- does not matter, but sometimes it does. Most notably, <kbd><font color="#007777">[#import]</font></kbd>, <kbd><font color="#007777">[#export]</font></kbd> and <kbd><font color="#007777">[#redim]</font></kbd> care about it. </p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>
- On the other hand, order of dimensions usually does matter; this is
- what distinguishes rows from columns and channels, for example.
- Most objects care about the distinction. </p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>
- A grid with only 1 element in a given dimension is different from one
- lacking that dimension; it won't have the same meaning. You can use this
- property to your advantage sometimes. </p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>
- Zero-dimensional grids exist. They are called dim(). They can only contain
- a single number. </p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Picture_Protocol"></a><h4>Picture Protocol</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p><i>This section is useful if you want to know what a picture is
- in terms of a grid. </i></p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>A picture is a three-dimensional Grid: <ul> <li><b>0</b> : rows</li> <li><b>1</b> : columns</li> <li><b>2</b> : channels</li> </ul> </p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>Channels for the RGB color model are: <ul> <li><b>0</b> : red</li> <li><b>1</b> : green</li> <li><b>2</b> : blue</li> </ul> </p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>
- Because Grids are made of 32-bit integers, a three-channel picture uses
- 96 bpp (bits per pixel), and have to be downscaled to 24 bpp (or 16 bpp)
- for display. That huge amount of slack is there because when you create
- your own effects you often have intermediate results that need to be of
- higher precision than a normal picture. Especially, results of multiplications
- are big and should not overflow before you divide them back to normal;
- and similarly, you can have negative values all over, as long as you take
- care of them before they get to the display. </p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>
- In the final conversion, high bits are just ignored. This means: black is
- 0, maximum is 255, and values wrap like with <kbd><font color="#007777">% 256</font></kbd>. If you want to
- clip them, you may use <kbd><font color="#007777">[# max 0]</font></kbd> and <kbd><font color="#007777">[# min 255]</font></kbd> objects. </p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Numeric_Operators"></a><h4>Numeric Operators</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>In the following table, A is the value entered to the
- left, and B is the value entered to the right.</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>Angles are in hundredths of degrees. This means a full circle
- (two pi radians) is 36000. You convert from degrees to our angles
- by multiplying by 100. You convert from radians to our angles by
- multiplying by 18000/pi.</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>Hyperbolic functions (tanh) work with our angles too, so the
- same conversions apply.</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><tr><td></td><td></td><td><table border="0" bgcolor="black" cellspacing="1"><tr><td valign="top" align="left"><table bgcolor="white" border="0" cellpadding="4" cellspacing="1"><tr><td bgcolor="#808080"><font color="#ffffff"><b>name</b></font></td><td bgcolor="#808080"><font color="#ffffff"><b>description</b></font></td><td bgcolor="#808080"><font color="#ffffff"><b>meaning in pixel context (pictures, palettes)</b></font></td><td bgcolor="#808080"><font color="#ffffff"><b>meaning in spatial context (indexmaps, polygons)</b></font></td></tr> <tr><td bgcolor="#ffffff"><img src="op/ignore-icon.png" border="0" alt="ignore"></td><td bgcolor="#ffffff"> A </td><td bgcolor="#ffffff">no effect</td><td bgcolor="#ffffff">no effect</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/put-icon.png" border="0" alt="put"></td><td bgcolor="#f0f8ff"> B </td><td bgcolor="#f0f8ff">replace by</td><td bgcolor="#f0f8ff">replace by</td></tr> <tr><td bgcolor="#ffffff"><img src="op/add-icon.png" border="0" alt="+"></td><td bgcolor="#ffffff"> A + B </td><td bgcolor="#ffffff">brightness, crossfade</td><td bgcolor="#ffffff">move, morph</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/sub-icon.png" border="0" alt="-"></td><td bgcolor="#f0f8ff"> A - B </td><td bgcolor="#f0f8ff">brightness, motion detection</td><td bgcolor="#f0f8ff">move, motion detection</td></tr> <tr><td bgcolor="#ffffff"><img src="op/bus-icon.png" border="0" alt="inv+"></td><td bgcolor="#ffffff"> B - A </td><td bgcolor="#ffffff">negate then contrast</td><td bgcolor="#ffffff">180 degree rotate then move</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/mul-icon.png" border="0" alt="*"></td><td bgcolor="#f0f8ff"> A * B </td><td bgcolor="#f0f8ff">contrast</td><td bgcolor="#f0f8ff">zoom out</td></tr> <tr><td bgcolor="#ffffff"><img src="op/div-icon.png" border="0" alt="/"></td><td bgcolor="#ffffff"> A / B, rounded towards zero </td><td bgcolor="#ffffff">contrast</td><td bgcolor="#ffffff">zoom in</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/div2-icon.png" border="0" alt="div"></td><td bgcolor="#f0f8ff"> A / B, rounded downwards </td><td bgcolor="#f0f8ff">contrast</td><td bgcolor="#f0f8ff">zoom in</td></tr> <tr><td bgcolor="#ffffff"><img src="op/vid-icon.png" border="0" alt="inv*"></td><td bgcolor="#ffffff"> B / A, rounded towards zero </td><td bgcolor="#ffffff">--</td><td bgcolor="#ffffff">--</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/vid2-icon.png" border="0" alt="swapdiv"></td><td bgcolor="#f0f8ff"> B / A, rounded downwards </td><td bgcolor="#f0f8ff">--</td><td bgcolor="#f0f8ff">--</td></tr> <tr><td bgcolor="#ffffff"><img src="op/mod-icon.png" border="0" alt="%"></td><td bgcolor="#ffffff"> A % B, modulo (goes with div) </td><td bgcolor="#ffffff">--</td><td bgcolor="#ffffff">tile</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/dom-icon.png" border="0" alt="swap%"></td><td bgcolor="#f0f8ff"> B % A, modulo (goes with div) </td><td bgcolor="#f0f8ff">--</td><td bgcolor="#f0f8ff">--</td></tr> <tr><td bgcolor="#ffffff"><img src="op/rem-icon.png" border="0" alt="rem"></td><td bgcolor="#ffffff"> A % B, remainder (goes with /) </td><td bgcolor="#ffffff">--</td><td bgcolor="#ffffff">--</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/mer-icon.png" border="0" alt="swaprem"></td><td bgcolor="#f0f8ff"> B % A, remainder (goes with /) </td><td bgcolor="#f0f8ff">--</td><td bgcolor="#f0f8ff">--</td></tr> <tr><td bgcolor="#ffffff"><img src="op/gcd-icon.png" border="0" alt="gcd"></td><td bgcolor="#ffffff">
- greatest common divisor</td><td bgcolor="#ffffff">--</td><td bgcolor="#ffffff">--</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/lcm-icon.png" border="0" alt="lcm"></td><td bgcolor="#f0f8ff">
- least common multiple</td><td bgcolor="#f0f8ff">--</td><td bgcolor="#f0f8ff">--</td></tr> <tr><td bgcolor="#ffffff"><img src="op/or-icon.png" border="0" alt="|"></td><td bgcolor="#ffffff"> A or B, bitwise </td><td bgcolor="#ffffff">bright munchies</td><td bgcolor="#ffffff">bottomright munchies</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/xor-icon.png" border="0" alt="^"></td><td bgcolor="#f0f8ff"> A xor B, bitwise </td><td bgcolor="#f0f8ff">symmetric munchies (fractal checkers)</td><td bgcolor="#f0f8ff">symmetric munchies (fractal checkers)</td></tr> <tr><td bgcolor="#ffffff"><img src="op/and-icon.png" border="0" alt="&"></td><td bgcolor="#ffffff"> A and B, bitwise </td><td bgcolor="#ffffff">dark munchies</td><td bgcolor="#ffffff">topleft munchies</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/shl-icon.png" border="0" alt="<<"></td><td bgcolor="#f0f8ff"> A * (2**(B % 32)), which is left-shifting </td><td bgcolor="#f0f8ff">like *</td><td bgcolor="#f0f8ff">like *</td></tr> <tr><td bgcolor="#ffffff"><img src="op/shr-icon.png" border="0" alt=">>"></td><td bgcolor="#ffffff"> A / (2**(B % 32)), which is right-shifting </td><td bgcolor="#ffffff">like /,div</td><td bgcolor="#ffffff">like /,div</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/sc_or-icon.png" border="0" alt="||"></td><td bgcolor="#f0f8ff"> if A is zero then B else A </td><td bgcolor="#f0f8ff">--</td><td bgcolor="#f0f8ff">--</td></tr> <tr><td bgcolor="#ffffff"><img src="op/sc_and-icon.png" border="0" alt="&&"></td><td bgcolor="#ffffff"> if A is zero then zero else B</td><td bgcolor="#ffffff">--</td><td bgcolor="#ffffff">--</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/min-icon.png" border="0" alt="min"></td><td bgcolor="#f0f8ff"> the lowest value in A,B </td><td bgcolor="#f0f8ff">clipping</td><td bgcolor="#f0f8ff">clipping (of individual points)</td></tr> <tr><td bgcolor="#ffffff"><img src="op/max-icon.png" border="0" alt="max"></td><td bgcolor="#ffffff"> the highest value in A,B </td><td bgcolor="#ffffff">clipping</td><td bgcolor="#ffffff">clipping (of individual points)</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/cmp-icon.png" border="0" alt="cmp"></td><td bgcolor="#f0f8ff"> -1 when A&lt;B; 0 when A=B; 1 when A&gt;B. </td><td bgcolor="#f0f8ff">--</td><td bgcolor="#f0f8ff">--</td></tr> <tr><td bgcolor="#ffffff"><img src="op/eq-icon.png" border="0" alt="=="></td><td bgcolor="#ffffff"> is A equal to B ? 1=true, 0=false </td><td bgcolor="#ffffff">--</td><td bgcolor="#ffffff">--</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/ne-icon.png" border="0" alt="!="></td><td bgcolor="#f0f8ff"> is A not equal to B ? </td><td bgcolor="#f0f8ff">--</td><td bgcolor="#f0f8ff">--</td></tr> <tr><td bgcolor="#ffffff"><img src="op/gt-icon.png" border="0" alt=">"></td><td bgcolor="#ffffff"> is A greater than B ? </td><td bgcolor="#ffffff">--</td><td bgcolor="#ffffff">--</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/le-icon.png" border="0" alt="<="></td><td bgcolor="#f0f8ff"> is A not greater than B ? </td><td bgcolor="#f0f8ff">--</td><td bgcolor="#f0f8ff">--</td></tr> <tr><td bgcolor="#ffffff"><img src="op/lt-icon.png" border="0" alt="<"></td><td bgcolor="#ffffff"> is A less than B ? </td><td bgcolor="#ffffff">--</td><td bgcolor="#ffffff">--</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/ge-icon.png" border="0" alt=">="></td><td bgcolor="#f0f8ff">is A not less than B ? </td><td bgcolor="#f0f8ff">--</td><td bgcolor="#f0f8ff">--</td></tr> <tr><td bgcolor="#ffffff"><img src="op/sin-icon.png" border="0" alt="sin*"></td><td bgcolor="#ffffff"> B * sin(A) </td><td bgcolor="#ffffff">--</td><td bgcolor="#ffffff">waves, rotations</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/cos-icon.png" border="0" alt="cos*"></td><td bgcolor="#f0f8ff"> B * cos(A) </td><td bgcolor="#f0f8ff">--</td><td bgcolor="#f0f8ff">waves, rotations</td></tr> <tr><td bgcolor="#ffffff"><img src="op/atan-icon.png" border="0" alt="atan"></td><td bgcolor="#ffffff"> arctan(A/B) </td><td bgcolor="#ffffff">--</td><td bgcolor="#ffffff">find angle to origin (part of polar transform)</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/tanh-icon.png" border="0" alt="tanh*"></td><td bgcolor="#f0f8ff"> B * tanh(A) </td><td bgcolor="#f0f8ff">smooth clipping</td><td bgcolor="#f0f8ff">smooth clipping (of individual points), neural sigmoid, fuzzy logic</td></tr> <tr><td bgcolor="#ffffff"><img src="op/log-icon.png" border="0" alt="log*"></td><td bgcolor="#ffffff"> B * log(A) (in base e) </td><td bgcolor="#ffffff">--</td><td bgcolor="#ffffff">--</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/gamma-icon.png" border="0" alt="gamma"></td><td bgcolor="#f0f8ff"> floor(pow(a/256.0,256.0/b)*256.0) </td><td bgcolor="#f0f8ff">gamma correction</td><td bgcolor="#f0f8ff">--</td></tr> <tr><td bgcolor="#ffffff"><img src="op/pow-icon.png" border="0" alt="**"></td><td bgcolor="#ffffff"> A**B, that is, A raised to power B </td><td bgcolor="#ffffff">gamma correction</td><td bgcolor="#ffffff">--</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/abs-icon.png" border="0" alt="abs-"></td><td bgcolor="#f0f8ff"> absolute value of (A-B) </td><td bgcolor="#f0f8ff">--</td><td bgcolor="#f0f8ff">--</td></tr> <tr><td bgcolor="#ffffff"><img src="op/rand-icon.png" border="0" alt="rand"></td><td bgcolor="#ffffff"> randomly produces a non-negative number below A </td><td bgcolor="#ffffff">--</td><td bgcolor="#ffffff">--</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/sqrt-icon.png" border="0" alt="sqrt"></td><td bgcolor="#f0f8ff"> square root of A, rounded downwards </td><td bgcolor="#f0f8ff">--</td><td bgcolor="#f0f8ff">--</td></tr> <tr><td bgcolor="#ffffff"><img src="op/sq-icon.png" border="0" alt="sq-"></td><td bgcolor="#ffffff"> (A-B) times (A-B) </td><td bgcolor="#ffffff">--</td><td bgcolor="#ffffff">--</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/clip+-icon.png" border="0" alt="clip+"></td><td bgcolor="#f0f8ff"> like A+B but overflow causes clipping instead of wrapping around (coming soon) </td><td bgcolor="#f0f8ff">--</td><td bgcolor="#f0f8ff">--</td></tr> <tr><td bgcolor="#ffffff"><img src="op/clip--icon.png" border="0" alt="clip-"></td><td bgcolor="#ffffff"> like A-B but overflow causes clipping instead of wrapping around (coming soon) </td><td bgcolor="#ffffff">--</td><td bgcolor="#ffffff">--</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/avg-icon.png" border="0" alt="avg"></td><td bgcolor="#f0f8ff"> (A+B)/2 </td><td bgcolor="#f0f8ff">--</td><td bgcolor="#f0f8ff">--</td></tr> <tr><td bgcolor="#ffffff"><img src="op/hypot-icon.png" border="0" alt="hypot"></td><td bgcolor="#ffffff"> square root of (A*A+B*B) </td><td bgcolor="#ffffff">--</td><td bgcolor="#ffffff">--</td></tr> <tr><td bgcolor="#f0f8ff"><img src="op/erf-icon.png" border="0" alt="erf*"></td><td bgcolor="#f0f8ff"> integral of e^(-x*x) dx ... (coming soon; what ought to be the scaling factor?) </td><td bgcolor="#f0f8ff">--</td><td bgcolor="#f0f8ff">--</td></tr> </table></td></tr></table></td></tr></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Synchronisation"></a><h4>Synchronisation</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>In GridFlow you cannot send two grids in different inlets at the
-same time. You have to use <kbd><font color="#007777">[#finished]</font></kbd> together with (possibly) <kbd><font color="#007777">[fork]</font></kbd> and <kbd><font color="#007777">[#store]</font></kbd>,
-which can be cumbersome. If you don't do this, the result is undefined
-behaviour (or crash!).</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>In GridFlow 0.7.1 this is beginning to change. <kbd><font color="#007777">[#store]</font></kbd> and # now allow
-right-inlet grids to be buffered if an operation is occuring on left inlet. This
-should make many circuits simpler. </p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>(more to come)</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Bridges"></a><h4>Bridges</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>Starting with version 0.6, GridFlow is Ruby-centric instead of jMax-centric.
-jMax support has been added back as a <b>Bridge</b>.</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>Bridges, for the most part, plug into the FObject class, which is the common
-root of most of GridFlow's classes. Under the current design, the bridge is
-compiled separately, and is directly loaded by the host software; then the
-bridge starts Ruby and makes it load the main GridFlow; then the bridge hooks
-with the main part. </p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4">
-<p><font size="-1">
-GridFlow 0.8.1 Documentation<br>
-Copyright &copy; 2001,2002,2003,2004,2005,2006 by Mathieu Bouchard
-<a href="mailto:matju@artengine.ca">matju@artengine.ca</a>
-</font></p>
-</td></tr></table></body></html>
-
-
diff --git a/externals/gridflow/doc/architecture.xml b/externals/gridflow/doc/architecture.xml
deleted file mode 100644
index bf87474e..00000000
--- a/externals/gridflow/doc/architecture.xml
+++ /dev/null
@@ -1,395 +0,0 @@
-<?xml version="1.0" standalone="no" ?>
-<!DOCTYPE documentation SYSTEM 'jmax.dtd'>
-<documentation title="Reference Manual: Architecture">
-<!-- $Id: architecture.xml,v 1.2 2006-03-15 04:44:50 matju Exp $ -->
-<!--
- GridFlow Reference Manual: Architecture
- Copyright (c) 2001,2002,2003,2004 by Mathieu Bouchard
--->
-
-<!--
-<section name="Conventions of this Manual">
- (In this section, usage of Bold, Italic, Courier, etc. would be explained.
- eventually I'd like those to have precise meanings consistent throughout
- the whole documentation)
-</section>
--->
-
-<!--write-me
-<section name="Naming Conventions">
-</section>
--->
-
-<!--write-me
-<section name="User-level Overview">
-<p>(this section is for all users)</p>
-</section>
--->
-
-<section name="Numbers">
-
- <p>High-performance computation requires precise and quite peculiar
- definitions of numbers and their representation.</p>
-
- <p>Inside most programs, numbers are written down as strings of
- bits. A bit is either zero or one. Just like the decimal system
- uses units, tens, hundreds, the binary system uses units, twos,
- fours, eights, sixteens, and so on, doubling every time.</p>
-
- <p>One notation, called integer allows for only integer values to be
- written (no fractions). when it is unsigned, no negative values may
- be written. when it is signed, one bit indicates whether the number
- is positive or negative. Integer storage is usually fixed-size, so you have
- bounds on the size of numbers, and if a result is too big it "wraps around", truncating the biggest
- bits.</p>
-
- <p>Another notation, called floating point (or float) stores numbers using
- a fixed number of significant digits, and a scale factor that allows for huge numbers
- and tiny fractions at once. Note that 1/3 has periodic digits, but even 0.1 has periodic digits,
- in binary coding; so expect some slight roundings; the precision offered should be
- sufficient for most purposes. Make sure the errors of rounding don't accumulate, though.</p>
-
- <p>This little program of mine prints 1/3 in base 2 (only digits after the period):
- <k>ruby -e 'x=1/3.0;for i in 0..52 do x*=2;y=x.floor;print y;x-=y end;puts'</k></p>
-
-
- <p>In GridFlow, there are six kinds of numbers:</p>
-
- <table>
- <column id="name">name</column>
- <column id="aliases">aliases</column>
- <column id="range">range</column>
- <column id="size">size (bytes)</column>
- <column id="precision">precision</column>
- <column id="">description</column>
- <row name="uint8" aliases="u8 b" size="1"
- range="0..255" precision="1">
- unsigned 8-bit integer.
- this is the usual size of numbers taken from files and cameras, and
- written to files and to windows. (however this gets converted to <k>int32</k>
- unless otherwise specified.)
- </row>
- <row name="int16" aliases="i16 s" size="2"
- range="±2&lt;sup&gt;15&lt;/sup&gt; = -32768..32767" precision="1"
- >...</row>
- <row name="int32" aliases="i32 i" size="4"
- range="±2&lt;sup&gt;31&lt;/sup&gt; = -2147483648..2147483647" precision="1">
- signed 32-bit integer.
- this is used for most computations.
- </row>
- <row name="int64" aliases="i64 l" size="8"
- range="±2&lt;sup&gt;63&lt;/sup&gt;" precision="1"
- >...</row>
- <row name="float32" aliases="f32 f" size="4"
- range="±10&lt;sup&gt;±38&lt;/sup&gt;"
- precision="23 bits = 0.000012% (about 7 digits)"
- >...</row>
- <row name="float64" aliases="f64 d" size="8"
- range="±10&lt;sup&gt;±308&lt;/sup&gt;"
- precision="52 bits (about 15 digits)"
- >...</row>
- </table>
-</section>
-
-<section name="Grid Literals">
-<p>
- In every grid-accepting inlet, a list may be sent instead; if
- it consists only of integers, it will be converted to a
- one-dimensional grid. Else it may contain a single "#" sign and
- integers on both sides of it, where the ones to the left of it are
- fed as arguments to an imaginary <k>[#redim]</k> object and the one to the
- right of it are fed through that <k>[#redim]</k>.
-</p>
-<p>
- In every grid-accepting inlet, an integer or float may also be sent;
- it will be converted to a zero-dimensional grid (a <b>scalar</b>).
-</p>
-</section>
-
-<section name="Grid Protocol">
- <p>
- a grid has an associated number type that defines what are the possible values for its elements
- (and how much space it takes). the default is <b>int32</b>.
- </p>
- <p>
- a single-dimensional grid of 3 elements (a triplet) is called dim(3). a
- three-dimensional grid of 240 rows of 320 columns of triplets is called
- dim(240,320,3).
- </p>
- <p>
- There is a sequence in which elements of a Grid are stored and
- transmitted. Dimension 0 is called "first" and dimension N-1 is
- called "last". They are called so because if you select a
- position in the first dimension of a grid, the selected part is of the same
- shape minus the first dimension; so in dim(240,320,3) if you select
- row 51 (or whichever valid row number), you get a dim(320,3). if you select
- a subpart two more times you get to a single number.
- </p>
- <p>
- At each such level, elements are sent/stored in their numeric order,
- and are numbered using natural numbers starting at 0. This ordering usually
- does not matter, but sometimes it does. Most notably, <k>[#import]</k>,
- <k>[#export]</k> and <k>[#redim]</k> care about it.
- </p>
- <p>
- On the other hand, order of dimensions usually does matter; this is
- what distinguishes rows from columns and channels, for example.
- Most objects care about the distinction.
- </p>
- <p>
- A grid with only 1 element in a given dimension is different from one
- lacking that dimension; it won't have the same meaning. You can use this
- property to your advantage sometimes.
- </p>
- <p>
- Zero-dimensional grids exist. They are called dim(). They can only contain
- a single number.
- </p>
-</section>
-
-<section name="Picture Protocol">
- <p><i>This section is useful if you want to know what a picture is
- in terms of a grid.
- </i></p>
-
- <p>A picture is a three-dimensional Grid:
- <list start="0">
- <li>rows</li>
- <li>columns</li>
- <li>channels</li>
- </list>
- </p>
- <p>Channels for the RGB color model are:
- <list start="0">
- <li>red</li>
- <li>green</li>
- <li>blue</li>
- </list>
- </p>
- <p>
- Because Grids are made of 32-bit integers, a three-channel picture uses
- 96 bpp (bits per pixel), and have to be downscaled to 24 bpp (or 16 bpp)
- for display. That huge amount of slack is there because when you create
- your own effects you often have intermediate results that need to be of
- higher precision than a normal picture. Especially, results of multiplications
- are big and should not overflow before you divide them back to normal;
- and similarly, you can have negative values all over, as long as you take
- care of them before they get to the display.
- </p>
- <p>
- In the final conversion, high bits are just ignored. This means: black is
- 0, maximum is 255, and values wrap like with <k>% 256</k>. If you want to
- clip them, you may use <k>[# max 0]</k> and <k>[# min 255]</k> objects.
- </p>
-</section>
-
-<section name="Numeric Operators">
- <p>In the following table, A is the value entered to the
- left, and B is the value entered to the right.</p>
-
- <p>Angles are in hundredths of degrees. This means a full circle
- (two pi radians) is 36000. You convert from degrees to our angles
- by multiplying by 100. You convert from radians to our angles by
- multiplying by 18000/pi.</p>
-
- <p>Hyperbolic functions (tanh) work with our angles too, so the
- same conversions apply.</p>
-
-<table>
- <column id="name" type="icon">name</column>
- <column id="">description</column>
- <column id="color">meaning in pixel context (pictures, palettes)</column>
- <column id="space">meaning in spatial context (indexmaps, polygons)</column>
-
- <!-- category: bogus -->
- <row name="ignore" cname="ignore"
- color="no effect"
- space="no effect"
- > A </row>
- <row name="put" cname="put"
- color="replace by"
- space="replace by"
- > B </row>
-
- <!-- category: additive -->
- <row name="+" cname="add"
- color="brightness, crossfade"
- space="move, morph"
- > A + B </row>
- <row name="-" cname="sub"
- color="brightness, motion detection"
- space="move, motion detection"
- > A - B </row>
- <row name="inv+" cname="bus"
- color="negate then contrast"
- space="180 degree rotate then move"
- > B - A </row>
-
- <!-- category: multiplicative -->
- <row name="*" cname="mul"
- color="contrast"
- space="zoom out"
- > A * B </row>
- <row name="/" cname="div"
- color="contrast"
- space="zoom in"
- > A / B, rounded towards zero </row>
- <row name="div" cname="div2"
- color="contrast"
- space="zoom in"
- > A / B, rounded downwards </row>
- <row name="inv*" cname="vid"
- > B / A, rounded towards zero </row>
- <row name="swapdiv" cname="vid2"
- > B / A, rounded downwards </row>
- <row name="%" cname="mod"
- space="tile"
- > A % B, modulo (goes with div) </row>
- <row name="swap%" cname="dom"
- > B % A, modulo (goes with div) </row>
- <row name="rem" cname="rem"
- > A % B, remainder (goes with /) </row>
- <row name="swaprem" cname="mer"
- > B % A, remainder (goes with /) </row>
-
- <row name="gcd" cname="gcd">
- greatest common divisor</row>
-
- <row name="lcm" cname="lcm">
- least common multiple</row>
-
- <!-- bits -->
- <row name="|" cname="or"
- color="bright munchies"
- space="bottomright munchies"
- > A or B, bitwise </row>
- <row name="^" cname="xor"
- color="symmetric munchies (fractal checkers)"
- space="symmetric munchies (fractal checkers)"
- > A xor B, bitwise </row>
- <row name="&amp;" cname="and"
- color="dark munchies"
- space="topleft munchies"
- > A and B, bitwise </row>
- <row name="&lt;&lt;" cname="shl"
- color="like *"
- space="like *"
- > A * (2**(B % 32)), which is left-shifting </row>
- <row name="&gt;&gt;" cname="shr"
- color="like /,div"
- space="like /,div"
- > A / (2**(B % 32)), which is right-shifting </row>
-
- <!-- decision -->
- <row name="||" cname="sc_or"
- > if A is zero then B else A </row>
- <row name="&amp;&amp;" cname="sc_and"
- > if A is zero then zero else B</row>
- <row name="min" cname="min"
- color="clipping"
- space="clipping (of individual points)"
- > the lowest value in A,B </row>
- <row name="max" cname="max"
- color="clipping"
- space="clipping (of individual points)"
- > the highest value in A,B </row>
-
- <!-- comparison -->
- <row name="cmp" cname="cmp"
- > -1 when A&lt;B; 0 when A=B; 1 when A&gt;B. </row>
- <row name="==" cname="eq"
- > is A equal to B ? 1=true, 0=false </row>
- <row name="!=" cname="ne"
- > is A not equal to B ? </row>
- <row name="&gt;" cname="gt"
- > is A greater than B ? </row>
- <row name="&lt;=" cname="le"
- > is A not greater than B ? </row>
- <row name="&lt;" cname="lt"
- > is A less than B ? </row>
- <row name="&gt;=" cname="ge"
- >is A not less than B ? </row>
-
- <!-- trigonometrics and exponentiation -->
- <row name="sin*" cname="sin"
- space="waves, rotations"
- > B * sin(A) </row>
- <row name="cos*" cname="cos"
- space="waves, rotations"
- > B * cos(A) </row>
- <row name="atan" cname="atan"
- space="find angle to origin (part of polar transform)"
- > arctan(A/B) </row>
- <row name="tanh*" cname="tanh"
- color="smooth clipping"
- space="smooth clipping (of individual points), neural sigmoid, fuzzy logic"
- > B * tanh(A) </row>
- <row name="log*" cname="log"
- > B * log(A) (in base e) </row>
- <row name="gamma" cname="gamma"
- color="gamma correction"
- > floor(pow(a/256.0,256.0/b)*256.0) </row>
- <row name="**" cname="pow"
- color="gamma correction"
- > A**B, that is, A raised to power B </row>
-
- <!-- former one-input operators -->
- <row name="abs-" cname="abs"
- > absolute value of (A-B) </row>
- <row name="rand" cname="rand"
- > randomly produces a non-negative number below A </row>
- <row name="sqrt" cname="sqrt"
- > square root of A, rounded downwards </row>
- <row name="sq-" cname="sq"
- > (A-B) times (A-B) </row>
-
- <!-- 0.8.0 -->
- <row name="clip+" cname="clip+"
- > like A+B but overflow causes clipping instead of wrapping around (coming soon) </row>
- <row name="clip-" cname="clip-"
- > like A-B but overflow causes clipping instead of wrapping around (coming soon) </row>
- <row name="avg" cname="avg"
- > (A+B)/2 </row>
- <row name="hypot" cname="hypot"
- > square root of (A*A+B*B) </row>
- <row name="erf*" cname="erf"
- > integral of e^(-x*x) dx ... (coming soon; what ought to be the scaling factor?) </row>
-</table>
-</section>
-
-<!--write-me
-<section name="Programmer-level Overview">
-<p>(this section is for people who want to mess with the internals or at least
-understand them a bit)</p>
-(move this section down?)
-</section>
--->
-
-<section name="Synchronisation">
-<p>In GridFlow you cannot send two grids in different inlets at the
-same time. You have to use <k>[#finished]</k> together with (possibly) <k>[fork]</k> and <k>[#store]</k>,
-which can be cumbersome. If you don't do this, the result is undefined
-behaviour (or crash!).</p>
-
-<p>In GridFlow 0.7.1 this is beginning to change. <k>[#store]</k> and # now allow
-right-inlet grids to be buffered if an operation is occuring on left inlet. This
-should make many circuits simpler.
-</p>
-
-<p>(more to come)</p>
-</section>
-
-<section name="Bridges">
-<p>Starting with version 0.6, GridFlow is Ruby-centric instead of jMax-centric.
-jMax support has been added back as a <b>Bridge</b>.</p>
-
-<p>Bridges, for the most part, plug into the FObject class, which is the common
-root of most of GridFlow's classes. Under the current design, the bridge is
-compiled separately, and is directly loaded by the host software; then the
-bridge starts Ruby and makes it load the main GridFlow; then the bridge hooks
-with the main part.
-</p>
-
-</section>
-
-</documentation>
diff --git a/externals/gridflow/doc/flow_classes/#+-help.pd b/externals/gridflow/doc/flow_classes/#+-help.pd
deleted file mode 100644
index 511d67c1..00000000
--- a/externals/gridflow/doc/flow_classes/#+-help.pd
+++ /dev/null
@@ -1,364 +0,0 @@
-#N canvas 165 32 693 623 10;
-#X obj 8 3 cnv 15 90 578 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 36 326 INLETS:;
-#X text 36 344 - LEFT:;
-#X text 30 386 - RIGHT:;
-#X text 29 469 OUTLETS:;
-#X text 28 53 EXAMPLES:;
-#X text 16 553 SEE ALSO:;
-#N canvas 52 15 871 640 More_Info 0;
-#X text 76 366 A + B;
-#X text 77 510 A * B;
-#X text 73 571 rounded towards zero;
-#X text 14 73 angles are in hundredth of degrees \, so a full circle
-(two pi radians) is 36000 you can convert from radians to our angles
-by multiplying by 18000/pi.;
-#X text 13 44 for all of these \, A refers to the left inlet and B
-to the value on the right.;
-#X text 15 27 Consult doc/architecture.html to see all the 40 of them.
-;
-#X text 902 31 GridFlow 0.8.0;
-#X obj 479 70 #color;
-#X obj 684 72 #color;
-#X msg 15 366 op +;
-#X msg 15 507 op *;
-#X obj 15 385 s op;
-#X obj 423 155 r op;
-#X obj 15 526 s op;
-#X obj 15 436 s op;
-#X text 77 421 A - B;
-#X msg 15 417 op -;
-#X obj 15 761 s op;
-#X msg 15 742 op %;
-#X text 69 743 A % B;
-#X obj 15 575 s op;
-#X msg 15 556 op /;
-#X text 79 557 A / B;
-#X obj 14 809 s op;
-#X text 83 790 B % A;
-#X text 15 14 Numeric Operators: *whoa \, there's a lot of them;
-#X obj 16 482 s op;
-#X msg 16 463 op inv+;
-#X text 79 464 B -A;
-#X obj 15 623 s op;
-#X text 79 605 A / B;
-#X msg 15 604 op div;
-#X text 75 621 rounded downwards;
-#X obj 15 668 s op;
-#X msg 15 649 op inv*;
-#X text 80 650 B / A;
-#X text 77 665 rounded towards 0;
-#X obj 15 712 s op;
-#X text 76 714 rounded downwards;
-#X text 101 695 B / A;
-#X text 68 760 modulo (goes with div);
-#X text 65 809 modulo (goes with div);
-#X msg 14 790 op swap%;
-#X obj 15 286 s op;
-#X obj 15 334 s op;
-#X msg 15 267 op ignore;
-#X text 90 268 A;
-#X msg 15 315 op put;
-#X text 76 315 B;
-#X msg 15 693 op swapdiv;
-#X obj 237 286 s op;
-#X msg 237 267 op rem;
-#X text 315 263 A % B;
-#X obj 236 338 s op;
-#X text 330 319 B % A;
-#X text 314 278 remainder;
-#X text 314 293 (goes with /);
-#X msg 236 319 op swaprem;
-#X text 327 333 remainder;
-#X text 326 348 (goes with /);
-#X obj 236 388 s op;
-#X obj 236 435 s op;
-#X msg 236 369 op gcd;
-#X msg 236 416 op lcm;
-#X text 298 373 greatest common divisor;
-#X text 298 420 least common multiple;
-#X obj 235 481 s op;
-#X text 299 464 A or B \, bitwise;
-#X msg 235 462 op;
-#X obj 235 525 s op;
-#X text 299 508 A xor B \, bitwise;
-#X msg 235 506 op ^;
-#X obj 235 578 s op;
-#X msg 235 559 op &;
-#X text 300 561 A and B \, bitwise;
-#X obj 235 623 s op;
-#X msg 235 604 op <<;
-#X text 300 606 A * (2**(B % 32);
-#X text 299 621 left-shifthing;
-#X obj 235 669 s op;
-#X msg 235 649 op >>;
-#X text 299 666 right-shifthing;
-#X text 300 652 A / (2**(B % 32);
-#X obj 218 463 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X obj 235 714 s op;
-#X msg 235 695 op;
-#X obj 218 695 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X text 299 697 if A is zero then;
-#X text 300 711 B else A;
-#X obj 235 758 s op;
-#X text 299 741 if A is zero then;
-#X text 15 110 comment;
-#X msg 235 739 op &&;
-#X text 300 755 zero else B;
-#X obj 236 807 s op;
-#X msg 236 788 op min;
-#X text 300 789 the lowest value;
-#X text 301 804 in A \, B;
-#X obj 500 287 s op;
-#X msg 500 267 op max;
-#X text 556 284 in A \, B;
-#X text 557 268 the highest value;
-#X obj 500 333 s op;
-#X msg 500 313 op cmp;
-#X text 551 310 -1 when A<B;
-#X text 558 338 1 when A>B;
-#X text 558 324 0 when A=B;
-#X obj 500 386 s op;
-#X msg 500 366 op ==;
-#X text 557 367 is A equal to B ?;
-#X text 556 385 1 = true \, 0 = false;
-#X obj 500 433 s op;
-#X msg 500 413 op !=;
-#X text 557 414 is A not equal to B ?;
-#X obj 500 477 s op;
-#X msg 500 456 op >;
-#X text 557 457 is A greater than B ?;
-#X obj 500 523 s op;
-#X msg 500 502 op <=;
-#X text 557 503 is A not greater than B ?;
-#X obj 500 572 s op;
-#X msg 500 551 op <;
-#X text 557 552 is A less than B ?;
-#X obj 500 618 s op;
-#X msg 500 597 op >=;
-#X text 557 598 is A not less than B ?;
-#X obj 500 666 s op;
-#X msg 500 645 op sin*;
-#X text 559 646 B * sin(A);
-#X obj 500 713 s op;
-#X msg 500 691 op cos*;
-#X text 560 693 B * cos(A);
-#X obj 500 758 s op;
-#X msg 500 736 op atan;
-#X text 560 737 arctan(A/B);
-#X obj 499 805 s op;
-#X msg 499 783 op tan*;
-#X text 559 784 tanh(A);
-#X obj 738 288 s op;
-#X msg 738 268 op log*;
-#X text 795 269 B*log(A);
-#X text 794 286 in base e;
-#X obj 738 334 s op;
-#X msg 738 314 op gamma;
-#X text 809 314 floor(pow(a/256.0 \, 256.0/b)*256.0);
-#X obj 737 385 s op;
-#X msg 737 366 op **;
-#X text 799 368 A**B;
-#X text 799 385 A raised to power B;
-#X obj 737 431 s op;
-#X msg 737 412 op abs-;
-#X text 799 412 absolute value of (A-B);
-#X obj 737 478 s op;
-#X msg 737 459 op rand;
-#X text 800 473 number below A;
-#X text 799 458 randomly produces a non-negative;
-#X obj 737 524 s op;
-#X msg 737 505 op sqrt;
-#X text 799 504 square root of A;
-#X text 800 519 rounded downwards;
-#X obj 737 566 s op;
-#X msg 737 547 op sq-;
-#X text 800 546 (A-B) times (A-B);
-#X obj 740 614 s op;
-#X obj 723 595 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X msg 740 595 op clip+;
-#X text 808 595 A+B but output is clipped;
-#X obj 740 660 s op;
-#X obj 723 641 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X msg 740 641 op clip-;
-#X text 808 641 A-B but output is clipped;
-#X obj 740 706 s op;
-#X obj 740 750 s op;
-#X text 808 687 (A+B)/2;
-#X msg 740 687 op avg;
-#X msg 740 731 op hypot;
-#X text 808 731 square root of (A*A+B*B);
-#X obj 740 792 s op;
-#X obj 723 773 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X msg 740 773 op erf;
-#X text 807 773 integral of e^(-x*x)dx;
-#N canvas 8 30 615 351 all_operators 0;
-#X obj 174 99 # -;
-#X obj 522 97 # swap%;
-#X obj 186 177 # abs-;
-#X obj 238 177 # rand;
-#X obj 342 177 # sq-;
-#X obj 290 177 # sqrt;
-#X obj 144 99 # +;
-#X obj 492 97 # %;
-#X obj 260 99 # *;
-#X obj 289 99 # /;
-#X obj 206 99 # inv+;
-#X obj 321 99 # div;
-#X obj 367 98 # inv*;
-#X obj 420 98 # swapdiv;
-#X obj 35 99 # ignore;
-#X obj 100 100 # put;
-#X obj 35 125 # rem;
-#X obj 78 125 # swaprem;
-#X obj 149 125 # gcd;
-#X obj 191 125 # lcm;
-#X obj 234 125 # |;
-#X obj 234 125 # |;
-#X obj 263 125 # ^;
-#X obj 293 125 # &;
-#X obj 322 125 # <<;
-#X obj 358 125 # >>;
-#X obj 394 125 # ||;
-#X obj 431 125 # &&;
-#X obj 467 125 # min;
-#X obj 35 151 # max;
-#X obj 79 151 # cmp;
-#X obj 124 151 # ==;
-#X obj 162 151 # !=;
-#X obj 199 151 # >;
-#X obj 234 151 # <=;
-#X obj 274 151 # <;
-#X obj 304 152 # >=;
-#X obj 341 152 # sin*;
-#X obj 391 152 # cos*;
-#X obj 442 152 # atan;
-#X obj 493 152 # tanh*;
-#X obj 35 177 # log*;
-#X obj 87 177 # gamma;
-#X obj 148 177 # **;
-#X obj 388 177 # avg;
-#X obj 433 177 # hypot;
-#X restore 15 174 pd all_operators;
-#X text 585 31 select values below;
-#X text 14 233 select an operator below;
-#X text 478 51 A;
-#X text 683 53 B;
-#X obj 479 182 # +;
-#X obj 257 196 #color;
-#X obj 297 162 #reverse;
-#X obj 443 215 display;
-#X obj 656 197 #unpack 3;
-#X floatatom 605 244 5 0 0 0 - - -;
-#X obj 642 150 t a a;
-#X obj 597 191 display;
-#X connect 7 0 186 0;
-#X connect 7 0 188 0;
-#X connect 7 0 192 0;
-#X connect 8 0 186 1;
-#X connect 9 0 11 0;
-#X connect 10 0 13 0;
-#X connect 12 0 186 0;
-#X connect 16 0 14 0;
-#X connect 18 0 17 0;
-#X connect 21 0 20 0;
-#X connect 27 0 26 0;
-#X connect 31 0 29 0;
-#X connect 34 0 33 0;
-#X connect 42 0 23 0;
-#X connect 45 0 43 0;
-#X connect 47 0 44 0;
-#X connect 49 0 37 0;
-#X connect 51 0 50 0;
-#X connect 57 0 53 0;
-#X connect 62 0 60 0;
-#X connect 63 0 61 0;
-#X connect 68 0 66 0;
-#X connect 71 0 69 0;
-#X connect 73 0 72 0;
-#X connect 76 0 75 0;
-#X connect 80 0 79 0;
-#X connect 85 0 84 0;
-#X connect 92 0 89 0;
-#X connect 95 0 94 0;
-#X connect 99 0 98 0;
-#X connect 103 0 102 0;
-#X connect 108 0 107 0;
-#X connect 112 0 111 0;
-#X connect 115 0 114 0;
-#X connect 118 0 117 0;
-#X connect 121 0 120 0;
-#X connect 124 0 123 0;
-#X connect 127 0 126 0;
-#X connect 130 0 129 0;
-#X connect 133 0 132 0;
-#X connect 136 0 135 0;
-#X connect 139 0 138 0;
-#X connect 143 0 142 0;
-#X connect 146 0 145 0;
-#X connect 150 0 149 0;
-#X connect 153 0 152 0;
-#X connect 157 0 156 0;
-#X connect 161 0 160 0;
-#X connect 165 0 163 0;
-#X connect 169 0 167 0;
-#X connect 174 0 171 0;
-#X connect 175 0 172 0;
-#X connect 179 0 177 0;
-#X connect 188 0 187 0;
-#X connect 188 0 189 0;
-#X connect 190 0 191 0;
-#X connect 192 0 193 0;
-#X connect 192 1 190 0;
-#X restore 115 574 pd More_Info;
-#X text 36 492 - LEFT:;
-#X text 412 575 updated for GridFlow version 0.8.0;
-#X floatatom 151 163 5 0 0 0 - - -;
-#X text 113 554 list of other operators;
-#X obj 71 9 # +;
-#X text 108 12 - OPERATORS ([# +] in this case) APPLY OPERATIONS ONTO
-GRIDS;
-#X text 109 345 Grid - accepts a grid that will be modified by the
-operator according to the right inlet value. (list of operators in
-[pd more_info]) ([# +] in this example.);
-#X text 108 395 Grid - accepts grids that will modify the incoming
-grid \, from the left inlet \, (preferably of the same dimensions.)
-;
-#X text 105 439 Integer - accepts integers that will modify the incoming
-grid.;
-#X text 107 492 Grid - outputs the modified data as a grid.;
-#X obj 142 211 display;
-#X obj 114 93 #color;
-#X msg 114 60 255 0 0;
-#X obj 114 253 #color;
-#X obj 511 179 #in;
-#X obj 511 249 #out window;
-#X msg 541 156 open b001.jpg;
-#X obj 511 113 t b b;
-#X obj 511 58 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
-;
-#X obj 511 79 metro 100;
-#X obj 511 202 # +;
-#X obj 511 226 #clip;
-#X text 204 164 <-- change this value.;
-#X obj 114 181 # + 42;
-#X text 293 109 <-- modify color;
-#X connect 10 0 31 1;
-#X connect 19 0 31 0;
-#X connect 20 0 19 0;
-#X connect 22 0 28 0;
-#X connect 24 0 22 0;
-#X connect 25 0 22 0;
-#X connect 25 1 24 0;
-#X connect 26 0 27 0;
-#X connect 27 0 25 0;
-#X connect 28 0 29 0;
-#X connect 29 0 23 0;
-#X connect 31 0 18 0;
-#X connect 31 0 21 0;
diff --git a/externals/gridflow/doc/flow_classes/#-help.pd b/externals/gridflow/doc/flow_classes/#-help.pd
deleted file mode 100644
index 3b891db4..00000000
--- a/externals/gridflow/doc/flow_classes/#-help.pd
+++ /dev/null
@@ -1,309 +0,0 @@
-#N canvas 291 30 1089 795 10;
-#X text 76 366 A + B;
-#X text 77 510 A * B;
-#X text 73 571 rounded towards zero;
-#X text 14 73 angles are in hundredth of degrees \, so a full circle
-(two pi radians) is 36000 you can convert from radians to our angles
-by multiplying by 18000/pi.;
-#X text 13 44 for all of these \, A refers to the left inlet and B
-to the value on the right.;
-#X text 15 27 Consult doc/architecture.html to see all the 40 of them.
-;
-#X text 902 31 GridFlow 0.8.0;
-#X obj 479 70 #color;
-#X obj 684 72 #color;
-#X msg 15 366 op +;
-#X msg 15 507 op *;
-#X obj 15 385 s op;
-#X obj 423 155 r op;
-#X obj 15 526 s op;
-#X obj 15 436 s op;
-#X text 77 421 A - B;
-#X msg 15 417 op -;
-#X obj 15 761 s op;
-#X msg 15 742 op %;
-#X text 69 743 A % B;
-#X obj 15 575 s op;
-#X msg 15 556 op /;
-#X text 79 557 A / B;
-#X obj 14 809 s op;
-#X text 83 790 B % A;
-#X text 15 14 Numeric Operators: *whoa \, there's a lot of them;
-#X obj 16 482 s op;
-#X msg 16 463 op inv+;
-#X text 79 464 B -A;
-#X obj 15 623 s op;
-#X text 79 605 A / B;
-#X msg 15 604 op div;
-#X text 75 621 rounded downwards;
-#X obj 15 668 s op;
-#X msg 15 649 op inv*;
-#X text 80 650 B / A;
-#X text 77 665 rounded towards 0;
-#X obj 15 712 s op;
-#X text 76 714 rounded downwards;
-#X text 101 695 B / A;
-#X text 68 760 modulo (goes with div);
-#X text 65 809 modulo (goes with div);
-#X msg 14 790 op swap%;
-#X obj 15 286 s op;
-#X obj 15 334 s op;
-#X msg 15 267 op ignore;
-#X text 90 268 A;
-#X msg 15 315 op put;
-#X text 76 315 B;
-#X msg 15 693 op swapdiv;
-#X obj 237 286 s op;
-#X msg 237 267 op rem;
-#X text 315 263 A % B;
-#X obj 236 338 s op;
-#X text 330 319 B % A;
-#X text 314 278 remainder;
-#X text 314 293 (goes with /);
-#X msg 236 319 op swaprem;
-#X text 327 333 remainder;
-#X text 326 348 (goes with /);
-#X obj 236 388 s op;
-#X obj 236 435 s op;
-#X msg 236 369 op gcd;
-#X msg 236 416 op lcm;
-#X text 298 373 greatest common divisor;
-#X text 298 420 least common multiple;
-#X obj 235 481 s op;
-#X text 299 464 A or B \, bitwise;
-#X msg 235 462 op;
-#X obj 235 525 s op;
-#X text 299 508 A xor B \, bitwise;
-#X msg 235 506 op ^;
-#X obj 235 578 s op;
-#X msg 235 559 op &;
-#X text 300 561 A and B \, bitwise;
-#X obj 235 623 s op;
-#X msg 235 604 op <<;
-#X text 300 606 A * (2**(B % 32);
-#X text 299 621 left-shifthing;
-#X obj 235 669 s op;
-#X msg 235 649 op >>;
-#X text 299 666 right-shifthing;
-#X text 300 652 A / (2**(B % 32);
-#X obj 218 463 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X obj 235 714 s op;
-#X msg 235 695 op;
-#X obj 218 695 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X text 299 697 if A is zero then;
-#X text 300 711 B else A;
-#X obj 235 758 s op;
-#X text 299 741 if A is zero then;
-#X text 15 110 comment;
-#X msg 235 739 op &&;
-#X text 300 755 zero else B;
-#X obj 236 807 s op;
-#X msg 236 788 op min;
-#X text 300 789 the lowest value;
-#X text 301 804 in A \, B;
-#X obj 500 287 s op;
-#X msg 500 267 op max;
-#X text 556 284 in A \, B;
-#X text 557 268 the highest value;
-#X obj 500 333 s op;
-#X msg 500 313 op cmp;
-#X text 551 310 -1 when A<B;
-#X text 558 338 1 when A>B;
-#X text 558 324 0 when A=B;
-#X obj 500 386 s op;
-#X msg 500 366 op ==;
-#X text 557 367 is A equal to B ?;
-#X text 556 385 1 = true \, 0 = false;
-#X obj 500 433 s op;
-#X msg 500 413 op !=;
-#X text 557 414 is A not equal to B ?;
-#X obj 500 477 s op;
-#X msg 500 456 op >;
-#X text 557 457 is A greater than B ?;
-#X obj 500 523 s op;
-#X msg 500 502 op <=;
-#X text 557 503 is A not greater than B ?;
-#X obj 500 572 s op;
-#X msg 500 551 op <;
-#X text 557 552 is A less than B ?;
-#X obj 500 618 s op;
-#X msg 500 597 op >=;
-#X text 557 598 is A not less than B ?;
-#X obj 500 666 s op;
-#X msg 500 645 op sin*;
-#X text 559 646 B * sin(A);
-#X obj 500 713 s op;
-#X msg 500 691 op cos*;
-#X text 560 693 B * cos(A);
-#X obj 500 758 s op;
-#X msg 500 736 op atan;
-#X text 560 737 arctan(A/B);
-#X obj 499 805 s op;
-#X msg 499 783 op tan*;
-#X text 559 784 tanh(A);
-#X obj 738 288 s op;
-#X msg 738 268 op log*;
-#X text 795 269 B*log(A);
-#X text 794 286 in base e;
-#X obj 738 334 s op;
-#X msg 738 314 op gamma;
-#X text 809 314 floor(pow(a/256.0 \, 256.0/b)*256.0);
-#X obj 737 385 s op;
-#X msg 737 366 op **;
-#X text 799 368 A**B;
-#X text 799 385 A raised to power B;
-#X obj 737 431 s op;
-#X msg 737 412 op abs-;
-#X text 799 412 absolute value of (A-B);
-#X obj 737 478 s op;
-#X msg 737 459 op rand;
-#X text 800 473 number below A;
-#X text 799 458 randomly produces a non-negative;
-#X obj 737 524 s op;
-#X msg 737 505 op sqrt;
-#X text 799 504 square root of A;
-#X text 800 519 rounded downwards;
-#X obj 737 566 s op;
-#X msg 737 547 op sq-;
-#X text 800 546 (A-B) times (A-B);
-#X obj 740 614 s op;
-#X obj 723 595 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X msg 740 595 op clip+;
-#X text 808 595 A+B but output is clipped;
-#X obj 740 660 s op;
-#X obj 723 641 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X msg 740 641 op clip-;
-#X text 808 641 A-B but output is clipped;
-#X obj 740 706 s op;
-#X obj 740 750 s op;
-#X text 808 687 (A+B)/2;
-#X msg 740 687 op avg;
-#X msg 740 731 op hypot;
-#X text 808 731 square root of (A*A+B*B);
-#X obj 740 792 s op;
-#X obj 723 773 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X msg 740 773 op erf;
-#X text 807 773 integral of e^(-x*x)dx;
-#N canvas 8 30 615 351 all_operators 0;
-#X obj 174 99 # -;
-#X obj 522 97 # swap%;
-#X obj 186 177 # abs-;
-#X obj 238 177 # rand;
-#X obj 342 177 # sq-;
-#X obj 290 177 # sqrt;
-#X obj 144 99 # +;
-#X obj 492 97 # %;
-#X obj 260 99 # *;
-#X obj 289 99 # /;
-#X obj 206 99 # inv+;
-#X obj 321 99 # div;
-#X obj 367 98 # inv*;
-#X obj 420 98 # swapdiv;
-#X obj 35 99 # ignore;
-#X obj 100 100 # put;
-#X obj 35 125 # rem;
-#X obj 78 125 # swaprem;
-#X obj 149 125 # gcd;
-#X obj 191 125 # lcm;
-#X obj 234 125 # |;
-#X obj 234 125 # |;
-#X obj 263 125 # ^;
-#X obj 293 125 # &;
-#X obj 322 125 # <<;
-#X obj 358 125 # >>;
-#X obj 394 125 # ||;
-#X obj 431 125 # &&;
-#X obj 467 125 # min;
-#X obj 35 151 # max;
-#X obj 79 151 # cmp;
-#X obj 124 151 # ==;
-#X obj 162 151 # !=;
-#X obj 199 151 # >;
-#X obj 234 151 # <=;
-#X obj 274 151 # <;
-#X obj 304 152 # >=;
-#X obj 341 152 # sin*;
-#X obj 391 152 # cos*;
-#X obj 442 152 # atan;
-#X obj 493 152 # tanh*;
-#X obj 35 177 # log*;
-#X obj 87 177 # gamma;
-#X obj 148 177 # **;
-#X obj 388 177 # avg;
-#X obj 433 177 # hypot;
-#X restore 15 174 pd all_operators;
-#X text 585 31 select values below;
-#X text 14 233 select an operator below;
-#X text 478 51 A;
-#X text 683 53 B;
-#X obj 479 182 # +;
-#X obj 257 196 #color;
-#X obj 297 162 #reverse;
-#X obj 443 215 display;
-#X obj 656 197 #unpack 3;
-#X floatatom 605 244 5 0 0 0 - - -;
-#X obj 642 150 t a a;
-#X obj 597 191 display;
-#X connect 7 0 186 0;
-#X connect 7 0 188 0;
-#X connect 7 0 192 0;
-#X connect 8 0 186 1;
-#X connect 9 0 11 0;
-#X connect 10 0 13 0;
-#X connect 12 0 186 0;
-#X connect 16 0 14 0;
-#X connect 18 0 17 0;
-#X connect 21 0 20 0;
-#X connect 27 0 26 0;
-#X connect 31 0 29 0;
-#X connect 34 0 33 0;
-#X connect 42 0 23 0;
-#X connect 45 0 43 0;
-#X connect 47 0 44 0;
-#X connect 49 0 37 0;
-#X connect 51 0 50 0;
-#X connect 57 0 53 0;
-#X connect 62 0 60 0;
-#X connect 63 0 61 0;
-#X connect 68 0 66 0;
-#X connect 71 0 69 0;
-#X connect 73 0 72 0;
-#X connect 76 0 75 0;
-#X connect 80 0 79 0;
-#X connect 85 0 84 0;
-#X connect 92 0 89 0;
-#X connect 95 0 94 0;
-#X connect 99 0 98 0;
-#X connect 103 0 102 0;
-#X connect 108 0 107 0;
-#X connect 112 0 111 0;
-#X connect 115 0 114 0;
-#X connect 118 0 117 0;
-#X connect 121 0 120 0;
-#X connect 124 0 123 0;
-#X connect 127 0 126 0;
-#X connect 130 0 129 0;
-#X connect 133 0 132 0;
-#X connect 136 0 135 0;
-#X connect 139 0 138 0;
-#X connect 143 0 142 0;
-#X connect 146 0 145 0;
-#X connect 150 0 149 0;
-#X connect 153 0 152 0;
-#X connect 157 0 156 0;
-#X connect 161 0 160 0;
-#X connect 165 0 163 0;
-#X connect 169 0 167 0;
-#X connect 174 0 171 0;
-#X connect 175 0 172 0;
-#X connect 179 0 177 0;
-#X connect 188 0 187 0;
-#X connect 188 0 189 0;
-#X connect 190 0 191 0;
-#X connect 192 0 193 0;
-#X connect 192 1 190 0;
diff --git a/externals/gridflow/doc/flow_classes/#-icon.png b/externals/gridflow/doc/flow_classes/#-icon.png
deleted file mode 100644
index b1fedc1b..00000000
--- a/externals/gridflow/doc/flow_classes/#-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#apply_colormap_channelwise-icon.png b/externals/gridflow/doc/flow_classes/#apply_colormap_channelwise-icon.png
deleted file mode 100644
index 155d68c3..00000000
--- a/externals/gridflow/doc/flow_classes/#apply_colormap_channelwise-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#cast-help.pd b/externals/gridflow/doc/flow_classes/#cast-help.pd
deleted file mode 100644
index 94246cc9..00000000
--- a/externals/gridflow/doc/flow_classes/#cast-help.pd
+++ /dev/null
@@ -1,45 +0,0 @@
-#N canvas 435 101 684 379 10;
-#X text 108 14 returns a grid of the same dimensions containing all
-the same values after type conversion. note that while casting to a
-smaller type \, overflowing values will be truncated.;
-#X text 109 53 numbertypes are: uint8 \, int16 \, int32 \, int64 \,
-float32 \, float64. see doc/architecture.html for more info.;
-#X obj 115 90 nbx 8 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
--262144 -1 -1 3.1416 256;
-#X obj 78 136 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 14 136 print it:;
-#X obj 78 210 t a a a a;
-#X obj 216 90 nbx 8 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
--262144 -1 -1 42 256;
-#X obj 126 110 nbx 8 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
--262144 -1 -1 2005 256;
-#X obj 215 110 nbx 8 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
--262144 -1 -1 1e+10 256;
-#X obj 115 136 #pack 4 float32;
-#X obj 115 158 #redim ( 2 2 );
-#X obj 78 185 #store;
-#X obj 136 234 #print;
-#X obj 116 254 #cast uint8;
-#X obj 116 274 #print;
-#X obj 97 294 #cast int32;
-#X obj 97 314 #print;
-#X obj 78 334 #cast float64;
-#X obj 78 354 #print;
-#X text 14 14 [#cast];
-#X text 575 10 GridFlow 0.8.0;
-#X connect 2 0 9 0;
-#X connect 3 0 11 0;
-#X connect 5 0 17 0;
-#X connect 5 1 15 0;
-#X connect 5 2 13 0;
-#X connect 5 3 12 0;
-#X connect 6 0 9 1;
-#X connect 7 0 9 2;
-#X connect 8 0 9 3;
-#X connect 9 0 10 0;
-#X connect 10 0 11 1;
-#X connect 11 0 5 0;
-#X connect 13 0 14 0;
-#X connect 15 0 16 0;
-#X connect 17 0 18 0;
diff --git a/externals/gridflow/doc/flow_classes/#cast-icon.png b/externals/gridflow/doc/flow_classes/#cast-icon.png
deleted file mode 100644
index 7abe3191..00000000
--- a/externals/gridflow/doc/flow_classes/#cast-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#checkers-icon.png b/externals/gridflow/doc/flow_classes/#checkers-icon.png
deleted file mode 100644
index e0ab0ad0..00000000
--- a/externals/gridflow/doc/flow_classes/#checkers-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#clip-help.pd b/externals/gridflow/doc/flow_classes/#clip-help.pd
deleted file mode 100644
index 490afbbc..00000000
--- a/externals/gridflow/doc/flow_classes/#clip-help.pd
+++ /dev/null
@@ -1,67 +0,0 @@
-#N canvas 693 131 606 601 10;
-#X obj 360 381 #in;
-#X obj 360 422 # + 42;
-#X floatatom 404 400 5 0 0 0 - - -;
-#X obj 360 528 #out window;
-#X msg 390 358 open b001.jpg;
-#X obj 360 335 t b b;
-#X obj -1 0 cnv 15 90 600 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 360 302 metro 100;
-#X obj 360 281 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
-;
-#X floatatom 384 452 5 0 0 0 - - -;
-#X floatatom 434 452 5 0 0 0 - - -;
-#X text 38 36 INLETS:;
-#X text 38 51 - LEFT:;
-#X text 32 143 - RIGHT:;
-#X text 29 253 OUTLETS:;
-#X text 15 194 ARGUMENTS:;
-#X text 22 283 EXAMPLES:;
-#X text 20 565 SEE ALSO:;
-#X text 25 93 - CENTER:;
-#X obj 47 10 #clip;
-#X text 501 558 GridFlow 0.8.0;
-#X floatatom 119 397 5 0 0 0 - - -;
-#X floatatom 119 286 5 0 0 0 - - -;
-#X text 205 339 creation arguments;
-#X obj 119 342 #clip 255 0;
-#X text 107 191 Two - [int] accepts two integers as creation arguments
-which initializes the first values to be stored in the object and duplicate
-the functions of the second and third inlet.;
-#X obj 118 564 # min;
-#X obj 165 564 # max;
-#X obj 213 564 clip;
-#X text 109 91 Integer - An integer at the second inlet is stored for
-later use. It will be used as the high value at which to clip incoming
-Grid values at that left inlet.;
-#X text 109 142 Integer - An integer at the third inlet is stored for
-later use. It will be used as the low value at which to clip incoming
-Grid values at that left inlet.;
-#X text 108 12 - FORCE THE GRID VALUES INTO A RANGE;
-#X text 109 50 Grid - Grid values at the left inlet will be clipped
-to the high and low values stored in the object.;
-#X obj 360 485 #clip;
-#X text 419 483 no arguments (defaults to 255 \, 0);
-#X text 452 399 <-- change these;
-#X obj 119 312 #import (1);
-#X obj 119 370 #export;
-#X text 107 191 Two - [int] accepts two integers as creation arguments
-which initializes the first values to be stored in the object and duplicate
-the functions of the second and third inlet.;
-#X text 485 452 <--;
-#X connect 0 0 1 0;
-#X connect 1 0 33 0;
-#X connect 2 0 1 1;
-#X connect 4 0 0 0;
-#X connect 5 0 0 0;
-#X connect 5 1 4 0;
-#X connect 7 0 5 0;
-#X connect 8 0 7 0;
-#X connect 9 0 33 1;
-#X connect 10 0 33 2;
-#X connect 22 0 36 0;
-#X connect 24 0 37 0;
-#X connect 33 0 3 0;
-#X connect 36 0 24 0;
-#X connect 37 0 21 0;
diff --git a/externals/gridflow/doc/flow_classes/#color-icon.png b/externals/gridflow/doc/flow_classes/#color-icon.png
deleted file mode 100644
index 0ca1b51c..00000000
--- a/externals/gridflow/doc/flow_classes/#color-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#complex_sq-icon.png b/externals/gridflow/doc/flow_classes/#complex_sq-icon.png
deleted file mode 100644
index 9ad2c3f5..00000000
--- a/externals/gridflow/doc/flow_classes/#complex_sq-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#contrast-help.pd b/externals/gridflow/doc/flow_classes/#contrast-help.pd
deleted file mode 100644
index 7e8b1734..00000000
--- a/externals/gridflow/doc/flow_classes/#contrast-help.pd
+++ /dev/null
@@ -1,46 +0,0 @@
-#N canvas 120 14 814 532 10;
-#X obj 96 131 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1
--1;
-#X obj 22 151 metro 100;
-#X obj 22 130 tgl 15 0 empty empty empty 0 -6 0 8 -233017 -1 -1 0 1
-;
-#X obj 123 269 hsl 128 15 0 256 0 0 empty empty empty -2 -6 0 8 -262144
--1 -1 0 1;
-#X obj 124 332 hsl 128 15 0 256 0 0 empty empty empty -2 -6 0 8 -262144
--1 -1 0 1;
-#X text 15 57 adjusts the intensity in an image. resulting values outside
-0-255 are automatically clipped.;
-#X text 262 334 master contrast;
-#X text 258 273 secondary contrast;
-#X floatatom 51 343 5 0 0 0 - - -;
-#X floatatom 80 375 5 0 0 0 - - -;
-#X text 401 273 makes the incoming black correspond to a certain fraction
-between output black and the master contrast value. no effect is 256
-this is also the default.;
-#X text 402 334 makes the incoming white correspond to a certain fraction
-between output black and output white. no effect is 256 this is also
-the default.;
-#X text 18 497 see also:;
-#X msg 119 220 open bluemarble.jpg;
-#X obj 96 151 fork;
-#X obj 88 499 #convolve;
-#X obj 158 499 #posterize;
-#X obj 235 499 #solarize;
-#X obj 305 499 #layer;
-#X obj 22 423 #out window;
-#X obj 22 397 #contrast;
-#X obj 22 237 #in;
-#X text 13 15 [#contrast];
-#X text 700 15 GridFlow 0.8.0;
-#X connect 0 0 14 0;
-#X connect 1 0 21 0;
-#X connect 2 0 1 0;
-#X connect 3 0 8 0;
-#X connect 4 0 9 0;
-#X connect 8 0 20 1;
-#X connect 9 0 20 2;
-#X connect 13 0 21 0;
-#X connect 14 0 21 0;
-#X connect 14 1 13 0;
-#X connect 20 0 19 0;
-#X connect 21 0 20 0;
diff --git a/externals/gridflow/doc/flow_classes/#contrast-icon.png b/externals/gridflow/doc/flow_classes/#contrast-icon.png
deleted file mode 100644
index 42717ad6..00000000
--- a/externals/gridflow/doc/flow_classes/#contrast-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#convolve-icon.png b/externals/gridflow/doc/flow_classes/#convolve-icon.png
deleted file mode 100644
index 476ad435..00000000
--- a/externals/gridflow/doc/flow_classes/#convolve-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#dim-help.pd b/externals/gridflow/doc/flow_classes/#dim-help.pd
deleted file mode 100644
index 49017c9b..00000000
--- a/externals/gridflow/doc/flow_classes/#dim-help.pd
+++ /dev/null
@@ -1,32 +0,0 @@
-#N canvas 449 187 546 331 10;
-#X obj 26 83 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1
--1;
-#X obj 137 217 print dimension;
-#X obj 18 241 print number_of_dimensions;
-#X text 18 282 see also:;
-#X obj 136 283 rubyprint;
-#X obj 206 283 printargs;
-#X msg 18 63 open bluemarble.jpg;
-#X text 438 10 GridFlow 0.8.0;
-#X obj 87 283 #print;
-#X obj 276 283 #export;
-#X obj 332 283 #export_list;
-#X obj 137 196 #export;
-#X obj 18 197 #dim;
-#X obj 18 217 #export;
-#X obj 18 127 #dim;
-#X obj 18 103 #in;
-#X text 14 15 [#dim];
-#X text 137 100 dim receives a grid \, doesn't look at the data within
-but only the list of dimensions and turns it into a one dimension grid.
-given a grid sized like dim(240 \, 320 \, 4) #dim will return a grid
-like dim(3) whose values are 240 \, 320 \, 4;
-#X connect 0 0 15 0;
-#X connect 6 0 0 0;
-#X connect 6 0 15 0;
-#X connect 11 0 1 0;
-#X connect 12 0 13 0;
-#X connect 13 0 2 0;
-#X connect 14 0 11 0;
-#X connect 14 0 12 0;
-#X connect 15 0 14 0;
diff --git a/externals/gridflow/doc/flow_classes/#dim-icon.png b/externals/gridflow/doc/flow_classes/#dim-icon.png
deleted file mode 100644
index 4c0462df..00000000
--- a/externals/gridflow/doc/flow_classes/#dim-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#downscale_by-icon.png b/externals/gridflow/doc/flow_classes/#downscale_by-icon.png
deleted file mode 100644
index 59b2bf23..00000000
--- a/externals/gridflow/doc/flow_classes/#downscale_by-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#draw_image-icon.png b/externals/gridflow/doc/flow_classes/#draw_image-icon.png
deleted file mode 100644
index 7f9a62b1..00000000
--- a/externals/gridflow/doc/flow_classes/#draw_image-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#draw_polygon-icon.png b/externals/gridflow/doc/flow_classes/#draw_polygon-icon.png
deleted file mode 100644
index 6945bd62..00000000
--- a/externals/gridflow/doc/flow_classes/#draw_polygon-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#export-icon.png b/externals/gridflow/doc/flow_classes/#export-icon.png
deleted file mode 100644
index 322e8d91..00000000
--- a/externals/gridflow/doc/flow_classes/#export-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#export_list-icon.png b/externals/gridflow/doc/flow_classes/#export_list-icon.png
deleted file mode 100644
index 11743525..00000000
--- a/externals/gridflow/doc/flow_classes/#export_list-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#export_symbol-icon.png b/externals/gridflow/doc/flow_classes/#export_symbol-icon.png
deleted file mode 100644
index 28c70df9..00000000
--- a/externals/gridflow/doc/flow_classes/#export_symbol-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#fade-help.pd b/externals/gridflow/doc/flow_classes/#fade-help.pd
deleted file mode 100644
index 551d8637..00000000
--- a/externals/gridflow/doc/flow_classes/#fade-help.pd
+++ /dev/null
@@ -1,80 +0,0 @@
-#N canvas 48 74 732 441 10;
-#X obj 268 95 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X obj 278 115 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 406 cnv 15 720 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X obj 8 3 cnv 15 720 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 278 174 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 268 25 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 271 25 Arguments:;
-#X obj 268 281 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 271 281 Outlets:;
-#X obj 8 25 cnv 15 250 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 11 25 Usage:;
-#X obj 8 45 cnv 15 250 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 81 cnv 15 250 320 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 268 343 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 271 343 More Info:;
-#X text 271 95 Inlets: (Read left to right \, inlet "0" being the leftmost)
-;
-#X text 281 115 0: (Leftmost);
-#X text 281 174 1: (Rightmost);
-#X obj 104 53 #fade;
-#X obj 91 324 #fade;
-#X obj 91 350 #out window;
-#X msg 31 224 open b001.jpg;
-#X obj 22 166 bng 15 250 50 0 empty empty empty 0 -6 0 8 -225271 -1
--1;
-#X obj 22 252 #in;
-#X obj 22 199 t b b;
-#X obj 50 303 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X floatatom 134 305 5 0 0 0 - - -;
-#X obj 22 139 metro 500;
-#X obj 22 113 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
-;
-#X obj 144 165 bng 15 250 50 0 empty empty empty 0 -6 0 8 -225271 -1
--1;
-#X obj 144 251 #in;
-#X obj 144 198 t b b;
-#X msg 153 223 open r001.jpg;
-#X obj 144 136 metro 500;
-#X obj 144 111 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
-1;
-#X text 16 413 GridFlow 0.8.0;
-#X text 71 3 Fades a grids according to the argument you provide.;
-#X text 10 4 SUMMARY:;
-#X text 284 45 One - See inlet 0: (rightmost);
-#X text 292 135 Grid - Accepts s grid and multiplies it with a fraction
-of the previously outputted grid.;
-#X text 292 195 Integer - accepts an integer that determines the amount
-one grid is blended with another. For example: integer 5 takes 20%
-of the first image and blends it with 80% of the following image.;
-#X text 283 301 One - Outputs the fading images.;
-#X connect 19 0 20 0;
-#X connect 21 0 23 0;
-#X connect 22 0 24 0;
-#X connect 23 0 19 0;
-#X connect 24 0 23 0;
-#X connect 24 1 21 0;
-#X connect 25 0 19 0;
-#X connect 26 0 19 1;
-#X connect 27 0 22 0;
-#X connect 28 0 27 0;
-#X connect 29 0 31 0;
-#X connect 30 0 19 0;
-#X connect 31 0 30 0;
-#X connect 31 1 32 0;
-#X connect 32 0 30 0;
-#X connect 33 0 29 0;
-#X connect 34 0 33 0;
diff --git a/externals/gridflow/doc/flow_classes/#fade-icon.png b/externals/gridflow/doc/flow_classes/#fade-icon.png
deleted file mode 100644
index 6b7f0fd1..00000000
--- a/externals/gridflow/doc/flow_classes/#fade-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#fade_lin-icon.png b/externals/gridflow/doc/flow_classes/#fade_lin-icon.png
deleted file mode 100644
index 086a8194..00000000
--- a/externals/gridflow/doc/flow_classes/#fade_lin-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#finished-icon.png b/externals/gridflow/doc/flow_classes/#finished-icon.png
deleted file mode 100644
index b4ec90ef..00000000
--- a/externals/gridflow/doc/flow_classes/#finished-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#fold-icon.png b/externals/gridflow/doc/flow_classes/#fold-icon.png
deleted file mode 100644
index 09898f18..00000000
--- a/externals/gridflow/doc/flow_classes/#fold-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#for-icon.png b/externals/gridflow/doc/flow_classes/#for-icon.png
deleted file mode 100644
index 607fe8cb..00000000
--- a/externals/gridflow/doc/flow_classes/#for-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#grade-icon.png b/externals/gridflow/doc/flow_classes/#grade-icon.png
deleted file mode 100644
index d94b8bf8..00000000
--- a/externals/gridflow/doc/flow_classes/#grade-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#greyscale_to_rgb-icon.png b/externals/gridflow/doc/flow_classes/#greyscale_to_rgb-icon.png
deleted file mode 100644
index 0a027327..00000000
--- a/externals/gridflow/doc/flow_classes/#greyscale_to_rgb-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#import-icon.png b/externals/gridflow/doc/flow_classes/#import-icon.png
deleted file mode 100644
index 7dc215ac..00000000
--- a/externals/gridflow/doc/flow_classes/#import-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#in-help.pd b/externals/gridflow/doc/flow_classes/#in-help.pd
deleted file mode 100644
index 6db03b52..00000000
--- a/externals/gridflow/doc/flow_classes/#in-help.pd
+++ /dev/null
@@ -1,135 +0,0 @@
-#N canvas 373 24 613 584 10;
-#X obj 123 779 #out window;
-#X obj 123 711 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 5 -9 cnv 15 90 1100 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 57 -1 #in;
-#X text 35 37 INLETS:;
-#X text 42 68 -LEFT:;
-#X text 102 -1 -IMPORTS GRIDS (IMAGES OR MOVIES);
-#X text 110 268 Message "close" closes the video input device. Only
-necessary if you are using a live capture device.;
-#X text 109 68 Bang sends a grid (static image or one frame of video)
-to [#out]. Successive bangs advance through the grid (frames of video).
-;
-#X text 110 119 Message "open" follwed by the filename \, ex: "open
-someimage.jpg" gives a grid (most often an image) to an [#out].;
-#X text 108 226 Interger will display the frame number of the frame
-just sent. Applies to formats that have frame numbers.;
-#X text 109 173 Message "set" \, followed by a number \, will select
-the video frame corresponding to the number. A bang must be sent in
-order to display the frame.;
-#X text 8 444 ARGUMENTS:;
-#X text 107 444 filename \, [#in someimage.jpg] eliminates the need
-for message "open someimage.jpg" but limits that image.;
-#X text 23 500 OUTLETS:;
-#X text 37 531 -LEFT:;
-#X text 110 530 Displays the resulting grid when connected to [#out]
-;
-#X text 29 574 -RIGHT:;
-#X text 109 574 Integer \, a numbner box will identify the frame number
-corresponding to the frame currently displayed.Applies only to formats
-that have frame numbers.;
-#X text 16 676 EXAMPLES:;
-#X text 112 313 Message "rewind" will rewind a video file to its beginning.
-;
-#X text 111 341 Message "loop 1" restarts a video each time it reaches
-the end. The loop option is on by default.;
-#X text 110 381 Message "loop 0" turns off the loop option. The video
-stops once it reaches the end.;
-#X text 110 624 Bang signals when a frame could not be read and signals
-the end of a file.;
-#X obj 123 755 #in;
-#X floatatom 402 752 5 0 0 0 - - -;
-#X msg 343 752 set 2;
-#X msg 131 733 open b001.jpg;
-#X text 137 685 for images:;
-#X obj 320 880 #out window;
-#X obj 320 711 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 320 833 #in;
-#X msg 326 730 open movie.mpeg;
-#X msg 404 802 loop 0;
-#X msg 466 804 loop 1;
-#X floatatom 336 859 5 0 0 0 - - -;
-#X msg 404 777 rewind;
-#X text 323 686 for video files:;
-#X obj 382 850 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 16 949 SEE ALSO:;
-#X text 367 1067 updated for GridFlow version 0.8.0;
-#N canvas 135 17 680 586 More_Info 0;
-#X msg 52 283 option timelog \$1;
-#X obj 52 263 tgl 15 0 empty empty empty 0 -6 0 8 -233017 -1 -1 0 1
-;
-#X text 274 307 upload a grid;
-#X text 261 80 upload a grid;
-#X text 194 108 open default display for screenshot;
-#X msg 73 134 open videodev /dev/video0;
-#X text 260 136 open a video device;
-#X msg 75 332 open x11 here;
-#X msg 87 356 open x11 local 10;
-#X text 182 285 show/hide timing statistics;
-#X text 178 334 connect to default display;
-#X text 218 358 connect to display #10 on this machine;
-#X msg 100 380 open x11 remote.host.bla.net 0;
-#X text 324 382 connect to remote machine on display #0;
-#X text 290 161 open mpeg video stream;
-#X text 272 155 *;
-#X text 36 558 * path is where you started pd from. usually $home.
-;
-#X text 308 188 open an image file;
-#X msg 114 450 close;
-#X msg 90 161 open lsd.mpeg;
-#X msg 55 107 open x11 here;
-#X msg 35 80 open host.bla.net 7777;
-#X msg 113 404 open img/bla.jpg;
-#X text 300 405 open single file in jpg format;
-#X msg 108 186 open ./img/bla.jpg;
-#X text 35 481 incoming file is sent through the opened device/socket/file.
-in single file formats subsequent pictures overwrite the preceeding
-one. there are many more options. for more information see the reference
-manual in the "formats" and "objects for input/output" sections.;
-#X msg 65 307 open x.test.at 7777;
-#X msg 125 426 open window;
-#X text 228 426 opens a window x11 \, quartz or sdl;
-#X text 577 15 comment;
-#X obj 35 213 #in;
-#X obj 35 441 #out;
-#X text 14 15 #in \, #out communicating grids (pictures) to/from devices
-\, sockets \, files;
-#X connect 0 0 31 0;
-#X connect 1 0 0 0;
-#X connect 5 0 30 0;
-#X connect 7 0 31 0;
-#X connect 8 0 31 0;
-#X connect 12 0 31 0;
-#X connect 18 0 31 0;
-#X connect 19 0 30 0;
-#X connect 20 0 30 0;
-#X connect 21 0 30 0;
-#X connect 22 0 31 0;
-#X connect 24 0 30 0;
-#X connect 26 0 31 0;
-#X connect 27 0 31 0;
-#X connect 30 0 31 0;
-#X restore 105 951 pd More_Info;
-#X obj 105 990 #import ( 1 );
-#X obj 202 990 #export;
-#X obj 257 990 #export_list;
-#X obj 347 990 #export_symbol;
-#X obj 453 989 #pack;
-#X connect 1 0 24 0;
-#X connect 24 0 0 0;
-#X connect 25 0 31 0;
-#X connect 26 0 31 0;
-#X connect 27 0 24 0;
-#X connect 30 0 31 0;
-#X connect 31 0 29 0;
-#X connect 31 1 35 0;
-#X connect 31 1 38 0;
-#X connect 32 0 31 0;
-#X connect 33 0 31 0;
-#X connect 34 0 31 0;
-#X connect 36 0 31 0;
diff --git a/externals/gridflow/doc/flow_classes/#inner-icon.png b/externals/gridflow/doc/flow_classes/#inner-icon.png
deleted file mode 100644
index 6da9db08..00000000
--- a/externals/gridflow/doc/flow_classes/#inner-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#join-icon.png b/externals/gridflow/doc/flow_classes/#join-icon.png
deleted file mode 100644
index d13aefc0..00000000
--- a/externals/gridflow/doc/flow_classes/#join-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#layer-icon.png b/externals/gridflow/doc/flow_classes/#layer-icon.png
deleted file mode 100644
index 19a839fa..00000000
--- a/externals/gridflow/doc/flow_classes/#layer-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#numop-help.pd b/externals/gridflow/doc/flow_classes/#numop-help.pd
deleted file mode 100644
index 22e54eb0..00000000
--- a/externals/gridflow/doc/flow_classes/#numop-help.pd
+++ /dev/null
@@ -1,366 +0,0 @@
-#N canvas 106 82 735 448 10;
-#X obj 278 136 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 410 cnv 15 720 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X obj 8 8 cnv 15 720 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 278 222 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 267 46 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 270 45 Arguments:;
-#X obj 268 292 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 271 292 Outlets:;
-#X obj 8 46 cnv 15 250 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 11 46 Usage:;
-#X obj 8 67 cnv 15 250 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 104 cnv 15 250 300 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 266 355 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 269 355 More Info:;
-#X text 281 136 0: (Leftmost);
-#X text 281 222 1: (Rightmost);
-#X text 12 8 SUMMARY:;
-#X text 73 8 Transforms a grid by applying mathematical operations
-in order to generate effects on a pixel by pixel basis.;
-#X obj 109 76 # +;
-#X floatatom 31 234 5 0 0 0 - - -;
-#X obj 42 288 display;
-#X obj 15 149 #color;
-#X msg 15 116 255 0 0;
-#X obj 15 331 #color;
-#X text 281 74 One - see: inlet 1: (Rightmost);
-#X obj 267 101 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 270 101 Inlets: (Read left to right \, inlet "0" being the
-leftmost);
-#X text 283 313 One - outputs the transformed grid.;
-#X text 16 417 GridFlow 0.8.0;
-#X obj 15 258 # +;
-#X text 292 242 Integer - Accepts integers that modify the incoming
-grid.;
-#N canvas 15 0 912 644 numop 0;
-#X text 76 366 A + B;
-#X text 77 510 A * B;
-#X text 73 571 rounded towards zero;
-#X text 14 73 angles are in hundredth of degrees \, so a full circle
-(two pi radians) is 36000 you can convert from radians to our angles
-by multiplying by 18000/pi.;
-#X text 13 44 for all of these \, A refers to the left inlet and B
-to the value on the right.;
-#X text 15 27 Consult doc/architecture.html to see all the 40 of them.
-;
-#X text 902 31 GridFlow 0.8.0;
-#X obj 479 70 #color;
-#X obj 684 72 #color;
-#X msg 15 366 op +;
-#X msg 15 507 op *;
-#X obj 15 385 s op;
-#X obj 423 155 r op;
-#X obj 15 526 s op;
-#X obj 15 436 s op;
-#X text 77 421 A - B;
-#X msg 15 417 op -;
-#X obj 15 761 s op;
-#X msg 15 742 op %;
-#X text 69 743 A % B;
-#X obj 15 575 s op;
-#X msg 15 556 op /;
-#X text 79 557 A / B;
-#X obj 14 809 s op;
-#X text 83 790 B % A;
-#X text 15 14 Numeric Operators: *whoa \, there's a lot of them;
-#X obj 16 482 s op;
-#X msg 16 463 op inv+;
-#X text 79 464 B -A;
-#X obj 15 623 s op;
-#X text 79 605 A / B;
-#X msg 15 604 op div;
-#X text 75 621 rounded downwards;
-#X obj 15 668 s op;
-#X msg 15 649 op inv*;
-#X text 80 650 B / A;
-#X text 77 665 rounded towards 0;
-#X obj 15 712 s op;
-#X text 76 714 rounded downwards;
-#X text 101 695 B / A;
-#X text 68 760 modulo (goes with div);
-#X text 65 809 modulo (goes with div);
-#X msg 14 790 op swap%;
-#X obj 15 286 s op;
-#X obj 15 334 s op;
-#X msg 15 267 op ignore;
-#X text 90 268 A;
-#X msg 15 315 op put;
-#X text 76 315 B;
-#X msg 15 693 op swapdiv;
-#X obj 237 286 s op;
-#X msg 237 267 op rem;
-#X text 315 263 A % B;
-#X obj 236 338 s op;
-#X text 330 319 B % A;
-#X text 314 278 remainder;
-#X text 314 293 (goes with /);
-#X msg 236 319 op swaprem;
-#X text 327 333 remainder;
-#X text 326 348 (goes with /);
-#X obj 236 388 s op;
-#X obj 236 435 s op;
-#X msg 236 369 op gcd;
-#X msg 236 416 op lcm;
-#X text 298 373 greatest common divisor;
-#X text 298 420 least common multiple;
-#X obj 235 481 s op;
-#X text 299 464 A or B \, bitwise;
-#X msg 235 462 op;
-#X obj 235 525 s op;
-#X text 299 508 A xor B \, bitwise;
-#X msg 235 506 op ^;
-#X obj 235 578 s op;
-#X msg 235 559 op &;
-#X text 300 561 A and B \, bitwise;
-#X obj 235 623 s op;
-#X msg 235 604 op <<;
-#X text 300 606 A * (2**(B % 32);
-#X text 299 621 left-shifthing;
-#X obj 235 669 s op;
-#X msg 235 649 op >>;
-#X text 299 666 right-shifthing;
-#X text 300 652 A / (2**(B % 32);
-#X obj 218 463 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X obj 235 714 s op;
-#X msg 235 695 op;
-#X obj 218 695 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X text 299 697 if A is zero then;
-#X text 300 711 B else A;
-#X obj 235 758 s op;
-#X text 299 741 if A is zero then;
-#X text 15 110 comment;
-#X msg 235 739 op &&;
-#X text 300 755 zero else B;
-#X obj 236 807 s op;
-#X msg 236 788 op min;
-#X text 300 789 the lowest value;
-#X text 301 804 in A \, B;
-#X obj 500 287 s op;
-#X msg 500 267 op max;
-#X text 556 284 in A \, B;
-#X text 557 268 the highest value;
-#X obj 500 333 s op;
-#X msg 500 313 op cmp;
-#X text 551 310 -1 when A<B;
-#X text 558 338 1 when A>B;
-#X text 558 324 0 when A=B;
-#X obj 500 386 s op;
-#X msg 500 366 op ==;
-#X text 557 367 is A equal to B ?;
-#X text 556 385 1 = true \, 0 = false;
-#X obj 500 433 s op;
-#X msg 500 413 op !=;
-#X text 557 414 is A not equal to B ?;
-#X obj 500 477 s op;
-#X msg 500 456 op >;
-#X text 557 457 is A greater than B ?;
-#X obj 500 523 s op;
-#X msg 500 502 op <=;
-#X text 557 503 is A not greater than B ?;
-#X obj 500 572 s op;
-#X msg 500 551 op <;
-#X text 557 552 is A less than B ?;
-#X obj 500 618 s op;
-#X msg 500 597 op >=;
-#X text 557 598 is A not less than B ?;
-#X obj 500 666 s op;
-#X msg 500 645 op sin*;
-#X text 559 646 B * sin(A);
-#X obj 500 713 s op;
-#X msg 500 691 op cos*;
-#X text 560 693 B * cos(A);
-#X obj 500 758 s op;
-#X msg 500 736 op atan;
-#X text 560 737 arctan(A/B);
-#X obj 499 805 s op;
-#X msg 499 783 op tan*;
-#X text 559 784 tanh(A);
-#X obj 738 288 s op;
-#X msg 738 268 op log*;
-#X text 795 269 B*log(A);
-#X text 794 286 in base e;
-#X obj 738 334 s op;
-#X msg 738 314 op gamma;
-#X text 809 314 floor(pow(a/256.0 \, 256.0/b)*256.0);
-#X obj 737 385 s op;
-#X msg 737 366 op **;
-#X text 799 368 A**B;
-#X text 799 385 A raised to power B;
-#X obj 737 431 s op;
-#X msg 737 412 op abs-;
-#X text 799 412 absolute value of (A-B);
-#X obj 737 478 s op;
-#X msg 737 459 op rand;
-#X text 800 473 number below A;
-#X text 799 458 randomly produces a non-negative;
-#X obj 737 524 s op;
-#X msg 737 505 op sqrt;
-#X text 799 504 square root of A;
-#X text 800 519 rounded downwards;
-#X obj 737 566 s op;
-#X msg 737 547 op sq-;
-#X text 800 546 (A-B) times (A-B);
-#X obj 740 614 s op;
-#X obj 723 595 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X msg 740 595 op clip+;
-#X text 808 595 A+B but output is clipped;
-#X obj 740 660 s op;
-#X obj 723 641 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X msg 740 641 op clip-;
-#X text 808 641 A-B but output is clipped;
-#X obj 740 706 s op;
-#X obj 740 750 s op;
-#X text 808 687 (A+B)/2;
-#X msg 740 687 op avg;
-#X msg 740 731 op hypot;
-#X text 808 731 square root of (A*A+B*B);
-#X obj 740 792 s op;
-#X obj 723 773 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X msg 740 773 op erf;
-#X text 807 773 integral of e^(-x*x)dx;
-#N canvas 8 30 615 351 all_operators 0;
-#X obj 174 99 # -;
-#X obj 522 97 # swap%;
-#X obj 186 177 # abs-;
-#X obj 238 177 # rand;
-#X obj 342 177 # sq-;
-#X obj 290 177 # sqrt;
-#X obj 144 99 # +;
-#X obj 492 97 # %;
-#X obj 260 99 # *;
-#X obj 289 99 # /;
-#X obj 206 99 # inv+;
-#X obj 321 99 # div;
-#X obj 367 98 # inv*;
-#X obj 420 98 # swapdiv;
-#X obj 35 99 # ignore;
-#X obj 100 100 # put;
-#X obj 35 125 # rem;
-#X obj 78 125 # swaprem;
-#X obj 149 125 # gcd;
-#X obj 191 125 # lcm;
-#X obj 234 125 # |;
-#X obj 234 125 # |;
-#X obj 263 125 # ^;
-#X obj 293 125 # &;
-#X obj 322 125 # <<;
-#X obj 358 125 # >>;
-#X obj 394 125 # ||;
-#X obj 431 125 # &&;
-#X obj 467 125 # min;
-#X obj 35 151 # max;
-#X obj 79 151 # cmp;
-#X obj 124 151 # ==;
-#X obj 162 151 # !=;
-#X obj 199 151 # >;
-#X obj 234 151 # <=;
-#X obj 274 151 # <;
-#X obj 304 152 # >=;
-#X obj 341 152 # sin*;
-#X obj 391 152 # cos*;
-#X obj 442 152 # atan;
-#X obj 493 152 # tanh*;
-#X obj 35 177 # log*;
-#X obj 87 177 # gamma;
-#X obj 148 177 # **;
-#X obj 388 177 # avg;
-#X obj 433 177 # hypot;
-#X restore 15 174 pd all_operators;
-#X text 585 31 select values below;
-#X text 14 233 select an operator below;
-#X text 478 51 A;
-#X text 683 53 B;
-#X obj 479 182 # +;
-#X obj 257 196 #color;
-#X obj 297 162 #reverse;
-#X obj 443 215 display;
-#X obj 656 197 #unpack 3;
-#X floatatom 605 244 5 0 0 0 - - -;
-#X obj 642 150 t a a;
-#X obj 597 191 display;
-#X connect 7 0 186 0;
-#X connect 7 0 188 0;
-#X connect 7 0 192 0;
-#X connect 8 0 186 1;
-#X connect 9 0 11 0;
-#X connect 10 0 13 0;
-#X connect 12 0 186 0;
-#X connect 16 0 14 0;
-#X connect 18 0 17 0;
-#X connect 21 0 20 0;
-#X connect 27 0 26 0;
-#X connect 31 0 29 0;
-#X connect 34 0 33 0;
-#X connect 42 0 23 0;
-#X connect 45 0 43 0;
-#X connect 47 0 44 0;
-#X connect 49 0 37 0;
-#X connect 51 0 50 0;
-#X connect 57 0 53 0;
-#X connect 62 0 60 0;
-#X connect 63 0 61 0;
-#X connect 68 0 66 0;
-#X connect 71 0 69 0;
-#X connect 73 0 72 0;
-#X connect 76 0 75 0;
-#X connect 80 0 79 0;
-#X connect 85 0 84 0;
-#X connect 92 0 89 0;
-#X connect 95 0 94 0;
-#X connect 99 0 98 0;
-#X connect 103 0 102 0;
-#X connect 108 0 107 0;
-#X connect 112 0 111 0;
-#X connect 115 0 114 0;
-#X connect 118 0 117 0;
-#X connect 121 0 120 0;
-#X connect 124 0 123 0;
-#X connect 127 0 126 0;
-#X connect 130 0 129 0;
-#X connect 133 0 132 0;
-#X connect 136 0 135 0;
-#X connect 139 0 138 0;
-#X connect 143 0 142 0;
-#X connect 146 0 145 0;
-#X connect 150 0 149 0;
-#X connect 153 0 152 0;
-#X connect 157 0 156 0;
-#X connect 161 0 160 0;
-#X connect 165 0 163 0;
-#X connect 169 0 167 0;
-#X connect 174 0 171 0;
-#X connect 175 0 172 0;
-#X connect 179 0 177 0;
-#X connect 188 0 187 0;
-#X connect 188 0 189 0;
-#X connect 190 0 191 0;
-#X connect 192 0 193 0;
-#X connect 192 1 190 0;
-#X restore 265 380 pd numop;
-#X text 290 157 Grid - Accepts a grid to be modified by an operator
-consistent with the right inlet value (list of operators in [pd numop]).
-In this example [# +] is used.;
-#X text 72 234 <-- change this value to modify the operation.;
-#X text 193 154 <--modify color with sliders.;
-#X connect 19 0 29 1;
-#X connect 21 0 29 0;
-#X connect 22 0 21 0;
-#X connect 29 0 20 0;
-#X connect 29 0 23 0;
diff --git a/externals/gridflow/doc/flow_classes/#outer-icon.png b/externals/gridflow/doc/flow_classes/#outer-icon.png
deleted file mode 100644
index 7c9c4ed7..00000000
--- a/externals/gridflow/doc/flow_classes/#outer-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#pack-help.pd b/externals/gridflow/doc/flow_classes/#pack-help.pd
deleted file mode 100644
index b2bff45a..00000000
--- a/externals/gridflow/doc/flow_classes/#pack-help.pd
+++ /dev/null
@@ -1,75 +0,0 @@
-#N canvas 29 63 693 623 10;
-#X obj 8 3 cnv 15 90 578 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 45 273 INLETS:;
-#X text 42 304 - LEFT:;
-#X text 33 410 OUTLETS:;
-#X text 28 53 EXAMPLES:;
-#X text 24 506 SEE ALSO:;
-#N canvas 247 137 487 505 More_Info 0;
-#X text 485 23 GridFlow 0.8.0;
-#X obj 523 257 #unpack 3;
-#X floatatom 513 305 5 0 0 0 - - -;
-#X obj 416 190 t a a;
-#X obj 333 301 display;
-#X floatatom 552 305 5 0 0 0 - - -;
-#X floatatom 591 305 5 0 0 0 - - -;
-#X text -48 51 [#unpack];
-#X obj 530 352 #pack 3;
-#X text -49 122 It takes an integer as an argument to specify the number
-of Dimensions the incoming grid has.;
-#X obj 416 76 #color;
-#X obj 516 411 #color;
-#X text -48 84 Accepts grids in its inlet and produces integers via
-its outlet.;
-#X text -39 349 [#pack];
-#X text -39 382 Accepts integers in its inlets and produces a corresponding
-grid via its outlet.;
-#X text -40 421 It takes an integer as an argument to specify the number
-of incoming integers and the corresponding number of Dimensions the
-outgoing grid will have.;
-#X obj 483 332 - 127;
-#X obj -31 190 trigger bang bang;
-#X obj 166 178 metro 100;
-#X obj 89 345 display;
-#X obj 174 272 print blah;
-#X obj 145 316 print blah2;
-#X obj 122 155 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
-1;
-#X connect 1 0 2 0;
-#X connect 1 1 5 0;
-#X connect 1 2 6 0;
-#X connect 2 0 16 0;
-#X connect 3 0 4 0;
-#X connect 3 1 1 0;
-#X connect 5 0 8 1;
-#X connect 6 0 8 2;
-#X connect 8 0 11 0;
-#X connect 10 0 3 0;
-#X connect 16 0 8 0;
-#X connect 18 0 19 0;
-#X connect 18 0 20 0;
-#X connect 18 0 21 0;
-#X connect 22 0 18 0;
-#X restore 119 550 pd More_Info;
-#X text 36 435 - LEFT:;
-#X text 412 575 updated for GridFlow version 0.8.0;
-#X obj 47 13 #pack;
-#X text 183 183 comment;
-#X obj 120 173 #color;
-#X floatatom 120 65 5 0 0 0 - - -;
-#X floatatom 142 93 5 0 0 0 - - -;
-#X floatatom 164 121 5 0 0 0 - - -;
-#X obj 120 147 #pack 3;
-#X text 25 346 ARGUMENT:;
-#X text 120 304 Grid - combination of inputs.;
-#X text 104 436 Grid - combination of inputs given by inlets.;
-#X text 114 344 Interger - defines the number of inlets and the amount
-of outcoming grid dimensions.;
-#X obj 121 511 #unpack 3;
-#X text 114 13 Creates a vector (a list of numbers) from individual
-integers.;
-#X connect 12 0 15 0;
-#X connect 13 0 15 1;
-#X connect 14 0 15 2;
-#X connect 15 0 11 0;
diff --git a/externals/gridflow/doc/flow_classes/#pack-icon.png b/externals/gridflow/doc/flow_classes/#pack-icon.png
deleted file mode 100644
index 21ee761b..00000000
--- a/externals/gridflow/doc/flow_classes/#pack-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#pack_and_#unpack-help.pd b/externals/gridflow/doc/flow_classes/#pack_and_#unpack-help.pd
deleted file mode 100644
index 87fa2694..00000000
--- a/externals/gridflow/doc/flow_classes/#pack_and_#unpack-help.pd
+++ /dev/null
@@ -1,85 +0,0 @@
-#N canvas 109 540 736 659 10;
-#X obj 268 124 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X obj 278 148 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 641 cnv 15 720 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X obj 7 5 cnv 15 720 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 268 43 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 271 43 Arguments:;
-#X obj 268 267 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 271 267 Outlets:;
-#X obj 8 43 cnv 15 250 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 11 43 Usage:;
-#X obj 8 63 cnv 15 250 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 100 cnv 15 250 200 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 271 124 Inlets: (Read left to right \, inlet "0" being the
-leftmost);
-#X obj 80 71 #pack;
-#X text 11 5 SUMMARY:;
-#X text 76 5 Creates a one dimentional grid (Dim(N) vector) from individual
-integers.;
-#X obj 30 222 #color;
-#X floatatom 30 114 5 0 0 0 - - -;
-#X floatatom 52 142 5 0 0 0 - - -;
-#X floatatom 74 170 5 0 0 0 - - -;
-#X obj 30 196 #pack 3;
-#X text 283 63 One - [integer] defines the number of inlets and the
-amount of grid dimensions.;
-#X text 289 175 Integer - accepts multiple integers as defined by the
-argument and creates a vector.;
-#X text 283 287 One - outputs values from each individual inlet.;
-#X obj 270 483 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X obj 281 503 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 7 335 cnv 15 720 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 268 373 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 271 373 Arguments:;
-#X obj 268 595 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 271 595 Outlets:;
-#X obj 8 373 cnv 15 250 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 11 373 Usage:;
-#X obj 8 393 cnv 15 250 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 430 cnv 15 250 200 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 273 482 Inlets: (Read left to right \, inlet "0" being the
-leftmost);
-#X text 11 335 SUMMARY:;
-#X obj 79 400 #unpack;
-#X obj 30 518 #unpack 3;
-#X obj 30 451 #color;
-#X floatatom 30 601 5 0 0 0 - - -;
-#X floatatom 59 574 5 0 0 0 - - -;
-#X floatatom 88 549 5 0 0 0 - - -;
-#X text 283 393 One - [integer] defines the number of outlets and the
-amount of grid dimensions.;
-#X text 281 148 All:;
-#X text 283 503 All:;
-#X text 284 529 Grid - receives grids and outputs integers.;
-#X text 289 218 Grid - receives grids and outputs integers.;
-#X text 77 335 Outputs individual integers corresponding to the vector
-dimensions (number of elements in a grid).;
-#X text 284 615 All - outputs the vector dimensions as individual integers.
-;
-#X text 17 648 GridFlow 0.8.0;
-#X connect 17 0 20 0;
-#X connect 18 0 20 1;
-#X connect 19 0 20 2;
-#X connect 20 0 16 0;
-#X connect 38 0 40 0;
-#X connect 38 1 41 0;
-#X connect 38 2 42 0;
-#X connect 39 0 38 0;
diff --git a/externals/gridflow/doc/flow_classes/#perspective-icon.png b/externals/gridflow/doc/flow_classes/#perspective-icon.png
deleted file mode 100644
index 23d6f492..00000000
--- a/externals/gridflow/doc/flow_classes/#perspective-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#posterize-icon.png b/externals/gridflow/doc/flow_classes/#posterize-icon.png
deleted file mode 100644
index 0dd80c0f..00000000
--- a/externals/gridflow/doc/flow_classes/#posterize-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#print-help.pd b/externals/gridflow/doc/flow_classes/#print-help.pd
deleted file mode 100644
index cea6ebd8..00000000
--- a/externals/gridflow/doc/flow_classes/#print-help.pd
+++ /dev/null
@@ -1,68 +0,0 @@
-#N canvas 38 0 738 404 10;
-#X obj 269 196 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X obj 279 217 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 7 369 cnv 15 720 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X obj 8 6 cnv 15 720 40 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 268 53 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 271 53 Arguments:;
-#X obj 8 53 cnv 15 250 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 11 53 Usage:;
-#X obj 8 73 cnv 15 250 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 271 305 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 272 196 Inlets: (Read left to right \, inlet "0" being the
-leftmost);
-#X text 282 217 0: (Leftmost);
-#X obj 8 110 cnv 15 250 250 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 105 79 #print;
-#X text 12 6 SUMMARY:;
-#X floatatom 167 212 5 0 0 0 - - -;
-#X floatatom 189 233 5 0 0 0 - - -;
-#X floatatom 211 253 5 0 0 0 - - -;
-#X obj 34 202 until;
-#X msg 34 176 27;
-#X obj 34 226 random 27;
-#X obj 167 272 #pack 3;
-#X obj 34 251 #import ( 3 3 3 );
-#X msg 35 118 open r001.jpg;
-#X obj 15 150 #in;
-#X obj 12 118 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 155 189 view grid info;
-#X text 101 344 view result in console;
-#X text 274 305 Related objects:;
-#X obj 460 336 rubyprint;
-#X obj 530 329 printargs;
-#X obj 279 336 #dim;
-#X obj 314 336 #export;
-#X obj 369 336 #export_list;
-#X obj 600 329 print;
-#X text 15 376 GridFLow 0.8.0;
-#X text 73 6 Displays the dimensions of a grid in the console. If the
-grid has less than two dimensions it will display all grid data.;
-#X text 284 123 Symbol - Adds a symbol (text) as a prefix before the
-printed element in the console.;
-#X text 283 87 Integer - Adds a number as a prefix before the element
-printed in the console. See here;
-#X text 282 246 Grid - Receives and outputs the dimensions of a grid.
-;
-#X obj 15 319 #print paprika;
-#X connect 15 0 21 0;
-#X connect 16 0 21 1;
-#X connect 17 0 21 2;
-#X connect 18 0 20 0;
-#X connect 19 0 18 0;
-#X connect 20 0 22 0;
-#X connect 21 0 40 0;
-#X connect 22 0 40 0;
-#X connect 23 0 24 0;
-#X connect 24 0 40 0;
-#X connect 25 0 24 0;
diff --git a/externals/gridflow/doc/flow_classes/#print-help2.pd b/externals/gridflow/doc/flow_classes/#print-help2.pd
deleted file mode 100644
index d06eeebc..00000000
--- a/externals/gridflow/doc/flow_classes/#print-help2.pd
+++ /dev/null
@@ -1,113 +0,0 @@
-#N canvas 186 33 771 654 10;
-#X obj 268 45 cnv 15 460 15 empty empty empty 20 12 0 14 -158509 -66577
-0;
-#X obj 278 65 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 483 cnv 15 720 30 empty empty empty 20 12 0 14 -158509 -66577
-0;
-#X obj 8 513 cnv 15 720 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 5 cnv 15 720 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 12 525 KEYWORDS: control number float store;
-#X text 12 515 CATAGORY: control;
-#X text 281 65 Left:;
-#X obj 268 305 cnv 15 460 15 empty empty empty 20 12 0 14 -158509 -66577
-0;
-#X text 271 305 Arguments:;
-#X text 283 325 One - [float] accepts a single float as a creation
-argument which initializes the first value to be sent out the left
-outlet.;
-#X obj 268 375 cnv 15 460 15 empty empty empty 20 12 0 14 -158509 -66577
-0;
-#X text 271 375 Outlets:;
-#X text 283 395 One - outputs the stored floating point value of the
-object.;
-#X obj 8 45 cnv 15 250 15 empty empty empty 20 12 0 14 -158509 -66577
-0;
-#X text 11 45 Usage:;
-#X obj 8 65 cnv 15 250 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 103 cnv 15 250 350 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 150 73 f;
-#X text 126 73 OR;
-#X obj 452 489 pddp;
-#N canvas 58 22 261 146 Related_Objects 0;
-#X obj 3 87 cnv 15 250 15 empty empty empty 20 12 0 14 -158509 -66577
-0;
-#X obj 5 6 cnv 15 250 15 empty empty empty 20 12 0 14 -158509 -66577
-0;
-#X obj 3 107 cnv 15 250 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 69 113 randomF;
-#X obj 138 113 lister;
-#X text 7 6 Native PD Objects (internals);
-#X text 5 87 Externals and libraries;
-#X obj 4 27 cnv 15 250 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 70 34 int;
-#X obj 137 34 symbol;
-#X restore 15 490 pd Related_Objects;
-#N canvas 57 22 517 577 More_Info 0;
-#X text 43 24 All numbers in PD are kept in 32-bit floating point and
-can represent real numbers between -8 \, 388608 and 8.388.608.00;
-#X text 11 78 WHAT IS A FLOATING POINT NUMBER?;
-#X text 41 267 The following are examples of floating point numbers:
-;
-#X text 61 293 3;
-#X text 62 334 -111.5;
-#X text 61 313 0.5;
-#X text 40 387 3e-05 : This example is a computer shorthand for scientific
-notation. It means 3*10-5 (or 10 to the negative 5th power multiplied
-by 3).;
-#X text 41 108 According to Webopedia.com \, "computers are integer
-machines and are capable of representing real numbers only by using
-complex codes." Hence \, real numbers must be 'approximated' by computers
-using the "floating point standard". In such a number \, the decimal
-point can "float" meaning that there is no fixed number of digits preceding
-or following the decimal. A floating point number is therefore a computer's
-approximation of a real number.;
-#X text 43 453 Interesting side-note: In the early 1990's \, the Intel
-80486 was shipped with a math coprocessor to help accelerate the process
-of computing floating point numbers (which previously required a considerable
-amount of CPU power.) Math coprocessors have since found there way
-into nearly every graphics card and CPU available today.;
-#X text 62 358 10000 to 1e-16;
-#X restore 154 490 pd More_Info;
-#X text 496 490 - Dave Sabine \, November 18 \, 2002;
-#X text 10 459 doc/2.control.examples/sendnumber.pd - should be a bang/link
-;
-#X text 12 7 HELP: #print;
-#X text 12 17 DESCRIPTION: Displays values in the console.;
-#X obj 80 73 #print;
-#X text 271 45 Inlet:;
-#X text 301 111 Grid - receives a grid;
-#X floatatom 71 221 5 0 0 0 - - -;
-#X floatatom 93 242 5 0 0 0 - - -;
-#X floatatom 115 262 5 0 0 0 - - -;
-#X obj 133 349 until;
-#X msg 133 323 27;
-#X obj 133 373 random 27;
-#X obj 71 281 #pack 3;
-#X obj 133 398 #import ( 3 3 3 );
-#X obj 14 421 #print;
-#X msg 39 139 open r001.jpg;
-#X obj 39 167 #in;
-#X obj 16 139 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 65 420 <-- view result in console;
-#X text 12 106 view grid dimensions;
-#X text 71 190 view grid info;
-#X text 297 141 Integer - jhu;
-#X connect 30 0 36 0;
-#X connect 31 0 36 1;
-#X connect 32 0 36 2;
-#X connect 33 0 35 0;
-#X connect 34 0 33 0;
-#X connect 35 0 37 0;
-#X connect 36 0 38 0;
-#X connect 37 0 38 0;
-#X connect 39 0 40 0;
-#X connect 40 0 38 0;
-#X connect 41 0 40 0;
diff --git a/externals/gridflow/doc/flow_classes/#print-icon.png b/externals/gridflow/doc/flow_classes/#print-icon.png
deleted file mode 100644
index 94952881..00000000
--- a/externals/gridflow/doc/flow_classes/#print-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#ravel-icon.png b/externals/gridflow/doc/flow_classes/#ravel-icon.png
deleted file mode 100644
index 0e407c9a..00000000
--- a/externals/gridflow/doc/flow_classes/#ravel-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#redim-icon.png b/externals/gridflow/doc/flow_classes/#redim-icon.png
deleted file mode 100644
index f931a2c9..00000000
--- a/externals/gridflow/doc/flow_classes/#redim-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#remap_image-help.pd b/externals/gridflow/doc/flow_classes/#remap_image-help.pd
deleted file mode 100644
index 95dab924..00000000
--- a/externals/gridflow/doc/flow_classes/#remap_image-help.pd
+++ /dev/null
@@ -1,73 +0,0 @@
-#N canvas 95 151 750 524 10;
-#X obj 268 25 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X obj 278 68 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 442 cnv 15 720 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X obj 8 5 cnv 15 720 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 278 140 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 268 259 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 271 259 Outlets:;
-#X obj 8 25 cnv 15 250 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 11 25 Usage:;
-#X obj 8 45 cnv 15 250 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 81 cnv 15 250 355 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 271 25 Inlets: (Read left to right \, inlet "0" being the leftmost)
-;
-#X text 281 68 0: (Leftmost);
-#X text 281 140 1: (Rightmost);
-#X text 12 5 SUMMARY: Transforms a grid by displacing pixels.;
-#X obj 84 51 #remap_image;
-#X text 292 88 Grid - Receives a grid that is to be transformed by
-the object connected to the rightmost inlet.;
-#X text 291 159 Numop - Receives a numereic operator \, pixel positions
-are displaced according to the mathematic operation. Click here for
-more transformation options.;
-#X msg 48 143 open b001.jpg;
-#X obj 18 86 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 18 174 #in;
-#X obj 18 112 t b b;
-#X obj 18 411 #out window;
-#X obj 97 383 #print;
-#X obj 57 213 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X floatatom 101 285 5 0 0 0 - - -;
-#X obj 68 244 #for (0 0) (240 320) (1 1);
-#X obj 82 212 metro 100;
-#X obj 82 187 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
-;
-#X obj 97 317 # /;
-#X obj 18 352 #remap_image;
-#X text 16 449 GridFlow 0.8.0;
-#X text 281 295 comment;
-#X text 285 294 comment;
-#X obj 282 299 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 281 355 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 285 299 0: (Leftmost);
-#X text 284 355 1: (Rightmost);
-#X text 296 323 Grid - Outputs the transformend image.;
-#X text 288 375 Numop - Displays the displaced values.;
-#X text 145 284 <-- Modify the value to see transformations.;
-#X connect 18 0 20 0;
-#X connect 19 0 21 0;
-#X connect 20 0 30 0;
-#X connect 21 0 20 0;
-#X connect 21 1 18 0;
-#X connect 24 0 26 0;
-#X connect 25 0 29 1;
-#X connect 26 0 29 0;
-#X connect 27 0 26 0;
-#X connect 28 0 27 0;
-#X connect 29 0 30 1;
-#X connect 30 0 22 0;
-#X connect 30 1 23 0;
diff --git a/externals/gridflow/doc/flow_classes/#remap_image-icon.png b/externals/gridflow/doc/flow_classes/#remap_image-icon.png
deleted file mode 100644
index 6a22c134..00000000
--- a/externals/gridflow/doc/flow_classes/#remap_image-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#reverse-help.pd b/externals/gridflow/doc/flow_classes/#reverse-help.pd
deleted file mode 100644
index 441e9d40..00000000
--- a/externals/gridflow/doc/flow_classes/#reverse-help.pd
+++ /dev/null
@@ -1,46 +0,0 @@
-#N canvas 599 113 566 552 10;
-#X text 428 11 GridFlow 0.8.0;
-#X obj 258 207 #color;
-#X obj 288 391 #color;
-#X obj 259 476 display;
-#X text 15 27 [#reverse];
-#X obj 258 359 t a a;
-#X text 15 57 Swaps the values of incoming grids while preserving the
-number of Dimensions between incoming and outgoing grids.;
-#X obj 22 287 #in;
-#X obj 22 206 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X msg 52 256 open b001.jpg;
-#X obj 22 401 #out window;
-#X obj 87 289 hradio 15 1 0 6 empty empty empty 0 -6 0 8 -260818 -1
--1 5;
-#X obj 87 307 - 3;
-#X floatatom 87 327 5 0 0 0 - - -;
-#X text 16 107 0 vertical;
-#X text 16 122 1 horizontal;
-#X text 16 135 2 rgb <-> bgr;
-#X text 16 150 -1 \, -2 \, -3 \, swaps the specicied dimensions;
-#X text 16 92 An int argument changes the behavior in this way :;
-#X obj 22 228 t b b;
-#X obj 22 344 #reverse 0;
-#X obj 258 330 #reverse 0;
-#X obj 323 275 hradio 15 1 0 6 empty empty empty 0 -6 0 8 -260818 -1
--1 0;
-#X obj 323 293 - 3;
-#X floatatom 323 313 5 0 0 0 - - -;
-#X connect 1 0 21 0;
-#X connect 5 0 3 0;
-#X connect 5 1 2 0;
-#X connect 7 0 20 0;
-#X connect 8 0 19 0;
-#X connect 9 0 7 0;
-#X connect 11 0 12 0;
-#X connect 12 0 13 0;
-#X connect 13 0 20 1;
-#X connect 19 0 7 0;
-#X connect 19 1 9 0;
-#X connect 20 0 10 0;
-#X connect 21 0 5 0;
-#X connect 22 0 23 0;
-#X connect 23 0 24 0;
-#X connect 24 0 21 1;
diff --git a/externals/gridflow/doc/flow_classes/#rgb_to_greyscale-icon.png b/externals/gridflow/doc/flow_classes/#rgb_to_greyscale-icon.png
deleted file mode 100644
index f032691d..00000000
--- a/externals/gridflow/doc/flow_classes/#rgb_to_greyscale-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#rgb_to_yuv-help.pd b/externals/gridflow/doc/flow_classes/#rgb_to_yuv-help.pd
deleted file mode 100644
index 7ad7c3ec..00000000
--- a/externals/gridflow/doc/flow_classes/#rgb_to_yuv-help.pd
+++ /dev/null
@@ -1,11 +0,0 @@
-#N canvas 560 468 450 300 10;
-#X msg 112 64 open lena.jpg;
-#X obj 116 169 #out window;
-#X obj 88 19 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 52 84 #in;
-#X obj 60 132 #yuv_to_rgb;
-#X connect 0 0 3 0;
-#X connect 2 0 3 0;
-#X connect 3 0 4 0;
-#X connect 4 0 1 0;
diff --git a/externals/gridflow/doc/flow_classes/#rgb_to_yuv-icon.png b/externals/gridflow/doc/flow_classes/#rgb_to_yuv-icon.png
deleted file mode 100644
index 63a4119c..00000000
--- a/externals/gridflow/doc/flow_classes/#rgb_to_yuv-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#rgb_to_yuv_and_#yuv_to_rgb-help.pd b/externals/gridflow/doc/flow_classes/#rgb_to_yuv_and_#yuv_to_rgb-help.pd
deleted file mode 100644
index 8be0a8c3..00000000
--- a/externals/gridflow/doc/flow_classes/#rgb_to_yuv_and_#yuv_to_rgb-help.pd
+++ /dev/null
@@ -1,44 +0,0 @@
-#N canvas 98 384 737 338 10;
-#X obj 267 25 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X obj 279 77 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 306 cnv 15 720 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X obj 8 5 cnv 15 720 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 266 192 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 269 191 Outlets:;
-#X obj 8 25 cnv 15 250 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 11 25 Usage:;
-#X obj 8 45 cnv 15 250 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 81 cnv 15 250 220 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 270 25 Inlets: (Read left to right \, inlet "0" being the leftmost)
-;
-#X text 282 77 0: (Leftmost);
-#X text 12 5 SUMMARY:;
-#X obj 42 51 #rgb_to_yuv;
-#X obj 15 117 #for (0 0) (256 256) (1 1);
-#X obj 15 90 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 15 220 #clip;
-#X obj 15 143 #inner (2 3 # 0 1 0 0 0 1);
-#X obj 15 194 #yuv_to_rgb;
-#X obj 15 168 # + (200 0 0);
-#X obj 16 261 #peephole;
-#X text 289 99 Grid - Receives a grid in RGB or YUV format.;
-#X text 16 313 GridFlow 0.8.0;
-#X obj 135 51 #yuv_to_rgb;
-#X text 72 5 converts RGB colourspace to YUV colourspace or YUV to
-RGB.;
-#X text 291 224 One - outputs the converted grid.;
-#X connect 14 0 17 0;
-#X connect 15 0 14 0;
-#X connect 16 0 20 0;
-#X connect 17 0 19 0;
-#X connect 18 0 16 0;
-#X connect 19 0 18 0;
diff --git a/externals/gridflow/doc/flow_classes/#rotate-icon.png b/externals/gridflow/doc/flow_classes/#rotate-icon.png
deleted file mode 100644
index 5f7d0694..00000000
--- a/externals/gridflow/doc/flow_classes/#rotate-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#scale_by-icon.png b/externals/gridflow/doc/flow_classes/#scale_by-icon.png
deleted file mode 100644
index cf1c678b..00000000
--- a/externals/gridflow/doc/flow_classes/#scale_by-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#scale_to-icon.png b/externals/gridflow/doc/flow_classes/#scale_to-icon.png
deleted file mode 100644
index 06b45948..00000000
--- a/externals/gridflow/doc/flow_classes/#scale_to-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#scan-icon.png b/externals/gridflow/doc/flow_classes/#scan-icon.png
deleted file mode 100644
index fad5d0ba..00000000
--- a/externals/gridflow/doc/flow_classes/#scan-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#solarize-icon.png b/externals/gridflow/doc/flow_classes/#solarize-icon.png
deleted file mode 100644
index b5f95027..00000000
--- a/externals/gridflow/doc/flow_classes/#solarize-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#spread-icon.png b/externals/gridflow/doc/flow_classes/#spread-icon.png
deleted file mode 100644
index 7d8e7eee..00000000
--- a/externals/gridflow/doc/flow_classes/#spread-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#store-icon.png b/externals/gridflow/doc/flow_classes/#store-icon.png
deleted file mode 100644
index 73ffa715..00000000
--- a/externals/gridflow/doc/flow_classes/#store-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#transpose-icon.png b/externals/gridflow/doc/flow_classes/#transpose-icon.png
deleted file mode 100644
index eb911696..00000000
--- a/externals/gridflow/doc/flow_classes/#transpose-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#type-icon.png b/externals/gridflow/doc/flow_classes/#type-icon.png
deleted file mode 100644
index 6ff34e7c..00000000
--- a/externals/gridflow/doc/flow_classes/#type-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/#unpack-#pack-help.pd b/externals/gridflow/doc/flow_classes/#unpack-#pack-help.pd
deleted file mode 100644
index cc78d8fb..00000000
--- a/externals/gridflow/doc/flow_classes/#unpack-#pack-help.pd
+++ /dev/null
@@ -1,45 +0,0 @@
-#N canvas 245 108 834 542 10;
-#X text 485 23 GridFlow 0.8.0;
-#X obj 523 257 #unpack 3;
-#X floatatom 513 305 5 0 0 0 - - -;
-#X obj 416 190 t a a;
-#X obj 333 301 display;
-#X floatatom 552 305 5 0 0 0 - - -;
-#X floatatom 591 305 5 0 0 0 - - -;
-#X text -48 51 [#unpack];
-#X obj 530 352 #pack 3;
-#X text -49 122 It takes an integer as an argument to specify the number
-of Dimensions the incoming grid has.;
-#X obj 416 76 #color;
-#X obj 516 411 #color;
-#X text -48 84 Accepts grids in its inlet and produces integers via
-its outlet.;
-#X text -39 349 [#pack];
-#X text -39 382 Accepts integers in its inlets and produces a corresponding
-grid via its outlet.;
-#X text -40 421 It takes an integer as an argument to specify the number
-of incoming integers and the corresponding number of Dimensions the
-outgoing grid will have.;
-#X obj 483 332 - 127;
-#X obj -31 190 trigger bang bang;
-#X obj 166 178 metro 100;
-#X obj 89 345 display;
-#X obj 174 272 print blah;
-#X obj 145 316 print blah2;
-#X obj 122 155 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
-1;
-#X connect 1 0 2 0;
-#X connect 1 1 5 0;
-#X connect 1 2 6 0;
-#X connect 2 0 16 0;
-#X connect 3 0 4 0;
-#X connect 3 1 1 0;
-#X connect 5 0 8 1;
-#X connect 6 0 8 2;
-#X connect 8 0 11 0;
-#X connect 10 0 3 0;
-#X connect 16 0 8 0;
-#X connect 18 0 19 0;
-#X connect 18 0 20 0;
-#X connect 18 0 21 0;
-#X connect 22 0 18 0;
diff --git a/externals/gridflow/doc/flow_classes/#yuv_to_rgb-icon.png b/externals/gridflow/doc/flow_classes/#yuv_to_rgb-icon.png
deleted file mode 100644
index f5f10c8e..00000000
--- a/externals/gridflow/doc/flow_classes/#yuv_to_rgb-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/@complex_sq-icon.png b/externals/gridflow/doc/flow_classes/@complex_sq-icon.png
deleted file mode 100644
index 7c9dd8d5..00000000
--- a/externals/gridflow/doc/flow_classes/@complex_sq-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/@global-icon.png b/externals/gridflow/doc/flow_classes/@global-icon.png
deleted file mode 100644
index 5884d603..00000000
--- a/externals/gridflow/doc/flow_classes/@global-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/@join-icon.png b/externals/gridflow/doc/flow_classes/@join-icon.png
deleted file mode 100644
index 461f626e..00000000
--- a/externals/gridflow/doc/flow_classes/@join-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/bindpatcher-icon.png b/externals/gridflow/doc/flow_classes/bindpatcher-icon.png
deleted file mode 100644
index aed22ac1..00000000
--- a/externals/gridflow/doc/flow_classes/bindpatcher-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/demux-icon.png b/externals/gridflow/doc/flow_classes/demux-icon.png
deleted file mode 100644
index d3937142..00000000
--- a/externals/gridflow/doc/flow_classes/demux-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/exec-help.pd b/externals/gridflow/doc/flow_classes/exec-help.pd
deleted file mode 100644
index 816e29c2..00000000
--- a/externals/gridflow/doc/flow_classes/exec-help.pd
+++ /dev/null
@@ -1,13 +0,0 @@
-#N canvas 0 0 450 267 10;
-#X text 259 22 GridFlow 0.8.0;
-#X text 50 221 see also:;
-#X obj 126 221 renamefile;
-#X obj 241 221 unix_time;
-#X obj 61 130 exec;
-#X msg 35 78 shell xlogo &;
-#X msg 144 78 shell ftp ac@artengine.ca &;
-#X obj 209 221 ls;
-#X text 141 121 Executes a program or script. It is not return a result
-\, see the PureData shell after using the ftp command.;
-#X connect 5 0 4 0;
-#X connect 6 0 4 0;
diff --git a/externals/gridflow/doc/flow_classes/exec-icon.png b/externals/gridflow/doc/flow_classes/exec-icon.png
deleted file mode 100644
index 67cf913f..00000000
--- a/externals/gridflow/doc/flow_classes/exec-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/foreach-icon.png b/externals/gridflow/doc/flow_classes/foreach-icon.png
deleted file mode 100644
index ccc9e766..00000000
--- a/externals/gridflow/doc/flow_classes/foreach-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/fork-icon.png b/externals/gridflow/doc/flow_classes/fork-icon.png
deleted file mode 100644
index 4b4e8e00..00000000
--- a/externals/gridflow/doc/flow_classes/fork-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/fps-icon.png b/externals/gridflow/doc/flow_classes/fps-icon.png
deleted file mode 100644
index e7e753f2..00000000
--- a/externals/gridflow/doc/flow_classes/fps-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/inv+-icon.png b/externals/gridflow/doc/flow_classes/inv+-icon.png
deleted file mode 100644
index 37049db6..00000000
--- a/externals/gridflow/doc/flow_classes/inv+-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/inv_mul-icon.png b/externals/gridflow/doc/flow_classes/inv_mul-icon.png
deleted file mode 100644
index 184203c2..00000000
--- a/externals/gridflow/doc/flow_classes/inv_mul-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/listappend-icon.png b/externals/gridflow/doc/flow_classes/listappend-icon.png
deleted file mode 100644
index abf3316f..00000000
--- a/externals/gridflow/doc/flow_classes/listappend-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/listelement-help.pd b/externals/gridflow/doc/flow_classes/listelement-help.pd
deleted file mode 100644
index 3b86fcf3..00000000
--- a/externals/gridflow/doc/flow_classes/listelement-help.pd
+++ /dev/null
@@ -1,61 +0,0 @@
-#N canvas 103 143 732 416 10;
-#X obj 268 79 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X obj 279 108 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 381 cnv 15 720 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X obj 8 5 cnv 15 720 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 279 265 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 268 25 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 271 25 Arguments:;
-#X obj 268 327 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 271 327 Outlets:;
-#X obj 8 25 cnv 15 250 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 11 25 Usage:;
-#X obj 8 46 cnv 15 250 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 83 cnv 15 250 289 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 271 79 Inlets: (Read left to right \, inlet "0" being the leftmost)
-;
-#X text 282 108 0: (Leftmost);
-#X text 282 265 1: (Rightmost);
-#X text 12 5 SUMMERY:;
-#X text 73 5 Outputs one element of a list as selected by an integer.
-;
-#X floatatom 23 320 5 0 0 0 - - -;
-#X obj 23 251 listelement 0;
-#X floatatom 109 216 5 0 0 0 - - -;
-#X obj 100 320 display;
-#X obj 159 320 print;
-#X msg 61 166 1 3 hello 8 13;
-#X obj 23 134 pack 0 0;
-#X floatatom 74 103 5 0 0 0 - - -;
-#X floatatom 23 103 5 0 0 0 - - -;
-#X obj 87 52 listelement;
-#X text 286 299 Integer - index (selects the position of an element).
-;
-#X text 16 387 GridFlow 0.8.0;
-#X text 282 50 One - see inlet 0: (rightmost);
-#X text 280 139 List - An element in a list is chosen by the index
-(an integer that selects the position of an element). This element
-is sent to the outlet and can be viewed in the console using the print
-object or in a number box if displaying an integer. For example: integer
-"0" selects and outputs the first element in a list \, integer "1"
-selects and outputs the second element in a list \, integers "-1" selects
-and outputs the last element in a list.;
-#X text 287 356 One - see inlet 0: (leftmost);
-#X connect 19 0 18 0;
-#X connect 19 0 21 0;
-#X connect 19 0 22 0;
-#X connect 20 0 19 1;
-#X connect 23 0 19 0;
-#X connect 24 0 19 0;
-#X connect 25 0 24 1;
-#X connect 26 0 24 0;
diff --git a/externals/gridflow/doc/flow_classes/listelement-icon.png b/externals/gridflow/doc/flow_classes/listelement-icon.png
deleted file mode 100644
index 00a3a1c5..00000000
--- a/externals/gridflow/doc/flow_classes/listelement-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/listflatten-icon.png b/externals/gridflow/doc/flow_classes/listflatten-icon.png
deleted file mode 100644
index e6e9679e..00000000
--- a/externals/gridflow/doc/flow_classes/listflatten-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/listlength-icon.png b/externals/gridflow/doc/flow_classes/listlength-icon.png
deleted file mode 100644
index dbde632a..00000000
--- a/externals/gridflow/doc/flow_classes/listlength-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/listmake-icon.png b/externals/gridflow/doc/flow_classes/listmake-icon.png
deleted file mode 100644
index 3e7c5f62..00000000
--- a/externals/gridflow/doc/flow_classes/listmake-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/listprepend-icon.png b/externals/gridflow/doc/flow_classes/listprepend-icon.png
deleted file mode 100644
index a42afce0..00000000
--- a/externals/gridflow/doc/flow_classes/listprepend-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/listreverse-icon.png b/externals/gridflow/doc/flow_classes/listreverse-icon.png
deleted file mode 100644
index ec4d2a04..00000000
--- a/externals/gridflow/doc/flow_classes/listreverse-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/listsublist-icon.png b/externals/gridflow/doc/flow_classes/listsublist-icon.png
deleted file mode 100644
index 4f9c1535..00000000
--- a/externals/gridflow/doc/flow_classes/listsublist-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/ls-help.pd b/externals/gridflow/doc/flow_classes/ls-help.pd
deleted file mode 100644
index 5bc04c39..00000000
--- a/externals/gridflow/doc/flow_classes/ls-help.pd
+++ /dev/null
@@ -1,21 +0,0 @@
-#N canvas 293 272 624 295 10;
-#X text 259 22 GridFlow 0.8.0;
-#X text 30 266 see also:;
-#X obj 106 267 renamefile;
-#X obj 189 267 unix_time;
-#X obj 67 130 ls;
-#X obj 67 48 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 25 186 listlength;
-#X floatatom 25 220 5 0 0 0 - - -;
-#X obj 107 187 display;
-#X obj 265 267 exec;
-#X msg 67 81 symbol /home;
-#X text 157 118 Similar to the Unix command 'ls'. Returns the filenames
-in a directory. May be used with [listlength] to determine the number
-of files in a directory.;
-#X connect 4 0 6 0;
-#X connect 4 0 8 0;
-#X connect 5 0 10 0;
-#X connect 6 0 7 0;
-#X connect 10 0 4 0;
diff --git a/externals/gridflow/doc/flow_classes/ls-icon.png b/externals/gridflow/doc/flow_classes/ls-icon.png
deleted file mode 100644
index 162e080f..00000000
--- a/externals/gridflow/doc/flow_classes/ls-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/messageappend-icon.png b/externals/gridflow/doc/flow_classes/messageappend-icon.png
deleted file mode 100644
index c8aecc6a..00000000
--- a/externals/gridflow/doc/flow_classes/messageappend-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/messageprepend-icon.png b/externals/gridflow/doc/flow_classes/messageprepend-icon.png
deleted file mode 100644
index a398ff09..00000000
--- a/externals/gridflow/doc/flow_classes/messageprepend-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/oneshot-icon.png b/externals/gridflow/doc/flow_classes/oneshot-icon.png
deleted file mode 100644
index be0b9829..00000000
--- a/externals/gridflow/doc/flow_classes/oneshot-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/pd_netreceive-icon.png b/externals/gridflow/doc/flow_classes/pd_netreceive-icon.png
deleted file mode 100644
index 2a008238..00000000
--- a/externals/gridflow/doc/flow_classes/pd_netreceive-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/pd_netsend-icon.png b/externals/gridflow/doc/flow_classes/pd_netsend-icon.png
deleted file mode 100644
index 1ba290b4..00000000
--- a/externals/gridflow/doc/flow_classes/pd_netsend-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/pingpong-icon.png b/externals/gridflow/doc/flow_classes/pingpong-icon.png
deleted file mode 100644
index f84c9c2f..00000000
--- a/externals/gridflow/doc/flow_classes/pingpong-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/plotter_control-help.pd b/externals/gridflow/doc/flow_classes/plotter_control-help.pd
deleted file mode 100644
index 1381d341..00000000
--- a/externals/gridflow/doc/flow_classes/plotter_control-help.pd
+++ /dev/null
@@ -1,64 +0,0 @@
-#N canvas 423 134 724 349 10;
-#X text 557 11 GridFlow 0.8.0;
-#X obj 92 99 r foo;
-#X msg 557 173 print_from_ascii $*;
-#X msg 557 52 print hello_world;
-#X msg 284 54 pu;
-#X msg 284 102 pd;
-#X msg 285 205 sp 0;
-#X msg 284 154 pa 120 160;
-#X obj 557 124 unix_time;
-#X obj 557 148 @export_list;
-#X obj 557 104 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 74 255 comport 0 9600;
-#X obj 76 129 plotter_control;
-#X obj 93 158 print hpgl_commands;
-#X obj 557 196 s foo;
-#X text 324 54 pen up;
-#X text 324 102 pen down;
-#X obj 557 74 s foo;
-#X text 368 154 move to absolute position;
-#N canvas 0 0 450 300 draw_a_rectangle 0;
-#X obj 120 196 @export_list;
-#X obj 128 159 @ * ( 110 320 );
-#X msg 31 156 pu \, sp 0;
-#X obj 28 97 fork;
-#X msg 114 222 pd \, pa \$2 \$1;
-#X msg 129 100 sp 5 \, pu \, pa 0 0 \, other si 320 320;
-#X obj 115 252 s foo;
-#X obj 33 71 fork;
-#X obj 30 126 fork;
-#X msg 128 134 0 0 \, 0 1 \, 1 1 \, 1 0 \, 0 0;
-#X obj 31 35 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X connect 0 0 4 0;
-#X connect 1 0 0 0;
-#X connect 2 0 6 0;
-#X connect 3 0 8 0;
-#X connect 3 1 9 0;
-#X connect 4 0 6 0;
-#X connect 7 0 3 0;
-#X connect 7 1 5 0;
-#X connect 8 0 2 0;
-#X connect 9 0 1 0;
-#X connect 10 0 7 0;
-#X restore 557 228 pd draw_a_rectangle;
-#X text 76 9 plotter_control;
-#X text 74 280 use the comport object to interface to the plotter;
-#X obj 285 227 s foo;
-#X obj 284 176 s foo;
-#X obj 284 124 s foo;
-#X obj 284 76 s foo;
-#X text 328 207 (0...6) remove/change the pen;
-#X connect 1 0 12 0;
-#X connect 2 0 14 0;
-#X connect 3 0 17 0;
-#X connect 4 0 25 0;
-#X connect 5 0 24 0;
-#X connect 6 0 22 0;
-#X connect 7 0 23 0;
-#X connect 8 0 9 0;
-#X connect 9 0 2 0;
-#X connect 10 0 8 0;
-#X connect 12 0 13 0;
diff --git a/externals/gridflow/doc/flow_classes/plotter_control-icon.png b/externals/gridflow/doc/flow_classes/plotter_control-icon.png
deleted file mode 100644
index 3e33d7dd..00000000
--- a/externals/gridflow/doc/flow_classes/plotter_control-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/printargs-icon.png b/externals/gridflow/doc/flow_classes/printargs-icon.png
deleted file mode 100644
index d8ed7ee2..00000000
--- a/externals/gridflow/doc/flow_classes/printargs-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/range-icon.png b/externals/gridflow/doc/flow_classes/range-icon.png
deleted file mode 100644
index 45de1556..00000000
--- a/externals/gridflow/doc/flow_classes/range-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/renamefile-help.pd b/externals/gridflow/doc/flow_classes/renamefile-help.pd
deleted file mode 100644
index 70d9937c..00000000
--- a/externals/gridflow/doc/flow_classes/renamefile-help.pd
+++ /dev/null
@@ -1,9 +0,0 @@
-#N canvas 383 288 441 244 10;
-#X obj 50 120 renamefile;
-#X msg 50 76 list current_name new_name;
-#X obj 128 206 ls;
-#X text 42 208 also see :;
-#X text 313 21 GridFlow 0.8.0;
-#X text 45 157 * The path should correspond to the location of the
-file from where pd is started;
-#X connect 1 0 0 0;
diff --git a/externals/gridflow/doc/flow_classes/renamefile-icon.png b/externals/gridflow/doc/flow_classes/renamefile-icon.png
deleted file mode 100644
index 58201e14..00000000
--- a/externals/gridflow/doc/flow_classes/renamefile-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/rubyarray.png b/externals/gridflow/doc/flow_classes/rubyarray.png
deleted file mode 100644
index 2d3ad9e5..00000000
--- a/externals/gridflow/doc/flow_classes/rubyarray.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/rubyprint-icon.png b/externals/gridflow/doc/flow_classes/rubyprint-icon.png
deleted file mode 100644
index 0ce6df14..00000000
--- a/externals/gridflow/doc/flow_classes/rubyprint-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/rubysprintf-icon.png b/externals/gridflow/doc/flow_classes/rubysprintf-icon.png
deleted file mode 100644
index c7a5a249..00000000
--- a/externals/gridflow/doc/flow_classes/rubysprintf-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/shunt-icon.png b/externals/gridflow/doc/flow_classes/shunt-icon.png
deleted file mode 100644
index ebf40bac..00000000
--- a/externals/gridflow/doc/flow_classes/shunt-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/flow_classes/unix_time-help.pd b/externals/gridflow/doc/flow_classes/unix_time-help.pd
deleted file mode 100644
index d80b4c19..00000000
--- a/externals/gridflow/doc/flow_classes/unix_time-help.pd
+++ /dev/null
@@ -1,29 +0,0 @@
-#N canvas 134 38 639 312 10;
-#X obj 91 113 unix_time;
-#X obj 91 82 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 8 172 #export_list;
-#X obj 91 40 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
-;
-#X obj 9 246 display;
-#X obj 91 58 metro 500;
-#X text 60 243 <-- Ascii format for the date;
-#X obj 308 221 display;
-#X obj 123 171 display;
-#X obj 307 195 display;
-#X obj 306 170 rubysprintf %04d%02d%02d-%02d%02d%02d;
-#X obj 8 282 cnv 15 720 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 16 289 GridFlow 0.8.0;
-#X obj 8 5 cnv 15 720 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 9 5 SUMMARY : the unixtime command;
-#X connect 0 0 2 0;
-#X connect 0 1 8 0;
-#X connect 0 2 7 0;
-#X connect 0 2 10 0;
-#X connect 1 0 0 0;
-#X connect 2 0 4 0;
-#X connect 3 0 5 0;
-#X connect 5 0 1 0;
-#X connect 10 0 9 0;
diff --git a/externals/gridflow/doc/flow_classes/unix_time-icon.png b/externals/gridflow/doc/flow_classes/unix_time-icon.png
deleted file mode 100644
index 1d85db8d..00000000
--- a/externals/gridflow/doc/flow_classes/unix_time-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/format.html b/externals/gridflow/doc/format.html
deleted file mode 100644
index 243e508e..00000000
--- a/externals/gridflow/doc/format.html
+++ /dev/null
@@ -1,485 +0,0 @@
-<html><head>
-<!-- $Id: format.html,v 1.2 2006-03-15 04:44:50 matju Exp $ -->
-<title>GridFlow 0.8.1 - Reference Manual: Format Classes</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<link rel="stylesheet" href="gridflow.css" type="text/css">
-</head>
-<body bgcolor="#FFFFFF"
- leftmargin="0" topmargin="0"
- marginwidth="0" marginheight="0">
-<table width="100%" bgcolor="white" border="0" cellspacing="2">
-<tr><td colspan="4" bgcolor="#082069">
-<img src="images/titre_gridflow.png" width="253" height="23">
-</td></tr><tr><td>&nbsp;</td></tr>
-<tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4" height="16">
- <h4>GridFlow 0.8.1 - Reference Manual: Format Classes</h4>
-</td></tr>
-<tr>
- <td width="5%" rowspan="2">&nbsp;</td>
- <td width="15%" height="23">&nbsp;</td>
- <td width="80%" height="23">&nbsp;</td>
- <td width="5%" height="23">&nbsp;</td>
-</tr>
-<tr><td colspan="2"><div cols="1"><h4><a href="#Objects_for_Input/Output">Objects for Input/Output</a></h4><ul>
-<li><a href="##in"><img src="flow_classes/%23in-icon.png" alt="[#in]" border="0"></a></li>
-<li><a href="##out"><img src="flow_classes/%23out-icon.png" alt="[#out]" border="0"></a></li>
-<li><a href="##peephole"><img src="flow_classes/%23peephole-icon.png" alt="[#peephole]" border="0"></a></li>
-<li><a href="##mouse"><img src="flow_classes/%23mouse-icon.png" alt="[#mouse]" border="0"></a></li>
-<li><a href="##camera"><img src="flow_classes/%23camera-icon.png" alt="[#camera]" border="0"></a></li>
-</ul>
-<h4><a href="#Picture/Movie_Formats">Picture/Movie Formats</a></h4><ul>
-<li><a href="#format ppm #in/#out"><img src="flow_classes/format ppm %23in/%23out-icon.png" alt="[format ppm #in/#out]" border="0"></a></li>
-<li><a href="#format targa #in/#out"><img src="flow_classes/format targa %23in/%23out-icon.png" alt="[format targa #in/#out]" border="0"></a></li>
-<li><a href="#format jpeg #in/#out"><img src="flow_classes/format jpeg %23in/%23out-icon.png" alt="[format jpeg #in/#out]" border="0"></a></li>
-<li><a href="#format png #in"><img src="flow_classes/format png %23in-icon.png" alt="[format png #in]" border="0"></a></li>
-<li><a href="#format quicktime #in/#out"><img src="flow_classes/format quicktime %23in/%23out-icon.png" alt="[format quicktime #in/#out]" border="0"></a></li>
-<li><a href="#format mpeg #in"><img src="flow_classes/format mpeg %23in-icon.png" alt="[format mpeg #in]" border="0"></a></li>
-<li><a href="#format grid #in/#out"><img src="flow_classes/format grid %23in/%23out-icon.png" alt="[format grid #in/#out]" border="0"></a></li>
-</ul>
-<h4><a href="#Acquisition_Devices">Acquisition Devices</a></h4><ul>
-<li><a href="#format videodev #in"><img src="flow_classes/format videodev %23in-icon.png" alt="[format videodev #in]" border="0"></a></li>
-</ul>
-<h4><a href="#Window_Output">Window Output</a></h4><ul>
-<li><a href="#format x11 #in/#out"><img src="flow_classes/format x11 %23in/%23out-icon.png" alt="[format x11 #in/#out]" border="0"></a></li>
-<li><a href="#format quartz #out"><img src="flow_classes/format quartz %23out-icon.png" alt="[format quartz #out]" border="0"></a></li>
-<li><a href="#format sdl #out"><img src="flow_classes/format sdl %23out-icon.png" alt="[format sdl #out]" border="0"></a></li>
-<li><a href="#format aalib #out"><img src="flow_classes/format aalib %23out-icon.png" alt="[format aalib #out]" border="0"></a></li>
-<li><a href="#format window #out"><img src="flow_classes/format window %23out-icon.png" alt="[format window #out]" border="0"></a></li>
-</ul>
-<br><br>
-</div></td></tr> <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Objects_for_Input/Output"></a><h4>Objects for Input/Output</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#in">#in</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23in-icon.png" alt="[#in]" border="0"><br clear="left"><br><br><a href="#inout"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b>format<b>, </b>format_specific_part...<b>)</b>
- If no arguments given, creates an input object for an unspecified
- format. You then need to use the <kbd><font color="#007777">"open"</font></kbd> command to link
- a format handler to it.
- If arguments given, the <kbd><font color="#007777">"open"</font></kbd> command is immediately called
- with those arguments.
- Remember that most formats produce Dim[rows,columns,3] grids with
- 0-255 values. (Most.) <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;open <b>(</b>format<b>, </b>format_specific_part...<b>)</b>
- This is the command that gives a particular resource
- to a <kbd><font color="#007777">[#out]</font></kbd> object. This is done through a "format"
- (there is a list of formats in this manual). The other
- arguments depend on the chosen format. The format may
- be a file format or a protocol or a hardware device, etc.
- The format called "file" is a special shortcut that autodetects the
- type of file (by name suffix) and picks up the appropriate handler. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;open <b>(</b>filename<b>)</b>
- This is a shortcut for <kbd><font color="#007777">"open file"</font></kbd> followed by a filename.
- The filename must contain a dot, else it will be seen as a handler name. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;close <b>(</b><b>)</b>
- close may be necessary if you operate on <kbd><font color="#007777">"/dev/video"</font></kbd>,
- which can only be read by one at a time. otherwise it's
- usually not necessary. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;int <b>(</b>frame_number<b>)</b>
- selects one picture from a multi-picture format
- and then does the same as a bang. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;set <b>(</b>frame_number<b>)</b>
- selects one picture from a multi-picture format,
- to be displayed by the next bang. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;bang <b>(</b><b>)</b>
- sends a grid through the outlet. the grid may be the
- result of reading from a file, acquiring from a device,
- capturing from the screen etc.
- this is format-specific. most formats
- produce grid(rows columns {red green blue}).
- In formats that read from a file, reading another picture
- will continue if there are several pictures in the
- same file, but if the end of file is reached instead,
- it will rewind and send the first picture again.
- see section "External Picture Formats". <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;option <b>(</b><i>symbol</i> selector<b>, </b>stuff...<b>)</b>
- Obsolete. the word "option" is optional now. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;rewind <b>(</b><b>)</b>
- rewinds to beginning of file if applicable. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;loop <b>(</b><i>bool</i> flag<b>)</b>
- controls the automatic looping of movies. <br>
- <br><b>outlet&nbsp;1 </b><b>method</b>&nbsp;int <b>(</b><b>)</b>
- frame number of frame just sent,
- for formats that have frame numbers. <br>
- <br><b>outlet&nbsp;1 </b><b>method</b>&nbsp;bang <b>(</b><b>)</b>
- tried to read a frame that does not exist
- (signals end of file) <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#out">#out</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23out-icon.png" alt="[#out]" border="0"><br clear="left"><br><br><a href="#inout"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b>format<b>, </b>format_specific_part...<b>)</b>
- If no arguments given, creates an output object for an unspecified
- format. You then need to use the <kbd><font color="#007777">"open"</font></kbd> command to link
- a format handler to it.
- If arguments given, the <kbd><font color="#007777">"open"</font></kbd> command is immediately called
- with those arguments.
- Remember that most formats expect dim(rows,columns,3) grids with
- 0-255 values. (Most.) <br>
- <br><b>method</b>&nbsp;init <b>(</b><i>integer</i> rows<b>, </b><i>integer</i> columns<b>)</b>
- This alternate way to create an <kbd><font color="#007777">[#out]</font></kbd> automatically calls <kbd><font color="#007777">"open window"</font></kbd> and <kbd><font color="#007777">"out_size <i>rows columns</i>"</font></kbd>. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;open <b>(</b>format<b>, </b>format_specific_part...<b>)</b>
- This is the command that gives a particular resource
- to a <kbd><font color="#007777">[#out]</font></kbd> object. This is done through a "format"
- (there is a list of formats in this manual). The other
- arguments depend on the chosen format. The format may
- be a file format or a protocol or a hardware device, etc. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;open file <b>(</b><b>)</b>
- The format called "file" is a special shortcut that autodetects the
- type of file (by name suffix) and picks up the appropriate handler. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;open <b>(</b>filename<b>)</b>
- This is a shortcut for "open file" followed by a filename.
- The filename must contain a dot, else it will be seen as a handler name. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b>
- this is format-specific. most formats
- expect grid(rows columns {red green blue}).
- In formats that write to a file, sending a 2nd picture
- overwrites the first.
- see section "External Picture Formats". <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;close <b>(</b><b>)</b>
- closes the file. usually not necessary. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;option <b>(</b><i>symbol</i> selector<b>, </b>stuff...<b>)</b>
- Obsolete. Omit the word "option" now. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;timelog <b>(</b><i>0,1</i> status<b>)</b>
- when status=1, current time (unix clock) and time since last
- frame-end are printed in the console. when status=0, it is off.
- default is 0. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;rewind <b>(</b><b>)</b>
- rewinds to beginning of file if applicable.
- will overwrite the previous data. <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;bang <b>(</b><b>)</b>
- sent when a complete grid has been received. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#peephole">#peephole</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23peephole-icon.png" alt="[#peephole]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>
- This object class only works with a X11-based version of Pd.
- (e.g. on Linux, BSD, but not MacOS X). </p> <p>Similar to <kbd><font color="#007777">[#out window]</font></kbd>, except it creates an inset in the patch you put it
- in, and a scaled version of the picture appears in the inset. It also emits the same messages
- as <kbd><font color="#007777">[#out window]</font></kbd> and automatically scales cursor position according to the current scale factor.
- The scale factor is decided automatically. </p> <br><b>method</b>&nbsp;init <b>(</b><i>int</i> height<b>, </b><i>int</i> width<b>)</b> <br>
- <p>All other methods are as in <kbd><font color="#007777">[#out window]</font></kbd>.</p> <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#mouse">#mouse</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23mouse-icon.png" alt="[#mouse]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- This will process the "position" messages emitted by <kbd><font color="#007777">[#out]</font></kbd> or <kbd><font color="#007777">[#peephole]</font></kbd> in
- useful ways. <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;list <b>(</b><b>)</b>
- y,x coords of a click <br>
- <br><b>outlet&nbsp;1 </b><b>method</b>&nbsp;list <b>(</b><b>)</b>
- y,x coords of a drag (any button is kept pressed) <br>
- <br><b>outlet&nbsp;2 </b><b>method</b>&nbsp;list <b>(</b><b>)</b>
- y,x coords of an unclick <br>
- <br><b>outlet&nbsp;3 </b><b>method</b>&nbsp;list <b>(</b><b>)</b>
- y,x coords of a move (no button is pressed) <br>
- <br><b>outlet&nbsp;4 </b><b>method</b>&nbsp;float <b>(</b><b>)</b> button 1 status<br>
- <br><b>outlet&nbsp;5 </b><b>method</b>&nbsp;float <b>(</b><b>)</b> button 2 status<br>
- <br><b>outlet&nbsp;6 </b><b>method</b>&nbsp;float <b>(</b><b>)</b> button 3 status<br>
- <br><b>outlet&nbsp;7 </b><b>method</b>&nbsp;float <b>(</b><b>)</b>
- wheel difference: -1 = roll up; 1 = roll down. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#camera">#camera</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23camera-icon.png" alt="[#camera]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- Works about like <kbd><font color="#007777">[#in videodev]</font></kbd> except you can right-click-open it to access all of the
- camera settings visually. <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Picture/Movie_Formats"></a><h4>Picture/Movie Formats</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="format ppm #in/#out">format ppm #in/#out</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/format ppm %23in/%23out-icon.png" alt="[format ppm #in/#out]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>Subformat P6 only.
- Max-number can only be 255 (24-bit RGB). </p> <br><b>method</b>&nbsp;open ppm file <b>(</b><i>symbol</i> filename<b>)</b>
- opens the specified file, taken from the current
- directory. <br>
- <br><b>method</b>&nbsp;open ppm gzfile <b>(</b><i>symbol</i> filename<b>)</b>
- same but for .ppm.gz files <br>
- <br><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns {r g b})</i> grid<b>)</b>
- values 0-255 <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="format targa #in/#out">format targa #in/#out</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/format targa %23in/%23out-icon.png" alt="[format targa #in/#out]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>Support for RGB-24 (3 channels) and RGBA-32 (4 channels)</p> <br><b>method</b>&nbsp;open targa file <b>(</b><i>symbol</i> filename<b>)</b>
- opens the specified file, taken from the current
- directory. <br>
- <br><b>method</b>&nbsp;open targa gzfile <b>(</b><i>symbol</i> filename<b>)</b>
- same but for .tga.gz files <br>
- <br><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns 3)</i> grid<b>)</b> RGB-24<br>
- <br><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns 4)</i> grid<b>)</b> RGBA-32<br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="format jpeg #in/#out">format jpeg #in/#out</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/format jpeg %23in/%23out-icon.png" alt="[format jpeg #in/#out]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>Support for RGB non-progressive</p> <br><b>method</b>&nbsp;open jpeg file <b>(</b><i>symbol</i> filename<b>)</b>
- opens the specified file, taken from the current
- directory. <br>
- <br><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns 3)</i> grid<b>)</b> RGB-24 <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="format png #in">format png #in</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/format png %23in-icon.png" alt="[format png #in]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>Support for RGB non-progressive</p> <br><b>method</b>&nbsp;open png file <b>(</b><i>symbol</i> filename<b>)</b>
- opens the specified file, taken from the current
- directory. <br>
- <br><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns 1)</i> grid<b>)</b> Y-8 (greyscale)<br>
- <br><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns 2)</i> grid<b>)</b> YA-16 (greyscale and transparency)<br>
- <br><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns 3)</i> grid<b>)</b> RGB-24 (colour)<br>
- <br><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns 4)</i> grid<b>)</b> RGBA-32 (colour and transparency)<br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="format quicktime #in/#out">format quicktime #in/#out</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/format quicktime %23in/%23out-icon.png" alt="[format quicktime #in/#out]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>Support for .mov files.</p> <p>This format supports frame-seek and frame-tell.</p> <p>Uses the HW-QuickTime library aka QuickTime4Linux
- (libquicktime.so). There is also a variant on the same library and that project
- is just called LibQuickTime.</p> <p>Some versions of those libraries may include support for different codecs,
- and some also may support entirely different wrapper formats such as AVI.</p> <p>On Macintosh, Apple QuickTime is used instead, but several of the following
- messages may not be available.</p> <br><b>method</b>&nbsp;open quicktime file <b>(</b><i>symbol</i> filename<b>)</b> <br>
- <br><b>method</b>&nbsp;codec <b>(</b><i>symbol</i> codec<b>)</b>
- Allowed values are at least: raw, jpeg, png, mjpa, yuv2, yuv4.
- Some other values may allowed, depending on the version of the library
- and which codec plugins are installed.
- Must be set before the first frame is written.
- only applies to <kbd><font color="#007777">[#out]</font></kbd>. Choosing a codec is important
- because codecs influence greatly the speed of
- encoding, the speed of decoding,
- the size of the written file, and its fidelity to the
- original content. Note that there exist other Apple-QuickTime
- codecs that are not supported by HW-QuickTime. <br>
- <br><b>method</b>&nbsp;parameter <b>(</b><i>symbol</i> key<b>, </b><i>int</i> value<b>)</b>
- Sets special codec-specific settings.
- For example: <kbd><font color="#007777">"parameter jpeg_quality 75"</font></kbd> <br>
- <br><b>method</b>&nbsp;framerate <b>(</b><i>int</i> fps<b>)</b>
- Sets the framerate of the file.
- This is not used by GridFlow when reading a file, but other
- programs usually care. <br>
- <br><b>method</b>&nbsp;colorspace <b>(</b><i>symbol</i> colorspace<b>)</b>
- Allowed values are rgb, rgba, bgr, bgra, yuv, yuva.
- Normally you don't need this. <br>
- <br><b>method</b>&nbsp;size <b>(</b><i>int</i> height<b>, </b><i>int</i> width<b>)</b>
- Forces a window size when writing. Usually this has to be used <u>after</u>
- setting the framerate and codec and <u>before</u> setting the codec-parameters.
- (Strange. Sorry.) <br>
- <br><b>method</b>&nbsp;force_size <b>(</b><i>int</i> height<b>, </b><i>int</i> width<b>)</b>
- forces a window size when reading.
- this is a workaround for a problem in HW-QuickTime. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="format mpeg #in">format mpeg #in</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/format mpeg %23in-icon.png" alt="[format mpeg #in]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>support for .mpeg files</p> <p>this format supports frame-seek and frame-tell.</p> <p>Two different libraries are available for dealing with
- MPEG files. Those have different details, capabilities and quirks.</p> <p>In any case, GridFlow does not support importing audio from
- those files.</p> <p>If you use the HeroineWarrior library, you may open several
- mpeg files at once, but not with the GregWard library.</p> <p>Libraries may scream error messages in a rude way.</p> <p>By opposition to PPM and TARGA, this format driver only
- allows a single MPEG stream per file (you cannot "cat"
- several MPEG files together). </p> <p>Supports Rewind and Frame Select.</p> <br><b>method</b>&nbsp;open mpeg file <b>(</b><i>symbol</i> filename<b>)</b>
- opens the specified file, taken from the current
- directory. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="format grid #in/#out">format grid #in/#out</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/format grid %23in/%23out-icon.png" alt="[format grid #in/#out]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>
- This is GridFlow's special file format. This is the only I/O
- format that can hold anything that the <kbd><font color="#007777">[#store]</font></kbd> object can. </p> <p>
- This is the picture format that would support TCP connections
- if that feature actually worked. More on this later. </p> <br><b>method</b>&nbsp;open grid file <b>(</b><i>symbol</i> filename<b>)</b>
- opens the specified file, taken from the current
- directory. <br>
- <br><b>method</b>&nbsp;open grid gzfile <b>(</b><i>symbol</i> filename<b>)</b>
- same but for .grid.gz files <br>
- <br><b>method</b>&nbsp;open grid tcp <b>(</b><i>symbol</i> hostname<b>, </b><i>integer</i> port<b>)</b>
- dials an specified hostname/port on the InterNet or
- compatible network. the TCP protocol is used. <br>
- <br><b>method</b>&nbsp;open grid tcpserver <b>(</b><i>integer</i> port<b>)</b>
- waits for a call (and answers) for this port on the
- local machine via InterNet or compatible network.
- Answers the call. <br>
- <br><b>method</b>&nbsp;type int32 <b>(</b><b>)</b>
- output will be as 32 bit signed integers. <br>
- <br><b>method</b>&nbsp;type uint8 <b>(</b><b>)</b>
- output will be as 8 bit unsigned integers. <br>
- <br><b>method</b>&nbsp;headerful <b>(</b><b>)</b>
- cancels "headerless" (and back to reading .grid) <br>
- <br><b>method</b>&nbsp;headerless <b>(</b>dimensions...<b>)</b>
- instead of reading .grid files with header, will read raw data,
- faking a .grid header to itself. It will use the hereby specified
- dimension list, as well as two other settings: <kbd><font color="#007777">type</font></kbd> and <kbd><font color="#007777">endian</font></kbd>. <br>
- <p>When writing "raw" data, a file may be considered a long string of
- base 256 digits (called bytes), but different computers have different
- conventions for dealing with them: <br><b>method</b>&nbsp;endian <b>(</b><b>)</b> <ul><li><b>1</b> : big:
- A number will be written starting with the biggest digit.
- This is the natural way on the Macintosh, Sun, Amiga, and so on. </li> <li><b>2</b> : little:
- A number will be written starting with the smallest digit.
- This is the natural way on the Intel 386/Pentium. </li> <li><b>3</b> : same:
- A number will be written in whichever way is more natural
- on this computer. The natural way is slightly faster to handle.
- This is the default setting. </li> </ul> <br>
- </p> <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Acquisition_Devices"></a><h4>Acquisition Devices</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="format videodev #in">format videodev #in</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/format videodev %23in-icon.png" alt="[format videodev #in]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;open <b>(</b>device<b>)</b> <br>
- <p>Video4Linux-1 devices, RGB-24 only. Variable picture size.</p> <p>We have been testing it using cards of the BT-848 family,
- such as Miro DC10plus and Hauppauge WinTV, using the <kbd><font color="#007777">bttv.o</font></kbd> linux driver.
- Also we have been testing using Logitech QuickCam (and similar Labtec hardware),
- but don't use the <kbd><font color="#007777">qce-ga</font></kbd> driver, which is buggy and obsolete: the <kbd><font color="#007777">qc-usb</font></kbd>
- works better.</p> <p>Some hardware doesn't support RGB, so you may have to select a YUV colorspace
- (see below) and then use <kbd><font color="#007777">[#yuv_to_rgb]</font></kbd>. Don't forget to also do <kbd><font color="#007777">[# min 255]</font></kbd> and <kbd><font color="#007777">[# max 0]</font></kbd>. </p> <p>If for some reason there's a bug that causes a driver to produce BGR instead of RGB,
- so that red and blue are swapped, you can swap them back by filtering through a RGB-BGR
- converter, such as <kbd><font color="#007777">[#inner * + 0 {3 3 # 0 0 1 0 1 0 1 0 0}]</font></kbd>.</p> <p>color adjustments: <br><b>method</b>&nbsp;brightness <b>(</b><i>0-65535</i> level<b>)</b> <br>
- <br><b>method</b>&nbsp;hue <b>(</b><i>0-65535</i> level<b>)</b> <br>
- <br><b>method</b>&nbsp;colour <b>(</b><i>0-65535</i> level<b>)</b> <br>
- <br><b>method</b>&nbsp;contrast <b>(</b><i>0-65535</i> level<b>)</b> <br>
- <br><b>method</b>&nbsp;whiteness <b>(</b><i>0-65535</i> level<b>)</b> <br>
- </p> <br><b>method</b>&nbsp;get <b>(</b><i>symbol</i> attr<b>)</b>
- gets a specific attribute. a message is sent through right outlet.
- valid attributes are: brightness, hue, colour, contrast, whiteness. <br>
- <br><b>method</b>&nbsp;get <b>(</b><b>)</b>
- gets all attributes. <br>
- <p>other options: <br><b>method</b>&nbsp;channel <b>(</b><i>integer</i> <b>)</b> <br>
- <br><b>method</b>&nbsp;tuner <b>(</b><i>integer</i> <b>)</b> <br>
- <br><b>method</b>&nbsp;norm <b>(</b><i>integer</i> <b>)</b> <br>
- <br><b>method</b>&nbsp;frequency <b>(</b><i>integer</i> <b>)</b> <br>
- <br><b>method</b>&nbsp;transfer <b>(</b><i>symbol(read|mmap)</i> <b>, </b><i>integer</i> <b>)</b> <ul> <li><b>1</b> : mmap:
- This is the normal (and fast) way of transferring pictures
- from the camera. </li> <li><b>2</b> : read:
- Some cameras/drivers only support this instead of mmap. </li></ul>
- In case of mmap, the extra numeric argument sets the
- queue length in number of frames, so you can select an
- appropriate tradeoff between efficiency and latency. <br>
- <br><b>method</b>&nbsp;colorspace <b>(</b><i>symbol</i> colorspace<b>)</b>
- Allowed values are: RGB24, YUV420P.
- Use this if your driver doesn't support RGB24. <br>
- <br><b>method</b>&nbsp;size <b>(</b>height<b>, </b>width<b>)</b>
- sets the input size, especially when using a video digitalizer
- device. <br>
- </p> <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Window_Output"></a><h4>Window Output</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="format x11 #in/#out">format x11 #in/#out</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/format x11 %23in/%23out-icon.png" alt="[format x11 #in/#out]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>supports 15,16,24,32-bit truecolor displays</p> <p>now also support 8-bit indexed displays, using a private colormap
- configured as 3:3:2 RGB. When using 8-bit you can specify the
- "use_stripes" option to use a completely different color scheme
- involving R,G,B diagonal stripes, a kind of 6:6:6 RGB spread over three
- pixels.</p> <p>If you are using Windows or MacOS 10: you will have to install
- a X11 server. This will emulate Unix display on your OS. (note:
- Unix systems also need a X11 server, but it's built-in and handles
- the video driver directly). In the case of MacOS 10 and QNX that both
- use non-X11 display technology on top of a basically Unix OS, the
- OS comes with a X11 server, but it may be on a "bundled software"
- CD.</p> <br><b>method</b>&nbsp;open x11 <b>(</b><b>)</b>
- synonym of "open x11 here". <br>
- <br><b>method</b>&nbsp;open x11 here <b>(</b><b>)</b>
- connects to the default X11 server,
- according to your environment variable "DISPLAY". <br>
- <br><b>method</b>&nbsp;open x11 local <b>(</b><i>integer</i> display_number<b>)</b>
- connects to a display server on this machine. <br>
- <br><b>method</b>&nbsp;open x11 remote <b>(</b><i>symbol</i> host_name<b>, </b><i>integer</i> display_number<b>)</b>
- connects to a remote X11 display server using TCP.
- Sorry, IP addresses are not supported.
- Port number will be 6000 plus the display number, because
- of the X11 standard. <br>
- <br><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns {red green blue})</i> grid<b>)</b>
- resizes the window to the size of the grid;
- encodes that grid in the display's pixel format;
- also displays it if autodraw &gt; 0
- the values must be in range 0-255,
- or else they will be "wrapped". <br>
- <p>
- Destroying the object (or sending "close") should close the window. </p> <p>because of the design of Xlib, or if any of the connections
- involved crashes, then the whole program has to be terminated.
- (don't you love xlib). Something similar happens if you close any
- of the windows yourself, but IIRC this could be fixed.</p> <p>only one window may be used per connection (to simplify matters;
- this doesn't reduce flexibility).</p> <p>there is an additional argument that may be added to every <kbd><font color="#007777">"open"</font></kbd> message; if you don't put it, a new toplevel window is created.
- if you put "root" then the screen's wallpaper will be used instead
- (it may fail to work with some popular window managers). You can also
- put a window number, e.g. <kbd><font color="#007777">0x28003ff</font></kbd>, you may connect to
- an existing window; you can find out the number of a window by using
- a tool like <kbd><font color="#007777">xwininfo</font></kbd>, part of X11 standard tools.</p> <br><b>method</b>&nbsp;out_size <b>(</b><i>integer</i> height<b>, </b><i>integer</i> width<b>)</b>
- changes the window's size, just like sending a grid
- dim(height,width,3) would.
- this affects the size of screen captures too. <br>
- <br><b>method</b>&nbsp;draw <b>(</b><b>)</b>
- forces a redraw of the window's contents. <br>
- <br><b>method</b>&nbsp;autodraw <b>(</b><i>0,1,2</i> level<b>)</b> <ul> <li><b>0</b> : draw() is never automatically invoked</li> <li><b>1</b> : draw() is invoked after each grid is finished</li> <li><b>2</b> : draw() is invoked incrementally after each row is
- received. (but buffering may cause lines to come in groups
- anyway)</li> </ul> <br>
- <br><b>method</b>&nbsp;setcursor <b>(</b><i>0..63</i> cursor<b>)</b>
- Selects one of the 64 predefined cursors of X11. (Note that if
- your cursor table has them numbered from 0 to 126 using only even
- numbers, then those cursor numbers are all doubled compared to
- the ones GridFlow uses.) <br>
- <br><b>method</b>&nbsp;hidecursor <b>(</b><b>)</b>
- This makes the cursor invisible. <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;position <b>(</b><i>integer</i> y<b>, </b><i>integer</i> x<b>, </b><i>integer</i> buttons<b>)</b> <p>This is emitted every time the cursor moves inside
- the window connected to this format handler. This is also
- emitted when the cursor is dragging from inside to outside
- the window. This is also emitted when a mouse button is pressed.</p> <p>The y and x coordinates are relative to the upper
- right corner of the window. Specific button states may be
- extracted from the button value by applying [&gt;&gt;
- buttonnumber] and then checking whether the result is odd.
- Button numbers normally are: <ul> <li><b>0</b> : Shift</li> <li><b>1</b> : CapsLock</li> <li><b>2</b> : Control</li> <li><b>3</b> : Alternate</li> <li><b>4</b> : NumLock</li> <li><b>5</b> : ???</li> <li><b>6</b> : Meta</li> <li><b>7</b> : ScrollLock</li> <li><b>8</b> : Left Button</li> <li><b>9</b> : Middle Button</li> <li><b>10</b> : Right Button</li> <li><b>11</b> : Wheel Up</li> <li><b>12</b> : Wheel Down</li> </ul></p> <p>NOTE: This message form may become longer in the future, but the already defined parts will stay the same.</p> <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;keypress <b>(</b><i>integer</i> y<b>, </b><i>integer</i> x<b>, </b><i>integer</i> buttons<b>, </b><i>symbol</i> keyname<b>)</b> <p>Similar to <kbd><font color="#007777">position</font></kbd> above, but this is emitted when a
- keyboard key is pressed while this format handler's window
- is active. Keynames follow the X11 standard, similarly to PureData's [keyname] object.
- The only exception is that keynames that are digits get prefixed by a capital D so that
- they don't get mistaken for actual numbers.</p> <p>NOTE: This message form may become longer in the future, but the already defined parts will stay the same.</p> <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;keyrelease <b>(</b><i>integer</i> y<b>, </b><i>integer</i> x<b>, </b><i>integer</i> buttons<b>, </b><i>symbol</i> keyname<b>)</b>
- Same as keypress but when a key gets released instead. <p>NOTE: This message form may become longer in the future, but the already defined parts will stay the same.</p> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="format quartz #out">format quartz #out</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/format quartz %23out-icon.png" alt="[format quartz #out]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- The equivalent of format x11 on MacOS 10.x, but with less features (sorry). <br><b>method</b>&nbsp;open <b>(</b><b>)</b>
- opens a dim(240,320,3) rgb window (default). <br>
- <br><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns {red green blue})</i> grid<b>)</b>
- Sends image to screen. Window will be resized to fit the image exactly. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="format sdl #out">format sdl #out</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/format sdl %23out-icon.png" alt="[format sdl #out]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;open <b>(</b><b>)</b>
- Opens a dim(240,320,3) rgb window (default). <br>
- <br><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns {red green blue})</i> grid<b>)</b>
- Sends image to screen. Window will be resized to fit the image exactly. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="format aalib #out">format aalib #out</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/format aalib %23out-icon.png" alt="[format aalib #out]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;open aalib <b>(</b>driver<b>, </b>args...<b>)</b> <br>
- <br><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns {white})</i> grid<b>)</b>
- converts a greyscale image to an ascii image and possibly
- displays it. note that the image is typically downscaled by
- a factor of 2 by aalib itself. <br>
- <br><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns {ascii attr})</i> grid<b>)</b>
- the inverse of "dump". Both together in a loop allow to
- post-process aalib's buffer before displaying. Goes well
- with "draw", "autodraw". <br>
- <br><b>method</b>&nbsp;print <b>(</b><i>int</i> y<b>, </b><i>int</i> x<b>, </b><i>int</i> attr<b>, </b><i>symbol</i> text<b>)</b> <br>
- <br><b>method</b>&nbsp;autodraw <b>(</b><b>)</b>
- like X11's autodraw. <br>
- <br><b>method</b>&nbsp;draw <b>(</b><b>)</b>
- like X11's draw. <br>
- <br><b>method</b>&nbsp;dump <b>(</b><b>)</b>
- produces a Dim[y,x,2] grid whose two channels are
- ascii character codes and character attributes. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="format window #out">format window #out</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/format window %23out-icon.png" alt="[format window #out]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;open window <b>(</b><b>)</b>
- Equivalent to "open x11", but this can be set by putting a line like
- this in the config file: <kbd><font color="#007777">GridFlow.formats[:window] = GridFlow.formats[:x11]</font></kbd>
- (and similarly other aliases can be created too) <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4">
-<p><font size="-1">
-GridFlow 0.8.1 Documentation<br>
-Copyright &copy; 2001,2002,2003,2004,2005,2006 by Mathieu Bouchard
-<a href="mailto:matju@artengine.ca">matju@artengine.ca</a>
-</font></p>
-</td></tr></table></body></html>
-
-
diff --git a/externals/gridflow/doc/format.xml b/externals/gridflow/doc/format.xml
deleted file mode 100644
index 030a777d..00000000
--- a/externals/gridflow/doc/format.xml
+++ /dev/null
@@ -1,780 +0,0 @@
-<?xml version="1.0" standalone="no" ?>
-<!DOCTYPE documentation SYSTEM 'jmax.dtd'>
-<documentation title="Reference Manual: Format Classes">
-<!-- $Id: format.xml,v 1.2 2006-03-15 04:44:50 matju Exp $ -->
-<!--
- GridFlow Reference Manual: Format Handler Reference
- Copyright (c) 2001,2002,2003,2004,2005 by Mathieu Bouchard
--->
-
-<section name="Objects for Input/Output">
-
- <class name="#in">
- <icon text="[#in]"/>
- <help text="[#in]" image="#inout"/>
-
- <method name="init" min="0">
- <arg name="format"/>
- <rest name="format_specific_part"/>
-
- If no arguments given, creates an input object for an unspecified
- format. You then need to use the <k>"open"</k> command to link
- a format handler to it.
-
- If arguments given, the <k>"open"</k> command is immediately called
- with those arguments.
-
- Remember that most formats produce Dim[rows,columns,3] grids with
- 0-255 values. (Most.)
- </method>
-
- <inlet id="0">
- <method name="open" min="1">
- <arg name="format"/>
- <rest name="format_specific_part"/>
- This is the command that gives a particular resource
- to a <k>[#out]</k> object. This is done through a "format"
- (there is a list of formats in this manual). The other
- arguments depend on the chosen format. The format may
- be a file format or a protocol or a hardware device, etc.
-
- The format called "file" is a special shortcut that autodetects the
- type of file (by name suffix) and picks up the appropriate handler.
- </method>
- <method name="open">
- <arg name="filename"/>
- This is a shortcut for <k>"open file"</k> followed by a filename.
- The filename must contain a dot, else it will be seen as a handler name.
- </method>
- <method name="close">
- close may be necessary if you operate on <k>"/dev/video"</k>,
- which can only be read by one at a time. otherwise it's
- usually not necessary.
- </method>
- <method name="int">
- <arg name="frame_number"/>
- selects one picture from a multi-picture format
- and then does the same as a bang.
- </method>
- <method name="set">
- <arg name="frame_number"/>
- selects one picture from a multi-picture format,
- to be displayed by the next bang.
- </method>
- <method name="bang">
- sends a grid through the outlet. the grid may be the
- result of reading from a file, acquiring from a device,
- capturing from the screen etc.
-
- this is format-specific. most formats
- produce grid(rows columns {red green blue}).
-
- In formats that read from a file, reading another picture
- will continue if there are several pictures in the
- same file, but if the end of file is reached instead,
- it will rewind and send the first picture again.
-
- see section "External Picture Formats".
-
- </method>
- <method name="option">
- <arg name="selector" type="symbol"/>
- <rest name="stuff"/>
- Obsolete. the word "option" is optional now.
- </method>
- <method name="rewind">
- rewinds to beginning of file if applicable.
- </method>
- <method name="loop">
- <arg name="flag" type="bool"/>
- controls the automatic looping of movies.
- </method>
- </inlet>
-
- <outlet id="1">
- <method name="int">
- frame number of frame just sent,
- for formats that have frame numbers.
- </method>
-
- <method name="bang">
- tried to read a frame that does not exist
- (signals end of file)
- </method>
- </outlet>
- </class>
-
- <class name="#out">
- <icon text="[#out]"/>
- <help text="[#out]" image="#inout"/>
-
- <method name="init" min="0">
- <arg name="format"/>
- <rest name="format_specific_part"/>
-
- If no arguments given, creates an output object for an unspecified
- format. You then need to use the <k>"open"</k> command to link
- a format handler to it.
-
- If arguments given, the <k>"open"</k> command is immediately called
- with those arguments.
-
- Remember that most formats expect dim(rows,columns,3) grids with
- 0-255 values. (Most.)
- </method>
- <method name="init">
- <arg name="rows" type="integer"/>
- <arg name="columns" type="integer"/>
-
- This alternate way to create an <k>[#out]</k> automatically calls
- <k>"open window"</k> and <k>"out_size <i>rows columns</i>"</k>.
- </method>
- <inlet id="0">
- <method name="open" min="1">
- <arg name="format"/>
- <rest name="format_specific_part"/>
- This is the command that gives a particular resource
- to a <k>[#out]</k> object. This is done through a "format"
- (there is a list of formats in this manual). The other
- arguments depend on the chosen format. The format may
- be a file format or a protocol or a hardware device, etc.
- </method>
- <method name="open file">
- The format called "file" is a special shortcut that autodetects the
- type of file (by name suffix) and picks up the appropriate handler.
- </method>
- <method name="open">
- <arg name="filename"/>
- This is a shortcut for "open file" followed by a filename.
- The filename must contain a dot, else it will be seen as a handler name.
- </method>
- <method name="grid"><arg name="grid" type="grid"/>
- this is format-specific. most formats
- expect grid(rows columns {red green blue}).
-
- In formats that write to a file, sending a 2nd picture
- overwrites the first.
-
- see section "External Picture Formats".
- </method>
- <method name="close">
- closes the file. usually not necessary.
- </method>
- <method name="option">
- <arg name="selector" type="symbol"/>
- <rest name="stuff"/>
- Obsolete. Omit the word "option" now.
- </method>
- <method name="timelog">
- <arg name="status" type="0,1"/>
- when status=1, current time (unix clock) and time since last
- frame-end are printed in the console. when status=0, it is off.
- default is 0.
- </method>
- <method name="rewind">
- rewinds to beginning of file if applicable.
- will overwrite the previous data.
- </method>
- </inlet>
- <outlet id="0">
- <method name="bang">
- sent when a complete grid has been received.
- </method>
- </outlet>
- </class>
-
- <class name="#peephole">
- <p>
- This object class only works with a X11-based version of Pd.
- (e.g. on Linux, BSD, but not MacOS X).
- </p>
- <p>Similar to <k>[#out window]</k>, except it creates an inset in the patch you put it
- in, and a scaled version of the picture appears in the inset. It also emits the same messages
- as <k>[#out window]</k> and automatically scales cursor position according to the current scale factor.
- The scale factor is decided automatically.
- </p>
- <method name="init">
- <arg name="height" type="int"/>
- <arg name="width" type="int"/>
- </method>
- <p>All other methods are as in <k>[#out window]</k>.</p>
- </class>
- <class name="#mouse">
- This will process the "position" messages emitted by <k>[#out]</k> or <k>[#peephole]</k> in
- useful ways.
- <outlet id="0"><method name="list">
- y,x coords of a click
- </method></outlet>
- <outlet id="1"><method name="list">
- y,x coords of a drag (any button is kept pressed)
- </method></outlet>
- <outlet id="2"><method name="list">
- y,x coords of an unclick
- </method></outlet>
- <outlet id="3"><method name="list">
- y,x coords of a move (no button is pressed)
- </method></outlet>
- <outlet id="4"><method name="float" type="0,1">button 1 status</method></outlet>
- <outlet id="5"><method name="float" type="0,1">button 2 status</method></outlet>
- <outlet id="6"><method name="float" type="0,1">button 3 status</method></outlet>
- <outlet id="7"><method name="float" type="-1,1">
- wheel difference: -1 = roll up; 1 = roll down.
- </method></outlet>
- </class>
- <class name="#camera">
- Works about like <k>[#in videodev]</k> except you can right-click-open it to access all of the
- camera settings visually.
- </class>
-</section>
-
-<section name="Picture/Movie Formats">
-
- <class name="format ppm #in/#out">
- <icon image="format_ppm" text="[open filename.ppm]"/>
-
- <p>Subformat P6 only.
- Max-number can only be 255 (24-bit RGB).
- </p>
-
- <method name="open ppm file">
- <arg name="filename" type="symbol"/>
- opens the specified file, taken from the current
- directory.
- </method>
-
- <method name="open ppm gzfile">
- <arg name="filename" type="symbol"/>
- same but for .ppm.gz files
- </method>
-
- <method name="grid">
- <arg name="grid" type="grid(rows columns {r g b})"/>
- values 0-255
- </method>
- </class>
-
- <class name="format targa #in/#out">
- <icon image="format_targa" text="[open filename.tga]"/>
- <p>Support for RGB-24 (3 channels) and RGBA-32 (4 channels)</p>
-
- <method name="open targa file">
- <arg name="filename" type="symbol"/>
- opens the specified file, taken from the current
- directory.
- </method>
-
- <method name="open targa gzfile">
- <arg name="filename" type="symbol"/>
- same but for .tga.gz files
- </method>
-
- <method name="grid"><arg name="grid" type="grid(rows columns 3)"/>RGB-24</method>
- <method name="grid"><arg name="grid" type="grid(rows columns 4)"/>RGBA-32</method>
- </class>
-
- <class name="format jpeg #in/#out">
- <!--<icon image="format_jpeg" text="[open foo.jpg]"/>-->
- <p>Support for RGB non-progressive</p>
-
- <method name="open jpeg file">
- <arg name="filename" type="symbol"/>
- opens the specified file, taken from the current
- directory.
- </method>
-
- <method name="grid">
- <arg name="grid" type="grid(rows columns 3)"/>RGB-24
- </method>
- </class>
-
- <class name="format png #in">
- <!--<icon image="format_jpeg" text="[open foo.jpg]"/>-->
- <p>Support for RGB non-progressive</p>
-
- <method name="open png file">
- <arg name="filename" type="symbol"/>
- opens the specified file, taken from the current
- directory.
- </method>
-
- <method name="grid"><arg name="grid" type="grid(rows columns 1)"/>Y-8 (greyscale)</method>
- <method name="grid"><arg name="grid" type="grid(rows columns 2)"/>YA-16 (greyscale and transparency)</method>
- <method name="grid"><arg name="grid" type="grid(rows columns 3)"/>RGB-24 (colour)</method>
- <method name="grid"><arg name="grid" type="grid(rows columns 4)"/>RGBA-32 (colour and transparency)</method>
- </class>
-
- <class name="format quicktime #in/#out">
- <p>Support for .mov files.</p>
- <p>This format supports frame-seek and frame-tell.</p>
- <p>Uses the HW-QuickTime library aka QuickTime4Linux
- (libquicktime.so). There is also a variant on the same library and that project
- is just called LibQuickTime.</p>
- <p>Some versions of those libraries may include support for different codecs,
- and some also may support entirely different wrapper formats such as AVI.</p>
- <p>On Macintosh, Apple QuickTime is used instead, but several of the following
- messages may not be available.</p>
-
- <method name="open quicktime file">
- <arg name="filename" type="symbol" />
- </method>
- <method name="codec">
- <arg name="codec" type="symbol"/>
- Allowed values are at least: raw, jpeg, png, mjpa, yuv2, yuv4.
- Some other values may allowed, depending on the version of the library
- and which codec plugins are installed.
- Must be set before the first frame is written.
- only applies to <k>[#out]</k>. Choosing a codec is important
- because codecs influence greatly the speed of
- encoding, the speed of decoding,
- the size of the written file, and its fidelity to the
- original content. Note that there exist other Apple-QuickTime
- codecs that are not supported by HW-QuickTime.
- </method>
- <method name="parameter">
- <arg name="key" type="symbol"/>
- <arg name="value" type="int"/>
- Sets special codec-specific settings.
- For example: <k>"parameter jpeg_quality 75"</k>
- </method>
- <method name="framerate">
- <arg name="fps" type="int"/>
- Sets the framerate of the file.
- This is not used by GridFlow when reading a file, but other
- programs usually care.
- </method>
-
- <method name="colorspace">
- <arg name="colorspace" type="symbol"/>
- Allowed values are rgb, rgba, bgr, bgra, yuv, yuva.
- Normally you don't need this.
- </method>
- <method name="size">
- <arg name="height" type="int"/>
- <arg name="width" type="int"/>
- Forces a window size when writing. Usually this has to be used <u>after</u>
- setting the framerate and codec and <u>before</u> setting the codec-parameters.
- (Strange. Sorry.)
- </method>
- <method name="force_size">
- <arg name="height" type="int"/>
- <arg name="width" type="int"/>
- forces a window size when reading.
- this is a workaround for a problem in HW-QuickTime.
- </method>
- </class>
-
- <class name="format mpeg #in">
- <icon image="format_mpeg" text="[open mpeg file filename.mpeg]"/>
- <p>support for .mpeg files</p>
- <p>this format supports frame-seek and frame-tell.</p>
- <p>Two different libraries are available for dealing with
- MPEG files. Those have different details, capabilities and quirks.</p>
- <p>In any case, GridFlow does not support importing audio from
- those files.</p>
- <p>If you use the HeroineWarrior library, you may open several
- mpeg files at once, but not with the GregWard library.</p>
- <p>Libraries may scream error messages in a rude way.</p>
- <p>By opposition to PPM and TARGA, this format driver only
- allows a single MPEG stream per file (you cannot "cat"
- several MPEG files together).
- </p>
- <p>Supports Rewind and Frame Select.</p>
- <method name="open mpeg file">
- <arg name="filename" type="symbol"/>
- opens the specified file, taken from the current
- directory.
- </method>
- </class>
-
- <class name="format grid #in/#out">
- <icon image="format_grid" text="[open grid file filename.grid]"/>
- <icon image="format_grid_tcp" text="[open grid tcp artengine.ca 4242]"/>
- <icon image="format_grid_tcpserver" text="[open grid tcpserver 4242]"/>
-
- <p>
- This is GridFlow's special file format. This is the only I/O
- format that can hold anything that the <k>[#store]</k> object can.
- </p>
- <p>
- This is the picture format that would support TCP connections
- if that feature actually worked. More on this later.
- </p>
-
- <method name="open grid file">
- <arg name="filename" type="symbol"/>
- opens the specified file, taken from the current
- directory.
- </method>
- <method name="open grid gzfile">
- <arg name="filename" type="symbol"/>
- same but for .grid.gz files
- </method>
- <method name="open grid tcp">
- <arg name="hostname" type="symbol"/>
- <arg name="port" type="integer"/>
- dials an specified hostname/port on the InterNet or
- compatible network. the TCP protocol is used.
- </method>
- <method name="open grid tcpserver">
- <arg name="port" type="integer"/>
- waits for a call (and answers) for this port on the
- local machine via InterNet or compatible network.
- Answers the call.
- </method>
- <method name="type int32">
- output will be as 32 bit signed integers.
- </method>
- <method name="type uint8">
- output will be as 8 bit unsigned integers.
- </method>
- <method name="headerful">
- cancels "headerless" (and back to reading .grid)
- </method>
- <method name="headerless">
- <rest name="dimensions" type="integer"/>
- instead of reading .grid files with header, will read raw data,
- faking a .grid header to itself. It will use the hereby specified
- dimension list, as well as two other settings:
- <k>type</k> and <k>endian</k>.
- </method>
-
- <p>When writing "raw" data, a file may be considered a long string of
- base 256 digits (called bytes), but different computers have different
- conventions for dealing with them:
-
- <method name="endian" type="symbol(big|endian|same)">
- <list><li>big:
- A number will be written starting with the biggest digit.
- This is the natural way on the Macintosh, Sun, Amiga, and so on.
- </li>
- <li>little:
- A number will be written starting with the smallest digit.
- This is the natural way on the Intel 386/Pentium.
- </li>
- <li>same:
- A number will be written in whichever way is more natural
- on this computer. The natural way is slightly faster to handle.
- This is the default setting.
- </li>
- </list>
- </method>
- </p>
- </class>
-</section>
-
-<section name="Acquisition Devices">
-
- <class name="format videodev #in">
- <icon image="format_videodev" text="[open /dev/video0]"/>
-
- <method name="open">
- <arg name="device"/>
- </method>
-
- <p>Video4Linux-1 devices, RGB-24 only. Variable picture size.</p>
-
- <p>We have been testing it using cards of the BT-848 family,
- such as Miro DC10plus and Hauppauge WinTV, using the <k>bttv.o</k> linux driver.
- Also we have been testing using Logitech QuickCam (and similar Labtec hardware),
- but don't use the <k>qce-ga</k> driver, which is buggy and obsolete: the <k>qc-usb</k>
- works better.</p>
-
- <p>Some hardware doesn't support RGB, so you may have to select a YUV colorspace
- (see below) and then use <k>[#yuv_to_rgb]</k>. Don't forget to also do
- <k>[# min 255]</k> and <k>[# max 0]</k>.
- </p>
-
- <p>If for some reason there's a bug that causes a driver to produce BGR instead of RGB,
- so that red and blue are swapped, you can swap them back by filtering through a RGB-BGR
- converter, such as <k>[#inner * + 0 {3 3 # 0 0 1 0 1 0 1 0 0}]</k>.</p>
-
- <p>color adjustments:
- <method name="brightness"><arg name="level" type="0-65535"/></method>
- <method name="hue" ><arg name="level" type="0-65535"/></method>
- <method name="colour" ><arg name="level" type="0-65535"/></method>
- <method name="contrast" ><arg name="level" type="0-65535"/></method>
- <method name="whiteness" ><arg name="level" type="0-65535"/></method>
- </p>
- <method name="get">
- <arg name="attr" type="symbol"/>
- gets a specific attribute. a message is sent through right outlet.
- valid attributes are: brightness, hue, colour, contrast, whiteness.
- </method>
- <method name="get">
- gets all attributes.
- </method>
-
- <p>other options:
- <method name="channel" ><arg type="integer"/></method>
- <method name="tuner" ><arg type="integer"/></method>
- <method name="norm" ><arg type="integer"/></method>
- <method name="frequency" ><arg type="integer"/></method>
- <method name="transfer" >
- <arg type="symbol(read|mmap)"/>
- <arg type="integer" default="2"/>
- <list>
- <li>mmap:
- This is the normal (and fast) way of transferring pictures
- from the camera.
- </li>
- <li>read:
- Some cameras/drivers only support this instead of mmap.
- </li></list>
- In case of mmap, the extra numeric argument sets the
- queue length in number of frames, so you can select an
- appropriate tradeoff between efficiency and latency.
- </method>
-
- <method name="colorspace">
- <arg name="colorspace" type="symbol"/>
- Allowed values are: RGB24, YUV420P.
- Use this if your driver doesn't support RGB24.
- </method>
-
- <method name="size">
- <arg name="height"/>
- <arg name="width"/>
- sets the input size, especially when using a video digitalizer
- device.
- </method>
- </p>
- </class>
-</section>
-
-<section name="Window Output">
-
- <class name="format x11 #in/#out">
- <icon image="format_x11" text="[open window]"/>
- <icon image="format_x11_remote" text="[open x11 remote artengine.ca 10]"/>
-
- <p>supports 15,16,24,32-bit truecolor displays</p>
-
- <p>now also support 8-bit indexed displays, using a private colormap
- configured as 3:3:2 RGB. When using 8-bit you can specify the
- "use_stripes" option to use a completely different color scheme
- involving R,G,B diagonal stripes, a kind of 6:6:6 RGB spread over three
- pixels.</p>
-
- <p>If you are using Windows or MacOS 10: you will have to install
- a X11 server. This will emulate Unix display on your OS. (note:
- Unix systems also need a X11 server, but it's built-in and handles
- the video driver directly). In the case of MacOS 10 and QNX that both
- use non-X11 display technology on top of a basically Unix OS, the
- OS comes with a X11 server, but it may be on a "bundled software"
- CD.</p>
-
- <method name="open x11">
- synonym of "open x11 here".
- </method>
-
- <method name="open x11 here">
- connects to the default X11 server,
- according to your environment variable "DISPLAY".
- </method>
-
- <method name="open x11 local">
- <arg name="display_number" type="integer"/>
- connects to a display server on this machine.
- </method>
-
- <method name="open x11 remote">
- <arg name="host_name" type="symbol"/>
- <arg name="display_number" type="integer"/>
- connects to a remote X11 display server using TCP.
- Sorry, IP addresses are not supported.
- Port number will be 6000 plus the display number, because
- of the X11 standard.
- </method>
-
- <method name="grid">
- <arg name="grid" type="grid(rows columns {red green blue})"/>
- resizes the window to the size of the grid;
- encodes that grid in the display's pixel format;
- also displays it if autodraw &gt; 0
- the values must be in range 0-255,
- or else they will be "wrapped".
- </method>
-
- <p>
- Destroying the object (or sending "close") should close the window.
- </p>
-
- <p>because of the design of Xlib, or if any of the connections
- involved crashes, then the whole program has to be terminated.
- (don't you love xlib). Something similar happens if you close any
- of the windows yourself, but IIRC this could be fixed.</p>
-
- <p>only one window may be used per connection (to simplify matters;
- this doesn't reduce flexibility).</p>
-
- <p>there is an additional argument that may be added to every
- <k>"open"</k> message; if you don't put it, a new toplevel window is created.
- if you put "root" then the screen's wallpaper will be used instead
- (it may fail to work with some popular window managers). You can also
- put a window number, e.g. <k>0x28003ff</k>, you may connect to
- an existing window; you can find out the number of a window by using
- a tool like <k>xwininfo</k>, part of X11 standard tools.</p>
-
- <method name="out_size">
- <arg name="height" type="integer"/>
- <arg name="width" type="integer"/>
- changes the window's size, just like sending a grid
- dim(height,width,3) would.
-
- this affects the size of screen captures too.
- </method>
-
- <method name="draw">
- forces a redraw of the window's contents.
- </method>
-
- <method name="autodraw">
- <arg name="level" type="0,1,2"/>
- <list start="0">
- <li>draw() is never automatically invoked</li>
- <li>draw() is invoked after each grid is finished</li>
- <li>draw() is invoked incrementally after each row is
- received. (but buffering may cause lines to come in groups
- anyway)</li>
- </list>
- </method>
-
- <method name="setcursor">
- <arg name="cursor" type="0..63"/>
- Selects one of the 64 predefined cursors of X11. (Note that if
- your cursor table has them numbered from 0 to 126 using only even
- numbers, then those cursor numbers are all doubled compared to
- the ones GridFlow uses.)
- </method>
-
- <method name="hidecursor">
- This makes the cursor invisible.
- </method>
-
- <outlet id="0">
- <method name="position">
- <arg name="y" type="integer"/>
- <arg name="x" type="integer"/>
- <arg name="buttons" type="integer"/>
-
- <p>This is emitted every time the cursor moves inside
- the window connected to this format handler. This is also
- emitted when the cursor is dragging from inside to outside
- the window. This is also emitted when a mouse button is pressed.</p>
-
- <p>The y and x coordinates are relative to the upper
- right corner of the window. Specific button states may be
- extracted from the button value by applying [&gt;&gt;
- buttonnumber] and then checking whether the result is odd.
- Button numbers normally are:
- <list start="0">
- <li>Shift</li>
- <li>CapsLock</li>
- <li>Control</li>
- <li>Alternate</li>
- <li>NumLock</li>
- <li>???</li>
- <li>Meta</li>
- <li>ScrollLock</li>
- <li>Left Button</li>
- <li>Middle Button</li>
- <li>Right Button</li>
- <li>Wheel Up</li>
- <li>Wheel Down</li>
- </list></p>
- <p>NOTE: This message form may become longer in the future, but the already defined parts will stay the same.</p>
- </method>
- <method name="keypress">
- <arg name="y" type="integer"/>
- <arg name="x" type="integer"/>
- <arg name="buttons" type="integer"/>
- <arg name="keyname" type="symbol"/>
- <p>Similar to <k>position</k> above, but this is emitted when a
- keyboard key is pressed while this format handler's window
- is active. Keynames follow the X11 standard, similarly to PureData's [keyname] object.
- The only exception is that keynames that are digits get prefixed by a capital D so that
- they don't get mistaken for actual numbers.</p>
- <p>NOTE: This message form may become longer in the future, but the already defined parts will stay the same.</p>
- </method>
- <method name="keyrelease">
- <arg name="y" type="integer"/>
- <arg name="x" type="integer"/>
- <arg name="buttons" type="integer"/>
- <arg name="keyname" type="symbol"/>
- Same as keypress but when a key gets released instead.
- <p>NOTE: This message form may become longer in the future, but the already defined parts will stay the same.</p>
- </method>
- </outlet>
- </class>
-
- <class name="format quartz #out">
- The equivalent of format x11 on MacOS 10.x, but with less features (sorry).
- <method name="open">
- opens a dim(240,320,3) rgb window (default).
- </method>
- <method name="grid">
- <arg name="grid" type="grid(rows columns {red green blue})"/>
- Sends image to screen. Window will be resized to fit the image exactly.
- </method>
- </class>
-
- <class name="format sdl #out">
- <method name="open">
- Opens a dim(240,320,3) rgb window (default).
- </method>
- <method name="grid">
- <arg name="grid" type="grid(rows columns {red green blue})"/>
- Sends image to screen. Window will be resized to fit the image exactly.
- </method>
- </class>
-
- <class name="format aalib #out">
- <method name="open aalib">
- <arg name="driver">
- Normally "X11" with uppercase X; else consult
- the AALib manual.
- </arg>
- <rest name="args">
- You can pass "commandline options" of AALib here.
- </rest>
- </method>
- <method name="grid">
- <arg name="grid" type="grid(rows columns {white})"/>
- converts a greyscale image to an ascii image and possibly
- displays it. note that the image is typically downscaled by
- a factor of 2 by aalib itself.
- </method>
- <method name="grid">
- <arg name="grid" type="grid(rows columns {ascii attr})"/>
- the inverse of "dump". Both together in a loop allow to
- post-process aalib's buffer before displaying. Goes well
- with "draw", "autodraw".
- </method>
- <method name="print">
- <arg name="y" type="int"/>
- <arg name="x" type="int"/>
- <arg name="attr" type="int"/>
- <arg name="text" type="symbol"/>
- </method>
- <method name="autodraw">
- like X11's autodraw.
- </method>
- <method name="draw">
- like X11's draw.
- </method>
- <method name="dump">
- produces a Dim[y,x,2] grid whose two channels are
- ascii character codes and character attributes.
- </method>
- </class>
-
- <class name="format window #out">
- <method name="open window">
- Equivalent to "open x11", but this can be set by putting a line like
- this in the config file: <k>GridFlow.formats[:window] = GridFlow.formats[:x11]</k>
- (and similarly other aliases can be created too)
- </method>
- </class>
-</section>
-
-</documentation>
diff --git a/externals/gridflow/doc/format/#camera-icon.png b/externals/gridflow/doc/format/#camera-icon.png
deleted file mode 100644
index 994f5a54..00000000
--- a/externals/gridflow/doc/format/#camera-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/format/#in-help.pd b/externals/gridflow/doc/format/#in-help.pd
deleted file mode 100644
index 4287c2ff..00000000
--- a/externals/gridflow/doc/format/#in-help.pd
+++ /dev/null
@@ -1,189 +0,0 @@
-#N canvas 63 0 743 682 10;
-#X obj 268 100 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X obj 278 120 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 6 682 cnv 15 720 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X obj 8 5 cnv 15 720 15 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 268 25 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 271 25 Arguments:;
-#X obj 271 513 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 274 512 Outlets:;
-#X obj 8 25 cnv 15 250 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 11 25 Usage:;
-#X obj 8 45 cnv 15 250 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 85 cnv 15 250 130 empty empty empty 5 11 0 12 -233017 -1 0
-;
-#X obj 8 223 cnv 15 250 400 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 269 610 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 271 100 Inlets: (Read left to right \, inlet "0" being the
-leftmost);
-#X text 281 120 0: (Leftmost);
-#X text 12 5 SUMMARY:;
-#X text 76 6 Imports a grid \, usually an image \, video or live stream.
-;
-#X obj 121 51 #in;
-#X obj 14 179 #out window;
-#X obj 14 112 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X floatatom 114 348 5 0 0 0 - - -;
-#X msg 55 348 set 2;
-#X msg 22 133 open b001.jpg;
-#X text 13 86 for images:;
-#X obj 23 564 #out window;
-#X obj 13 285 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X msg 45 326 open movie.mpeg;
-#X msg 116 398 loop 0;
-#X msg 129 426 loop 1;
-#X floatatom 47 537 5 0 0 0 - - -;
-#X msg 116 373 rewind;
-#X text 14 226 for video files:;
-#X obj 68 516 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 14 156 #in;
-#X obj 161 143 #in b001.jpg;
-#X obj 161 107 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 161 179 #out window;
-#X obj 23 501 #in;
-#X text 274 411 Message "loop 0" - turns off the loop option. The video
-stops once it reaches the end.;
-#X text 278 148 Grid - Bang sends a grid to [#out]. Since frames from
-video and live stream are read as a series of individual grids \, successive
-bangs advance through the frames.;
-#X text 277 368 Message "loop 1" - Restarts a video each time it reaches
-the end \, "loop 1" is the default setting.;
-#X obj 277 643 #import ( 1 );
-#X obj 380 643 #export;
-#X obj 442 644 #export_list;
-#X obj 539 644 #export_symbol;
-#X obj 648 644 #pack;
-#X text 282 45 One - [Filename] like [#in b001.jpg] eliminates the
-need for an "open someimege.jpg" message but limits the action to one
-specified grid.;
-#X text 277 199 Message "open" - followed by the filename \, sends
-a grid to [#out]. For example: "open b001.jpg".;
-#X text 275 456 Interger - Displays the frame number of the frame just
-sent. Applies to formats that have frame numbers \, i.e. video.;
-#X text 275 566 Bang- Signals the end of a file and when a file is
-unreadable.;
-#X text 276 337 Message "rewind" - Will rewind video to the beginning.
-;
-#X text 277 296 Message "close" - Closes the video input device. Only
-necessary when you are using a live capture device.;
-#X text 273 536 See Inlet: 1: (leftmost);
-#X text 12 689 GridFlow 0.8.0;
-#X text 272 610 See also:;
-#N canvas 0 0 656 649 more 0;
-#X msg 225 70 codec jpg;
-#X msg 220 340 framerate 33;
-#X msg 220 550 colorspace rgb;
-#X msg 221 264 size 400 600;
-#X msg 219 404 force_size 400 600;
-#X obj 23 591 #in;
-#X msg 220 607 open quicktime.mov;
-#X text 221 18 The following messages can be used to set parameters
-for video (.mov) files.;
-#X text 219 364 Number of frames per second.;
-#X text 221 145 different versions of LibQuickTime may include support
-for different codecs \, and some may also support entirely different
-wrapper formats such as AVI.;
-#X text 222 230 Codecs must be set before first frame is written.;
-#X msg 219 465 parameter jpeg_quality 85;
-#X text 218 572 Other colrspaces include rgba \, bgr \, bgra \, yuv
-\, yuva.;
-#X text 219 425 Determines window size when reading a video file.;
-#X text 580 93 comment;
-#X text 222 92 quicktime library for linux accepts LibQuickTime (libquicktime.so).
-codecs currently available are: Raw \, jpeg \, png \, mipa \, yuv2
-\, yuv4.;
-#X text 221 192 QuickTime library for Macintosh: Apple QuickTime (some
-codecs/features may not be available).;
-#X text 219 288 Sets height and width. Must be set before setting the
-codec parameters and after setting framerate and codec.;
-#X text 219 486 Sets compression quality (100 being the highest quality
-but a large file. 75-85 is the standard setting).;
-#X connect 0 0 5 0;
-#X connect 1 0 5 0;
-#X connect 2 0 5 0;
-#X connect 3 0 5 0;
-#X connect 4 0 5 0;
-#X connect 6 0 5 0;
-#X connect 11 0 5 0;
-#X restore 5 632 pd more info about quicktime files;
-#N canvas 0 0 874 655 more 0;
-#X msg 338 499 open videodev \$1 \, get;
-#X msg 53 273 brightness 1000;
-#X msg 42 250 hue 1000;
-#X msg 27 227 color 1000;
-#X msg 66 297 contrast 1000;
-#X msg 15 204 whiteness 1000;
-#X msg 537 76 channel 2;
-#X msg 537 106 tuner 2;
-#X msg 538 136 norm 2;
-#X msg 538 164 frequency 2;
-#X msg 465 267 transfer mmap 4;
-#X msg 464 390 transfer read;
-#X msg 341 612 colorspace RGB24;
-#X msg 340 555 size 400 600;
-#X obj 110 521 #in;
-#X obj 193 299 #contrast;
-#X text 167 298 or;
-#X text 339 575 Sets height and width of the input.;
-#X text 465 328 In the case of mmap \, the extra numeric argument sets
-the queue length in number of frames \, so you can select an appropriate
-tradeoff between efficiency and latency.;
-#X text 339 16 Grid Settings;
-#X text 465 291 This is the standard and fastest way to receive pictures
-from the camera.;
-#X text 465 413 Some cameras/drivers only support "transfer read" and
-not mmap.;
-#X text 13 147 Message "get brightness" or "get" followed by any of
-the other colour attributes will display its values in the console.
-;
-#X text 337 521 Opens video device.;
-#X text 341 632 Supported values are RGB24 or YUV420P.;
-#X text 10 88 Color Adjustments;
-#X text 12 115 Values from 0 to 65535;
-#X connect 0 0 14 0;
-#X connect 1 0 14 0;
-#X connect 2 0 14 0;
-#X connect 3 0 14 0;
-#X connect 4 0 14 0;
-#X connect 5 0 14 0;
-#X connect 6 0 14 0;
-#X connect 7 0 14 0;
-#X connect 8 0 14 0;
-#X connect 9 0 14 0;
-#X connect 10 0 14 0;
-#X connect 11 0 14 0;
-#X connect 12 0 14 0;
-#X connect 13 0 14 0;
-#X restore 5 657 pd more info about video devices;
-#X text 276 242 Message "set" - followed by a number will select the
-corresponding video frame. A bang must be sent to [#in] in order to
-display the frame.;
-#X connect 20 0 34 0;
-#X connect 21 0 38 0;
-#X connect 22 0 38 0;
-#X connect 23 0 34 0;
-#X connect 26 0 38 0;
-#X connect 27 0 38 0;
-#X connect 28 0 38 0;
-#X connect 29 0 38 0;
-#X connect 31 0 38 0;
-#X connect 34 0 19 0;
-#X connect 35 0 37 0;
-#X connect 36 0 35 0;
-#X connect 38 0 25 0;
-#X connect 38 1 30 0;
-#X connect 38 1 33 0;
diff --git a/externals/gridflow/doc/format/#in-icon.png b/externals/gridflow/doc/format/#in-icon.png
deleted file mode 100644
index a4c06bef..00000000
--- a/externals/gridflow/doc/format/#in-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/format/#mouse-icon.png b/externals/gridflow/doc/format/#mouse-icon.png
deleted file mode 100644
index e8bc94bd..00000000
--- a/externals/gridflow/doc/format/#mouse-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/format/#out-icon.png b/externals/gridflow/doc/format/#out-icon.png
deleted file mode 100644
index c64c94b5..00000000
--- a/externals/gridflow/doc/format/#out-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/format/#peephole-icon.png b/externals/gridflow/doc/format/#peephole-icon.png
deleted file mode 100644
index 809e93ab..00000000
--- a/externals/gridflow/doc/format/#peephole-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/format/#quicktime-help.pd b/externals/gridflow/doc/format/#quicktime-help.pd
deleted file mode 100644
index 22a6c9d0..00000000
--- a/externals/gridflow/doc/format/#quicktime-help.pd
+++ /dev/null
@@ -1,10 +0,0 @@
-#N canvas 328 114 500 300 10;
-#X msg 93 60 codec jpg;
-#X msg 94 92 parameter jpeg_quality 75;
-#X msg 309 255 framerate 33;
-#X msg 182 229 colorspace rgb;
-#X msg 285 165 size 400 600;
-#X msg 294 92 force_size 400 600;
-#X obj 117 261 #in;
-#X msg 107 194 open quicktime.mov;
-#X connect 7 0 6 0;
diff --git a/externals/gridflow/doc/format/#videodev-help.pd b/externals/gridflow/doc/format/#videodev-help.pd
deleted file mode 100644
index 948b4ae4..00000000
--- a/externals/gridflow/doc/format/#videodev-help.pd
+++ /dev/null
@@ -1,15 +0,0 @@
-#N canvas 442 389 450 300 10;
-#X msg 114 236 open videodev \$1 \, get;
-#X msg 106 12 brightness 1000;
-#X msg 106 35 hue 1000;
-#X msg 107 64 color 1000;
-#X msg 107 87 contrast 1000;
-#X msg 107 120 whiteness 1000;
-#X msg 288 59 channel 2;
-#X msg 287 84 tuner 2;
-#X msg 287 107 norm 2;
-#X msg 291 138 frequency 2;
-#X msg 108 156 transfer mmap 4;
-#X msg 103 184 transfer read;
-#X msg 283 210 colorspace RGB24;
-#X msg 288 167 size 400 600;
diff --git a/externals/gridflow/doc/format/aalib-icon.png b/externals/gridflow/doc/format/aalib-icon.png
deleted file mode 100644
index f649f20a..00000000
--- a/externals/gridflow/doc/format/aalib-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/format/jpeg-icon.png b/externals/gridflow/doc/format/jpeg-icon.png
deleted file mode 100644
index 9d2c40b1..00000000
--- a/externals/gridflow/doc/format/jpeg-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/format/opengrid-icon.png b/externals/gridflow/doc/format/opengrid-icon.png
deleted file mode 100644
index 3999ef2a..00000000
--- a/externals/gridflow/doc/format/opengrid-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/format/openmpeg-icon.png b/externals/gridflow/doc/format/openmpeg-icon.png
deleted file mode 100644
index ad277155..00000000
--- a/externals/gridflow/doc/format/openmpeg-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/format/openppm-icon.png b/externals/gridflow/doc/format/openppm-icon.png
deleted file mode 100644
index 124127fb..00000000
--- a/externals/gridflow/doc/format/openppm-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/format/opentarga-icon.png b/externals/gridflow/doc/format/opentarga-icon.png
deleted file mode 100644
index 5141a8ab..00000000
--- a/externals/gridflow/doc/format/opentarga-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/format/openx11-icon.png b/externals/gridflow/doc/format/openx11-icon.png
deleted file mode 100644
index 83aa5a69..00000000
--- a/externals/gridflow/doc/format/openx11-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/format/png-icon.png b/externals/gridflow/doc/format/png-icon.png
deleted file mode 100644
index d055ce24..00000000
--- a/externals/gridflow/doc/format/png-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/format/quartz-icon.png b/externals/gridflow/doc/format/quartz-icon.png
deleted file mode 100644
index 943d9161..00000000
--- a/externals/gridflow/doc/format/quartz-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/format/quicktime-icon.png b/externals/gridflow/doc/format/quicktime-icon.png
deleted file mode 100644
index 999e13aa..00000000
--- a/externals/gridflow/doc/format/quicktime-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/format/sdl-icon.png b/externals/gridflow/doc/format/sdl-icon.png
deleted file mode 100644
index 959d2e8e..00000000
--- a/externals/gridflow/doc/format/sdl-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/format/videodev-icon.png b/externals/gridflow/doc/format/videodev-icon.png
deleted file mode 100644
index cd5b30d8..00000000
--- a/externals/gridflow/doc/format/videodev-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/format/window-icon.png b/externals/gridflow/doc/format/window-icon.png
deleted file mode 100644
index aab7d110..00000000
--- a/externals/gridflow/doc/format/window-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/format/window2-icon.png b/externals/gridflow/doc/format/window2-icon.png
deleted file mode 100644
index 54c925e1..00000000
--- a/externals/gridflow/doc/format/window2-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/gridflow.css b/externals/gridflow/doc/gridflow.css
deleted file mode 100644
index eae50bfa..00000000
--- a/externals/gridflow/doc/gridflow.css
+++ /dev/null
@@ -1,15 +0,0 @@
-P {color:#000000; font-family: Arial, Helvetica, sans-serif; font-size:12px;}
-B {color:#336699;}
-A {color:#003366; font-family: Arial, Helvetica, sans-serif;}
-A:link {color:#003366;}
-A:active {color:#336699;}
-A:visited {color:#336699;}
-BODY {background-color:#FFFFFF;}
-H1 {color:#336699; font-family: Arial, Helvetica, sans-serif;}
-H2 {color:#336699; font-family: Arial, Helvetica, sans-serif;}
-H3 {color:#336699; font-family: Arial, Helvetica, sans-serif;}
-H4 {color:#004060; font-family: Arial, Helvetica, sans-serif;; font-size: 16px}
-H5 {color:#004060; font-family: Arial, Helvetica, sans-serif;; font-size: 16px}
-LI {font-family: Arial, Helvetica, sans-serif;}
-.text {font-family: Arial, Helvetica, sans-serif; font-size:10px;; background-color: #FFFFFF}h5 { color:#336699; font-family: Arial, Helvetica, sans-serif; ; font-size: 14px}
-dt { font-weight: bold; color: #006699}
diff --git a/externals/gridflow/doc/images/black.png b/externals/gridflow/doc/images/black.png
deleted file mode 100644
index ce34e740..00000000
--- a/externals/gridflow/doc/images/black.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/images/crop_icons b/externals/gridflow/doc/images/crop_icons
deleted file mode 100644
index 4aa06499..00000000
--- a/externals/gridflow/doc/images/crop_icons
+++ /dev/null
@@ -1,12 +0,0 @@
-if [ "z$1" = "zall" ]; then
- foo="\@*.png format*.png"
-else
- foo="$1"
-fi
-
-for z in $foo; do \
- echo $z
- pngtopnm $z | pnmcrop | pnmtopng -background black -transparent =red -compress 9 > $z.new
- mv $z.new $z
-done
-
diff --git a/externals/gridflow/doc/images/pingpong.png b/externals/gridflow/doc/images/pingpong.png
deleted file mode 100644
index 949ddd02..00000000
--- a/externals/gridflow/doc/images/pingpong.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/images/see_screenshot.png b/externals/gridflow/doc/images/see_screenshot.png
deleted file mode 100644
index 821f3c65..00000000
--- a/externals/gridflow/doc/images/see_screenshot.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/images/titre_gridflow.png b/externals/gridflow/doc/images/titre_gridflow.png
deleted file mode 100644
index 049857a8..00000000
--- a/externals/gridflow/doc/images/titre_gridflow.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/index.html b/externals/gridflow/doc/index.html
deleted file mode 100644
index d223442b..00000000
--- a/externals/gridflow/doc/index.html
+++ /dev/null
@@ -1,149 +0,0 @@
-<html>
-<head>
-<title>GridFlow 0.8.0</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<link rel="stylesheet" href="gridflow.css" type="text/css">
-</head>
-
-<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
-<br>
-<table width="100%" border="0" cellspacing="5">
- <tr><td colspan="4" bgcolor="#082069">
- <img src="images/titre_gridflow.png" width="253" height="23"></td></tr>
-
- <tr>
- <td rowspan="2" width="14%">&nbsp;</td>
- <td colspan="2" width="100%">&nbsp;</td>
- <td rowspan="10" width="12%">&nbsp;</td>
- </tr>
-
- <tr>
- <td colspan="2">
- <p>
- a multi-dimensional dataflow processing library
- for PureData and Ruby, specialized in image and video<br>
- </p>
- </td>
- </tr>
-
- <tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black"><img src="images/black.png" width="1" height="2"></td></tr>
- <tr><td colspan="3" height="16">
- <h4>GridFlow 0.8.0 - documentation index</h4>
- </td></tr>
-
- <tr>
- <td width="14%" rowspan=2>&nbsp;</td>
- <td colspan="2"><ul>
- <li><a href="license.html">License</a></li>
- <li><a href="introduction.html">Introduction</a></li>
- <li><a href="install.html">Installation</a></li>
- <li><a href="architecture.html">Reference Manual: Architecture and Concepts</a></li>
- <li><a href="reference.html">Reference Manual: Flow Classes</a></li>
- <li><a href="format.html">Reference Manual: Format Handlers</a></li>
- <li><a href="internals.html">Reference Manual: C++/Ruby Internals</a></li>
- <li><a href="profiling.html">Profiling</a></li>
- <!-- <p> <a href="project_policy.html">Project Policy</a></p> -->
- </ul></td></tr>
-
- <tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black"><img src="images/black.png" width="1" height="2"></td></tr>
- <tr><td colspan="4"><h4>GridFlow On The Net</h4></td></tr>
- <tr><td rowspan=2>&nbsp;</td><td><ul>
- <li><a href="http://gridflow.ca/latest">
- Browse GridFlow documentation and source code on the web
- </a></li>
- <li><a href="http://www.artengine.ca/gridflow/download">
- Download GridFlow and related files
- </a></li>
- <li>Or checkout using the CVS protocol (no password):
- <kbd>cvs -d :pserver:anonymous@artengine.ca:/home/cvs/gridflow checkout .</kbd>
- </li>
- <li><a href="http://www.artengine.ca/viewcvs/gridflow/">
- Browse GridFlow CVS on the Web
- </a></li>
- <li><a href="http://artengine.ca/~tiki/tiki-view_faq.php?faqId=1">
- GridFlow Frequently Asked Questions (on wiki)
- </a></li>
- <li>Mailing Lists (Subscription and Archives): <ul>
- <li><a href="http://ns.artengine.ca/mailman/listinfo/gridflow-dev">
- <kbd>gridflow-dev</kbd>: GridFlow Contributors
- </a></li>
- <li><a href="http://ns.artengine.ca/mailman/listinfo/gridflow-cvs">
- <kbd>gridflow-cvs</kbd>: GridFlow CVS Reports
- </a></li>
- <li><a href="http://ns.artengine.ca/mailman/listinfo/pdmtl">
- <kbd>pdmtl</kbd>: PureData Montr&eacute;al Users Group
- </a></li>
- </ul>
- <li><a href="http://www.puredata.org">PureData Community Site</a></li>
- <li><a href="http://www.ruby-lang.org/">Ruby Home Page</a></li>
- <li>
- Join us on IRC at
- <table bgcolor="black" border="0"><tr><td>
- <table bgcolor="white" border="0" cellpadding="4" cellspacing="1">
- <tr><td width=1><b>host</b></td><td width=1><kbd>irc.freenode.net</kbd></td></tr>
- <tr><td><b>port</b></td><td><kbd>6667</kbd></td></tr>
- <tr><td><b>channel</b></td><td><kbd>#dataflow</kbd></td></tr>
- </table>
- </table>
- </li>
-
- <li>See also :
- <ul>
- <li>Danks/Geiger/Zm&ouml;lnig's <a href="http://GEM.iem.at/GEM">GEM (video plugin for PureData)</a>
- </li>
- <li>Tom Schouten's <a href="http://zwizwa.fartit.com/pd/">PDP (video plugin for PureData)</a></li>
- <li><a href="http://www.opendragon.ca/">OpenDragon (externals collection for Max)</a></li>
- <li>NATO (QuickTime library wrapper for Max)</li>
- <li>David Rokeby's SoftVNS (for Max)</li>
- <li>JKClayton/Cycling74's
- <a href="http://www.cycling74.com/products/jitter.html">Jitter (for Max)</a></li>
- <li>APL (Array Programming Language)</li>
- <li>J (modern APL)</li>
- <li><a href="http://pdl.perl.org/">PDL (APL for Perl)</a></li>
- <li>Ruby NArray:
- <a href="http://www.ir.isas.ac.jp/~masa/ruby/index.html">japanese page</a>;
- <a href="http://www.ir.isas.ac.jp/~masa/ruby/index-e.html">english page</a></li>
- <li><a href="http://www.gstreamer.net/">gstreamer (video for Gnome/Kde)</a></li>
- <li><a href="http://www.arts-project.org/">aRts (audio for Kde)</a></li>
- <li><a href="http://www.dai.ed.ac.uk/HIPR2/wksheets.htm">
- Image Processing Operator Worksheets</a></li>
- <li><a href="http://freej.dyne.org/">FreeJ</a></li>
- </ul>
-
-</ul></li>
- <tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black"><img src="images/black.png" width="1" height="2"></td></tr>
- <tr><td colspan="4"><h4>Credits</h4></td></tr>
- <tr><td rowspan=2>&nbsp;</td><td>
-
- C++/Ruby Programming : Mathieu Bouchard<br>
- Pd Examples : Mathieu Bouchard, Alexandre Castonguay<br>
- MacOS 10 version : Mathieu Bouchard, James Tittle, Adam Lindsay<br>
- Windows version (upcoming) : Carmen Rocco<br>
-
- <tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black"><img src="images/black.png" width="1" height="2"></td></tr>
- <tr><td colspan="4"><h4>Sponsors</h4></td></tr>
- <tr><td rowspan=2>&nbsp;</td><td>
-
- <p>GridFlow is sponsored by
- <a href="http://www.artengine.org">Artengine</a></p>
-
- <p>Development of GridFlow 0.3.0 - 0.5.0 was made possible in part by a grant from the
- <a href="http://www.hrdc-drhc.gc.ca/">HRDC</a> to <a href="http://www.artengine.org">Artengine</a></p>
-
- <tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black"><img src="images/black.png" width="1" height="2"></td></tr>
-
- <tr><td colspan="4">
- <p><font size="-1">GridFlow 0.8.0 Documentation<br>
- by Mathieu Bouchard <a href="mailto:matju@sympatico.ca">matju@sympatico.ca</a>
- and<br>
- Alexandre Castonguay <a href="mailto:acastonguay@artengine.ca">acastonguay@artengine.ca</a></font></p>
- </td>
- </tr>
-</table>
-</body>
-</html>
diff --git a/externals/gridflow/doc/install.html b/externals/gridflow/doc/install.html
deleted file mode 100644
index 6127c79c..00000000
--- a/externals/gridflow/doc/install.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<html><head>
-<!-- $Id: install.html,v 1.2 2006-03-15 04:44:50 matju Exp $ -->
-<title>GridFlow 0.8.1 - Installation</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<link rel="stylesheet" href="gridflow.css" type="text/css">
-</head>
-<body bgcolor="#FFFFFF"
- leftmargin="0" topmargin="0"
- marginwidth="0" marginheight="0">
-<table width="100%" bgcolor="white" border="0" cellspacing="2">
-<tr><td colspan="4" bgcolor="#082069">
-<img src="images/titre_gridflow.png" width="253" height="23">
-</td></tr><tr><td>&nbsp;</td></tr>
-<tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4" height="16">
- <h4>GridFlow 0.8.1 - Installation</h4>
-</td></tr>
-<tr>
- <td width="5%" rowspan="2">&nbsp;</td>
- <td width="15%" height="23">&nbsp;</td>
- <td width="80%" height="23">&nbsp;</td>
- <td width="5%" height="23">&nbsp;</td>
-</tr>
-<tr><td colspan="2"><div cols="1"><h4><a href="#Hardware_and_Software_you_Probably_Need">Hardware and Software you Probably Need</a></h4><ul>
-</ul>
-<h4><a href="#Downloading_from_CVS">Downloading from CVS</a></h4><ul>
-</ul>
-<h4><a href="#Installation_instructions_(incl._compilation)">Installation instructions (incl. compilation)</a></h4><ul>
-</ul>
-<h4><a href="#Other_Tips">Other Tips</a></h4><ul>
-</ul>
-<br><br>
-</div></td></tr> <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Hardware_and_Software_you_Probably_Need"></a><h4>Hardware and Software you Probably Need</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>Required Computer/Processor (one of...):<ul> <li><b>1</b> : PC : AMD K6/K7/K8 or Intel P2/P3/P4 (absolute minimum is 386)</li> <li><b>2</b> : Macintosh : G3/G4/G5</li> <li><b>3</b> : Corel NetWinder : StrongARM V4L</li> <li><b>4</b> : HP iPaq : some processor that works like the NetWinder</li> <li><b>5</b> : could work on SiliconGraphics and SPARCstation with a little nurture.</li> </ul></p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>Required OS (one of...):<ul> <li><b>1</b> : Linux (most any variant) (recommended)</li> <li><b>2</b> : MacOS 10.2 or later (experimental)</li> <li><b>3</b> : Windows with MinGW (very experimental)</li> </ul></p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>Required Software:<ul> <li><b>1</b> : Ruby 1.6.6 or more recent (1.8.0 recommended) (make sure you have the *.so and *.h files)
- (on MacOS you may have to remove or hide the existing one and install a more complete package)</li> </ul></p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>Dataflow Software :<ul> <li><b>1</b> : PureData 0.36 or later (recommended)</li> </ul></p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>Multimedia Components (optional):<ul> <li><b>1</b> : libSDL (Simple Directmedia Layer)</li> <li><b>2</b> : libjpeg</li> <li><b>3</b> : libpng</li> <li><b>4</b> : libmpeg3 (.mpg reader, HeroineWarrior's)</li> <li><b>5</b> : libquicktime (.mov reader/writer, Burkhard Plaum's or HeroineWarrior's) </li> <li><b>6</b> : libmpeg (.mpg reader, Greg Ward's, old)</li> <li><b>7</b> : Apple QuickTime (.mov reader/writer)</li> <li><b>8</b> : Ascii Art Library (aalib)</li> <li><b>9</b> : PCI video digitizer card (and Video4linux 1 driver)</li> <li><b>10</b> : USB camera (and Video4linux 1 driver)</li> </ul></p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>Developer Tools (roll-your-own):<ul> <li><b>1</b> : GNU C++ Compiler (gcc/g++) version 3.x or maybe 2.95</li> <li><b>2</b> : GNU Make (gmake)</li> <li><b>3</b> : CVS (for upgrading/collaboration)</li> <li><b>4</b> : Ruby library "xmlparser" (optional, for editing documentation)</li> <li><b>5</b> : Developer Tools CD dec 2002 (if MacOS 10.2)</li> <li><b>6</b> : XCODE (if MacOS 10.3)</li> <li><b>7</b> : FINK (if MacOS 10)</li> </ul></p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>NOTE: Apparently GCC 2.x has problems dealing with *.a components; if that
-affects you, use *.so files instead.</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Downloading_from_CVS"></a><h4>Downloading from CVS</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>The CVS has the absolute latest version of GridFlow, but it's not guaranteed to be working, whereas
-the actual releases are more tested.</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>However you may have various reasons to use the CVS edition, so here's how:</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>Make sure you have the <kbd><font color="#007777">cvs</font></kbd> program installed.</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p><kbd><font color="#007777">mkdir -p ~/src/gridflow</font></kbd> (make a directory; it could be called otherwise if you like)</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p><kbd><font color="#007777">cd ~/src/gridflow</font></kbd> (go in that directory)</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p><kbd><font color="#007777">cvs -d :pserver:anonymous@cvs.gridflow.ca:/home/cvs/gridflow login</font></kbd> (the password is blank)</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p><kbd><font color="#007777">cvs -d :pserver:anonymous@cvs.gridflow.ca:/home/cvs/gridflow checkout .</font></kbd> (download the first time)</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>And the subsequent times, you only do this:</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p><kbd><font color="#007777">cd ~/src/gridflow</font></kbd></p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p><kbd><font color="#007777">cvs update -dP</font></kbd></p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Installation_instructions_(incl._compilation)"></a><h4>Installation instructions (incl. compilation)</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><ul> <li><b>1</b> : Install Ruby. Make sure it contains <kbd><font color="#007777">ruby.h</font></kbd> and <kbd><font color="#007777">intern.h</font></kbd> and related files. It's also
-recommended to have <kbd><font color="#007777">libruby.so</font></kbd>. Those extra files may be in a package called <kbd><font color="#007777">ruby-dev</font></kbd>
-if you are using RPM or DEB/FINK. If you are building Ruby yourself, it's better to configure ruby with <kbd><font color="#007777">--enable-shared</font></kbd>. If you install into a system directory, you may have to run <kbd><font color="#007777">ldconfig</font></kbd>
-after installing Ruby.</li> <li><b>2</b> : Download GridFlow from the website and uncompress it, or get it from the CVS server.</li> <li><b>3</b> : Run <kbd><font color="#007777">./configure</font></kbd> from the <kbd><font color="#007777">gridflow</font></kbd> directory. Make sure it detects all the components
-you want to use with GridFlow. In MacOS you would normally use FINK to install: <kbd><font color="#007777">libjpeg libjpeg-shlibs libpng-shlibs libpng3 libpng3-shlibs libmpeg libmpeg-shlibs</font></kbd> </li> <li><b>4</b> : Note: you may have to set <kbd><font color="#007777">CPLUS_INCLUDE_PATH</font></kbd> to indicate where to find *.h files, and you
-may have to set both <kbd><font color="#007777">LIBRARY_PATH</font></kbd> and <kbd><font color="#007777">LD_LIBRARY_PATH</font></kbd> to indicate where to find
-*.so or *.aor *.dylib or *.bundle or *.dll or *.lib files.</li> <li><b>5</b> : Note: you can do <kbd><font color="#007777">./configure --help</font></kbd> to get a list of supported
-options. You can use them to ignore the presence of troublesome libraries
-and select debugging level. With <kbd><font color="#007777">--use-compiler</font></kbd> you should use a version of <kbd><font color="#007777">g++</font></kbd>, not
-directly a version of <kbd><font color="#007777">gcc</font></kbd>, else you get <kbd><font color="#007777">undefined symbol</font></kbd> problems. Some versions of gcc/g++
-are troublesome.</li> <li><b>6</b> : Run <kbd><font color="#007777">make</font></kbd> to produce the executables <kbd><font color="#007777">gridflow.so</font></kbd> and <kbd><font color="#007777">gridflow.pd_linux</font></kbd> or similar</li> <li><b>7</b> : Run <kbd><font color="#007777">make install</font></kbd> to copy those executables and related files to their final locations.</li> <li><b>8</b> : Run <kbd><font color="#007777">make test</font></kbd> just to verify that GridFlow isn't working too bad.</li> <li><b>9</b> : With a text editor, create <kbd><font color="#007777">~/.gridflow_startup</font></kbd> and write something like <kbd><font color="#007777">GridFlow.data_path &lt;&lt; "/home/myself/gridflow/images"</font></kbd> to tell GridFlow where to find the
-images used in the examples. You may add more lines like that one if you have folders containing images
-or movies you want to use with GridFlow.</li> <li><b>10</b> : Loading GridFlow:<ul> <li><b>1</b> : PureData : With a text editor, modify or create <kbd><font color="#007777">~/.pdrc</font></kbd> and write <kbd><font color="#007777">-lib gridflow</font></kbd>. </li> <li><b>2</b> : ImpureData : In the ".pdrc editor", add <kbd><font color="#007777">gridflow</font></kbd> to the list of libraries.</li> <li><b>3</b> : plain Ruby : the command <kbd><font color="#007777">require "gridflow"</font></kbd> will load gridflow.so.</li> </ul>
-Note that on MacOS the dot-files are invisible in the Finder but you do <kbd><font color="#007777">cd ~/Desktop; ln -s ../.pdrc "PureData Configuration"</font></kbd> to make an alias on the Desktop.
-Note also that on Windows the dot-files are even more trouble.</li> </ul></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Other_Tips"></a><h4>Other Tips</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><ul> <li><b>1</b> : you just did a CVS update and now the program does not compile, or
-crashes, or changes didn't go through. <ul> <li><b>1</b> : Did you forget the "make install" step?</li> <li><b>2</b> : If a new directory is created, you need to do <kbd><font color="#007777">cvs update -d</font></kbd>.
- Many people just add that option to their configuration of the CVS software.</li> <li><b>3</b> : When some kinds of changes have happened, you may have to rerun the <kbd><font color="#007777">configure</font></kbd>
- program before redoing <kbd><font color="#007777">make</font></kbd>. If you had previously reconfigured with specific options,
- don't forget to use them again in this case.</li> <li><b>4</b> : Maybe matju forgot to upload part of an important change. Tell him.</li> </ul></li> <li><b>2</b> : PureData Crashing: <ul> <li><b>1</b> : you can start the debugger like <kbd><font color="#007777">gdb `which pd` core.24255</font></kbd> where the latter part
- is the name of a RAM dump file. You can enable those dumps using the shell command <kbd><font color="#007777">ulimit -c unlimited</font></kbd>. To avoid dumping, you can also start Pd from within the debugger
- using <kbd><font color="#007777">gdb `which pd`</font></kbd> then <kbd><font color="#007777">run</font></kbd> then cause the crash.</li> <li><b>2</b> : In GDB, after a crash, you can use the <kbd><font color="#007777">where</font></kbd> to find out what Pd was doing at the moment
- of the crash. If instead Pd is frozen, you can force it to crash using Ctrl+C in the terminal. </li> <li><b>3</b> : To quit GDB use the <kbd><font color="#007777">quit</font></kbd> command. (really.)</li> </ul></li> </ul></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4">
-<p><font size="-1">
-GridFlow 0.8.1 Documentation<br>
-Copyright &copy; 2001,2002,2003,2004,2005,2006 by Mathieu Bouchard
-<a href="mailto:matju@artengine.ca">matju@artengine.ca</a>
-</font></p>
-</td></tr></table></body></html>
-
-
diff --git a/externals/gridflow/doc/install.xml b/externals/gridflow/doc/install.xml
deleted file mode 100644
index e1f1c434..00000000
--- a/externals/gridflow/doc/install.xml
+++ /dev/null
@@ -1,140 +0,0 @@
-<?xml version="1.0" standalone="no" ?>
-<!DOCTYPE documentation SYSTEM 'jmax.dtd'>
-<documentation title="Installation">
-<!-- $Id: install.xml,v 1.2 2006-03-15 04:44:50 matju Exp $ -->
-<!--
- GridFlow Installation
- Copyright (c) 2001,2002,2003,2004,2005 by Mathieu Bouchard
--->
-<section name="Hardware and Software you Probably Need">
-<p>Required Computer/Processor (one of...):<list>
- <li>PC : AMD K6/K7/K8 or Intel P2/P3/P4 (absolute minimum is 386)</li>
- <li>Macintosh : G3/G4/G5</li>
- <li>Corel NetWinder : StrongARM V4L</li>
- <li>HP iPaq : some processor that works like the NetWinder</li>
- <li>could work on SiliconGraphics and SPARCstation with a little nurture.</li>
-</list></p>
-<p>Required OS (one of...):<list>
- <li>Linux (most any variant) (recommended)</li>
- <li>MacOS 10.2 or later (experimental)</li>
- <li>Windows with MinGW (very experimental)</li>
-</list></p>
-<p>Required Software:<list>
- <li>Ruby 1.6.6 or more recent (1.8.0 recommended) (make sure you have the *.so and *.h files)
- (on MacOS you may have to remove or hide the existing one and install a more complete package)</li>
-</list></p>
-<p>Dataflow Software :<list>
- <li>PureData 0.36 or later (recommended)</li>
-</list></p>
-<p>Multimedia Components (optional):<list>
- <li>libSDL (Simple Directmedia Layer)</li>
- <li>libjpeg</li>
- <li>libpng</li>
- <li>libmpeg3 (.mpg reader, HeroineWarrior's)</li>
- <li>libquicktime (.mov reader/writer, Burkhard Plaum's or HeroineWarrior's) </li>
- <li>libmpeg (.mpg reader, Greg Ward's, old)</li>
- <li>Apple QuickTime (.mov reader/writer)</li>
- <li>Ascii Art Library (aalib)</li>
- <li>PCI video digitizer card (and Video4linux 1 driver)</li>
- <li>USB camera (and Video4linux 1 driver)</li>
-</list></p>
-<p>Developer Tools (roll-your-own):<list>
- <li>GNU C++ Compiler (gcc/g++) version 3.x or maybe 2.95</li>
- <li>GNU Make (gmake)</li>
- <li>CVS (for upgrading/collaboration)</li>
- <li>Ruby library "xmlparser" (optional, for editing documentation)</li>
- <li>Developer Tools CD dec 2002 (if MacOS 10.2)</li>
- <li>XCODE (if MacOS 10.3)</li>
- <li>FINK (if MacOS 10)</li>
-</list></p>
-<p>NOTE: Apparently GCC 2.x has problems dealing with *.a components; if that
-affects you, use *.so files instead.</p>
-</section>
-
-<section name="Downloading from CVS">
-<p>The CVS has the absolute latest version of GridFlow, but it's not guaranteed to be working, whereas
-the actual releases are more tested.</p>
-<p>However you may have various reasons to use the CVS edition, so here's how:</p>
-<p>Make sure you have the <k>cvs</k> program installed.</p>
-<p><k>mkdir -p ~/src/gridflow</k> (make a directory; it could be called otherwise if you like)</p>
-<p><k>cd ~/src/gridflow</k> (go in that directory)</p>
-<p><k>cvs -d :pserver:anonymous@cvs.gridflow.ca:/home/cvs/gridflow login</k> (the password is blank)</p>
-<p><k>cvs -d :pserver:anonymous@cvs.gridflow.ca:/home/cvs/gridflow checkout .</k> (download the first time)</p>
-<p>And the subsequent times, you only do this:</p>
-<p><k>cd ~/src/gridflow</k></p>
-<p><k>cvs update -dP</k></p>
-</section>
-
-<section name="Installation instructions (incl. compilation)">
-<list>
-<li>Install Ruby. Make sure it contains <k>ruby.h</k> and <k>intern.h</k> and related files. It's also
-recommended to have <k>libruby.so</k>. Those extra files may be in a package called <k>ruby-dev</k>
-if you are using RPM or DEB/FINK. If you are building Ruby yourself, it's better to configure ruby with
-<k>--enable-shared</k>. If you install into a system directory, you may have to run <k>ldconfig</k>
-after installing Ruby.</li>
-
-<li>Download GridFlow from the website and uncompress it, or get it from the CVS server.</li>
-
-<li>Run <k>./configure</k> from the <k>gridflow</k> directory. Make sure it detects all the components
-you want to use with GridFlow. In MacOS you would normally use FINK to install:
- <k>libjpeg libjpeg-shlibs libpng-shlibs libpng3 libpng3-shlibs libmpeg libmpeg-shlibs</k>
-</li>
-
-<li>Note: you may have to set <k>CPLUS_INCLUDE_PATH</k> to indicate where to find *.h files, and you
-may have to set both <k>LIBRARY_PATH</k> and <k>LD_LIBRARY_PATH</k> to indicate where to find
-*.so or *.aor *.dylib or *.bundle or *.dll or *.lib files.</li>
-
-<li>Note: you can do <k>./configure --help</k> to get a list of supported
-options. You can use them to ignore the presence of troublesome libraries
-and select debugging level. With <k>--use-compiler</k> you should use a version of <k>g++</k>, not
-directly a version of <k>gcc</k>, else you get <k>undefined symbol</k> problems. Some versions of gcc/g++
-are troublesome.</li>
-
-<li>Run <k>make</k> to produce the executables <k>gridflow.so</k> and <k>gridflow.pd_linux</k> or similar</li>
-<li>Run <k>make install</k> to copy those executables and related files to their final locations.</li>
-<li>Run <k>make test</k> just to verify that GridFlow isn't working too bad.</li>
-<li>With a text editor, create <k>~/.gridflow_startup</k> and write something like
-<k>GridFlow.data_path &lt;&lt; "/home/myself/gridflow/images"</k> to tell GridFlow where to find the
-images used in the examples. You may add more lines like that one if you have folders containing images
-or movies you want to use with GridFlow.</li>
-<li>Loading GridFlow:<list>
- <li>PureData : With a text editor, modify or create <k>~/.pdrc</k> and write <k>-lib gridflow</k>. </li>
- <li>ImpureData : In the ".pdrc editor", add <k>gridflow</k> to the list of libraries.</li>
- <li>plain Ruby : the command <k>require "gridflow"</k> will load gridflow.so.</li>
-</list>
-Note that on MacOS the dot-files are invisible in the Finder but you do
-<k>cd ~/Desktop; ln -s ../.pdrc "PureData Configuration"</k> to make an alias on the Desktop.
-Note also that on Windows the dot-files are even more trouble.</li>
-</list>
-</section>
-
-<section name="Other Tips">
-<list>
-
-<li>you just did a CVS update and now the program does not compile, or
-crashes, or changes didn't go through.
- <list>
- <li>Did you forget the "make install" step?</li>
- <li>If a new directory is created, you need to do <k>cvs update -d</k>.
- Many people just add that option to their configuration of the CVS software.</li>
- <li>When some kinds of changes have happened, you may have to rerun the <k>configure</k>
- program before redoing <k>make</k>. If you had previously reconfigured with specific options,
- don't forget to use them again in this case.</li>
- <li>Maybe matju forgot to upload part of an important change. Tell him.</li>
- </list></li>
-
-
-<li>PureData Crashing:
- <list>
- <li>you can start the debugger like <k>gdb `which pd` core.24255</k> where the latter part
- is the name of a RAM dump file. You can enable those dumps using the shell command
- <k>ulimit -c unlimited</k>. To avoid dumping, you can also start Pd from within the debugger
- using <k>gdb `which pd`</k> then <k>run</k> then cause the crash.</li>
- <li>In GDB, after a crash, you can use the <k>where</k> to find out what Pd was doing at the moment
- of the crash. If instead Pd is frozen, you can force it to crash using Ctrl+C in the terminal.
- </li>
- <li>To quit GDB use the <k>quit</k> command. (really.)</li>
-</list></li>
-</list>
-</section>
-</documentation>
diff --git a/externals/gridflow/doc/internals.html b/externals/gridflow/doc/internals.html
deleted file mode 100644
index 4a2e7978..00000000
--- a/externals/gridflow/doc/internals.html
+++ /dev/null
@@ -1,206 +0,0 @@
-<html><head>
-<!-- $Id: internals.html,v 1.2 2006-03-15 04:44:50 matju Exp $ -->
-<title>GridFlow 0.8.1 - C++/Ruby Internals</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<link rel="stylesheet" href="gridflow.css" type="text/css">
-</head>
-<body bgcolor="#FFFFFF"
- leftmargin="0" topmargin="0"
- marginwidth="0" marginheight="0">
-<table width="100%" bgcolor="white" border="0" cellspacing="2">
-<tr><td colspan="4" bgcolor="#082069">
-<img src="images/titre_gridflow.png" width="253" height="23">
-</td></tr><tr><td>&nbsp;</td></tr>
-<tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4" height="16">
- <h4>GridFlow 0.8.1 - C++/Ruby Internals</h4>
-</td></tr>
-<tr>
- <td width="5%" rowspan="2">&nbsp;</td>
- <td width="15%" height="23">&nbsp;</td>
- <td width="80%" height="23">&nbsp;</td>
- <td width="5%" height="23">&nbsp;</td>
-</tr>
-<tr><td colspan="2"><div cols="1"><h4><a href="#notes">notes</a></h4><ul>
-</ul>
-<h4><a href="#Objects_for_Scripting">Objects for Scripting</a></h4><ul>
-<li><a href="#ruby class FObject extending Data"><img src="flow_classes/ruby class FObject extending Data-icon.png" alt="[ruby class FObject extending Data]" border="0"></a></li>
-<li><a href="#ruby class GridObject extending FObject"><img src="flow_classes/ruby class GridObject extending FObject-icon.png" alt="[ruby class GridObject extending FObject]" border="0"></a></li>
-<li><a href="#ruby class BitPacking"><img src="flow_classes/ruby class BitPacking-icon.png" alt="[ruby class BitPacking]" border="0"></a></li>
-<li><a href="#ruby FPatcher extending FObject"><img src="flow_classes/ruby FPatcher extending FObject-icon.png" alt="[ruby FPatcher extending FObject]" border="0"></a></li>
-<li><a href="#ruby GridFlow::USB"><img src="flow_classes/ruby GridFlow::USB-icon.png" alt="[ruby GridFlow::USB]" border="0"></a></li>
-<li><a href="#ruby GridFlow::USB::Device"><img src="flow_classes/ruby GridFlow::USB::Device-icon.png" alt="[ruby GridFlow::USB::Device]" border="0"></a></li>
-<li><a href="#ruby GridFlow::USB::Config"><img src="flow_classes/ruby GridFlow::USB::Config-icon.png" alt="[ruby GridFlow::USB::Config]" border="0"></a></li>
-<li><a href="#ruby GridFlow::USB::Interface"><img src="flow_classes/ruby GridFlow::USB::Interface-icon.png" alt="[ruby GridFlow::USB::Interface]" border="0"></a></li>
-<li><a href="#ruby GridFlow::USB::Endpoint"><img src="flow_classes/ruby GridFlow::USB::Endpoint-icon.png" alt="[ruby GridFlow::USB::Endpoint]" border="0"></a></li>
-</ul>
-<h4><a href="#Objects_for_Internals">Objects for Internals</a></h4><ul>
-<li><a href="#C++ class GridInlet"><img src="flow_classes/C++ class GridInlet-icon.png" alt="[C++ class GridInlet]" border="0"></a></li>
-<li><a href="#C++ class GridOutlet"><img src="flow_classes/C++ class GridOutlet-icon.png" alt="[C++ class GridOutlet]" border="0"></a></li>
-<li><a href="#C++ class Dim"><img src="flow_classes/C++ class Dim-icon.png" alt="[C++ class Dim]" border="0"></a></li>
-<li><a href="#C++ class Grid"><img src="flow_classes/C++ class Grid-icon.png" alt="[C++ class Grid]" border="0"></a></li>
-<li><a href="#C++ class Numop1"><img src="flow_classes/C++ class Numop1-icon.png" alt="[C++ class Numop1]" border="0"></a></li>
-<li><a href="#C++ class Numop2"><img src="flow_classes/C++ class Numop2-icon.png" alt="[C++ class Numop2]" border="0"></a></li>
-<li><a href="#C++ class GridClass"><img src="flow_classes/C++ class GridClass-icon.png" alt="[C++ class GridClass]" border="0"></a></li>
-<li><a href="#C++ class GFBridge"><img src="flow_classes/C++ class GFBridge-icon.png" alt="[C++ class GFBridge]" border="0"></a></li>
-</ul>
-<br><br>
-</div></td></tr> <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="notes"></a><h4>notes</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>In Ruby, GridFlow defines a namespace (module) called GridFlow. Most of the
-constants it defines are part of that namespace.</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>Ruby does not have the same concept of object as PD. In GridFlow, object classes may
-inherit features from other object classes, and also there is no concept of inlet nor outlet, which are instead
-provided by <kbd><font color="#007777">GridFlow::FObject</font></kbd>, which also has the purpose of exporting functionality to
-PD.</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>In this document (and in many others) the phrase "a Potato" will be a shorthand for "an object of the class
-called Potato", which is often used in modern software design and is a nice convention borrowed from
-biology.</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>
-A FObject is normally in two or three parts: a (Ruby) GridFlow::FObject
-that is the central part; a (C++) FObject; a (C++) BFObject.
-The GridFlow::FObject is created as a RData kind of box (T_DATA)
-using Ruby-C's Data_Make_Struct on a GridObject. This is
-how most Ruby-C programs inherit from Ruby classes. Note that
-Ruby's boxed objects have a maximum of five fields, and they're usually
-taken, so additional fields have to be outside of it. This is why RData exists. </p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>
-So basically you have a C++ FObject that is "part of" a GridFlow::FObject
-and they point to each other using "peer pointers".
- The BFObject links back to the RData box through a pointer called peer. </p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Objects_for_Scripting"></a><h4>Objects for Scripting</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="ruby class FObject extending Data">ruby class FObject extending Data</a></td></tr><tr><td></td><td valign="top"><br>
-<br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- Provides inlets and outlets to Ruby Objects. <br><b>method</b>&nbsp;init <b>(</b><b>)</b> <br>
- <br><b>method</b>&nbsp;send_in <b>(</b><i>int</i> inlet<b>, </b>message...<b>)</b> <br>
- <br><b>method</b>&nbsp;send_out <b>(</b><i>int</i> outlet<b>, </b>message...<b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="ruby class GridObject extending FObject">ruby class GridObject extending FObject</a></td></tr><tr><td></td><td valign="top"><br>
-<br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- Provides grid support to FObjects. <br><b>method</b>&nbsp;inlet_dim <b>(</b><i>Integer</i> inlet<b>)</b>
- gives an array of Integers (dimension list) <br>
- <br><b>method</b>&nbsp;inlet_nt <b>(</b><i>Integer</i> inlet<b>)</b>
- gives a Symbol (number type) <br>
- <br><b>method</b>&nbsp;inlet_set_factor <b>(</b><i>Integer</i> inlet<b>, </b><i>Integer</i> factor<b>)</b>
- ensures received packets have a size that is
- a whole multiple of this size.
- must be called from rgrid_begin. <br>
- <br><b>method</b>&nbsp;send_out_grid_begin <b>(</b><i>Integer</i> outlet<b>, </b><i>Array of Integer</i> dimensions<b>, </b><i>number type</i> nt<b>)</b>
- establishes grid streams between an outlet and all inlets
- connected to it. <br>
- <br><b>method</b>&nbsp;send_out_grid_flow <b>(</b><i>Integer</i> outlet<b>, </b><i>String</i> data<b>)</b>
- for sending a grid data packet through that outlet. <br>
- <br><b>method</b>&nbsp;send_out_grid_end <b>(</b><i>Integer</i> outlet<b>)</b>
- (isn't this one obsolete?) <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;rgrid_begin <b>(</b><b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;rgrid_flow <b>(</b><i>String</i> data<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;rgrid_end <b>(</b><b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="ruby class BitPacking">ruby class BitPacking</a></td></tr><tr><td></td><td valign="top"><br>
-<br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- A BitPacking is a simple two-way converter between different
- numeric layouts. <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="ruby FPatcher extending FObject">ruby FPatcher extending FObject</a></td></tr><tr><td></td><td valign="top"><br>
-<br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>This class is much like PureData's abstractions.</p> <p>This is a container for objects. Its proper objects are numbered
- starting with zero. The wire list is given in terms of those numbers:
- (sourceobject,sourceinlet,destobject,destinlet). There is a
- pseudo-object numbered #-1 which map to the container's own inlets
- and outlets.</p> <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="ruby GridFlow::USB">ruby GridFlow::USB</a></td></tr><tr><td></td><td valign="top"><br>
-<br clear="left"><br><br><br clear="left"><br></td><td><br>
-<p>wrapper for struct usb_dev_handle</p> <br><b>attr</b>&nbsp;.busses <b>(</b><b>.busses</b><b>)</b> <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="ruby GridFlow::USB::Device">ruby GridFlow::USB::Device</a></td></tr><tr><td></td><td valign="top"><br>
-<br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>wrapper for struct usb_device and struct usb_device_descriptor</p> <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="ruby GridFlow::USB::Config">ruby GridFlow::USB::Config</a></td></tr><tr><td></td><td valign="top"><br>
-<br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>wrapper for struct usb_config_descriptor, struct usb_interface</p> <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="ruby GridFlow::USB::Interface">ruby GridFlow::USB::Interface</a></td></tr><tr><td></td><td valign="top"><br>
-<br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>wrapper for struct usb_interface_descriptor</p> <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="ruby GridFlow::USB::Endpoint">ruby GridFlow::USB::Endpoint</a></td></tr><tr><td></td><td valign="top"><br>
-<br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>wrapper for struct usb_endpoint_descriptor</p> <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Objects_for_Internals"></a><h4>Objects for Internals</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="C++ class GridInlet">C++ class GridInlet</a></td></tr><tr><td></td><td valign="top"><br>
-<br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- GridInlets represent inlets that accept grids. <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="C++ class GridOutlet">C++ class GridOutlet</a></td></tr><tr><td></td><td valign="top"><br>
-<br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- GridOutlets represent outlets that send grids. <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="C++ class Dim">C++ class Dim</a></td></tr><tr><td></td><td valign="top"><br>
-<br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- Dim represents a list of dimensions. <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="C++ class Grid">C++ class Grid</a></td></tr><tr><td></td><td valign="top"><br>
-<br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- Grid represents a grid that is fully stored in memory. <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="C++ class Numop1">C++ class Numop1</a></td></tr><tr><td></td><td valign="top"><br>
-<br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- This represents a one-input operator.
- Such an object contains a map() function that applies the operator
- over a memory segment. <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="C++ class Numop2">C++ class Numop2</a></td></tr><tr><td></td><td valign="top"><br>
-<br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- This represents a two-input operator.
- Such an object contains four functions for each T, where
- T is one of the types uint8, int16, int32, float32. <br><b>method</b>&nbsp;map <b>(</b><i>integer</i> n<b>, </b><i>Pt<T></i> as<b>, </b><i>T</i> b<b>)</b>
- for i in 0...n,
- as[i] := f(as[i],b);
- This is like <kbd><font color="#007777">[#]</font></kbd> with a scalar righthand <br>
- <br><b>method</b>&nbsp;zip <b>(</b><i>integer</i> n<b>, </b><i>Pt<T></i> as<b>, </b><i>Pt<T></i> bs<b>)</b>
- for i in 0...n,
- as[i] := f(as[i],bs[i]);
- bs is not modified.
- (This is like <kbd><font color="#007777">[#]</font></kbd> with a nonscalar righthand) <br>
- <br><b>method</b>&nbsp;fold <b>(</b><i>integer</i> an<b>, </b><i>integer</i> n<b>, </b><i>Pt<T></i> as<b>, </b><i>Pt<T></i> bs<b>)</b> <p>
- for i in 0...n,
- for j in 0...an,
- as[j] := f(as[j],bs[i*an+j]); </p>
- (this is like <kbd><font color="#007777">[#fold]</font></kbd>) <br>
- <br><b>method</b>&nbsp;scan <b>(</b><i>integer</i> an<b>, </b><i>integer</i> n<b>, </b><i>Pt<T></i> as<b>, </b><i>Pt<T></i> bs<b>)</b> <p> for j in 0...an: bs[j] := f(as[j],bs[j]); </p> <p> for i in 1...n: for j in 0...an:
- bs[j] := f(bs[(i-1)*an+j],bs[i*an+j]); </p>
- (this is like <kbd><font color="#007777">[#scan]</font></kbd>) <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="C++ class GridClass">C++ class GridClass</a></td></tr><tr><td></td><td valign="top"><br>
-<br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- This represents a class of GridObjects. <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="C++ class GFBridge">C++ class GFBridge</a></td></tr><tr><td></td><td valign="top"><br>
-<br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- This holds linkage information about PureData. <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4">
-<p><font size="-1">
-GridFlow 0.8.1 Documentation<br>
-Copyright &copy; 2001,2002,2003,2004,2005,2006 by Mathieu Bouchard
-<a href="mailto:matju@artengine.ca">matju@artengine.ca</a>
-</font></p>
-</td></tr></table></body></html>
-
-
diff --git a/externals/gridflow/doc/internals.xml b/externals/gridflow/doc/internals.xml
deleted file mode 100644
index 952d0507..00000000
--- a/externals/gridflow/doc/internals.xml
+++ /dev/null
@@ -1,228 +0,0 @@
-<?xml version="1.0" standalone="no" ?>
-<!DOCTYPE documentation SYSTEM 'jmax.dtd'>
-<documentation title="C++/Ruby Internals">
-<!-- $Id: internals.xml,v 1.2 2006-03-15 04:44:50 matju Exp $ -->
-<!--
- GridFlow Reference Manual: Internals
- Copyright (c) 2001,2002,2003,2004,2005 by Mathieu Bouchard
--->
-<section name="notes">
-
-<p>In Ruby, GridFlow defines a namespace (module) called GridFlow. Most of the
-constants it defines are part of that namespace.</p>
-<p>Ruby does not have the same concept of object as PD. In GridFlow, object classes may
-inherit features from other object classes, and also there is no concept of inlet nor outlet, which are instead
-provided by <k>GridFlow::FObject</k>, which also has the purpose of exporting functionality to
-PD.</p>
-<p>In this document (and in many others) the phrase "a Potato" will be a shorthand for "an object of the class
-called Potato", which is often used in modern software design and is a nice convention borrowed from
-biology.</p>
-
-<p>
-A FObject is normally in two or three parts: a (Ruby) GridFlow::FObject
-that is the central part; a (C++) FObject; a (C++) BFObject.
-The GridFlow::FObject is created as a RData kind of box (T_DATA)
-using Ruby-C's Data_Make_Struct on a GridObject. This is
-how most Ruby-C programs inherit from Ruby classes. Note that
-Ruby's boxed objects have a maximum of five fields, and they're usually
-taken, so additional fields have to be outside of it. This is why RData exists.
-</p>
-
-<p>
-So basically you have a C++ FObject that is "part of" a GridFlow::FObject
-and they point to each other using "peer pointers".
- The BFObject links back to the RData box through a pointer called peer.
-</p>
-
-</section>
-
-<section name="Objects for Scripting">
- <class name="ruby class FObject extending Data">
- Provides inlets and outlets to Ruby Objects.
-
- <method name="init">
- </method>
-
- <method name="send_in">
- <arg name="inlet" type="int"/>
- <rest name="message"/>
- </method>
-
- <method name="send_out">
- <arg name="outlet" type="int"/>
- <rest name="message"/>
- </method>
-
- </class>
-
- <class name="ruby class GridObject extending FObject">
- Provides grid support to FObjects.
-
- <method name="inlet_dim">
- <arg name="inlet" type="Integer"/>
- gives an array of Integers (dimension list)
- </method>
-
- <method name="inlet_nt">
- <arg name="inlet" type="Integer"/>
- gives a Symbol (number type)
- </method>
-
- <method name="inlet_set_factor">
- <arg name="inlet" type="Integer"/>
- <arg name="factor" type="Integer"/>
- ensures received packets have a size that is
- a whole multiple of this size.
- must be called from rgrid_begin.
- </method>
-
- <method name="send_out_grid_begin">
- <arg name="outlet" type="Integer"/>
- <arg name="dimensions" type="Array of Integer"/>
- <arg name="nt" type="number type" default="int32"/>
- establishes grid streams between an outlet and all inlets
- connected to it.
- </method>
-
- <method name="send_out_grid_flow">
- <arg name="outlet" type="Integer"/>
- <arg name="data" type="String"/>
- for sending a grid data packet through that outlet.
- </method>
-
- <method name="send_out_grid_end">
- <arg name="outlet" type="Integer"/>
- (isn't this one obsolete?)
- </method>
-
- <inlet id="0">
- <method name="rgrid_begin"/>
- <method name="rgrid_flow">
- <arg name="data" type="String"/>
- </method>
- <method name="rgrid_end"/>
- </inlet>
- </class>
-
- <class name="ruby class BitPacking">
- A BitPacking is a simple two-way converter between different
- numeric layouts.
- </class>
-
- <class name="ruby FPatcher extending FObject">
- <p>This class is much like PureData's abstractions.</p>
- <p>This is a container for objects. Its proper objects are numbered
- starting with zero. The wire list is given in terms of those numbers:
- (sourceobject,sourceinlet,destobject,destinlet). There is a
- pseudo-object numbered #-1 which map to the container's own inlets
- and outlets.</p>
- </class>
-
- <class name="ruby GridFlow::USB"><p>wrapper for struct usb_dev_handle</p>
- <attr name=".busses">wrapper for struct usb_bus and usb_get_busses()</attr>
- </class>
-
- <class name="ruby GridFlow::USB::Device">
- <p>wrapper for struct usb_device and struct usb_device_descriptor</p>
- </class>
-
- <class name="ruby GridFlow::USB::Config">
- <p>wrapper for struct usb_config_descriptor, struct usb_interface</p>
- </class>
-
- <class name="ruby GridFlow::USB::Interface">
- <p>wrapper for struct usb_interface_descriptor</p>
- </class>
-
- <class name="ruby GridFlow::USB::Endpoint">
- <p>wrapper for struct usb_endpoint_descriptor</p>
- </class>
-</section>
-
-<section name="Objects for Internals">
- <class name="C++ class GridInlet">
- GridInlets represent inlets that accept grids.
- </class>
-
- <class name="C++ class GridOutlet">
- GridOutlets represent outlets that send grids.
- </class>
-
- <class name="C++ class Dim">
- Dim represents a list of dimensions.
- </class>
-
- <class name="C++ class Grid">
- Grid represents a grid that is fully stored in memory.
- </class>
-
- <class name="C++ class Numop1">
- This represents a one-input operator.
- Such an object contains a map() function that applies the operator
- over a memory segment.
- </class>
-
- <class name="C++ class Numop2">
- This represents a two-input operator.
- Such an object contains four functions for each T, where
- T is one of the types uint8, int16, int32, float32.
-
- <method name="map">
- <arg name="n" type="integer"/>
- <arg name="as" type="Pt&lt;T&gt;"/>
- <arg name="b" type="T"/>
- for i in 0...n,
- as[i] := f(as[i],b);
- This is like <k>[#]</k> with a scalar righthand
- </method>
-
- <method name="zip">
- <arg name="n" type="integer"/>
- <arg name="as" type="Pt&lt;T&gt;"/>
- <arg name="bs" type="Pt&lt;T&gt;"/>
- for i in 0...n,
- as[i] := f(as[i],bs[i]);
- bs is not modified.
- (This is like <k>[#]</k> with a nonscalar righthand)
- </method>
-
- <method name="fold">
- <arg name="an" type="integer"/>
- <arg name="n" type="integer"/>
- <arg name="as" type="Pt&lt;T&gt;"/>
- <arg name="bs" type="Pt&lt;T&gt;"/>
-
- <p>
- for i in 0...n,
- for j in 0...an,
- as[j] := f(as[j],bs[i*an+j]);
- </p>
-
- (this is like <k>[#fold]</k>)
- </method>
-
- <method name="scan">
- <arg name="an" type="integer"/>
- <arg name="n" type="integer"/>
- <arg name="as" type="Pt&lt;T&gt;"/>
- <arg name="bs" type="Pt&lt;T&gt;"/>
-
- <p> for j in 0...an: bs[j] := f(as[j],bs[j]); </p>
- <p> for i in 1...n: for j in 0...an:
- bs[j] := f(bs[(i-1)*an+j],bs[i*an+j]); </p>
-
- (this is like <k>[#scan]</k>)
- </method>
- </class>
-
- <class name="C++ class GridClass">
- This represents a class of GridObjects.
- </class>
-
- <class name="C++ class GFBridge">
- This holds linkage information about PureData.
- </class>
-
-</section>
-
-</documentation>
diff --git a/externals/gridflow/doc/introduction.html b/externals/gridflow/doc/introduction.html
deleted file mode 100644
index 8adf4ead..00000000
--- a/externals/gridflow/doc/introduction.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<html>
-<head>
-<title>GridFlow 0.7.7 - Introduction</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<link rel="stylesheet" href="gridflow.css" type="text/css">
-</head>
-
-<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
-<br>
-<table width="100%" border="0" cellspacing="5">
- <tr><td colspan="4" bgcolor="#082069">
- <img src="images/titre_gridflow.png" width="253" height="23"></td></tr>
-
- <tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black"><img src="images/black.png" width="1" height="2"></td></tr>
-
- <tr><td colspan="3" height="16">
- <h4>GridFlow 0.7.7 - introduction</h4>
- </td></tr>
-
- <tr>
- <td width="12%" height="4">&nbsp;</td>
- <td width="80%" height="4">&nbsp;</td>
- <td width="12%" height="4">&nbsp;</td>
- </tr>
-
- <tr>
- <td width="13%">&nbsp;</td>
- <td width="82%">
-
- <p> The philosophy that guides PureData is a simple but powerful one:
- the software must first provide the user with generic tools
- rather than imposing pre-cooked effects. In other words the user
- should have total freedom.
-
- <p> GridFlow follows that philosophy: it first defines elementary
- mathematical operations. Those can in turn be used as simple
- visual effects or be combined to produce more complex effects.
-
- <p> The strategy followed by most video plugins for PureData, jMax, and MAX/MSP, is
- to provide the user first with constructs for manipulating video
- streams at a fairly high level. The strategy put forward by GridFlow
- is different.
-
- <p> It can be said that in all those video plugins there are three layers:
- the first, the low level, is not accessible to non-programmers (and fairly
- difficult of access even to programmers); the second, mathematical, where
- one needs not to be a C++ programmer, but still requires a good
- understanding of how numbers and pixels and colours and geometry work; and
- a third level that looks more like the software an artist would like to
- use.
-
- <p> In other video plugins there is a fairly low emphasis on the second
- layer. In GridFlow that layer is very strong and opens many possibilities.
- Even though the third layer in GridFlow is not as developed as it could,
- the second layer may be used to produce third-layer object classes much
- more quickly.
-
- <p> GridFlow provides a unifying view of multimedia information. Several
- kinds of data -- raster graphics in any number of channels, coordinate
- transforms, matrices, vectors -- may all be represented by <b>Grids</b>
- (also known as multi-dimensional arrays). Grids exist in several ways: they
- are usually streamed from object to object, but they can also be stored in
- memory, stored into a file, sent through the network.
-
- <p> The new GridFlow (0.6) also provides scripting, which inserts itself
- between the first and second layer to provide additional functionality. The
- language that has been chosen is Ruby, designed by Yukihiro Matsumoto
- during the 90's. This new layer is used for portability between host
- software (PureData vs jMax), for portability between platforms (Windows/Mac
- versions do not exist but would be farther ahead if it wasn't for Ruby),
- for independency from host software (GridFlow can be tested and used
- independently of PureData/jMax), for quick extensibility (you can create
- PureData/jMax object classes directly in GridFlow's configuration file),
- and so on.
-
- <p> In short, GridFlow is a whole new world of possibilities for
- the multimedia artist and programmer.
-
- <p>- matju</p>
-</td></tr>
-
- <tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black"><img src="images/black.png" width="1" height="2"></td></tr>
- <tr>
- <td width="13%">&nbsp;</td>
- <td width="82%">
-
- <p> Here is an example of how things work in GridFlow. (if you want more
- information, consult the rest of this manual)
-
- <p> A picture is a three-dimensional Grid:<br>
- <b>0</b> : rows <br>
- <b>1</b> : columns <br>
- <b>2</b> : channels <br>
-
- <p>
- Pictures come in all sorts of heights and widths. The channels, however,
- are more limited in number. Usually it's three: Red, Green, Blue.
-
- <p> A coordinate transform, when specified pixel by pixel, may be a
- three-dimensional Grid in which the two "channels" are Y and X,
- representing row-and-column positions in a separate picture.
-
- <p> Other shapes of grids could be designed to represent various things;
- for example, configuration for blur effects. Grids could be useful for
- things not directly related to raster pictures (e.g. sound recordings).
- Those are all kinds of things you could actually develop <i>within</i> the
- PureData / GridFlow framework. You don't need to wait for me.
-</td>
-
- <tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black"><img src="images/black.png" width="1" height="2"></td></tr>
-
- <tr><td colspan="4">
- <p><font size="-1">GridFlow 0.7.7 Documentation<br>
- by Mathieu Bouchard <a href="mailto:matju@sympatico.ca">matju@sympatico.ca</a>
- and<br>
- Alexandre Castonguay <a href="mailto:acastonguay@artengine.ca">acastonguay@artengine.ca</a></font></p>
- </td>
- </tr>
-
-</table>
-</body>
-</html>
diff --git a/externals/gridflow/doc/license.html b/externals/gridflow/doc/license.html
deleted file mode 100644
index 0414218f..00000000
--- a/externals/gridflow/doc/license.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<html>
-<head>
-<!-- $Id: license.html,v 1.2 2006-03-15 04:44:50 matju Exp $ -->
-<!--
- GridFlow Reference Manual: Architecture
- Copyright (c) 2001,2002,2003,2004 by Mathieu Bouchard
--->
-<title>GridFlow 0.7.7 - License</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<link rel="stylesheet" href="gridflow.css" type="text/css">
-</head>
-
-<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
-<br>
-<table width="100%" border="0" cellspacing="5">
- <tr><td colspan="4" bgcolor="#082069">
- <img src="images/titre_gridflow.png" width="253" height="23"></td></tr>
-
- <tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black"><img src="images/black.png" width="1" height="2"></td></tr>
-
- <tr><td colspan="3" height="16">
- <h4>GridFlow 0.7.7 - License</h4>
- </td></tr>
-
- <tr>
- <td rowspan="2" width="12%">&nbsp;</td>
- <td colspan="2" width="80%">&nbsp;</td>
- <td rowspan="10" width="12%">&nbsp;</td>
- </tr>
-
- <tr><td colspan="2">
- <table cellspacing="1" cellpadding="0"><tr><td bgcolor="black">
- <table cellspacing="1" cellpadding="20"><tr><td bgcolor="white">
- <p>
- Copyright (c) 2001,2002,2003,2004 by Mathieu Bouchard
-
- <p>
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- <p>
- See file LICENSE for further informations on licensing terms.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied
- warranty of MERCHANTABILITY or FITNESS FOR A
- PARTICULAR PURPOSE. See the GNU General Public
- License for more details.
-
- <p>
- You should have received a copy of the GNU General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
-
- </td></tr></table>
- </td></tr></table>
- </td>
- </tr>
- <tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black"><img src="images/black.png" width="1" height="2"></td></tr>
-
- <tr><td colspan="4">
- <p><font size="-1">GridFlow 0.7.7 Documentation<br>
- by Mathieu Bouchard <a href="mailto:matju@sympatico.ca">matju@sympatico.ca</a>
- and<br>
- Alexandre Castonguay <a href="mailto:acastonguay@artengine.ca">acastonguay@artengine.ca</a></font></p>
- </td>
- </tr>
-
-</table>
-</body>
-</html>
diff --git a/externals/gridflow/doc/moulinette.rb b/externals/gridflow/doc/moulinette.rb
deleted file mode 100644
index c74933d6..00000000
--- a/externals/gridflow/doc/moulinette.rb
+++ /dev/null
@@ -1,660 +0,0 @@
-=begin
- $Id: moulinette.rb,v 1.2 2006-03-15 04:44:50 matju Exp $
- convert GridFlow Documentation XML to HTML with special formatting.
-
- GridFlow
- Copyright (c) 2001,2002,2003,2004,2005 by Mathieu Bouchard
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2
- of the License, or (at your option) any later version.
-
- See file ../../COPYING for further informations on licensing terms.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-=end
-
-GF_VERSION = "0.8.1"
-
-#$use_rexml = true
-$use_rexml = false
-
-require "gridflow"
-
-if $use_rexml
- # this is a pure ruby xml-parser
- begin
- require "rexml/sax2parser"
- rescue LoadError
- require "rexml/parsers/sax2parser"
- include REXML::Parsers
- end
- include REXML
-else
- # this uses libexpat.so
- require "xmlparser"
-end
-
-=begin todo
-
- [ ] make it use the mk() function as much as possible.
- [ ] make it validate
- [ ] make it find the size of the pictures (and insert width/height attrs)
- [ ] tune the output
- [ ] fix the header of the page
-
-=end
-
-if nil
- alias real_print print
- alias real_puts puts
- def print(*x); real_print "[#{caller[0]}]"; real_print *x; end
- def puts (*x); real_print "[#{caller[0]}]"; real_puts *x; end
-end
-
-def warn(text)
- STDERR.print "\e[1;031mWARNING:\e[0m "
- STDERR.puts text
-end
-
-$escape_map={
- "<" => "&lt;",
- ">" => "&gt;",
- "&" => "&amp;",
-}
-
-# hackish transcoding from unicode to iso-8859-1
-def multicode(text); text.gsub(/\xc2(.)/) { $1 } end
-
-def html_quote(text)
- return nil if not text
- text = text.gsub(/[<>&]/) {|x| $escape_map[x] }
- text = multicode(text) if /\xc2/ =~ text
- text
-end
-
-def mk(tag,*values,&block)
- raise "value-list's length must be even" if values.length % 2 != 0
- print "<#{tag}"
- i=0
- while i<values.length
- print " #{values[i]}=\"#{values[i+1]}\""
- i+=2
- end
- print ">"
- (block[]; mke tag) if block
-end
-def mke(tag)
- print "</#{tag}>"
-end
-
-def mkimg(parent,alt=nil,prefix=nil)
- #STDERR.puts parent.to_s
- icon = parent.contents.find {|x| XNode===x and x.tag == 'icon' }
- name = parent.att["name"]
- url = prefix+"/"+name+"-icon.png"
- if icon and icon.att["src"]
- url = icon.att["src"]
- STDERR.puts "overriding #{url} with #{icon.att["src"]}"
- end
- url = url.sub(/,.*$/,"") # what's this for again?
- warn "icon #{url} not found" if not File.exist? url
- url = url.gsub(%r"#") {|x| sprintf "%%%02x", x[0] }
- alt = icon.att["text"] if icon and not alt
- alt = "[#{name}]"
- mk(:img, :src, url, :alt, alt, :border, 0)
-end
-
-class XString < String
- def show
- print html_quote(gsub(/[\r\n\t ]+$/," "))
- end
-end
-
-module HasOwnLayout; end
-
-class XNode
- # subclass interface:
- # #show_index : print as html in index
- # #show : print as html in main part of the doc
-
- @valid_tags = {}
- class<<self
- attr_reader :valid_tags
- def register(*args,&b)
- qlass = (if b then Class.new self else self end)
- qlass.class_eval(&b) if b
- for k in args do XNode.valid_tags[k]=qlass end
- #qlass.class_eval {
- # public :show
- # public :show_index
- #}
- end
- def [](tag,att,*contents)
- self.valid_tags[tag].new(tag,att,*contents)
- end
- end
-
- def initialize tag, att, *contents
- @tag,@att,@contents =
- tag, att, contents
- contents.each {|c| c.parent = self if XNode===c }
- end
-
- attr_reader :tag, :att, :contents
- attr_accessor :parent
- def [] i; contents[i] end
-
- def show_index
- contents.each {|x| next unless XNode===x; x.show_index }
- end
-
- # this method segfaults in ruby 1.8
- # because of method lookup on Qundef or whatever.
- def show
- #STDERR.puts GridFlow.get_id(contents)
- #STDERR.puts self
- contents.each {|x|
- # STDERR.puts GridFlow.get_id(x)
- x.show
- }
- end
- def inspect; "#<XNode #{tag}>"; end
- def to_s; inspect; end
- def << x; contents << x; x.parent=self end
-end
-
-XNode.register("documentation") {}
-
-XNode.register(*%w( icon help arg rest )) {public
- def show; end
-}
-
-XNode.register("section") {public
- def show
- write_black_ruler
- mk(:tr) { mk(:td,:colspan,4) {
- mk(:a,:name,att["name"].gsub(/ /,'_')) {}
- mk(:h4) { print att["name"] }}}
-
- contents.each {|x|
- if HasOwnLayout===x then
- x.show
- else
- mk(:tr) { mk(:td) {}; mk(:td) {}; mk(:td) { x.show }}
- puts ""
- end
- }
-
- mk(:tr) { mk(:td) { print "&nbsp;" }}
- puts ""
- end
- def show_index
- mk(:h4) {
- mk(:a,:href,"#"+att["name"].gsub(/ /,'_')) {
- print att["name"] }}
- print "<ul>\n"
- super
- print "</ul>\n"
- end
-}
-
-# basic text formatting nodes.
-XNode.register(*%w( p i u b sup )) {public
- def show
- print "<#{tag}>"
- super
- print "</#{tag}>"
- end
-}
-
-XNode.register("k") {public
- def show
- print "<kbd><font color=\"#007777\">" # oughta be in stylesheet?
- super
- print "</font></kbd>"
- end
-}
-
-# explicit hyperlink on the web.
-XNode.register("link") {public
- def show
- STDERR.puts "att = #{att.inspect}"
- raise if not att['to']
- print "<a href='#{att['to']}'>"
- super
- print att[:to] if contents.length==0
- print "</a>"
- end
-}
-
-XNode.register("list") {public
- attr_accessor :counter
- def show
- self.counter = att.fetch("start"){"1"}.to_i
- mk(:ul) {
- super # method call on Qundef ???
- }
- end
-}
-
-XNode.register("li") {public
- def show
- mk(:li) {
- print "<b>#{parent.counter}</b>", " : "
- parent.counter += 1
- super
- }
- end
-}
-
-# and "macro", "enum", "type", "use"
-XNode.register("class") {public
- include HasOwnLayout
- def show
- tag = self.tag
- name = att['name'] or raise
- mk(:tr) {
- mk(:td,:colspan,4,:bgcolor,"#ffb080") {
- mk(:b) { print "&nbsp;"*2, "#{tag} " }
- mk(:a,:name,name) { print name }
- }
- }
- mk(:tr) {
- mk(:td) {}
- mk(:td,:valign,:top) {
- print "<br>\n"
- help = contents.find {|x| XNode===x and x.tag == 'help' }
- mkimg(self,nil,"flow_classes") if /reference|format/ =~ $file
- mk(:br,:clear,"left")
- 2.times { mk(:br) }
- if help
- big = help.att['image'] || att['name']
- if big[0]==?@ then big="images/help_#{big}.png" end
- warn "help #{big} not found" if not File.exist?(big)
- #small = big.gsub(/png$/, 'jpg').gsub(/\//, '/ic_')
- mk(:a,:href,big) {
- #mk(:img,:src,small,:border,0)
- mk(:img,:src,"images/see_screenshot.png",:border,0)
- }
- end
- mk(:br,:clear,"left")
- mk(:br)
- }#/td
- mk(:td) {
- print "<br>\n"
- super
- print "<br>"
- }#/td
- }#/tr
- end
- def show_index
- icon = contents.find {|x| XNode===x && x.tag == "icon" }
- if not att["name"] then
- raise "name tag missing?"
- end
- mk(:li) { mk(:a,:href,"\#"+att["name"]) {
- mkimg(self,att["cname"],"flow_classes")
- }}
- puts
- super
- end
-}
-
-def nice_table
- mk(:table,:border,0,:bgcolor,:black,:cellspacing,1) {
- mk(:tr) {
- mk(:td,:valign,:top,:align,:left) {
- mk(:table,:bgcolor,:white,:border,0,
- :cellpadding,4,:cellspacing,1) {
- yield }}}}
-end
-
-XNode.register("attr") {public
- def show
- print "<br>"
- if parent.tag == "inlet" or parent.tag == "outlet"
- mk(:b) {
- print "#{parent.tag}&nbsp;#{parent.att['id']} "
-
- }
- end
- print "<b>#{tag}</b>&nbsp;"
- print "#{html_quote att['name']} <b>(</b>"
- s=html_quote(att["name"])
- s="<i>#{att['type']}</i> #{s}" if att['type']
- print "<b>#{s}</b>"
- print "<b>)</b> "
- end
-}
-
-XNode.register("method") {public
-if true #
- def show
- print "<br>"
- if parent.tag == "inlet" or parent.tag == "outlet"
- mk(:b) {
- print "#{parent.tag}&nbsp;#{parent.att['id']} "
-
- }
- end
- print "<b>#{tag}</b>&nbsp;"
- print "#{html_quote att['name']} <b>(</b>"
- print contents.map {|x|
- next unless XNode===x
- case x.tag
- when "arg"
- s=html_quote(x.att["name"])
- s="<i>#{x.att['type']}</i> #{s}" if x.att['type']
- s
- when "rest"
- (x.att["name"]||"") + "..."
- end
- }.compact.join("<b>, </b>")
- print "<b>)</b> "
- super
- print "<br>\n"
- end
-else #
- def show
- print "<br>"
- mk(:table) { mk(:tr) { mk(:td) {
- name = ""
- name << "#{parent.tag} #{parent.att['id']} " if \
- parent.tag == "inlet" or parent.tag == "outlet"
- name << tag.to_s
- mk(:b) { print name.gsub(/ /,"&nbsp;") }
- }; mk(:td) {
- nice_table { mk(:tr) {
- mk(:td,:width,1) { print html_quote(att['name']) }
- contents.each {|x|
- next unless XNode===x
- case x.tag
- when "arg"
- mk(:td,:bgcolor,:pink) {
- s = ""
- if x.att["type"]
- s << "<i>" << html_quote(x.att["type"]) << "</i>"
- end
- if x.att["name"]
- s << " " << html_quote(x.att["name"])
- end
- s<<"&nbsp;" if s.length==0
- mk(:b) { puts s }
- }
- when "rest"
- mk(:td,:bgcolor,:pink) {
- mk(:b) { print html_quote(x.att["name"]), "..."}
- }
- end
- }
- }}
- }; mk(:td) {
- super
- }}}
- end
-end #
-}
-
-XNode.register("table") {public
- def show
- colors = ["#ffffff","#f0f8ff",]
- rows = contents.find_all {|x| XNode===x && x.tag=="row" }
- rows.each_with_index {|x,i| x.bgcolor = colors[i%2] }
- mk(:tr) {
- 2.times { mk(:td) {} }
- mk(:td) {
- nice_table {
- mk(:tr) {
- columns = contents.find_all {|x| XNode===x && x.tag=="column" }
- columns.each {|x| mk(:td,:bgcolor,"#808080") {
- mk(:font,:color,"#ffffff") {
- mk(:b) {
- x.contents.each {|y| y.show }}}}}
- }
- super
- }}}
- end
-}
-
-XNode.register("column") {public
- def show; end
-}
-
-XNode.register("row") {public
- attr_accessor :bgcolor
- def show
- columns = parent.contents.find_all {|x| XNode===x && x.tag=="column" }
- mk(:tr) { columns.each {|x| mk(:td,:bgcolor,bgcolor) {
- id = x.att["id"]
- case x.att["type"]
- when "icon" # should fix this for non-op icons
- x = "op/#{att['cname']}-icon.png"
- if not File.exist? x
- warn "no icon for #{att['name']} (#{x})\n"
- end
- mk(:img,:src,x,:border,0,:alt,att["name"])
- else
- if id==""
- then contents.each {|x| x.show }
- else
-# print html_quote(att[id] || "--")
- print multicode(att[id] || "--")
- end
- end
- }}}
- end
-}
-
-XNode.register("inlet","outlet") {}
-
-#----------------------------------------------------------------#
-
-if $use_rexml
- class GFDocParser
- def initialize(file)
- @sax = SAX2Parser.new(File.open(file))
- @xml_lists = []
- @stack = [[]]
- @sax.listen(:start_element) {|a,b,c,d| startElement(b,d) }
- @sax.listen( :end_element) {|a,b,c| endElement(b) }
- @sax.listen( :characters) {|a| @gfdoc.character(a) }
- end
- def do_it; @sax.parse; end
- end
-else
- class GFDocParser
- def initialize(file)
- @xml = XMLParser.new("ISO-8859-1")
- foo=self; @xml.instance_eval { @gfdoc=foo }
- def @xml.startElement(tag,attrs) @gfdoc.startElement(tag,attrs) end
- def @xml.endElement(tag) @gfdoc.endElement(tag) end
- def @xml.character(text) @gfdoc.character(text) end
- @file = File.open file
- @xml_lists = []
- @stack = [[]]
- end
- def do_it; @xml.parse(@file.readlines.join("\n"), true) end
- def method_missing(sel,*args) @xml.send(sel,*args) end
- end
-end
-
-class GFDocParser
- attr_reader :stack
- def startElement(tag,attrs)
- if not XNode.valid_tags[tag] then
- raise XMLParserError, "unknown tag #{tag}"
- end
- @stack<<[tag,attrs]
- end
- def endElement(tag)
- node = XNode.valid_tags[tag].new(*@stack.pop)
- @stack.last << node
- end
- def character(text)
- if not String===@stack.last.last then
- @stack.last << XString.new("")
- end
- @stack.last.last << text
- end
-end
-
-#----------------------------------------------------------------#
-
-def write_header(tree)
-puts <<EOF
-<html><head>
-<!-- #{"$"}Id#{"$"} -->
-<title>GridFlow #{GF_VERSION} - #{tree.att['title']}</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<link rel="stylesheet" href="gridflow.css" type="text/css">
-</head>
-<body bgcolor="#FFFFFF"
- leftmargin="0" topmargin="0"
- marginwidth="0" marginheight="0">
-<table width="100%" bgcolor="white" border="0" cellspacing="2">
-<tr><td colspan="4" bgcolor="#082069">
-<img src="images/titre_gridflow.png" width="253" height="23">
-</td></tr><tr><td>&nbsp;</td></tr>
-EOF
-write_black_ruler
-puts <<EOF
-<tr><td colspan="4" height="16">
- <h4>GridFlow #{GF_VERSION} - #{tree.att['title']}</h4>
-</td></tr>
-<tr>
- <td width="5%" rowspan="2">&nbsp;</td>
- <td width="15%" height="23">&nbsp;</td>
- <td width="80%" height="23">&nbsp;</td>
- <td width="5%" height="23">&nbsp;</td>
-</tr>
-EOF
-end
-
-def write_black_ruler
-puts <<EOF
-<tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-EOF
-end
-
-def write_footer
-puts <<EOF
-<td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4">
-<p><font size="-1">
-GridFlow #{GF_VERSION} Documentation<br>
-Copyright &copy; 2001,2002,2003,2004,2005,2006 by Mathieu Bouchard
-<a href="mailto:matju@artengine.ca">matju@artengine.ca</a>
-</font></p>
-</td></tr></table></body></html>
-EOF
-end
-
-#----------------------------------------------------------------#
-
-$nodes = {}
-XMLParserError = Exception if $use_rexml
-
-def harvest_doc_of_class xclass, v, way
- doc = case way; when:in:v.doc; when:out:v.doc_out end
- tag = case way; when:in:"inlet"; when:out:"outlet" end
- doc.keys.each {|sel|
- text = v.doc[sel]
- m=/^_(\d+)_(\w+)/.match sel.to_s
- if m then
- xclass << XNode[tag,{"id"=>Integer(m[1])},
- XNode["method",{"name"=>m[2]},XString.new(text)]]
- else
- xclass << XNode["method",{"name"=>sel.to_s},XString.new(text)]
- end
- }
-end
-
-def harvest_doc tree
- kla = {}
- tree.contents.find_all {|x| XNode===x and x.tag=="section" }.each {|sex|
- sex.contents.each {|y|
- next unless XNode===y and y.tag=="class"
- kla[y.att["name"]] = y
- }
- }
- #STDERR.puts kla.inspect
- tree << (nu=XNode["section",{"name"=>"(new documentation)"}])
- tree << (un=XNode["section",{"name"=>"(undocumented)"}])
- alph = GridFlow.fclasses.keys.sort
- alph.each {|k|
- next if /^@/=~k and GridFlow.fclasses[k.gsub(/^@/,"#")]
- v = GridFlow.fclasses[k]
- if v.doc then
- nu << (xclass=XNode["class",{"name"=>k}])
- harvest_doc_of_class xclass, v, :in
- harvest_doc_of_class xclass, v, :out
- elsif not kla[k] then
- un << XNode["p",{},XString.new("[#{k}]")]
- end
- }
-end
-
-def read_one_page file
- begin
- STDERR.puts "reading #{file}"
- parser = GFDocParser.new(file)
- parser.do_it
- $nodes[file] = parser.stack[0][0]
- if file=="reference.xml" then harvest_doc $nodes[file] end
- rescue Exception => e
- puts ""
- puts ""
- STDERR.puts e.inspect
- i = parser.stack.length-1
- (STDERR.puts "\tinside <#{parser.stack[i][0]}>"; i-=1) until i<1
- # strange that line numbers are doubled.
- # also the byte count is offset by the line count !?!?!?
- STDERR.puts "\tinside #{file}:#{parser.line/2 + 1}" +
- " (column #{parser.column}," +
- " byte #{parser.byteIndex - parser.line/2})"
- raise "why don't you fix the documentation"
- end
-end
-
-def write_one_page file
- begin
- $file = file
- output_name = file.sub(/\.xml/,".html")
- STDERR.puts "writing #{output_name}"
- STDOUT.flush # bug in 1.9 ?
- STDOUT.reopen output_name, "w"
- tree = $nodes[file]
-# tree.contents.each {|x| STDERR.puts x.inspect }
- write_header(tree)
- mk(:tr) { mk(:td,:colspan,2) { mk(:div,:cols,tree.att["indexcols"]||1) {
- tree.show_index
- puts "<br><br>"
- }}}
- tree.show
- write_footer
- puts ""
- puts ""
- rescue Exception => e
- STDERR.puts "#{e.class}: #{e.message}"
- STDERR.puts e.backtrace
- end
-end
-
-$files = %w(
- install.xml
- reference.xml format.xml internals.xml architecture.xml)
-# project_policy.xml
-
-$files.each {|input_name| read_one_page input_name }
-$files.each {|input_name| write_one_page input_name }
diff --git a/externals/gridflow/doc/op/abs-icon.png b/externals/gridflow/doc/op/abs-icon.png
deleted file mode 100644
index 6e728ebd..00000000
--- a/externals/gridflow/doc/op/abs-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/add-icon.png b/externals/gridflow/doc/op/add-icon.png
deleted file mode 100644
index 5dc6b7bb..00000000
--- a/externals/gridflow/doc/op/add-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/and-icon.png b/externals/gridflow/doc/op/and-icon.png
deleted file mode 100644
index bf24dada..00000000
--- a/externals/gridflow/doc/op/and-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/atan-icon.png b/externals/gridflow/doc/op/atan-icon.png
deleted file mode 100644
index 06cf2576..00000000
--- a/externals/gridflow/doc/op/atan-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/avg-icon.png b/externals/gridflow/doc/op/avg-icon.png
deleted file mode 100644
index bdc6ed47..00000000
--- a/externals/gridflow/doc/op/avg-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/bus-icon.png b/externals/gridflow/doc/op/bus-icon.png
deleted file mode 100644
index acbdb4c1..00000000
--- a/externals/gridflow/doc/op/bus-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/clip+-icon.png b/externals/gridflow/doc/op/clip+-icon.png
deleted file mode 100644
index 58412e7e..00000000
--- a/externals/gridflow/doc/op/clip+-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/clip--icon.png b/externals/gridflow/doc/op/clip--icon.png
deleted file mode 100644
index 43471ac2..00000000
--- a/externals/gridflow/doc/op/clip--icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/cmp-icon.png b/externals/gridflow/doc/op/cmp-icon.png
deleted file mode 100644
index 3b69b149..00000000
--- a/externals/gridflow/doc/op/cmp-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/cos-icon.png b/externals/gridflow/doc/op/cos-icon.png
deleted file mode 100644
index 503e3b9f..00000000
--- a/externals/gridflow/doc/op/cos-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/div-icon.png b/externals/gridflow/doc/op/div-icon.png
deleted file mode 100644
index 80487cac..00000000
--- a/externals/gridflow/doc/op/div-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/div2-icon.png b/externals/gridflow/doc/op/div2-icon.png
deleted file mode 100644
index 7d15db6a..00000000
--- a/externals/gridflow/doc/op/div2-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/dom-icon.png b/externals/gridflow/doc/op/dom-icon.png
deleted file mode 100644
index f090034b..00000000
--- a/externals/gridflow/doc/op/dom-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/eq-icon.png b/externals/gridflow/doc/op/eq-icon.png
deleted file mode 100644
index 28883199..00000000
--- a/externals/gridflow/doc/op/eq-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/gamma-icon.png b/externals/gridflow/doc/op/gamma-icon.png
deleted file mode 100644
index f1c2c42d..00000000
--- a/externals/gridflow/doc/op/gamma-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/gcd-icon.png b/externals/gridflow/doc/op/gcd-icon.png
deleted file mode 100644
index 2660d79c..00000000
--- a/externals/gridflow/doc/op/gcd-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/ge-icon.png b/externals/gridflow/doc/op/ge-icon.png
deleted file mode 100644
index 7c6d2928..00000000
--- a/externals/gridflow/doc/op/ge-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/gt-icon.png b/externals/gridflow/doc/op/gt-icon.png
deleted file mode 100644
index 643f97fb..00000000
--- a/externals/gridflow/doc/op/gt-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/hypot-icon.png b/externals/gridflow/doc/op/hypot-icon.png
deleted file mode 100644
index 3e9483db..00000000
--- a/externals/gridflow/doc/op/hypot-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/ignore-icon.png b/externals/gridflow/doc/op/ignore-icon.png
deleted file mode 100644
index 5e0654de..00000000
--- a/externals/gridflow/doc/op/ignore-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/lcm-icon.png b/externals/gridflow/doc/op/lcm-icon.png
deleted file mode 100644
index 81e6a078..00000000
--- a/externals/gridflow/doc/op/lcm-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/le-icon.png b/externals/gridflow/doc/op/le-icon.png
deleted file mode 100644
index f69a8800..00000000
--- a/externals/gridflow/doc/op/le-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/log-icon.png b/externals/gridflow/doc/op/log-icon.png
deleted file mode 100644
index d75b15a4..00000000
--- a/externals/gridflow/doc/op/log-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/lt-icon.png b/externals/gridflow/doc/op/lt-icon.png
deleted file mode 100644
index c57ad9bb..00000000
--- a/externals/gridflow/doc/op/lt-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/max-icon.png b/externals/gridflow/doc/op/max-icon.png
deleted file mode 100644
index b9b932e0..00000000
--- a/externals/gridflow/doc/op/max-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/mer-icon.png b/externals/gridflow/doc/op/mer-icon.png
deleted file mode 100644
index 6fe4c1d3..00000000
--- a/externals/gridflow/doc/op/mer-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/min-icon.png b/externals/gridflow/doc/op/min-icon.png
deleted file mode 100644
index c2a114a5..00000000
--- a/externals/gridflow/doc/op/min-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/mod-icon.png b/externals/gridflow/doc/op/mod-icon.png
deleted file mode 100644
index 852ca172..00000000
--- a/externals/gridflow/doc/op/mod-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/mul-icon.png b/externals/gridflow/doc/op/mul-icon.png
deleted file mode 100644
index a2826621..00000000
--- a/externals/gridflow/doc/op/mul-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/ne-icon.png b/externals/gridflow/doc/op/ne-icon.png
deleted file mode 100644
index a3dd4712..00000000
--- a/externals/gridflow/doc/op/ne-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/or-icon.png b/externals/gridflow/doc/op/or-icon.png
deleted file mode 100644
index b672d11a..00000000
--- a/externals/gridflow/doc/op/or-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/pow-icon.png b/externals/gridflow/doc/op/pow-icon.png
deleted file mode 100644
index 7c385ce6..00000000
--- a/externals/gridflow/doc/op/pow-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/put-icon.png b/externals/gridflow/doc/op/put-icon.png
deleted file mode 100644
index 71edae17..00000000
--- a/externals/gridflow/doc/op/put-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/rand-icon.png b/externals/gridflow/doc/op/rand-icon.png
deleted file mode 100644
index cd3d9408..00000000
--- a/externals/gridflow/doc/op/rand-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/rem-icon.png b/externals/gridflow/doc/op/rem-icon.png
deleted file mode 100644
index 5628f326..00000000
--- a/externals/gridflow/doc/op/rem-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/sc_and-icon.png b/externals/gridflow/doc/op/sc_and-icon.png
deleted file mode 100644
index 8f62fa83..00000000
--- a/externals/gridflow/doc/op/sc_and-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/sc_or-icon.png b/externals/gridflow/doc/op/sc_or-icon.png
deleted file mode 100644
index 0554d392..00000000
--- a/externals/gridflow/doc/op/sc_or-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/shl-icon.png b/externals/gridflow/doc/op/shl-icon.png
deleted file mode 100644
index b89946c6..00000000
--- a/externals/gridflow/doc/op/shl-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/shr-icon.png b/externals/gridflow/doc/op/shr-icon.png
deleted file mode 100644
index b9178d14..00000000
--- a/externals/gridflow/doc/op/shr-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/sin-icon.png b/externals/gridflow/doc/op/sin-icon.png
deleted file mode 100644
index d9d686ca..00000000
--- a/externals/gridflow/doc/op/sin-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/sq-icon.png b/externals/gridflow/doc/op/sq-icon.png
deleted file mode 100644
index da103479..00000000
--- a/externals/gridflow/doc/op/sq-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/sqrt-icon.png b/externals/gridflow/doc/op/sqrt-icon.png
deleted file mode 100644
index 53e88d13..00000000
--- a/externals/gridflow/doc/op/sqrt-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/sub-icon.png b/externals/gridflow/doc/op/sub-icon.png
deleted file mode 100644
index 5eda4af7..00000000
--- a/externals/gridflow/doc/op/sub-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/tanh-icon.png b/externals/gridflow/doc/op/tanh-icon.png
deleted file mode 100644
index 6ce79396..00000000
--- a/externals/gridflow/doc/op/tanh-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/vid-icon.png b/externals/gridflow/doc/op/vid-icon.png
deleted file mode 100644
index 8afd9d7b..00000000
--- a/externals/gridflow/doc/op/vid-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/vid2-icon.png b/externals/gridflow/doc/op/vid2-icon.png
deleted file mode 100644
index 2a062699..00000000
--- a/externals/gridflow/doc/op/vid2-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/op/xor-icon.png b/externals/gridflow/doc/op/xor-icon.png
deleted file mode 100644
index 68771820..00000000
--- a/externals/gridflow/doc/op/xor-icon.png
+++ /dev/null
Binary files differ
diff --git a/externals/gridflow/doc/profiling.html b/externals/gridflow/doc/profiling.html
deleted file mode 100644
index f804e87d..00000000
--- a/externals/gridflow/doc/profiling.html
+++ /dev/null
@@ -1,151 +0,0 @@
-<html>
-<head>
-<!-- $Id: profiling.html,v 1.2 2006-03-15 04:44:50 matju Exp $ -->
-<!--
- GridFlow Reference Manual: Architecture
- Copyright (c) 2001,2002,2003,2004 by Mathieu Bouchard
--->
-<title>GridFlow 0.7.7 - Profiling Execution Speed</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<link rel="stylesheet" href="gridflow.css" type="text/css">
-</head>
-
-<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
-<br>
-<table width="100%" border="0" cellspacing="5">
- <tr><td colspan="4" bgcolor="#082069">
- <img src="images/titre_gridflow.png" width="253" height="23"></td></tr>
-
- <tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black"><img src="images/black.png" width="1" height="2"></td></tr>
-
- <tr><td colspan="3" height="16">
- <h4>GridFlow 0.7.7 - Profiling Execution Speed</h4>
- </td></tr>
-
- <tr>
- <td width="12%" height="4">&nbsp;</td>
- <td width="80%" height="4">&nbsp;</td>
- <td width="12%" height="4">&nbsp;</td>
- </tr>
-
- <tr>
- <td width="13%">&nbsp;</td>
- <td width="82%">
-
- <h4>What is profiling?</h4>
- <p>
- It is about getting empiric metrics about the execution of a program.
- For example, find out which parts of a program consume the most time
- and/or memory. Usually it's about the time, and this is what GridFlow
- allows you to measure.
- </p>
-
- <h4>How to get those stats from GridFlow ?</h4>
- <ul>
- <li>create a "@global" object and connect two
- messageboxes to it, "profiler_reset" and "profiler_dump". The first
- one resets all counters to zero. The second one gives a top of
- the busiest objects, with percentages.</li>
- <li>note that those results are global to a process. That is, if you load
- several patches in the same process (program instance), then all those patches
- will be monitored at once. But if you open jMax (or PD) several times at once, then
- the profiler will not see everything happening on that machine.
- </li>
- <h4>How do i interpret those stats?</h4>
- <li>Note that some operations may not be monitored, and some of the
- monitoring may be buggy. I think it's not buggy as it is now, but I may be wrong.
- </li>
- <li>
- The current profiler uses a thing called RDTSC (Pentium only). This is a very high
- precision clock that is very fast to use. However, *major* imprecisions
- may come from the fact that an ordinary multitasking OS will run other
- tasks without stopping/resuming the clock. This may happen randomly;
- however, it has a much bigger chance of happening in [@in] or [@out], because that's
- where all the communication with other stuff is (files, sockets, windows, etc).
- </li>
- <li>
- If you make sure that only the bare minimum is actively running on your
- computer, then [@out] (using x11) would still include the time spent in the x11
- server, except in some conditions. This applies to every kind of window output too,
- because however the data trickles through libraries (sdl, aalib), it has to reach the x11 server
- and the display driver.
- </li>
- <li>
- The profiler has an impact on the results of the profiler. The profiler
- includes half of its own influence in its own results, and disregards the
- other half (or so). Profiling shouldn't add more than 100-300 ticks per
- message (of which half is counted).
- </li>
- <li>
- Message-passing time is not counted at all. Only time actually spent
- inside GridFlow objects is counted. This may skew results.
- Transmission of a grid requires one message, thus we may speak of "grid messages".
- However, when the message is received, one or several packets may get transmitted, which
- is done outside of the message system. Each packet contains at most 2048 numbers
- (adjustable limit), and normally a packet should be at least one quarter of that size unless it is the last one.
- On RGB grids of widths 640,320,160, the packet size will usually be 1920.
- </li>
- </ul>
- </p>
-
- <h4>Getting a frames-per-second measure</h4>
- <p>This section formerly was describing what can now be obtained using the [fps] object class.</p>
-
- <h4>acceleration tricks</h4>
- <ul>
- <li>try the profiler and see what it says.</li>
- <li>i mean really.</li>
- <li>you can lose a lot of your time accelerating something
- that isn't really taking execution time.</li>
- <li>it's faster to work on big grids than on small grids,
- for the amount of number-crunching you can do.
- </li>
- <li>about numbertypes: uint8 is the fastest, followed by int16, int32, float32.
- (and the first two are faster when MMX is enabled). However it
- may be difficult to make some effects use int16
- or smaller without overflow happening.</li>
- <li>[@ &lt;&lt;] is a very fast multiplication by powers of two (1, 2, 4, 8, 16, ...).
- [@ &gt;&gt;] is a very fast division by powers of two.
- <p>
- from my little experience, normal integer multiplication and division are
- rather slow, especially on Intel brand. The gap between *,/ and
- &lt;&lt;,&gt;&gt; is smaller on Cyrix/AMD brand CPUs, but still, try it
- yourself. (my experience has been on specific models and may not reflect currently common models)
- </p>
- </li>
- <li>[@ &amp; 255] is a very fast [@ % 256], and likewise for other
- powers of two.</li>
- <li>for do-nothing operations, "ignore" and "put" are faster than
- "+ 0" and such...</li>
- <li>remember that an image twice smaller in height <u>and</u> twice
- smaller in height will be processed <u>four</u> times as fast (for
- most effects) so you can get four times more frames per second.
- It's the "rows*columns*channels" value that makes the biggest
- difference (usually).</li>
-
- <li>If all fails you may recode a jMax/PD/Ruby abstraction into
- plain Ruby code or C++ code. If your new class is of generic
- usefulness then maybe it should be added to the releases of
- GridFlow. Contact me if you need help extending GridFlow.</li>
-
- <li>Put often-used files on fast drives. This means don't use NFS
- (networked file system) for that. The file-to-ram cache can compensate for
- that up to a certain amount, but the larger the file is, and the most used
- the file is, the more important it is to put it on a local drive. </li>
- </ul>
-</td>
-
- <tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black"><img src="images/black.png" width="1" height="2"></td></tr>
-
- <tr><td colspan="4">
- <p><font size="-1">GridFlow 0.7.7 Documentation<br>
- by Mathieu Bouchard <a href="mailto:matju@sympatico.ca">matju@sympatico.ca</a>
- </font></p>
- </td>
- </tr>
-
-</table>
-</body>
-</html>
diff --git a/externals/gridflow/doc/project_policy.html b/externals/gridflow/doc/project_policy.html
deleted file mode 100644
index 38790844..00000000
--- a/externals/gridflow/doc/project_policy.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<html><head>
-<!-- $Id: project_policy.html,v 1.1 2005-10-04 02:09:43 matju Exp $ -->
-<title>GridFlow 0.8.0 - </title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<link rel="stylesheet" href="gridflow.css" type="text/css">
-</head>
-<body bgcolor="#FFFFFF"
- leftmargin="0" topmargin="0"
- marginwidth="0" marginheight="0">
-<table width="100%" bgcolor="white" border="0" cellspacing="2">
-<tr><td colspan="4" bgcolor="#082069">
-<img src="images/titre_gridflow.png" width="253" height="23">
-</td></tr><tr><td>&nbsp;</td></tr>
-<tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4" height="16">
- <h4>GridFlow 0.8.0 - </h4>
-</td></tr>
-<tr>
- <td width="5%" rowspan="2">&nbsp;</td>
- <td width="15%" height="23">&nbsp;</td>
- <td width="80%" height="23">&nbsp;</td>
- <td width="5%" height="23">&nbsp;</td>
-</tr>
-<tr><td colspan="2"><div cols="1"><h4><a href="#Note">Note</a></h4><ul>
-</ul>
-<h4><a href="#Release">Release</a></h4><ul>
-</ul>
-<h4><a href="#Documentation">Documentation</a></h4><ul>
-</ul>
-<h4><a href="#CVS">CVS</a></h4><ul>
-</ul>
-<br><br>
-</div></td></tr> <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Note"></a><h4>Note</h4></td></tr><tr><td></td><td></td><td>
- first consult the file ../README for a vague idea on the meaning of
- subdirectories. </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Release"></a><h4>Release</h4></td></tr><tr><td></td><td></td><td>
-Compatibility: </td></tr>
-<tr><td></td><td></td><td><ul><li><b>1</b> :
- Should work with Ruby 1.6.6 and PureData 0.36, 0.37, 0.38 </li></ul></td></tr>
-<tr><td></td><td></td><td>
-Release steps (</td></tr>
-<tr><td></td><td></td><td><b>OPERATE WITH CAUTION</b></td></tr>
-<tr><td></td><td></td><td>): </td></tr>
-<tr><td></td><td></td><td><ul> <li><b>1</b> : make vvtest # leak detection </li><li><b>2</b> : ruby base/test.rb formats </li><li><b>3</b> : cvs tag gridflow_0_7_7 . </li><li><b>4</b> : mkdir gridflow </li><li><b>5</b> : cvs -d :pserver:anonymous@cvs.gridflow.ca:/home/cvs/gridflow
- export -r gridflow_0_7_7 -d gridflow . </li><li><b>6</b> : cd gridflow </li><li><b>7</b> : rm -rf CVS CVSROOT </li><li><b>8</b> : chmod -R go=u-w . </li><li><b>9</b> : cd .. </li><li><b>10</b> : tar cfzvv gridflow-0.7.7.tar.gz gridflow </li><li><b>11</b> : rm -rf gridflow # caution!!! </li><li><b>12</b> : scp gridflow*gz gridflow@artengine.ca:download </li><li><b>13</b> : mv gridflow*gz /home/matju/net/GridFlow </li><li><b>14</b> : ssh gridflow@artengine.ca : expand tarball into public_html/latest </li><li><b>15</b> : download somewhere else and try to compile </li><li><b>16</b> : update main page </li><li><b>17</b> : jmax/pd/ruby-talk mlists : post release (note: prefix subject with [ANN] !!!!) </li><li><b>18</b> : freshmeat.net : post release </li><li><b>19</b> : RAA : post release </li> </ul></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Documentation"></a><h4>Documentation</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><ul> <li><b>1</b> :
- Pictures identified as "&lt;help&gt;" should be screenshots of the
- help files. They shouldn't be screenshots of the template. </li> <li><b>2</b> :
- A Help file is a visual summary of what an object does. It should be
- interactive and allow the user to understand what the object does.
- Sample inputs are provided and sample results can be seen. </li> <li><b>3</b> :
- All modifications to the documentation must be done in the XML. The
- HTML must be kept up-to-date by rerunning "make" in the "doc/" directory. </li> <li><b>4</b> :
- Help-wise, Formats are considered objects.
- Operators are to be documented as part of [@] and [@!]. </li> <li><b>5</b> :
- Images grabbed directly from a jMax window should be encoded in PNG.
- This includes "icons" (object boxes, message boxes, etc). If they are
- in JPEG, only change to PNG when the image has to change anyway.
- Distinguish "icons" from "thumbnails", the latter of which are <b>scaled-down</b> grabs, which should be encoded in JPEG. </li> <li><b>6</b> :
- There are not help-thumbnails anymore in the reference manual
- because they were not helpful. </li> <li><b>7</b> :
- Large images should be kept out of the release. The release itself must
- be small enough not to discourage us from doing releases and keeping
- them all. It also should be downloadable on a bad modem. =)
- Let's keep it under 500k please. </li> </ul></td></tr>
-<tr><td></td><td></td><td>
-in doc do:
-for z in images/*.* images/*/*.*; do fgrep -q $z *.html || echo "$z"; done </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="CVS"></a><h4>CVS</h4></td></tr><tr><td></td><td></td><td>
- environment variables
- CVSEDITOR=pico
- CVS_RSH=ssh2 </td></tr>
-<tr><td>&nbsp;</td></tr>
- <td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4">
-<p><font size="-1">
-GridFlow 0.8.0 Documentation<br>
-Copyright &copy; 2001,2002,2003,2004,2005 by Mathieu Bouchard
-<a href="mailto:matju@sympatico.ca">matju@artengine.ca</a>
-</font></p>
-</td></tr></table></body></html>
-
-
diff --git a/externals/gridflow/doc/project_policy.xml b/externals/gridflow/doc/project_policy.xml
deleted file mode 100644
index 3bf7368e..00000000
--- a/externals/gridflow/doc/project_policy.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" standalone="no" ?>
-<!DOCTYPE documentation SYSTEM 'jmax.dtd'>
-<documentation>
-<!-- $Id: project_policy.xml,v 1.1 2005-10-04 02:09:43 matju Exp $ -->
-<!--
- GridFlow Reference Manual: Project Policy
- Copyright (c) 2001,2002,2003,2004 by Mathieu Bouchard and Alexandre Castonguay
--->
-
-<section name="Note">
- first consult the file ../README for a vague idea on the meaning of
- subdirectories.
-</section>
-
-<section name="Release">
-
-Compatibility:
-
-<list><li>
- Should work with Ruby 1.6.6 and PureData 0.36, 0.37, 0.38
-</li></list>
-
-Release steps (<b>OPERATE WITH CAUTION</b>):
-
-<list>
- <li>make vvtest # leak detection
- </li><li>ruby base/test.rb formats
- </li><li>cvs tag gridflow_0_7_7 .
- </li><li>mkdir gridflow
- </li><li>cvs -d :pserver:anonymous@cvs.gridflow.ca:/home/cvs/gridflow
- export -r gridflow_0_7_7 -d gridflow .
- </li><li>cd gridflow
- </li><li>rm -rf CVS CVSROOT
- </li><li>chmod -R go=u-w .
- </li><li>cd ..
- </li><li>tar cfzvv gridflow-0.7.7.tar.gz gridflow
- </li><li>rm -rf gridflow # caution!!!
- </li><li>scp gridflow*gz gridflow@artengine.ca:download
- </li><li>mv gridflow*gz /home/matju/net/GridFlow
- </li><li>ssh gridflow@artengine.ca : expand tarball into public_html/latest
- </li><li>download somewhere else and try to compile
- </li><li>update main page
- </li><li>jmax/pd/ruby-talk mlists : post release (note: prefix subject with [ANN] !!!!)
- </li><li>freshmeat.net : post release
- </li><li>RAA : post release
- </li>
-</list>
-</section>
-
-<section name="Documentation">
-<list>
-<li>
- Pictures identified as "&lt;help&gt;" should be screenshots of the
- help files. They shouldn't be screenshots of the template.
-</li>
-<li>
- A Help file is a visual summary of what an object does. It should be
- interactive and allow the user to understand what the object does.
- Sample inputs are provided and sample results can be seen.
-</li>
-<li>
- All modifications to the documentation must be done in the XML. The
- HTML must be kept up-to-date by rerunning "make" in the "doc/" directory.
-</li>
-<li>
- Help-wise, Formats are considered objects.
- Operators are to be documented as part of [@] and [@!].
-</li>
-<li>
- Images grabbed directly from a jMax window should be encoded in PNG.
- This includes "icons" (object boxes, message boxes, etc). If they are
- in JPEG, only change to PNG when the image has to change anyway.
- Distinguish "icons" from "thumbnails", the latter of which are
- <b>scaled-down</b> grabs, which should be encoded in JPEG.
-</li>
-<li>
- There are not help-thumbnails anymore in the reference manual
- because they were not helpful.
-</li>
-<li>
- Large images should be kept out of the release. The release itself must
- be small enough not to discourage us from doing releases and keeping
- them all. It also should be downloadable on a bad modem. =)
- Let's keep it under 500k please.
-</li>
-</list>
-
-in doc do:
-for z in images/*.* images/*/*.*; do fgrep -q $z *.html || echo "$z"; done
-
-</section>
-
-<section name="CVS">
- environment variables
- CVSEDITOR=pico
- CVS_RSH=ssh2
-</section>
-
-</documentation>
diff --git a/externals/gridflow/doc/reference.html b/externals/gridflow/doc/reference.html
deleted file mode 100644
index 8dce72ec..00000000
--- a/externals/gridflow/doc/reference.html
+++ /dev/null
@@ -1,1165 +0,0 @@
-<html><head>
-<!-- $Id: reference.html,v 1.2 2006-03-15 04:44:50 matju Exp $ -->
-<title>GridFlow 0.8.1 - Reference Manual: Flow Classes</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<link rel="stylesheet" href="gridflow.css" type="text/css">
-</head>
-<body bgcolor="#FFFFFF"
- leftmargin="0" topmargin="0"
- marginwidth="0" marginheight="0">
-<table width="100%" bgcolor="white" border="0" cellspacing="2">
-<tr><td colspan="4" bgcolor="#082069">
-<img src="images/titre_gridflow.png" width="253" height="23">
-</td></tr><tr><td>&nbsp;</td></tr>
-<tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4" height="16">
- <h4>GridFlow 0.8.1 - Reference Manual: Flow Classes</h4>
-</td></tr>
-<tr>
- <td width="5%" rowspan="2">&nbsp;</td>
- <td width="15%" height="23">&nbsp;</td>
- <td width="80%" height="23">&nbsp;</td>
- <td width="5%" height="23">&nbsp;</td>
-</tr>
-<tr><td colspan="2"><div cols="3"><h4><a href="#Objects_for_making_grids_and_breaking_them_down">Objects for making grids and breaking them down</a></h4><ul>
-<li><a href="##import"><img src="flow_classes/%23import-icon.png" alt="[#import]" border="0"></a></li>
-<li><a href="##export"><img src="flow_classes/%23export-icon.png" alt="[#export]" border="0"></a></li>
-<li><a href="##export_list"><img src="flow_classes/%23export_list-icon.png" alt="[#export_list]" border="0"></a></li>
-<li><a href="##export_symbol"><img src="flow_classes/%23export_symbol-icon.png" alt="[#export_symbol]" border="0"></a></li>
-<li><a href="##pack"><img src="flow_classes/%23pack-icon.png" alt="[#pack]" border="0"></a></li>
-<li><a href="##color"><img src="flow_classes/%23color-icon.png" alt="[#color]" border="0"></a></li>
-<li><a href="##unpack"><img src="flow_classes/%23unpack-icon.png" alt="[#unpack]" border="0"></a></li>
-<li><a href="##centroid"><img src="flow_classes/%23centroid-icon.png" alt="[#centroid]" border="0"></a></li>
-<li><a href="##centroid2"><img src="flow_classes/%23centroid2-icon.png" alt="[#centroid2]" border="0"></a></li>
-<li><a href="##for"><img src="flow_classes/%23for-icon.png" alt="[#for]" border="0"></a></li>
-</ul>
-<h4><a href="#Objects_for_Computing">Objects for Computing</a></h4><ul>
-<li><a href="##"><img src="flow_classes/%23-icon.png" alt="[#]" border="0"></a></li>
-<li><a href="#@complex_sq"><img src="flow_classes/@complex_sq-icon.png" alt="[@complex_sq]" border="0"></a></li>
-<li><a href="##fold"><img src="flow_classes/%23fold-icon.png" alt="[#fold]" border="0"></a></li>
-<li><a href="##scan"><img src="flow_classes/%23scan-icon.png" alt="[#scan]" border="0"></a></li>
-<li><a href="##outer"><img src="flow_classes/%23outer-icon.png" alt="[#outer]" border="0"></a></li>
-<li><a href="##inner"><img src="flow_classes/%23inner-icon.png" alt="[#inner]" border="0"></a></li>
-<li><a href="#@join"><img src="flow_classes/@join-icon.png" alt="[@join]" border="0"></a></li>
-<li><a href="##finished"><img src="flow_classes/%23finished-icon.png" alt="[#finished]" border="0"></a></li>
-<li><a href="##cast"><img src="flow_classes/%23cast-icon.png" alt="[#cast]" border="0"></a></li>
-<li><a href="##ravel"><img src="flow_classes/%23ravel-icon.png" alt="[#ravel]" border="0"></a></li>
-<li><a href="##grade"><img src="flow_classes/%23grade-icon.png" alt="[#grade]" border="0"></a></li>
-<li><a href="##perspective"><img src="flow_classes/%23perspective-icon.png" alt="[#perspective]" border="0"></a></li>
-<li><a href="##transpose"><img src="flow_classes/%23transpose-icon.png" alt="[#transpose]" border="0"></a></li>
-<li><a href="##fade"><img src="flow_classes/%23fade-icon.png" alt="[#fade]" border="0"></a></li>
-<li><a href="##fade_lin"><img src="flow_classes/%23fade_lin-icon.png" alt="[#fade_lin]" border="0"></a></li>
-<li><a href="##reverse"><img src="flow_classes/%23reverse-icon.png" alt="[#reverse]" border="0"></a></li>
-</ul>
-<h4><a href="#Objects_for_Coordinate_Transforms">Objects for Coordinate Transforms</a></h4><ul>
-<li><a href="##redim"><img src="flow_classes/%23redim-icon.png" alt="[#redim]" border="0"></a></li>
-<li><a href="##store"><img src="flow_classes/%23store-icon.png" alt="[#store]" border="0"></a></li>
-<li><a href="##scale_to"><img src="flow_classes/%23scale_to-icon.png" alt="[#scale_to]" border="0"></a></li>
-<li><a href="##scale_by"><img src="flow_classes/%23scale_by-icon.png" alt="[#scale_by]" border="0"></a></li>
-<li><a href="##downscale_by"><img src="flow_classes/%23downscale_by-icon.png" alt="[#downscale_by]" border="0"></a></li>
-<li><a href="##spread"><img src="flow_classes/%23spread-icon.png" alt="[#spread]" border="0"></a></li>
-<li><a href="##rotate"><img src="flow_classes/%23rotate-icon.png" alt="[#rotate]" border="0"></a></li>
-<li><a href="##remap_image"><img src="flow_classes/%23remap_image-icon.png" alt="[#remap_image]" border="0"></a></li>
-</ul>
-<h4><a href="#Objects_for_Reporting">Objects for Reporting</a></h4><ul>
-<li><a href="##dim"><img src="flow_classes/%23dim-icon.png" alt="[#dim]" border="0"></a></li>
-<li><a href="##type"><img src="flow_classes/%23type-icon.png" alt="[#type]" border="0"></a></li>
-<li><a href="##print"><img src="flow_classes/%23print-icon.png" alt="[#print]" border="0"></a></li>
-<li><a href="#rubyprint"><img src="flow_classes/rubyprint-icon.png" alt="[rubyprint]" border="0"></a></li>
-<li><a href="#printargs"><img src="flow_classes/printargs-icon.png" alt="[printargs]" border="0"></a></li>
-<li><a href="#display"><img src="flow_classes/display-icon.png" alt="[display]" border="0"></a></li>
-</ul>
-<h4><a href="#Objects_for_Color_Conversion">Objects for Color Conversion</a></h4><ul>
-<li><a href="##apply_colormap_channelwise"><img src="flow_classes/%23apply_colormap_channelwise-icon.png" alt="[#apply_colormap_channelwise]" border="0"></a></li>
-<li><a href="##rgb_to_greyscale"><img src="flow_classes/%23rgb_to_greyscale-icon.png" alt="[#rgb_to_greyscale]" border="0"></a></li>
-<li><a href="##greyscale_to_rgb"><img src="flow_classes/%23greyscale_to_rgb-icon.png" alt="[#greyscale_to_rgb]" border="0"></a></li>
-<li><a href="##yuv_to_rgb"><img src="flow_classes/%23yuv_to_rgb-icon.png" alt="[#yuv_to_rgb]" border="0"></a></li>
-<li><a href="##rgb_to_yuv"><img src="flow_classes/%23rgb_to_yuv-icon.png" alt="[#rgb_to_yuv]" border="0"></a></li>
-</ul>
-<h4><a href="#Objects_for_Miscellaneous_Picture_Processing">Objects for Miscellaneous Picture Processing</a></h4><ul>
-<li><a href="##convolve"><img src="flow_classes/%23convolve-icon.png" alt="[#convolve]" border="0"></a></li>
-<li><a href="##contrast"><img src="flow_classes/%23contrast-icon.png" alt="[#contrast]" border="0"></a></li>
-<li><a href="##posterize"><img src="flow_classes/%23posterize-icon.png" alt="[#posterize]" border="0"></a></li>
-<li><a href="##solarize"><img src="flow_classes/%23solarize-icon.png" alt="[#solarize]" border="0"></a></li>
-<li><a href="##checkers"><img src="flow_classes/%23checkers-icon.png" alt="[#checkers]" border="0"></a></li>
-<li><a href="##layer"><img src="flow_classes/%23layer-icon.png" alt="[#layer]" border="0"></a></li>
-<li><a href="##draw_image"><img src="flow_classes/%23draw_image-icon.png" alt="[#draw_image]" border="0"></a></li>
-<li><a href="##draw_polygon"><img src="flow_classes/%23draw_polygon-icon.png" alt="[#draw_polygon]" border="0"></a></li>
-<li><a href="##text_to_image"><img src="flow_classes/%23text_to_image-icon.png" alt="[#text_to_image]" border="0"></a></li>
-<li><a href="##hueshift"><img src="flow_classes/%23hueshift-icon.png" alt="[#hueshift]" border="0"></a></li>
-</ul>
-<h4><a href="#Other_Objects">Other Objects</a></h4><ul>
-<li><a href="#rtmetro"><img src="flow_classes/rtmetro-icon.png" alt="[rtmetro]" border="0"></a></li>
-<li><a href="#bindpatcher"><img src="flow_classes/bindpatcher-icon.png" alt="[bindpatcher]" border="0"></a></li>
-<li><a href="#pingpong"><img src="flow_classes/pingpong-icon.png" alt="[pingpong]" border="0"></a></li>
-<li><a href="##global"><img src="flow_classes/%23global-icon.png" alt="[#global]" border="0"></a></li>
-<li><a href="#fps"><img src="flow_classes/fps-icon.png" alt="[fps]" border="0"></a></li>
-<li><a href="#unix_time"><img src="flow_classes/unix_time-icon.png" alt="[unix_time]" border="0"></a></li>
-<li><a href="#ls"><img src="flow_classes/ls-icon.png" alt="[ls]" border="0"></a></li>
-<li><a href="#exec"><img src="flow_classes/exec-icon.png" alt="[exec]" border="0"></a></li>
-<li><a href="#renamefile"><img src="flow_classes/renamefile-icon.png" alt="[renamefile]" border="0"></a></li>
-<li><a href="#plotter_control"><img src="flow_classes/plotter_control-icon.png" alt="[plotter_control]" border="0"></a></li>
-<li><a href="#rubyarray"><img src="flow_classes/rubyarray-icon.png" alt="[rubyarray]" border="0"></a></li>
-</ul>
-<h4><a href="#jMax_emulation">jMax emulation</a></h4><ul>
-<li><a href="#fork"><img src="flow_classes/fork-icon.png" alt="[fork]" border="0"></a></li>
-<li><a href="#jmax_udpsend"><img src="flow_classes/jmax_udpsend-icon.png" alt="[jmax_udpsend]" border="0"></a></li>
-<li><a href="#jmax_udpreceive"><img src="flow_classes/jmax_udpreceive-icon.png" alt="[jmax_udpreceive]" border="0"></a></li>
-<li><a href="#foreach"><img src="flow_classes/foreach-icon.png" alt="[foreach]" border="0"></a></li>
-<li><a href="#rubysprintf"><img src="flow_classes/rubysprintf-icon.png" alt="[rubysprintf]" border="0"></a></li>
-<li><a href="#listflatten"><img src="flow_classes/listflatten-icon.png" alt="[listflatten]" border="0"></a></li>
-<li><a href="#listmake"><img src="flow_classes/listmake-icon.png" alt="[listmake]" border="0"></a></li>
-<li><a href="#listlength"><img src="flow_classes/listlength-icon.png" alt="[listlength]" border="0"></a></li>
-<li><a href="#listelement"><img src="flow_classes/listelement-icon.png" alt="[listelement]" border="0"></a></li>
-<li><a href="#listsublist"><img src="flow_classes/listsublist-icon.png" alt="[listsublist]" border="0"></a></li>
-<li><a href="#listprepend"><img src="flow_classes/listprepend-icon.png" alt="[listprepend]" border="0"></a></li>
-<li><a href="#listappend"><img src="flow_classes/listappend-icon.png" alt="[listappend]" border="0"></a></li>
-<li><a href="#listreverse"><img src="flow_classes/listreverse-icon.png" alt="[listreverse]" border="0"></a></li>
-<li><a href="#oneshot"><img src="flow_classes/oneshot-icon.png" alt="[oneshot]" border="0"></a></li>
-<li><a href="#inv+"><img src="flow_classes/inv+-icon.png" alt="[inv+]" border="0"></a></li>
-<li><a href="#inv*"><img src="flow_classes/inv*-icon.png" alt="[inv*]" border="0"></a></li>
-<li><a href="#messageprepend"><img src="flow_classes/messageprepend-icon.png" alt="[messageprepend]" border="0"></a></li>
-<li><a href="#messageappend"><img src="flow_classes/messageappend-icon.png" alt="[messageappend]" border="0"></a></li>
-<li><a href="#shunt"><img src="flow_classes/shunt-icon.png" alt="[shunt]" border="0"></a></li>
-<li><a href="#demux"><img src="flow_classes/demux-icon.png" alt="[demux]" border="0"></a></li>
-<li><a href="#range"><img src="flow_classes/range-icon.png" alt="[range]" border="0"></a></li>
-</ul>
-<h4><a href="#PureData_emulation">PureData emulation</a></h4><ul>
-<li><a href="#pd_netsend"><img src="flow_classes/pd_netsend-icon.png" alt="[pd_netsend]" border="0"></a></li>
-<li><a href="#pd_netreceive"><img src="flow_classes/pd_netreceive-icon.png" alt="[pd_netreceive]" border="0"></a></li>
-</ul>
-<h4><a href="#(new_documentation)">(new documentation)</a></h4><ul>
-<li><a href="#listfind"><img src="flow_classes/listfind-icon.png" alt="[listfind]" border="0"></a></li>
-<li><a href="#memstat"><img src="flow_classes/memstat-icon.png" alt="[memstat]" border="0"></a></li>
-<li><a href="#regsub"><img src="flow_classes/regsub-icon.png" alt="[regsub]" border="0"></a></li>
-<li><a href="#sendgui"><img src="flow_classes/sendgui-icon.png" alt="[sendgui]" border="0"></a></li>
-<li><a href="#sys_vgui"><img src="flow_classes/sys_vgui-icon.png" alt="[sys_vgui]" border="0"></a></li>
-</ul>
-<h4><a href="#(undocumented)">(undocumented)</a></h4><ul>
-</ul>
-<br><br>
-</div></td></tr> <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Objects_for_making_grids_and_breaking_them_down"></a><h4>Objects for making grids and breaking them down</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#import">#import</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23import-icon.png" alt="[#import]" border="0"><br clear="left"><br><br><a href="#importexport"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <p>This object allows you to produce grids from non-grid data, such as
- integers and lists of integers. This object also reframes/resyncs
- grids so that multiple grids may be joined together, or
- single grids may be split. That kind of operation is already done implicitly in many
- cases (e.g. sending an integer or list to a grid-receiving inlet),
- but using this object you have greater flexibility on the conversion.</p> <br><b>attr</b>&nbsp;shape <b>(</b><b><i>GridShape|symbol(per_message)</i> shape</b><b>)</b> <br><b>attr</b>&nbsp;cast <b>(</b><b><i>NumberType</i> cast</b><b>)</b> <br><b>method</b>&nbsp;init <b>(</b>shape<b>, </b>cast<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;int <b>(</b><b>)</b>
- begins a new grid if there is no current grid.
- puts that integer in the current grid.
- ends the grid if it is full.
- the constructed grid is not stored: it is streamed.
- the stream is buffered, so the output is in packets
- of about a thousand numbers. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;list <b>(</b><b>)</b>
- just like a sequence of ints sent one after another,
- except in a single message. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;symbol <b>(</b><b>)</b>
- considered as a list of ascii characters. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;reset <b>(</b><b>)</b>
- aborts the current grid if there is one. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(dims...)</i> grid<b>)</b>
- this is the equivalent of filtering this grid through
- an <kbd><font color="#007777">[#export]</font></kbd> object and sending the resulting integers
- to this <kbd><font color="#007777">[#import]</font></kbd> object, except that it's over
- 10 times faster. <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;per_message <b>(</b><b>)</b>
- old synonym for "shape per_message" <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b>
- the grid produced from incoming integers and/or grids. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#export">#export</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23export-icon.png" alt="[#export]" border="0"><br clear="left"><br><br><a href="#importexport"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <p>this object is the opposite of #import.</p> <br><b>method</b>&nbsp;init <b>(</b><b>)</b>
- this object is not configurable because there isn't
- anything that could possibly be configured here. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(dims...)</i> grid<b>)</b>
- transforms this grid into a sequence of integer messages. <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;int <b>(</b><b>)</b>
- elements of the incoming grid. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#export_list">#export_list</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23export_list-icon.png" alt="[#export_list]" border="0"><br clear="left"><br><br><a href="#importexport"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <p>this object is another opposite of <kbd><font color="#007777">[#import]</font></kbd>, which puts
- all of its values in a list.</p> <br><b>method</b>&nbsp;init <b>(</b><b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(dims...)</i> grid<b>)</b>
- transforms this grid into a single message containing
- a list of integers. <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;list <b>(</b><b>)</b>
- elements of the incoming grid. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#export_symbol">#export_symbol</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23export_symbol-icon.png" alt="[#export_symbol]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>this object is another opposite of #import, which constructs a symbol
- from its input. The values are expected to be valid ASCII codes, but no check
- will be performed for that, and additionally, no check will be made that the generated
- symbol only contains characters that can be put in a symbol.</p> <br><b>method</b>&nbsp;init <b>(</b><b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(dims...)</i> grid<b>)</b>
- transforms this grid into a single message containing
- a list of integers. <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;symbol <b>(</b><b>)</b> generated symbol<br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#pack">#pack</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23pack-icon.png" alt="[#pack]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>Similar to <kbd><font color="#007777">[#join]</font></kbd>, but takes individual integers, and builds a Dim(N) vector out of it. </p> <br><b>attr</b>&nbsp;trigger_by <b>(</b><b><i>TriggerBy</i> trigger_by</b><b>)</b> <br><b>method</b>&nbsp;init <b>(</b><i>integer</i> inputs<b>)</b> <br>
- <br><b>inlet&nbsp;* </b><b>method</b>&nbsp;int <b>(</b><b>)</b> <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><b>)</b>
- combination of inputs given in all inlets.
- this is produced according to the value of the trigger attribute. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#color">#color</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23color-icon.png" alt="[#color]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>Triple slider for the selection of RGB values.</p> <br><b>method</b>&nbsp;init <b>(</b><i>float</i> min<b>, </b><i>float</i> max<b>, </b><i>0,1</i> hidepreview<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><b>)</b>
- changes all three values (R,G,B). The grid must
- be a Dim(3). <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;delegate <b>(</b><b>)</b>
- sends the rest of the message to each of the three sliders.
- this relies on the fact that [#color] is implemented using
- three [hsl] and this might not still work in the far future. <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><b>)</b>
- Produces a Dim(3) grid of RGB values. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#unpack">#unpack</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23unpack-icon.png" alt="[#unpack]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b><i>integer</i> outputs<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid(N) <b>(</b><b>)</b>
- the input vector is split in N parts containing one number each.
- numbers are sent left-to-right, that is, outlet 0 is triggered first, then outlet 1, etc. <br>
- <br><b>outlet&nbsp;* </b><b>method</b>&nbsp;int <b>(</b><b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#centroid">#centroid</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23centroid-icon.png" alt="[#centroid]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b><b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid(rows,columns,1) <b>(</b><b>)</b>
- will compute the centroid of the given grid, which
- is a weighted average, namely, the average position weighted
- by the pixel values. <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid(2) <b>(</b><b>)</b>
- result <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#centroid2">#centroid2</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23centroid2-icon.png" alt="[#centroid2]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- a new experimental and faster version of #centroid. <br><b>method</b>&nbsp;init <b>(</b><b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid(rows,columns,1) <b>(</b><b>)</b>
- will compute the centroid of the given grid, which
- is a weighted average, namely, the average position weighted
- by the pixel values. <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid(2) <b>(</b><b>)</b>
- result <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#for">#for</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23for-icon.png" alt="[#for]" border="0"><br clear="left"><br><br><a href="#for"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <p>when given scalar bounds, works like a regular <kbd><font color="#007777">[for]</font></kbd> object plugged
- to a <kbd><font color="#007777">[#import]</font></kbd> tuned for a Dim(size) where size is the number of values
- produced by a bang to that <kbd><font color="#007777">[for]</font></kbd>.</p> <p>when given vector bounds, will work like any number of [for] objects
- producing all possible combinations of their values in the proper order.
- This replaces the old <kbd><font color="#007777">[#identity_transform]</font></kbd> object.</p> <br><b>method</b>&nbsp;init <b>(</b><i>integer</i> from<b>, </b><i>integer</i> to<b>, </b><i>integer</i> step<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(index)</i> grid<b>)</b>
- replaces the "from" value and produces output. <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(index)</i> grid<b>)</b>
- replaces the "to" value. <br>
- <br><b>inlet&nbsp;2 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(index_steps)</i> grid<b>)</b>
- replaces the "step" value. <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(size)</i> grid<b>)</b>
- where size is floor((to-from+1)/step)
- [for scalar bounds] <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(*size,dimension)</i> grid<b>)</b>
- where *size is floor((to-from+1)/step)
- [for vector bounds] <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Objects_for_Computing"></a><h4>Objects for Computing</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#">#</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23-icon.png" alt="[#]" border="0"><br clear="left"><br><br><a href="#"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <br><b>attr</b>&nbsp;op <b>(</b><b><i>grid</i> op</b><b>)</b> <br><b>attr</b>&nbsp;right_hand <b>(</b><b><i>grid</i> right_hand</b><b>)</b> <p>This object outputs a grid by computing "in parallel" a same
- operation on each left-hand element with its corresponding right-hand
- element. </p> <br><b>method</b>&nbsp;init <b>(</b>op<b>, </b>right_hand<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(dims...)</i> grid<b>)</b>
- on each element of this grid, perform the operation
- together with the corresponding element of inlet 1.
- in the table of operators (at the top of this document)
- elements of inlet 0 are called "A" and elements of inlet 1
- are called "B". the resulting grid is the same size as the
- one in inlet 0. <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(dims...)</i> grid<b>)</b>
- any grid, preferably shaped like the one that will be put
- in the left inlet, or like a subpart of it (anyway the contents
- will be redim'ed on-the-fly to fit the grid of inlet-0,
- but the stored grid will not be modified itself) <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;int <b>(</b><b>)</b>
- stores a single int in the right inlet; the same int will
- be applied in all computations; this is like sending a
- Dim(1) or Dim() grid with that number in it. <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="@complex_sq">@complex_sq</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/@complex_sq-icon.png" alt="[@complex_sq]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>this object computes the square of complex numbers.
- If seeing imaginary as Y and real as X, then this operation squares
- the distance of a point from origin and doubles the angle between it
- and the +X half-axis clockwise. (fun, eh?) </p> <p>used on an indexmap, this makes each thing appear twice,
- each apparition spanning half of the original angle.</p> <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(dims... {imaginary real})</i> grid<b>)</b> <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(dims... {imaginary real})</i> grid<b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#fold">#fold</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23fold-icon.png" alt="[#fold]" border="0"><br clear="left"><br><br><a href="#foldinnerouter"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <p><ul> <li><b>1</b> : <kbd><font color="#007777">[#fold +]</font></kbd> computes totals</li> <li><b>2</b> : <kbd><font color="#007777">[#fold inv+]</font></kbd> is an alternated sum (+/-)</li> <li><b>3</b> : <kbd><font color="#007777">[#fold * 1]</font></kbd> can compute the size of a grid using its dimension list</li> <li><b>4</b> : <kbd><font color="#007777">[#fold &amp; 1]</font></kbd> can mean "for all"</li> <li><b>5</b> : <kbd><font color="#007777">[#fold | 0]</font></kbd> can mean "there exists (at least one)"</li> <li><b>6</b> : <kbd><font color="#007777">[#fold ^ 0]</font></kbd> can mean "there exists an odd number of..."</li> <li><b>7</b> : <kbd><font color="#007777">[#fold ^ 1]</font></kbd> can mean "there exists an even number of...".</li> </ul></p> <br><b>method</b>&nbsp;init <b>(</b><i>numop2</i> operator<b>, </b><i>grid</i> seed<b>, </b><i>grid</i> right_hand<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(dims..., last)</i> grid<b>)</b>
- replaces every Dim(last) subgrid by the result of a cascade on that subgrid.
- Doing that
- with seed value 0 and operation + on grid "2 3 5 7" will compute
- ((((0+2)+3)+5)+7) find the total "17".
- produces a Dim(dims) grid. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#scan">#scan</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23scan-icon.png" alt="[#scan]" border="0"><br clear="left"><br><br><a href="#scan"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <p><kbd><font color="#007777">[#scan +]</font></kbd> computes subtotals; this can be used, for example,
- to convert a regular probability distribution into a cumulative one.
- (or in general, discrete integration) </p> <br><b>method</b>&nbsp;init <b>(</b><i>numop2</i> operator<b>, </b><i>grid</i> seed<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(dims..., last)</i> grid<b>)</b>
- replaces every Dim(last) subgrid by all the results of
- cascading the operator on that subgrid,
- producing a Dim(dims,last) grid.
- For example, with base value 0 and operation + on grid "2 3 5
- 7" will compute 0+2=2, 2+3=5, 5+5=10, 10+7=17, and give the
- subtotals "2 5 10 17". <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#outer">#outer</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23outer-icon.png" alt="[#outer]" border="0"><br clear="left"><br><br><a href="#foldinnerouter"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b><i>numop2</i> operator<b>, </b><i>grid</i> value<b>)</b>
- the operator must be picked from the table of two-input operators.
- the grid is optional and corresponds to inlet 1. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(anyA...)</i> grid<b>)</b> <br>
-
- produces a grid of size Dim(anyA..., anyB...), where numbers
- are the results of the operation on every element of A and
- every element of B. the resulting array can be very big. Don't
- try this on two pictures (the result will have 6 dimensions) <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(anyB...)</i> grid<b>)</b> <br>
-
- stores the specified grid, to be used when inlet 0 is activated. <p>When given a grid of Dim(3) and a grid of Dim(5) <kbd><font color="#007777">[#outer]</font></kbd> will
- produce a grid of Dim(3,5) with the selected two-input operation
- applied on each of the possible pairs combinations between numbers
- from the left grid and the ones from the right. for example :
- (10,20,30) [#outer +] (1,2,3) will give :
- ((11,12,13),(21,22,23),(31,32,33)) </p> <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#inner">#inner</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23inner-icon.png" alt="[#inner]" border="0"><br clear="left"><br><br><a href="#inner"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <p>think of this one as a special combination of <kbd><font color="#007777">[#outer]</font></kbd>, <kbd><font color="#007777">[#]</font></kbd> and <kbd><font color="#007777">[#fold]</font></kbd>. this is one of the most complex operations. It is very useful
- for performing linear transforms like rotations, scalings, shearings,
- and some kinds of color remappings. A linear transform is done by
- something called matrix multiplication, which happens to be <kbd><font color="#007777">[#inner * +
- 0]</font></kbd>. <kbd><font color="#007777">[#inner]</font></kbd> also does dot product and other funny operations.</p> <br><b>method</b>&nbsp;init <b>(</b><i>numop2</i> op_para<b>, </b><i>numop2</i> op_fold<b>, </b><i>integer</i> base<b>, </b><i>grid</i> right_hand<b>)</b>
- op_para and op_fold are two operators picked from the table
- of two-input operators.
- the base value has to be specified (has no default value yet). <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(anyA..., lastA)</i> grid<b>)</b>
- Splits the Dim(anyA...,lastA) left-hand grid into Dim(anyA...)
- pieces of Dim(lastA) size.
- Splits the Dim(firstB,anyB...) right-hand grid into
- Dim(anyB...) pieces of Dim(firstB) size.
- On every piece pair, does <kbd><font color="#007777">[#]</font></kbd> using the specified
- op_para operation, followed by a <kbd><font color="#007777">[#fold]</font></kbd> using
- the specified op_fold operator and base value.
- creates a Dim(anyA...,anyB...) grid by assembling all
- the results together.
- (note: lastA must be equal to firstB.) <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;int <b>(</b><b>)</b>
- changes the base value to that. <br>
- <br><b>inlet&nbsp;2 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(anyB..., lastB)</i> grid<b>)</b>
- changes the right-hand side grid to that. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="@join">@join</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/@join-icon.png" alt="[@join]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b>which_dim<b>)</b>
- Which_dim is the number of the dimension by which the join will
- occur. For N-dimensional grids, the dimensions are numbered from 0
- to N-1. In addition, negative numbers from -N to -1 may be used, to
- which N will be added. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b>
- The left grid and right grid must have the same number
- of elements in all dimensions except the one specified.
- The result will have the same number of elements in all
- dimensions except the one specified, which will be the
- sum of the two corresponding one. <p>For example, joining a RGB picture Dim[y,x,3] and a
- greyscale picture Dim[y,x,1] on dimension 2 (or -1) could
- make a RGBA picture Dim[y,x,4] in which the greyscale image
- becomes the opacity channel. </p> <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#finished">#finished</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23finished-icon.png" alt="[#finished]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b> any grid<br>
-
- a bang is emitted every time a grid transmission ends. <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#cast">#cast</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23cast-icon.png" alt="[#cast]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b><i>numbertype</i> numbertype<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b> any grid<br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b> a grid of the same shape containing all the same
- values after type conversion. note that while casting to
- a smaller type, values that are overflowing will be truncated. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#ravel">#ravel</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23ravel-icon.png" alt="[#ravel]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b> any grid<br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b>
- like <kbd><font color="#007777">[#redim]</font></kbd> but always produce a 1-D grid
- with the same total number of elements. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#grade">#grade</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23grade-icon.png" alt="[#grade]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b> any grid<br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b> <p>splits a Dim[A...,B] grid into Dim[B] vectors,
- producing new Dim[B] vectors that each contain numbers from
- 0 to B-1 indicating the ordering of the values. The result is
- a Dim[A...,B] grid.</p> <p>for example, connecting a [#grade] to a <kbd><font color="#007777">[#outer ignore {0}]</font></kbd>
- to a <kbd><font color="#007777">[#store]</font></kbd> object, storing a single vector into <kbd><font color="#007777">[#store]</font></kbd>, and
- sending the same vector to <kbd><font color="#007777">[#grade]</font></kbd>, will sort the values of the
- vector. however for higher-dimensional grids, what should go
- between <kbd><font color="#007777">[#store]</font></kbd> and <kbd><font color="#007777">[#grade]</font></kbd> to achieve the same result would
- be more complex.</p> <p>you may achieve different kinds of sorting by applying various
- filters before <kbd><font color="#007777">[#grade]</font></kbd>. the possibilities are unlimited.</p> <p>if you plug <kbd><font color="#007777">[#grade]</font></kbd> directly into another <kbd><font color="#007777">[#grade]</font></kbd>, you will
- get the inverse arrangement, which allows to take the sorted values
- and make them unsorted in the original way. note that this is really
- not the same as just listing the values backwards.</p> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#perspective">#perspective</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23perspective-icon.png" alt="[#perspective]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b><i>integer</i> depth<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b> any grid<br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b> <p>transforms a Dim[A...,B] grid into a Dim[A...,B-1] grid.
- There is a projection plane perpendicular to the last axis and
- whose position is given by the "depth" parameter. Each vector's
- length is adjusted so that it lies onto that plane. Then the
- last dimension of each vector is dropped.</p> <p>useful for converting from 3-D geometry to 2-D geometry. Also
- useful for converting homogeneous 3-D into regular 3-D, as
- homogeneous 3-D is really just regular 4-D...(!)</p> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#transpose">#transpose</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23transpose-icon.png" alt="[#transpose]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b><i>integer</i> dim1<b>, </b><i>integer</i> dim2<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b>
- swaps the two specified dimensions; dimension numbers are as in <kbd><font color="#007777">[#join]</font></kbd>. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#fade">#fade</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23fade-icon.png" alt="[#fade]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b><i>integer</i> rate<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b>
- produces on outlet 0 a linear recurrent fading according to the flow of
- incoming messages. For example, if rate=5, then 20% (one fifth)
- of each new message will be blended with 80% of the previous output. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#fade_lin">#fade_lin</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23fade_lin-icon.png" alt="[#fade_lin]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b><i>integer</i> maxraise<b>, </b><i>integer</i> maxdrop<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b>
- produces on outlet 0 a piecewise-linear nonrecurrent fading according to the flow of
- incoming messages. For example, if maxraise=2 and maxdrop=4, then with each
- new message an output is produced that is at most 2 more or 4 less than the
- previous output. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#reverse">#reverse</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23reverse-icon.png" alt="[#reverse]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b>whichdim<b>)</b>
- Whichdim is the number of the dimension by which the reverse will
- occur. For N-dimensional grids, the dimensions are numbered from 0
- to N-1. In addition, negative numbers from -N to -1 may be used, to
- which N will be added. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Objects_for_Coordinate_Transforms"></a><h4>Objects for Coordinate Transforms</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#redim">#redim</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23redim-icon.png" alt="[#redim]" border="0"><br clear="left"><br><br><a href="#redim"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b><i>dim_list</i> dims<b>)</b>
- a list specifying a grid shape that the numbers
- will fit into.
- (same as with <kbd><font color="#007777">[#import]</font></kbd>) <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(dims...)</i> grid<b>)</b>
- the elements of this grid are serialized. if the resulting grid
- must be larger, the sequence is repeated as much as necessary.
- if the resulting grid must be smaller, the sequence is truncated.
- then the elements are deserialized to form the resulting grid. <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(rank)</i> grid<b>)</b>
- this grid is a dimension list that replaces the one
- specified in the constructor.
- (same as with <kbd><font color="#007777">[#import]</font></kbd>) <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b>
- redimensioned grid potentially containing repeating data. <br>
- <p>example: with a 240 320 RGB image, <kbd><font color="#007777">[#redim 120 640 3]</font></kbd> will visually
- separate the even lines (left) from the odd lines (right). contrary
- to this, <kbd><font color="#007777">[#redim 640 120 3]</font></kbd> will split every line and put its left half
- on a even line and the right half on the following odd line. <kbd><font color="#007777">[#redim]</font></kbd>
- 480 320 3 will repeat the input image twice in the output image. <kbd><font color="#007777">[#redim]</font></kbd> 240 50 3 will only keep the 50 top lines.</p> <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#store">#store</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23store-icon.png" alt="[#store]" border="0"><br clear="left"><br><br><a href="#store"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <p>A <kbd><font color="#007777">[#store]</font></kbd> object can store exactly one grid, using the right
- inlet. You fetch it back, or selected subparts thereof, using the left
- inlet.</p> <br><b>method</b>&nbsp;init <b>(</b><i>grid</i> contents<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;bang <b>(</b><b>)</b>
- the stored grid is fully sent to the outlet. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(dims..., indices)</i> grid<b>)</b>
- in this grid, the last dimension refers to subparts of
- the stored grid. sending a Dim(200,200,2) on a <kbd><font color="#007777">[#store]</font></kbd>
- that holds a Dim(240,320,3) will cause the <kbd><font color="#007777">[#store]</font></kbd> to handle
- the incoming grid as a Dim(200,200) of Dim(2)'s, where each
- Dim(2) represents a position in a Dim(240,320) of Dim(3)'s.
- therefore the resulting grid will be a Dim(200,200) of
- Dim(3) which is a Dim(200,200,3). in practice this example
- would be used for generating a 200*200 RGB picture from a
- 200*200 XY map and a 240*320 RGB picture. this object can
- be logically used in the same way for many purposes
- including color palettes, tables of probabilities, tables
- of statistics, whole animations, etc. <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(dims...)</i> grid<b>)</b>
- replace the whole grid, or a subpart of it (see other options on inlet 1) <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;reassign <b>(</b><b>)</b> (Future Use):
- makes it so that sending a grid to inlet 1 detaches the old buffer from [#store]
- and attaches a new one instead. This is the default. <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;put_at <b>(</b>indices...<b>)</b> (Future Use):
- makes it so that sending a grid to inlet 1 writes into the existing buffer of [#store]. <p>
- example: suppose you have <kbd><font color="#007777">[#store {10 240 320 3}]</font></kbd>. then "put_at 3"
- will allow to write a Dim[240,320,3] grid in indices (3,y,x,c) where y,x,c are indices of the incoming grid;
- in other words, if that's a buffer of 10 RGB frames, you'd be replacing frame #3. Furthermore,
- it also allows you to write a Dim[n,240,320,3] grid at (3+f,y,x,c) where f,y,x,c are indices of the incoming grid,
- replacing frame #3, #4, ... up to #3+n-1. Here n is at most 7 because the last frame in the buffer is #9. </p> <p>that way of working extends to other kinds of data you'd put in Grids, in any numbers of dimensions;
- because, as usual, [#store] wouldn't know the difference. </p> <br>
-
- grids as stored, as indexed, or as assembled from multiple
- indexings. <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#scale_to">#scale_to</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23scale_to-icon.png" alt="[#scale_to]" border="0"><br clear="left"><br><br><a href="#scale_to"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b>size<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b> a 3-channel picture to be scaled.<br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;int <b>(</b><b>)</b> a {height width} pair.<br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b> a scaled 3-channel picture.<br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#scale_by">#scale_by</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23scale_by-icon.png" alt="[#scale_by]" border="0"><br clear="left"><br><br><a href="#scale_by"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b><i>grid dim() or dim(2)</i> factor<b>)</b>
- factor is optional (default is 2).
- if it's a single value, then that factor is to be used
- for both rows and columns. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(y x channels)</i> grid<b>)</b>
- duplicates each pixel several times in width and several times in height,
- where the number of times is determined by the factor described above.
- twice those of the incoming grid. It is several times faster. <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(1 or 2)</i> grid<b>)</b> sets factor<br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid((factor*y) (factor*x) channels)</i> grid<b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#downscale_by">#downscale_by</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23downscale_by-icon.png" alt="[#downscale_by]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b><i>+integer</i> factor<b>, </b><i>optional symbol(smoothly)</i> how<b>)</b>
- factor is optional (default is 2).
- if it's a single value, then that factor is to be used
- for both rows and columns. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(y x channels)</i> grid<b>)</b>
- Scales down picture by specified amount. (See scale factor above) <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(1 or 2)</i> grid<b>)</b> sets scale factor<br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid((factor/y) (factor/x) channels)</i> grid<b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#spread">#spread</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23spread-icon.png" alt="[#spread]" border="0"><br clear="left"><br><br><a href="#spread"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <p>typically you plug a <kbd><font color="#007777">[#for]</font></kbd> into this object,
- and you plug this object into the left side of a <kbd><font color="#007777">[#store]</font></kbd>. it will
- scatter pixels around, giving an "unpolished glass" effect.</p> <p>if you put a picture in it, however, it will add noise. The
- resulting values may be out of range, so you may need to clip them
- using min/max.</p> <br><b>method</b>&nbsp;init <b>(</b>factor<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b> a coordinate map.<br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;int <b>(</b><b>)</b> a spread factor.<br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid</i> grid<b>)</b> a coordinate map.<br>
- <p><kbd><font color="#007777">[#spread]</font></kbd> scatters the pixels in an image. Not all original pixels
- will appear, and some may get duplicated (triplicated, etc)
- randomly. Some wrap-around effect will occur close to the edges. </p> <p> Sending an integer to inlet 1 sets the amount of spreading in
- maximum number of pixels + 1. even values translate the whole image
- by half a pixel due to rounding.</p> <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#rotate">#rotate</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23rotate-icon.png" alt="[#rotate]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>performs rotations on indexmaps and polygons and such.</p> <br><b>method</b>&nbsp;init <b>(</b><i>0...35999</i> angle<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(anyA 2)</i> grid<b>)</b> <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;int <b>(</b><b>)</b> rotation angle; 0...36000<br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(anyA 2)</i> grid<b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#remap_image">#remap_image</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23remap_image-icon.png" alt="[#remap_image]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>if you chain indexmap (coordinate) transformations from outlet 1
- to inlet 1, then sending an image in inlet 0 will emit its
- deformation out of outlet 0.</p> <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Objects_for_Reporting"></a><h4>Objects for Reporting</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#dim">#dim</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23dim-icon.png" alt="[#dim]" border="0"><br clear="left"><br><br><a href="#dim"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <p>Returns list of dimensions as a grid. Given a grid sized like Dim(240,320,4), <kbd><font color="#007777">[#dim]</font></kbd> will return a grid like Dim(3), whose values are 240, 320, 4. </p> <br><b>method</b>&nbsp;init <b>(</b><b>)</b>
- no arguments. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(dims...)</i> grid<b>)</b>
- ignores any data contained within.
- sends a grid dim(length of dims) containing dims. <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(rank)</i> grid<b>)</b>
- the list of dimensions of the incoming grid. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#type">#type</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23type-icon.png" alt="[#type]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>gives a symbol representing the numeric type of the grid received. </p> <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;&lt;numeric type symbol&gt; <b>(</b><b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#print">#print</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23print-icon.png" alt="[#print]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b><b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(dims...)</i> grid<b>)</b>
- prints the dimensions of the grid.
- prints all the grid data if there are 2 dimensions or less. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="rubyprint">rubyprint</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/rubyprint-icon.png" alt="[rubyprint]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- This is only for testing the translation from PD to Ruby. <br><b>method</b>&nbsp;init <b>(</b><b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;(any) <b>(</b><b>)</b>
- prints the message to the console. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="printargs">printargs</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/printargs-icon.png" alt="[printargs]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- This is only for testing the translation from PD to Ruby. <br><b>method</b>&nbsp;init <b>(</b>any...<b>)</b>
- prints everything. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="display">display</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/display-icon.png" alt="[display]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- GUI object equivalent to [print] and [#print]. <br><b>method</b>&nbsp;(any) <b>(</b><b>)</b>
- Displays the received message in the box, resizing the box so that the message fits exactly. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Objects_for_Color_Conversion"></a><h4>Objects for Color Conversion</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#apply_colormap_channelwise">#apply_colormap_channelwise</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23apply_colormap_channelwise-icon.png" alt="[#apply_colormap_channelwise]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>This object is useful for color correction. For each pixel
- it takes it apart, looks up each part separately in the colormap,
- and constructs a new pixel from that. You may also color-correct
- colormaps themselves.</p> <p>Only works for things that have 3 channels.</p> <p>Note: if you just need to apply a palette on an indexed-color
- picture, you don't need this. Just use #store instead.</p> <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns channels)</i> grid<b>)</b>
- picture <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(intensities channels)</i> grid<b>)</b>
- colormap ("palette") <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns channels)</i> grid<b>)</b>
- picture <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#rgb_to_greyscale">#rgb_to_greyscale</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23rgb_to_greyscale-icon.png" alt="[#rgb_to_greyscale]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns {red green blue})</i> grid<b>)</b> <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns {white})</i> grid<b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#greyscale_to_rgb">#greyscale_to_rgb</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23greyscale_to_rgb-icon.png" alt="[#greyscale_to_rgb]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns {white})</i> grid<b>)</b> <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns {red green blue})</i> grid<b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#yuv_to_rgb">#yuv_to_rgb</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23yuv_to_rgb-icon.png" alt="[#yuv_to_rgb]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>note: may change slightly to adapt to actual video standards.</p> <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns {y u v})</i> grid<b>)</b> <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns {red green blue})</i> grid<b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#rgb_to_yuv">#rgb_to_yuv</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23rgb_to_yuv-icon.png" alt="[#rgb_to_yuv]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>note: may change slightly to adapt to actual video standards.</p> <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns {red green blue})</i> grid<b>)</b> <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns {y u v})</i> grid<b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Objects_for_Miscellaneous_Picture_Processing"></a><h4>Objects for Miscellaneous Picture Processing</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#convolve">#convolve</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23convolve-icon.png" alt="[#convolve]" border="0"><br clear="left"><br><br><a href="#convolve"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <p>this is the object for blurring, sharpening, finding edges,
- embossing, cellular automata, and many other uses.</p> <br><b>method</b>&nbsp;init <b>(</b><i>numop2</i> op_para<b>, </b><i>numop2</i> op_fold<b>, </b><i>grid</i> seed<b>, </b><i>grid</i> right_hand<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns rest...)</i> grid<b>)</b>
- splits the incoming grid into dim(rest...) parts.
- for each of those parts at (y,x), a rectangle of such
- parts, centered around (y,x), is combined with the
- convolution grid like a <kbd><font color="#007777">[#]</font></kbd> of operation op_para. Then
- each such result is folded like <kbd><font color="#007777">[#fold]</font></kbd> of operation
- op_fold and specified base. the results are assembled
- into a grid that is sent to the outlet. near the borders of
- the grid, coordinates wrap around. this means the whole grid
- has to be received before production of the next grid
- starts. <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(rows2 columns2)</i> grid<b>)</b>
- this is the convolution grid and it gets stored in
- the object. if rows2 and/or columns2 are odd numbers,
- then the centre of convolution is the middle of the convolution
- grid. if they are even numbers, then the chosen centre will
- be slightly more to the left and/or to the top, because the
- actual middle is between cells of the grid. <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns rest...)</i> grid<b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#contrast">#contrast</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23contrast-icon.png" alt="[#contrast]" border="0"><br clear="left"><br><br><a href="#contrast"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b>iwhiteness<b>, </b>contrast<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns channels)</i> grid<b>)</b>
- produces a grid like the incoming grid but with
- different constrast. <br>
- <p><kbd><font color="#007777">[#contrast]</font></kbd> adjusts the intensity in an image.
- resulting values outside 0-255 are automatically clipped.</p> <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;int <b>(</b><b>)</b>
- this is the secondary contrast (inverse whiteness).
- it makes the incoming black
- correspond to a certain fraction between output black and the
- master contrast value. no effect is 256. default value is 256. <br>
- <br><b>inlet&nbsp;2 </b><b>method</b>&nbsp;int <b>(</b><b>)</b>
- this is the master contrast. it makes the incoming white
- correspond to a certain fraction between output black and output
- white. no effect is 256. default value is 256. <br>
- <br><b>outlet&nbsp; </b><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns channels)</i> grid<b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#posterize">#posterize</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23posterize-icon.png" alt="[#posterize]" border="0"><br clear="left"><br><br><a href="#posterize"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <p><kbd><font color="#007777">[#posterize]</font></kbd> reduces the number of possible intensities in an image;
- it rounds the color values.The effect is mostly apparent with a low
- number of levels.</p> <br><b>method</b>&nbsp;init <b>(</b>levels<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns channels)</i> grid<b>)</b>
- produces a posterized picture from the input picture. <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;int <b>(</b><b>)</b>
- this is the number of possible levels per channel. the
- levels are equally spaced, with the lowest at 0 and the
- highest at 255. the minimum number of levels is 2, and the
- default value is 2. <br>
- <p>example: simulate the 216-color "web" palette using 6 levels.
- simulate a 15-bit display using 32 levels.</p> <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#solarize">#solarize</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23solarize-icon.png" alt="[#solarize]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>makes medium intensities brightest; formerly brightest colours
- become darkest; formerly darkest stays darkest. This filter is linear:
- it's like a 200% contrast except that overflows are <i>mirrored</i>
- instead of clipped or wrapped.</p> <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns channels)</i> grid<b>)</b> <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(rows columns channels)</i> grid<b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#checkers">#checkers</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23checkers-icon.png" alt="[#checkers]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(y x {y x})</i> grid<b>)</b>
- result from a <kbd><font color="#007777">[#for {0 0} {height width} {1 1}]</font></kbd> <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(y x {r g b})</i> grid<b>)</b>
- checkered pattern of 50%/75% greys
- in 8x8 squares <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#layer">#layer</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23layer-icon.png" alt="[#layer]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(y x {r g b a})</i> grid<b>)</b>
- a picture that has an opacity channel.
- will be used as foreground. <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(y x {r g b})</i> grid<b>)</b>
- a picture that has NO opacity channel.
- will be used as background. <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(y x {r g b})</i> grid<b>)</b>
- a picture that has NO opacity channel.
- the opacity channel of the foreground is used as
- a weighting of how much of either picture is seen
- in the result. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#draw_image">#draw_image</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23draw_image-icon.png" alt="[#draw_image]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b><i>numop2</i> operator<b>, </b><i>grid(y,x,channels)</i> picture<b>, </b><i>grid({y x})</i> position<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(y x channels)</i> grid<b>)</b>
- picture onto which another picture will be superimposed. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;tile <b>(</b><i>0 or 1</i> flag<b>)</b>
- if enabled, inlet 1 picture will be repeated to cover the inlet 0 picture. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;alpha <b>(</b><i>0 or 1</i> flag<b>)</b>
- if enabled, inlet 1 picture will be combined with inlet 0 picture using
- the selected operator,
- and then blended with inlet 0 picture according to transparency of
- the inlet 1 picture, and then inserted in the result.
- if disabled, the blending doesn't occur, as the transparency level
- is considered to be "opaque". note that with alpha enabled,
- the last channel of inlet 1 picture is considered to represent transparency. <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(y x channels)</i> grid<b>)</b>
- picture that will be superimposed onto another picture. <br>
- <br><b>inlet&nbsp;2 </b><b>method</b>&nbsp;grid <b>(</b><i>grid({y x})</i> grid<b>)</b>
- position of the inlet 0 picture corresponding to top-left corner
- of inlet 1 picture. <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(y x channels)</i> grid<b>)</b>
- resulting picture. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#draw_polygon">#draw_polygon</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23draw_polygon-icon.png" alt="[#draw_polygon]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b><i>numop2</i> operator<b>, </b><i>grid(channels)</i> color<b>, </b><i>grid(vertices,{y x})</i> vertices<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(y x channels)</i> grid<b>)</b>
- picture on which the polygon will be superimposed. <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(channels)</i> grid<b>)</b>
- color of each pixel <br>
- <br><b>inlet&nbsp;2 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(vertices {y x})</i> grid<b>)</b>
- vertices of the polygon. <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;grid <b>(</b><i>grid(y x channels)</i> grid<b>)</b>
- modified picture.
- note: starting with 0.7.2, drawing a 1-by-1
- square really generates a 1-by-1 square, and
- so on. This is because the right-hand border of a
- polygon is excluded, whereas it was included
- before, leading to slightly-wider-than-expected polygons. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#text_to_image">#text_to_image</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23text_to_image-icon.png" alt="[#text_to_image]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>inlet 2 receives a font grid, for example, [#in grid file lucida-typewriter-12.grid.gz]</p> <p>inlet 1 receives a 2 by 3 matrix representing the colours to use (e.g. (2 3 # 0 170 0 255 255 0) means yellow on green)</p> <p>inlet 0 receives a bang, transforming the data into an image suitable for #draw_image.</p> <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#hueshift">#hueshift</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23hueshift-icon.png" alt="[#hueshift]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>inlet 1 receives an angle (0..36000)</p> <p>inlet 0 receives a RGB picture that gets hueshifted by a rotation in the colorwheel by the specified angle; it gets sent to outlet 0.</p> <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="Other_Objects"></a><h4>Other Objects</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="rtmetro">rtmetro</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/rtmetro-icon.png" alt="[rtmetro]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-This class has been removed (0.7.7).<br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="bindpatcher">bindpatcher</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/bindpatcher-icon.png" alt="[bindpatcher]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>sets the receive-symbol for the Pd patcher it is in.</p> <p>has no inlets, no outlets.</p> <p>EXPERIMENTAL.</p> <br><b>method</b>&nbsp;init <b>(</b><i>symbol</i> symbol<b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="pingpong">pingpong</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/pingpong-icon.png" alt="[pingpong]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- Transforms linear counting (0, 1, 2, 3, 4, ...) into a back-and-forth counting (0, 1, 2, 1, 0, ...)
- from 0 to a specified upper bound. <br><b>method</b>&nbsp;init <b>(</b><i>int</i> top<b>)</b> <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;float <b>(</b><i>float</i> top<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;float <b>(</b><b>)</b>
- a value to be transformed.
- If, for example, top=10, then values 0 thru 10 are left unchanged,
- values 11 thru 19 are mapped to 9 thru 1 respectively, and 20 thru 30
- are mapped to 0 thru 10, and so on. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="#global">#global</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/%23global-icon.png" alt="[#global]" border="0"><br clear="left"><br><br><a href="#global"><img src="images/see_screenshot.png" border="0"></a><br clear="left"><br></td><td><br>
- <p>
- objects of this class do nothing by themselves and are just
- an access point to features that don't belong to any object in
- particular. </p> <br><b>method</b>&nbsp;profiler_reset <b>(</b><b>)</b>
- resets all the time counters. <br>
- <br><b>method</b>&nbsp;profiler_dump <b>(</b><b>)</b>
- displays the time counters in decreasing order, with
- the names of the classes those objects are in. this is
- an experimental feature. like most statistics,
- it could be vaguely relied upon if
- only you knew to which extent it is unreliable. more on this
- in a future section called "profiling". <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="fps">fps</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/fps-icon.png" alt="[fps]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b><i>symbol(real|user|system|cpu)</i> clocktype<b>, </b><i>symbol(detailed)</i> detailed<b>)</b> <br>
- <br><b>method</b>&nbsp;init detailed <b>(</b><b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;bang <b>(</b><b>)</b>
- Times at which bangs are received are stored until a large
- enough sample of those is accumulated. Large enough is defined
- to be whenever the timespan exceeds one second. Then a report
- is made through the outlet. <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;(else) <b>(</b><b>)</b>
- messages other than bangs are ignored. <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;float <b>(</b><b>)</b>
- non-detailed mode only.
- this is the messages-per-second rating. <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;list(float,6) <b>(</b><b>)</b>
- detailed mode only.
- this is: messages-per-second, followed by five values of
- milliseconds-per-message: minimum, median, maximum, average,
- standard deviation.
- (the average happens to be simply 1000 divided by the
- messages-per-second, but it is convenient to have it anyway) <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="unix_time">unix_time</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/unix_time-icon.png" alt="[unix_time]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>
- This object returns the Unix timestamp. The first
- outlet does so with ASCII, the second in seconds and the third outlet
- outputs the fractions of seconds up to 1/100 000 th of a second which is useful for creating
- filenames. </p> <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;bang <b>(</b><b>)</b> <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;symbol <b>(</b><b>)</b> <br>
-Outputs the time and date in ASCII format <br><b>outlet&nbsp;1 </b><b>method</b>&nbsp;float <b>(</b><b>)</b> <br>
-Outputs the Unix timestamp in seconds <br><b>outlet&nbsp;2 </b><b>method</b>&nbsp;float <b>(</b><b>)</b> <br>
-Outputs the fractions of a second up to 10 microseconds (?) (actual precision is platform-dependent afaik) <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="ls">ls</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/ls-icon.png" alt="[ls]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>
- This object is similar to the Unix list command
- 'ls'. It returns the names of files in a given
- directory. May be used with [listlength] to retrieve the number of files.
- Hidden files are displayed. </p> <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;symbol <b>(</b><b>)</b>
- lists all files in a given directory <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;glob <b>(</b><b>)</b>
- lists all files matching a given pattern.
- "symbol hello" is like "glob hello/*" <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="exec">exec</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/exec-icon.png" alt="[exec]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>
- This object launches a Unix shell program or script. </p> <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;symbol <b>(</b><b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="renamefile">renamefile</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/renamefile-icon.png" alt="[renamefile]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>
- This object accepts a list of two elements as arguments.
- The current file name being the first and the second is the desired change
- in name. </p> <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;list <b>(</b><b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="plotter_control">plotter_control</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/plotter_control-icon.png" alt="[plotter_control]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>
- This object produces HPGL instructions in ASCII form
- that can be sent to the comport object in order to control an HPGL
- compatible plotter. </p> <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;symbol <b>(</b><b>)</b> <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;symbol <b>(</b><b>)</b> <br>
-Outputs the HPGL commands in ASCII format <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="rubyarray">rubyarray</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/rubyarray-icon.png" alt="[rubyarray]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>inlet 0 float : sends the specified array entry to outlet 0</p> <p>inlet 1 list: writes that list as an array entry in position last specified by inlet 0.</p> <p>inlet 0 save(symbol filename): writes the array contents to a file of the given filename as a CSV</p> <p>inlet 0 save(symbol filename, symbol format): same thing but using a sprintf string such as %x,%f or whatever</p> <p>inlet 0 load(symbol filename): replace all array contents by the contents of a CSV file</p> <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="jMax_emulation"></a><h4>jMax emulation</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td></td><td></td><td><p>those classes emulate jMax functionality,
- for use within PureData and Ruby.</p></td></tr>
-<tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="fork">fork</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/fork-icon.png" alt="[fork]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>Every incoming message is sent to inlet 1 and then sent to
- inlet 0 as well. Messages remain completely unaltered. Contrast
- with PureData's "t a a" objects, which have the same purpose but
- transform bangs into zeros and such.</p> <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;(any) <b>(</b><b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="jmax_udpsend">jmax_udpsend</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/jmax_udpsend-icon.png" alt="[jmax_udpsend]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- Sends messages (but not grids nor dspsignals) via UDP (which
- does not involve a connection, and may lose packets in case of
- network overload or noise or etc). <p>This works with jMax 2.5 and 4.1 but not 4.0.</p> <br><b>method</b>&nbsp;init <b>(</b><i>host</i> host<b>, </b><i>integer</i> port<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;&lt;any&gt; <b>(</b><b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="jmax_udpreceive">jmax_udpreceive</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/jmax_udpreceive-icon.png" alt="[jmax_udpreceive]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <p>Counterpart of jmax_udpsend</p> <p>This works with jMax 2.5 and 4.1 but not 4.0.</p> <br><b>method</b>&nbsp;init <b>(</b><i>integer</i> port<b>)</b> <br>
- <br><b>outlet&nbsp;0 </b><b>method</b>&nbsp;&lt;any&gt; <b>(</b><b>)</b> <br>
- <br><b>outlet&nbsp;1 </b><b>method</b>&nbsp;list <b>(</b>protocol_name<b>, </b>sender_port<b>, </b>sender_host<b>, </b>sender_ip_address<b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="foreach">foreach</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/foreach-icon.png" alt="[foreach]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;list <b>(</b>...<b>)</b>
- Outputs N messages, one per list element, in order. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="rubysprintf">rubysprintf</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/rubysprintf-icon.png" alt="[rubysprintf]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b><i>symbol</i> format<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;list <b>(</b><b>)</b>
- Outputs the format string with %-codes replaced
- by elements of the list formatted as the %-codes say.
- To get a list of those codes, consult a Ruby manual
- (Equivalently, Perl, Python, Tcl and C all have equivalents of this,
- and it's almost always called sprintf, or the % operator, or both) <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="listflatten">listflatten</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/listflatten-icon.png" alt="[listflatten]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;list <b>(</b>...<b>)</b> <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="listmake">listmake</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/listmake-icon.png" alt="[listmake]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- Emulation of jMax's [list] (but there cannot be a class named [list] in Pd) <br><b>method</b>&nbsp;init <b>(</b>list...<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;bang <b>(</b><b>)</b> send "list" to outlet 0<br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;list <b>(</b><b>)</b> as sending to inlet 1 and then banging; that is, passes thru and remembers.<br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="listlength">listlength</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/listlength-icon.png" alt="[listlength]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;list <b>(</b><b>)</b>
- outputs the number of elements in the incoming list. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="listelement">listelement</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/listelement-icon.png" alt="[listelement]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b><i>int</i> index<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;list <b>(</b>...<b>)</b>
- Outputs one element of the list, as selected by "index".
- Also accepts negative indices (e.g.: -1 means "last"), like Ruby, but unlike jMax. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="listsublist">listsublist</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/listsublist-icon.png" alt="[listsublist]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b><i>int</i> index<b>, </b><i>int</i> length<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;list <b>(</b>...<b>)</b>
- Outputs consecutive elements of the list, as selected by "index" and "length".
- Also accepts negative indices (e.g.: -1 means "last"), like Ruby, but unlike jMax. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="listprepend">listprepend</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/listprepend-icon.png" alt="[listprepend]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b>list...<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;list <b>(</b>...<b>)</b>
- Outputs the stored list followed by the incoming list, all in one message. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="listappend">listappend</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/listappend-icon.png" alt="[listappend]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b>list...<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;list <b>(</b>...<b>)</b>
- Outputs the incoming list followed by the stored list, all in one message. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="listreverse">listreverse</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/listreverse-icon.png" alt="[listreverse]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;list <b>(</b>...<b>)</b>
- Outputs the incoming list, from last element to first element. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="oneshot">oneshot</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/oneshot-icon.png" alt="[oneshot]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- Like [spigot], but turns itself off after each message, so you have to turn it on
- again to making it pass another message. <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="inv+">inv+</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/inv+-icon.png" alt="[inv+]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b><i>float</i> b<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;float <b>(</b><i>float</i> a<b>)</b>
- outputs b-a <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="inv*">inv*</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/inv*-icon.png" alt="[inv*]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b><i>float</i> b<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;float <b>(</b><i>float</i> a<b>)</b>
- outputs b/a <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="messageprepend">messageprepend</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/messageprepend-icon.png" alt="[messageprepend]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- (This is not in jMax, but is there to help port $* messageboxes) <br><b>method</b>&nbsp;init <b>(</b>list...<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;&lt;any&gt; <b>(</b>...<b>)</b>
- Like [listprepend], but operates on whole messages, that is, including the selector. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="messageappend">messageappend</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/messageappend-icon.png" alt="[messageappend]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- (This is not in jMax, but is there to help port $* messageboxes) <br><b>method</b>&nbsp;init <b>(</b>list...<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;&lt;any&gt; <b>(</b>...<b>)</b>
- Like [listappend], but operates on whole messages, that is, including the selector. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="shunt">shunt</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/shunt-icon.png" alt="[shunt]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- Compatible with jMax's [demux]. <br><b>method</b>&nbsp;init <b>(</b>n<b>, </b>i<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;&lt;any&gt; <b>(</b>...<b>)</b>
- Routes a message to the active outlet. <br>
- <br><b>inlet&nbsp;1 </b><b>method</b>&nbsp;int <b>(</b><i>int</i> i<b>)</b>
- Selects which outlet is active. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="demux">demux</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/demux-icon.png" alt="[demux]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- please use shunt instead (name conflict with another Pd external) <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="range">range</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/range-icon.png" alt="[range]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
- <br><b>method</b>&nbsp;init <b>(</b>separators...<b>)</b> <br>
- <br><b>inlet&nbsp;0 </b><b>method</b>&nbsp;float <b>(</b><b>)</b>
- a value to be sent to one of the outlets. The first outlet is for values
- smaller than the first argument; else the second outlet is for values smaller
- than the second argument; and so on; and the last outlet is for values greater
- or equal to the last argument. <br>
- <br><b>inlet&nbsp;1..n </b><b>method</b>&nbsp;float <b>(</b><b>)</b>
- sets the corresponding separator in the separator list. <br>
- <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="PureData_emulation"></a><h4>PureData emulation</h4></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="pd_netsend">pd_netsend</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/pd_netsend-icon.png" alt="[pd_netsend]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- same as jmax_udpsend but for PureData UDP connections. <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="pd_netreceive">pd_netreceive</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/pd_netreceive-icon.png" alt="[pd_netreceive]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-
- same as jmax_udpreceive but for PureData UDP connections. <br></td></tr><tr><td></td><td></td><td> </td></tr>
-<tr><td>&nbsp;</td></tr>
- <tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="(new_documentation)"></a><h4>(new documentation)</h4></td></tr><tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="listfind">listfind</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/listfind-icon.png" alt="[listfind]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-<br><b>method</b>&nbsp;_1_list <b>(</b><b>)</b> list to search into<br>
-<br><b>method</b>&nbsp;_0_float <b>(</b><b>)</b> float to find in that list<br>
-<br><b>method</b>&nbsp;_1_float <b>(</b><b>)</b> position of the incoming float in the stored list<br>
-<br></td></tr><tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="memstat">memstat</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/memstat-icon.png" alt="[memstat]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-<br><b>method</b>&nbsp;_0_bang <b>(</b><b>)</b> lookup process stats for the currently running pd+ruby and figure out how much RAM it uses.<br>
-<br><b>method</b>&nbsp;_0_float <b>(</b><b>)</b> virtual size of RAM in kilobytes (includes swapped out and shared memory)<br>
-<br></td></tr><tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="regsub">regsub</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/regsub-icon.png" alt="[regsub]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-<br><b>method</b>&nbsp;_1_symbol <b>(</b><b>)</b> a regexp pattern to be found inside of the string<br>
-<br><b>method</b>&nbsp;_0_symbol <b>(</b><b>)</b> a string to transform<br>
-<br><b>method</b>&nbsp;_2_symbol <b>(</b><b>)</b> a replacement for the found pattern<br>
-<br><b>method</b>&nbsp;_0_symbol <b>(</b><b>)</b> the transformed string<br>
-<br></td></tr><tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="sendgui">sendgui</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/sendgui-icon.png" alt="[sendgui]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-<br><b>method</b>&nbsp;_0_list <b>(</b><b>)</b> a Tcl/Tk command to send to the pd client.<br>
-<br></td></tr><tr><td colspan="4" bgcolor="#ffb080"><b>&nbsp;&nbsp;class </b><a name="sys_vgui">sys_vgui</a></td></tr><tr><td></td><td valign="top"><br>
-<img src="flow_classes/sys_vgui-icon.png" alt="[sys_vgui]" border="0"><br clear="left"><br><br><br clear="left"><br></td><td><br>
-<br><b>method</b>&nbsp;_0_list <b>(</b><b>)</b> a Tcl/Tk command to send to the pd client.<br>
-<br></td></tr><tr><td>&nbsp;</td></tr>
-<tr><td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4"><a name="(undocumented)"></a><h4>(undocumented)</h4></td></tr><tr><td></td><td></td><td><p>[#edit]</p></td></tr>
-<tr><td></td><td></td><td><p>[#in]</p></td></tr>
-<tr><td></td><td></td><td><p>[#in:aalib]</p></td></tr>
-<tr><td></td><td></td><td><p>[#io:file]</p></td></tr>
-<tr><td></td><td></td><td><p>[#io:grid]</p></td></tr>
-<tr><td></td><td></td><td><p>[#io:jpeg]</p></td></tr>
-<tr><td></td><td></td><td><p>[#io:mpeg]</p></td></tr>
-<tr><td></td><td></td><td><p>[#io:opengl]</p></td></tr>
-<tr><td></td><td></td><td><p>[#io:png]</p></td></tr>
-<tr><td></td><td></td><td><p>[#io:ppm]</p></td></tr>
-<tr><td></td><td></td><td><p>[#io:quicktime]</p></td></tr>
-<tr><td></td><td></td><td><p>[#io:sdl]</p></td></tr>
-<tr><td></td><td></td><td><p>[#io:targa]</p></td></tr>
-<tr><td></td><td></td><td><p>[#io:tk]</p></td></tr>
-<tr><td></td><td></td><td><p>[#io:videodev]</p></td></tr>
-<tr><td></td><td></td><td><p>[#io:window]</p></td></tr>
-<tr><td></td><td></td><td><p>[#io:x11]</p></td></tr>
-<tr><td></td><td></td><td><p>[#matrix_solve]</p></td></tr>
-<tr><td></td><td></td><td><p>[#out]</p></td></tr>
-<tr><td></td><td></td><td><p>[#peephole]</p></td></tr>
-<tr><td></td><td></td><td><p>[@!]</p></td></tr>
-<tr><td></td><td></td><td><p>[@eight]</p></td></tr>
-<tr><td></td><td></td><td><p>[@four]</p></td></tr>
-<tr><td></td><td></td><td><p>[@global]</p></td></tr>
-<tr><td></td><td></td><td><p>[@scale_to]</p></td></tr>
-<tr><td></td><td></td><td><p>[@three]</p></td></tr>
-<tr><td></td><td></td><td><p>[@two]</p></td></tr>
-<tr><td></td><td></td><td><p>[GridObject]</p></td></tr>
-<tr><td></td><td></td><td><p>[SoundMixer]</p></td></tr>
-<tr><td></td><td></td><td><p>[ascii]</p></td></tr>
-<tr><td></td><td></td><td><p>[broken]</p></td></tr>
-<tr><td></td><td></td><td><p>[button]</p></td></tr>
-<tr><td></td><td></td><td><p>[delcomusb]</p></td></tr>
-<tr><td></td><td></td><td><p>[for]</p></td></tr>
-<tr><td></td><td></td><td><p>[gfmessagebox]</p></td></tr>
-<tr><td></td><td></td><td><p>[gridflow]</p></td></tr>
-<tr><td></td><td></td><td><p>[jcomment]</p></td></tr>
-<tr><td></td><td></td><td><p>[jmax4_udpreceive]</p></td></tr>
-<tr><td></td><td></td><td><p>[jmax4_udpsend]</p></td></tr>
-<tr><td></td><td></td><td><p>[joystick_port]</p></td></tr>
-<tr><td></td><td></td><td><p>[jpatcher]</p></td></tr>
-<tr><td></td><td></td><td><p>[klippeltronics]</p></td></tr>
-<tr><td></td><td></td><td><p>[loadbang]</p></td></tr>
-<tr><td></td><td></td><td><p>[messbox]</p></td></tr>
-<tr><td></td><td></td><td><p>[parallel_port]</p></td></tr>
-<tr><td></td><td></td><td><p>[pd_netsocket]</p></td></tr>
-<tr><td></td><td></td><td><p>[system]</p></td></tr>
-<tr><td></td><td></td><td><p>[toggle]</p></td></tr>
-<tr><td>&nbsp;</td></tr>
-<td colspan="4" bgcolor="black">
-<img src="images/black.png" width="1" height="2"></td></tr>
-<tr><td colspan="4">
-<p><font size="-1">
-GridFlow 0.8.1 Documentation<br>
-Copyright &copy; 2001,2002,2003,2004,2005,2006 by Mathieu Bouchard
-<a href="mailto:matju@artengine.ca">matju@artengine.ca</a>
-</font></p>
-</td></tr></table></body></html>
-
-
diff --git a/externals/gridflow/doc/reference.xml b/externals/gridflow/doc/reference.xml
deleted file mode 100644
index e7bf94a1..00000000
--- a/externals/gridflow/doc/reference.xml
+++ /dev/null
@@ -1,1607 +0,0 @@
-<?xml version="1.0" standalone="no" ?>
-<!DOCTYPE documentation SYSTEM 'gridflow.dtd'>
-<documentation title="Reference Manual: Flow Classes" indexcols="3">
-<!-- $Id: reference.xml,v 1.2 2006-03-15 04:44:50 matju Exp $ -->
-<!--
- GridFlow Reference Manual: Class Reference
- Copyright (c) 2001,2002,2003,2004,2005,2006
- by Mathieu Bouchard and Alexandre Castonguay
--->
-
-<section name="Objects for making grids and breaking them down">
- <class name="#import">
- <icon text="[#import {240 320 3}]"/>
- <help text="[#import {240 320 3}]" image="#importexport" />
- <p>This object allows you to produce grids from non-grid data, such as
- integers and lists of integers. This object also reframes/resyncs
- grids so that multiple grids may be joined together, or
- single grids may be split. That kind of operation is already done implicitly in many
- cases (e.g. sending an integer or list to a grid-receiving inlet),
- but using this object you have greater flexibility on the conversion.</p>
- <attr name="shape" type="GridShape|symbol(per_message)" default="per_message">
- a list specifying a grid shape that the numbers
- will fit into; or "per_message" indicating each incoming message
- will be turned into a vector.
- </attr>
- <attr name="cast" type="NumberType" default="int32"/>
- <method name="init">
- <arg name="shape" isattr="yes"/>
- <arg name="cast" isattr="yes"/>
- </method>
- <inlet id="0">
- <method name="int">
- begins a new grid if there is no current grid.
- puts that integer in the current grid.
- ends the grid if it is full.
- the constructed grid is not stored: it is streamed.
- the stream is buffered, so the output is in packets
- of about a thousand numbers.
- </method>
- <method name="list">
- just like a sequence of ints sent one after another,
- except in a single message.
- </method>
- <method name="symbol">
- considered as a list of ascii characters.
- </method>
- <method name="reset">
- aborts the current grid if there is one.
- </method>
- <method name="grid">
- <arg name="grid" type="grid(dims...)"/>
- this is the equivalent of filtering this grid through
- an <k>[#export]</k> object and sending the resulting integers
- to this <k>[#import]</k> object, except that it's over
- 10 times faster.
- </method>
- </inlet>
- <inlet id="1" attr="shape">
- <method name="per_message">
- old synonym for "shape per_message"
- </method>
- </inlet>
- <outlet id="0">
- <method name="grid"><arg name="grid" type="grid"/>
- the grid produced from incoming integers and/or grids.
- </method>
- </outlet>
- </class>
-
- <class name="#export">
- <help text="[#export]" image="#importexport" />
-
- <p>this object is the opposite of #import.</p>
- <method name="init">
- this object is not configurable because there isn't
- anything that could possibly be configured here.
- </method>
- <inlet id="0">
- <method name="grid"><arg name="grid" type="grid(dims...)"/>
- transforms this grid into a sequence of integer messages.
- </method>
- </inlet>
- <outlet id="0">
- <method name="int">
- elements of the incoming grid.
- </method>
- </outlet>
- </class>
-
- <class name="#export_list">
- <help text="[#export_list]" image="#importexport" />
-
- <p>this object is another opposite of <k>[#import]</k>, which puts
- all of its values in a list.</p>
- <method name="init" />
- <inlet id="0">
- <method name="grid"><arg name="grid" type="grid(dims...)"/>
- transforms this grid into a single message containing
- a list of integers.
- </method>
- </inlet>
- <outlet id="0">
- <method name="list">
- elements of the incoming grid.
- </method>
- </outlet>
- </class>
-
- <class name="#export_symbol">
- <p>this object is another opposite of #import, which constructs a symbol
- from its input. The values are expected to be valid ASCII codes, but no check
- will be performed for that, and additionally, no check will be made that the generated
- symbol only contains characters that can be put in a symbol.</p>
- <method name="init" />
- <inlet id="0">
- <method name="grid"><arg name="grid" type="grid(dims...)"/>
- transforms this grid into a single message containing
- a list of integers.
- </method>
- </inlet>
- <outlet id="0"><method name="symbol">generated symbol</method></outlet>
- </class>
-
- <class name="#pack">
- <p>Similar to <k>[#join]</k>, but takes individual integers, and builds a Dim(N) vector out of it.
- </p>
-
- <attr name="trigger_by" type="TriggerBy" default="any">
- The value "any" (and the only available value for now) causes an output
- to produced when an integer is received thru any inlet, contrary to most
- other object classes, that only act upon reception of a value thru inlet 0.
- </attr>
-
- <method name="init">
- <arg name="inputs" type="integer">how many inlets the object should have.</arg>
- </method>
- <inlet id="*"><method name="int"/></inlet>
- <outlet id="0"><method name="grid">
- combination of inputs given in all inlets.
- this is produced according to the value of the trigger attribute.
- </method></outlet>
- </class>
-
- <class name="#color">
- <p>Triple slider for the selection of RGB values.</p>
- <method name="init">
- <arg name="min" type="float"></arg>
- <arg name="max" type="float"></arg>
- <arg name="hidepreview" type="0,1"></arg>
- </method>
- <inlet id="0"><method name="grid">
- changes all three values (R,G,B). The grid must
- be a Dim(3).
- </method>
- <method name="delegate">
- sends the rest of the message to each of the three sliders.
- this relies on the fact that [#color] is implemented using
- three [hsl] and this might not still work in the far future.
- </method></inlet>
- <outlet id="0"><method name="grid">
- Produces a Dim(3) grid of RGB values.
- </method></outlet>
- </class>
-
- <class name="#unpack">
- <method name="init">
- <arg name="outputs" type="integer">
- how many outlets the object should have.
- (depending on the version of the software, the number of visible outlets
- may have been frozen to 4. If it is so, then the value of this argument
- must not exceed 4; and if it is below 4, then don't use the extraneous outlets.)
- </arg>
- </method>
- <inlet id="0"><method name="grid(N)">
- the input vector is split in N parts containing one number each.
- numbers are sent left-to-right, that is, outlet 0 is triggered first, then outlet 1, etc.
- </method></inlet>
- <outlet id="*"><method name="int">
- </method></outlet>
- </class>
-
- <class name="#centroid">
- <method name="init"/>
- <inlet id="0"><method name="grid(rows,columns,1)">
- will compute the centroid of the given grid, which
- is a weighted average, namely, the average position weighted
- by the pixel values.
- </method></inlet>
- <outlet id="0">
- <method name="grid(2)">
- result
- </method>
- </outlet>
- </class>
- <class name="#centroid2">
- a new experimental and faster version of #centroid.
- <method name="init"/>
- <inlet id="0"><method name="grid(rows,columns,1)">
- will compute the centroid of the given grid, which
- is a weighted average, namely, the average position weighted
- by the pixel values.
- </method></inlet>
- <outlet id="0">
- <method name="grid(2)">
- result
- </method>
- </outlet>
- </class>
-
- <class name="#for">
- <icon text="[#for 0 320 1]"/>
- <help text="[#for 0 320 1]"/>
-
- <p>when given scalar bounds, works like a regular <k>[for]</k> object plugged
- to a <k>[#import]</k> tuned for a Dim(size) where size is the number of values
- produced by a bang to that <k>[for]</k>.</p>
-
- <p>when given vector bounds, will work like any number of [for] objects
- producing all possible combinations of their values in the proper order.
- This replaces the old <k>[#identity_transform]</k> object.</p>
-
- <method name="init">
- <arg name="from" type="integer"/>
- <arg name="to" type="integer"/>
- <arg name="step" type="integer"/>
- </method>
- <inlet id="0"><method name="grid"><arg name="grid" type="grid(index)"/>
- replaces the "from" value and produces output.
- </method></inlet>
- <inlet id="1"><method name="grid"><arg name="grid" type="grid(index)"/>
- replaces the "to" value.
- </method></inlet>
- <inlet id="2"><method name="grid"><arg name="grid" type="grid(index_steps)"/>
- replaces the "step" value.
- </method></inlet>
- <outlet id="0">
- <method name="grid"><arg name="grid" type="grid(size)"/>
- where size is floor((to-from+1)/step)
- [for scalar bounds]
- </method>
- <method name="grid"><arg name="grid" type="grid(*size,dimension)"/>
- where *size is floor((to-from+1)/step)
- [for vector bounds]
- </method>
- </outlet>
- </class>
-</section>
-
-<section name="Objects for Computing">
- <class name="#">
- <icon text="[# +]" image="images/op/add.png" />
- <help text="two-input operators"/>
-
- <attr name="op" type="grid"/>
- <attr name="right_hand" type="grid" default="0">
-
- </attr>
-
- <p>This object outputs a grid by computing "in parallel" a same
- operation on each left-hand element with its corresponding right-hand
- element.
- </p>
-
- <method name="init">
- <arg name="op" isattr="yes"/>
- <arg name="right_hand" isattr="yes"/>
- </method>
-
- <inlet id="0">
- <method name="grid"><arg name="grid" type="grid(dims...)"/>
- on each element of this grid, perform the operation
- together with the corresponding element of inlet 1.
- in the table of operators (at the top of this document)
- elements of inlet 0 are called "A" and elements of inlet 1
- are called "B". the resulting grid is the same size as the
- one in inlet 0.
- </method>
- </inlet>
- <inlet id="1">
- <method name="grid"><arg name="grid" type="grid(dims...)"/>
- any grid, preferably shaped like the one that will be put
- in the left inlet, or like a subpart of it (anyway the contents
- will be redim'ed on-the-fly to fit the grid of inlet-0,
- but the stored grid will not be modified itself)
- </method>
- <method name="int">
- stores a single int in the right inlet; the same int will
- be applied in all computations; this is like sending a
- Dim(1) or Dim() grid with that number in it.
- </method>
- </inlet>
- <outlet id="0">
- <method name="grid"><arg name="grid" type="grid"/>
- </method>
- </outlet>
-
- </class>
-
- <class name="@complex_sq">
- <p>this object computes the square of complex numbers.
- If seeing imaginary as Y and real as X, then this operation squares
- the distance of a point from origin and doubles the angle between it
- and the +X half-axis clockwise. (fun, eh?)
- </p>
- <p>used on an indexmap, this makes each thing appear twice,
- each apparition spanning half of the original angle.</p>
- <inlet id="0"><method name="grid">
- <arg name="grid" type="grid(dims... {imaginary real})"/>
- </method></inlet>
- <outlet id="0"><method name="grid">
- <arg name="grid" type="grid(dims... {imaginary real})"/>
- </method></outlet>
- </class>
-
- <class name="#fold">
- <icon text="[#fold +]"/>
- <help text="[#fold +]" image="#foldinnerouter"/>
-
- <p><list>
- <li><k>[#fold +]</k> computes totals</li>
- <li><k>[#fold inv+]</k> is an alternated sum (+/-)</li>
- <li><k>[#fold * 1]</k> can compute the size of a grid using its dimension list</li>
- <li><k>[#fold &amp; 1]</k> can mean "for all"</li>
- <li><k>[#fold | 0]</k> can mean "there exists (at least one)"</li>
- <li><k>[#fold ^ 0]</k> can mean "there exists an odd number of..."</li>
- <li><k>[#fold ^ 1]</k> can mean "there exists an even number of...".</li>
- </list></p>
-
- <method name="init">
- <arg name="operator" type="numop2"/>
- <arg name="seed" type="grid" default="0"/>
- <arg name="right_hand" type="grid"/>
- </method>
-
- <inlet id="0">
- <method name="grid"><arg name="grid" type="grid(dims..., last)"/>
- replaces every Dim(last) subgrid by the result of a cascade on that subgrid.
- Doing that
- with seed value 0 and operation + on grid "2 3 5 7" will compute
- ((((0+2)+3)+5)+7) find the total "17".
- produces a Dim(dims) grid.
- </method>
- </inlet>
- <inlet id="1" attr="seed"/>
- <outlet id="0"></outlet>
- </class>
-
- <class name="#scan">
- <icon text="[#scan +]"/>
- <help text="[#scan +]"/>
-
- <p><k>[#scan +]</k> computes subtotals; this can be used, for example,
- to convert a regular probability distribution into a cumulative one.
- (or in general, discrete integration)
- </p>
-
- <method name="init">
- <arg name="operator" type="numop2"/>
- <arg name="seed" type="grid" default="0"/>
- </method>
-
- <inlet id="0">
- <method name="grid"><arg name="grid" type="grid(dims..., last)"/>
-
- replaces every Dim(last) subgrid by all the results of
- cascading the operator on that subgrid,
- producing a Dim(dims,last) grid.
-
- For example, with base value 0 and operation + on grid "2 3 5
- 7" will compute 0+2=2, 2+3=5, 5+5=10, 10+7=17, and give the
- subtotals "2 5 10 17".
-
- </method>
- </inlet>
- <inlet id="1" attr="seed"/>
- <outlet id="0">
- </outlet>
-
- </class>
-
- <class name="#outer">
- <icon text="[#outer +]"/>
- <help text="[#outer +]" image="#foldinnerouter"/>
-
- <method name="init">
- <arg name="operator" type="numop2"/>
- <arg name="value" type="grid"/>
- the operator must be picked from the table of two-input operators.
- the grid is optional and corresponds to inlet 1.
- </method>
-
- <inlet id="0">
- <method name="grid"><arg name="grid" type="grid(anyA...)"/></method>
- produces a grid of size Dim(anyA..., anyB...), where numbers
- are the results of the operation on every element of A and
- every element of B. the resulting array can be very big. Don't
- try this on two pictures (the result will have 6 dimensions)
- </inlet>
- <inlet id="1">
- <method name="grid"><arg name="grid" type="grid(anyB...)"/></method>
- stores the specified grid, to be used when inlet 0 is activated.
- </inlet>
- <outlet id="0">
- </outlet>
-
- <p>When given a grid of Dim(3) and a grid of Dim(5) <k>[#outer]</k> will
- produce a grid of Dim(3,5) with the selected two-input operation
- applied on each of the possible pairs combinations between numbers
- from the left grid and the ones from the right. for example :
- (10,20,30) [#outer +] (1,2,3) will give :
- ((11,12,13),(21,22,23),(31,32,33)) </p>
-
- </class>
-
- <class name="#inner">
- <help text="[#inner]"/>
-
- <p>think of this one as a special combination of <k>[#outer]</k>, <k>[#]</k> and
- <k>[#fold]</k>. this is one of the most complex operations. It is very useful
- for performing linear transforms like rotations, scalings, shearings,
- and some kinds of color remappings. A linear transform is done by
- something called matrix multiplication, which happens to be <k>[#inner * +
- 0]</k>. <k>[#inner]</k> also does dot product and other funny operations.</p>
-
- <method name="init">
- <arg name="op_para" type="numop2"/>
- <arg name="op_fold" type="numop2"/>
- <arg name="base" type="integer"/>
- <arg name="right_hand" type="grid"/>
- op_para and op_fold are two operators picked from the table
- of two-input operators.
- the base value has to be specified (has no default value yet).
- </method>
- <inlet id="0">
- <method name="grid"><arg name="grid" type="grid(anyA..., lastA)"/>
-
- Splits the Dim(anyA...,lastA) left-hand grid into Dim(anyA...)
- pieces of Dim(lastA) size.
-
- Splits the Dim(firstB,anyB...) right-hand grid into
- Dim(anyB...) pieces of Dim(firstB) size.
-
- On every piece pair, does <k>[#]</k> using the specified
- op_para operation, followed by a <k>[#fold]</k> using
- the specified op_fold operator and base value.
-
- creates a Dim(anyA...,anyB...) grid by assembling all
- the results together.
-
- (note: lastA must be equal to firstB.)
- </method>
- </inlet>
- <inlet id="1">
- <method name="int">
- changes the base value to that.
- </method>
- </inlet>
- <inlet id="2">
- <method name="grid"><arg name="grid" type="grid(anyB..., lastB)"/>
- changes the right-hand side grid to that.
- </method>
- </inlet>
- <outlet id="0">
- </outlet>
- </class>
-
- <class name="@join">
- <method name="init">
- <arg name="which_dim"/>
- Which_dim is the number of the dimension by which the join will
- occur. For N-dimensional grids, the dimensions are numbered from 0
- to N-1. In addition, negative numbers from -N to -1 may be used, to
- which N will be added.
- </method>
- <inlet id="0">
- <method name="grid"><arg name="grid" type="grid"/>
- The left grid and right grid must have the same number
- of elements in all dimensions except the one specified.
- The result will have the same number of elements in all
- dimensions except the one specified, which will be the
- sum of the two corresponding one.
-
- <p>For example, joining a RGB picture Dim[y,x,3] and a
- greyscale picture Dim[y,x,1] on dimension 2 (or -1) could
- make a RGBA picture Dim[y,x,4] in which the greyscale image
- becomes the opacity channel.
- </p>
- </method>
- </inlet>
- <inlet id="1"><method name="grid"><arg name="grid" type="grid"/></method></inlet>
- <outlet id="0">
- </outlet>
- </class>
-
- <class name="#finished">
- <inlet id="0">
- <method name="grid"><arg name="grid" type="grid"/>any grid</method>
- </inlet>
- <outlet id="0">
- a bang is emitted every time a grid transmission ends.
- </outlet>
- </class>
-
- <class name="#cast">
- <method name="init">
- <arg name="numbertype" type="numbertype"/>
- </method>
- <inlet id="0">
- <method name="grid"><arg name="grid" type="grid"/>any grid</method>
- </inlet>
- <outlet id="0">
- <method name="grid"><arg name="grid" type="grid"/>a grid of the same shape containing all the same
- values after type conversion. note that while casting to
- a smaller type, values that are overflowing will be truncated.
- </method>
- </outlet>
- </class>
-
- <class name="#ravel">
- <inlet id="0"><method name="grid"><arg name="grid" type="grid"/>any grid</method></inlet>
- <outlet id="0"><method name="grid"><arg name="grid" type="grid"/>
- like <k>[#redim]</k> but always produce a 1-D grid
- with the same total number of elements.
- </method></outlet>
- </class>
-
- <class name="#grade">
- <inlet id="0"><method name="grid"><arg name="grid" type="grid"/>any grid</method></inlet>
- <outlet id="0"><method name="grid"><arg name="grid" type="grid"/>
- <p>splits a Dim[A...,B] grid into Dim[B] vectors,
- producing new Dim[B] vectors that each contain numbers from
- 0 to B-1 indicating the ordering of the values. The result is
- a Dim[A...,B] grid.</p>
- <p>for example, connecting a [#grade] to a <k>[#outer ignore {0}]</k>
- to a <k>[#store]</k> object, storing a single vector into <k>[#store]</k>, and
- sending the same vector to <k>[#grade]</k>, will sort the values of the
- vector. however for higher-dimensional grids, what should go
- between <k>[#store]</k> and <k>[#grade]</k> to achieve the same result would
- be more complex.</p>
- <p>you may achieve different kinds of sorting by applying various
- filters before <k>[#grade]</k>. the possibilities are unlimited.</p>
- <p>if you plug <k>[#grade]</k> directly into another <k>[#grade]</k>, you will
- get the inverse arrangement, which allows to take the sorted values
- and make them unsorted in the original way. note that this is really
- not the same as just listing the values backwards.</p>
- </method></outlet>
- </class>
-
- <class name="#perspective">
- <method name="init">
- <arg name="depth" type="integer"/>
- </method>
- <inlet id="0"><method name="grid"><arg name="grid" type="grid"/>any grid</method></inlet>
- <outlet id="0"><method name="grid"><arg name="grid" type="grid"/>
- <p>transforms a Dim[A...,B] grid into a Dim[A...,B-1] grid.
- There is a projection plane perpendicular to the last axis and
- whose position is given by the "depth" parameter. Each vector's
- length is adjusted so that it lies onto that plane. Then the
- last dimension of each vector is dropped.</p>
-
- <p>useful for converting from 3-D geometry to 2-D geometry. Also
- useful for converting homogeneous 3-D into regular 3-D, as
- homogeneous 3-D is really just regular 4-D...(!)</p>
- </method></outlet>
- </class>
-
- <class name="#transpose">
- <method name="init">
- <arg name="dim1" type="integer"/>
- <arg name="dim2" type="integer"/>
- </method>
- <inlet id="0"><method name="grid"><arg name="grid" type="grid"/>
- swaps the two specified dimensions; dimension numbers are as in <k>[#join]</k>.
- </method></inlet>
- </class>
-
- <class name="#fade">
- <method name="init">
- <arg name="rate" type="integer"/>
- </method>
- <inlet id="0"><method name="grid"><arg name="grid" type="grid"/>
- produces on outlet 0 a linear recurrent fading according to the flow of
- incoming messages. For example, if rate=5, then 20% (one fifth)
- of each new message will be blended with 80% of the previous output.
- </method></inlet>
- </class>
-
- <class name="#fade_lin">
- <method name="init">
- <arg name="maxraise" type="integer"/>
- <arg name="maxdrop" type="integer"/>
- </method>
- <inlet id="0"><method name="grid"><arg name="grid" type="grid"/>
- produces on outlet 0 a piecewise-linear nonrecurrent fading according to the flow of
- incoming messages. For example, if maxraise=2 and maxdrop=4, then with each
- new message an output is produced that is at most 2 more or 4 less than the
- previous output.
- </method></inlet>
- </class>
-
- <class name="#reverse">
- <method name="init">
- <arg name="whichdim"/>
- Whichdim is the number of the dimension by which the reverse will
- occur. For N-dimensional grids, the dimensions are numbered from 0
- to N-1. In addition, negative numbers from -N to -1 may be used, to
- which N will be added.
- </method>
- </class>
-</section>
-
-<section name="Objects for Coordinate Transforms">
- <class name="#redim">
- <icon text="[#redim {2}]"/>
- <help text="[#redim 2]"/>
-
- <method name="init">
- <arg name="dims" type="dim_list"/>
- a list specifying a grid shape that the numbers
- will fit into.
- (same as with <k>[#import]</k>)
- </method>
- <inlet id="0">
- <method name="grid"><arg name="grid" type="grid(dims...)"/>
- the elements of this grid are serialized. if the resulting grid
- must be larger, the sequence is repeated as much as necessary.
- if the resulting grid must be smaller, the sequence is truncated.
- then the elements are deserialized to form the resulting grid.
- </method>
- </inlet>
- <inlet id="1">
- <method name="grid"><arg name="grid" type="grid(rank)"/>
- this grid is a dimension list that replaces the one
- specified in the constructor.
- (same as with <k>[#import]</k>)
- </method>
- </inlet>
- <outlet id="0">
- <method name="grid"><arg name="grid" type="grid"/>
- redimensioned grid potentially containing repeating data.
- </method>
- </outlet>
-
- <p>example: with a 240 320 RGB image, <k>[#redim 120 640 3]</k> will visually
- separate the even lines (left) from the odd lines (right). contrary
- to this, <k>[#redim 640 120 3]</k> will split every line and put its left half
- on a even line and the right half on the following odd line. <k>[#redim]</k>
- 480 320 3 will repeat the input image twice in the output image.
- <k>[#redim]</k> 240 50 3 will only keep the 50 top lines.</p>
-
- </class>
- <class name="#store">
- <help text="[#store]"/>
-
- <p>A <k>[#store]</k> object can store exactly one grid, using the right
- inlet. You fetch it back, or selected subparts thereof, using the left
- inlet.</p>
-
- <method name="init">
- <arg name="contents" type="grid"/>
- </method>
-
- <inlet id="0">
- <method name="bang">
- the stored grid is fully sent to the outlet.
- </method>
- <method name="grid"><arg name="grid" type="grid(dims..., indices)"/>
- in this grid, the last dimension refers to subparts of
- the stored grid. sending a Dim(200,200,2) on a <k>[#store]</k>
- that holds a Dim(240,320,3) will cause the <k>[#store]</k> to handle
- the incoming grid as a Dim(200,200) of Dim(2)'s, where each
- Dim(2) represents a position in a Dim(240,320) of Dim(3)'s.
- therefore the resulting grid will be a Dim(200,200) of
- Dim(3) which is a Dim(200,200,3). in practice this example
- would be used for generating a 200*200 RGB picture from a
- 200*200 XY map and a 240*320 RGB picture. this object can
- be logically used in the same way for many purposes
- including color palettes, tables of probabilities, tables
- of statistics, whole animations, etc.
- </method>
- </inlet>
- <inlet id="1">
- <method name="grid"><arg name="grid" type="grid(dims...)"/>
- replace the whole grid, or a subpart of it (see other options on inlet 1)
- </method>
- </inlet>
- <inlet id="1">
- <method name="reassign">(Future Use):
- makes it so that sending a grid to inlet 1 detaches the old buffer from [#store]
- and attaches a new one instead. This is the default.
- </method>
- <method name="put_at"><rest name="indices"/>(Future Use):
- makes it so that sending a grid to inlet 1 writes into the existing buffer of [#store].
- <p>
- example: suppose you have <k>[#store {10 240 320 3}]</k>. then "put_at 3"
- will allow to write a Dim[240,320,3] grid in indices (3,y,x,c) where y,x,c are indices of the incoming grid;
- in other words, if that's a buffer of 10 RGB frames, you'd be replacing frame #3. Furthermore,
- it also allows you to write a Dim[n,240,320,3] grid at (3+f,y,x,c) where f,y,x,c are indices of the incoming grid,
- replacing frame #3, #4, ... up to #3+n-1. Here n is at most 7 because the last frame in the buffer is #9.
- </p>
- <p>that way of working extends to other kinds of data you'd put in Grids, in any numbers of dimensions;
- because, as usual, [#store] wouldn't know the difference.
- </p>
- </method>
- </inlet>
- <outlet id="0">
- grids as stored, as indexed, or as assembled from multiple
- indexings.
- </outlet>
- </class>
-
- <class name="#scale_to">
- <help text="[#scale_to]"/>
-
- <method name="init">
- <arg name="size">{height width} pair.</arg>
- </method>
-
- <inlet id="0">
- <method name="grid"><arg name="grid" type="grid"/>a 3-channel picture to be scaled.</method>
- </inlet>
- <inlet id="1">
- <method name="int">a {height width} pair.</method>
- </inlet>
- <outlet id="0">
- <method name="grid"><arg name="grid" type="grid"/>a scaled 3-channel picture.</method>
- </outlet>
- </class>
-
- <class name="#scale_by">
- <help text="[#scale_by]"/>
-
- <method name="init">
- <arg name="factor" type="grid dim() or dim(2)"/>
- factor is optional (default is 2).
- if it's a single value, then that factor is to be used
- for both rows and columns.
- </method>
- <inlet id="0">
- <method name="grid"><arg name="grid" type="grid(y x channels)"/>
- duplicates each pixel several times in width and several times in height,
- where the number of times is determined by the factor described above.
- twice those of the incoming grid. It is several times faster.
- </method>
- </inlet>
- <inlet id="1"><method name="grid"><arg name="grid" type="grid(1 or 2)"/>sets factor</method></inlet>
- <outlet id="0">
- <method name="grid">
- <arg name="grid" type="grid((factor*y) (factor*x) channels)"/>
- </method>
- </outlet>
- </class>
-
- <class name="#downscale_by">
- <method name="init">
- <arg name="factor" type="+integer"/>
- <arg name="how" type="optional symbol(smoothly)"/>
- factor is optional (default is 2).
- if it's a single value, then that factor is to be used
- for both rows and columns.
- </method>
- <inlet id="0">
- <method name="grid"><arg name="grid" type="grid(y x channels)"/>
- Scales down picture by specified amount. (See scale factor above)
- </method>
- </inlet>
- <inlet id="1"><method name="grid">
- <arg name="grid" type="grid(1 or 2)"/>sets scale factor</method></inlet>
- <outlet id="0">
- <method name="grid">
- <arg name="grid" type="grid((factor/y) (factor/x) channels)"/>
- </method>
- </outlet>
- </class>
-
- <class name="#spread">
- <help text="[#spread]"/>
-
- <p>typically you plug a <k>[#for]</k> into this object,
- and you plug this object into the left side of a <k>[#store]</k>. it will
- scatter pixels around, giving an "unpolished glass" effect.</p>
-
- <p>if you put a picture in it, however, it will add noise. The
- resulting values may be out of range, so you may need to clip them
- using min/max.</p>
-
- <method name="init">
- <arg name="factor">same as inlet 1</arg>
- </method>
-
- <inlet id="0">
- <method name="grid"><arg name="grid" type="grid"/>a coordinate map.</method>
- </inlet>
- <inlet id="1">
- <method name="int">a spread factor.</method>
- </inlet>
- <outlet id="0">
- <method name="grid"><arg name="grid" type="grid"/>a coordinate map.</method>
- </outlet>
-
-
- <p><k>[#spread]</k> scatters the pixels in an image. Not all original pixels
- will appear, and some may get duplicated (triplicated, etc)
- randomly. Some wrap-around effect will occur close to the edges.
- </p>
-
- <p> Sending an integer to inlet 1 sets the amount of spreading in
- maximum number of pixels + 1. even values translate the whole image
- by half a pixel due to rounding.</p>
-
- </class>
-
- <class name="#rotate">
- <p>performs rotations on indexmaps and polygons and such.</p>
-
- <method name="init">
- <arg name="angle" type="0...35999"/>
- </method>
- <inlet id="0"><method name="grid">
- <arg name="grid" type="grid(anyA 2)"/></method></inlet>
- <inlet id="1"><method name="int">rotation angle; 0...36000</method>
- </inlet>
- <outlet id="0"><method name="grid">
- <arg name="grid" type="grid(anyA 2)"/>
- </method></outlet>
- </class>
-
- <class name="#remap_image">
- <p>if you chain indexmap (coordinate) transformations from outlet 1
- to inlet 1, then sending an image in inlet 0 will emit its
- deformation out of outlet 0.</p>
-
- <inlet id="0"/>
- <inlet id="1"/>
- <outlet id="0"/>
- <outlet id="1"/>
- </class>
-</section>
-
-<section name="Objects for Reporting">
- <class name="#dim">
- <help text="[#dim]"/>
-
- <p>Returns list of dimensions as a grid. Given a grid sized like Dim(240,320,4),
- <k>[#dim]</k> will return a grid like Dim(3), whose values are 240, 320, 4. </p>
-
- <method name="init">
- no arguments.
- </method>
- <inlet id="0">
- <method name="grid"><arg name="grid" type="grid(dims...)"/>
- ignores any data contained within.
- sends a grid dim(length of dims) containing dims.
- </method>
- </inlet>
- <outlet id="0">
- <method name="grid"><arg name="grid" type="grid(rank)"/>
- the list of dimensions of the incoming grid.
- </method>
- </outlet>
- </class>
-
- <class name="#type">
- <p>gives a symbol representing the numeric type of the grid received.
- </p>
- <outlet id="0"><method name="&lt;numeric type symbol&gt;"/></outlet>
- </class>
-
- <class name="#print">
- <method name="init"/>
- <inlet id="0">
- <method name="grid"><arg name="grid" type="grid(dims...)"/>
- prints the dimensions of the grid.
- prints all the grid data if there are 2 dimensions or less.
- </method>
- </inlet>
- </class>
-
- <class name="rubyprint">
- This is only for testing the translation from PD to Ruby.
- <method name="init"/>
- <inlet id="0">
- <method name="(any)">
- prints the message to the console.
- </method>
- </inlet>
- </class>
-
- <class name="printargs">
- This is only for testing the translation from PD to Ruby.
- <method name="init">
- <rest name="any"/>
- prints everything.
- </method>
- </class>
-
- <class name="display">
- GUI object equivalent to [print] and [#print].
- <method name="(any)">
- Displays the received message in the box, resizing the box so that the message fits exactly.
- </method>
- </class>
-</section>
-
-<section name="Objects for Color Conversion">
- <class name="#apply_colormap_channelwise">
- <p>This object is useful for color correction. For each pixel
- it takes it apart, looks up each part separately in the colormap,
- and constructs a new pixel from that. You may also color-correct
- colormaps themselves.</p>
-
- <p>Only works for things that have 3 channels.</p>
-
- <p>Note: if you just need to apply a palette on an indexed-color
- picture, you don't need this. Just use #store instead.</p>
-
- <inlet id="0"><method name="grid">
- <arg name="grid" type="grid(rows columns channels)"/>
- picture
- </method></inlet>
- <inlet id="1">
- <method name="grid">
- <arg name="grid" type="grid(intensities channels)"/>
- colormap ("palette")
- </method></inlet>
- <outlet id="0"><method name="grid">
- <arg name="grid" type="grid(rows columns channels)"/>
- picture
- </method></outlet>
- </class>
-
- <class name="#rgb_to_greyscale">
- <inlet id="0"><method name="grid">
- <arg name="grid" type="grid(rows columns {red green blue})"/>
- </method></inlet>
- <outlet id="0"><method name="grid">
- <arg name="grid" type="grid(rows columns {white})"/></method>
- </outlet>
- </class>
-
- <class name="#greyscale_to_rgb">
- <inlet id="0"><method name="grid">
- <arg name="grid" type="grid(rows columns {white})"/></method>
- </inlet>
- <outlet id="0"><method name="grid">
- <arg name="grid" type="grid(rows columns {red green blue})"/>
- </method></outlet>
- </class>
-
- <class name="#yuv_to_rgb">
- <p>note: may change slightly to adapt to actual video standards.</p>
- <inlet id="0"><method name="grid">
- <arg name="grid" type="grid(rows columns {y u v})"/></method>
- </inlet>
- <outlet id="0"><method name="grid">
- <arg name="grid" type="grid(rows columns {red green blue})"/>
- </method></outlet>
- </class>
-
- <class name="#rgb_to_yuv">
- <p>note: may change slightly to adapt to actual video standards.</p>
- <inlet id="0"><method name="grid">
- <arg name="grid" type="grid(rows columns {red green blue})"/></method>
- </inlet>
- <outlet id="0"><method name="grid">
- <arg name="grid" type="grid(rows columns {y u v})"/>
- </method></outlet>
- </class>
-</section>
-
-<section name="Objects for Miscellaneous Picture Processing">
- <class name="#convolve">
- <help text="[#convolve]"/>
-
- <p>this is the object for blurring, sharpening, finding edges,
- embossing, cellular automata, and many other uses.</p>
-<!--NYI
- <attr name="seed">
-
- </attr>
--->
- <method name="init">
- <arg name="op_para" type="numop2"/>
- <arg name="op_fold" type="numop2"/>
- <arg name="seed" type="grid"/>
- <arg name="right_hand" type="grid" default="none"/>
- </method>
- <inlet id="0">
- <method name="grid">
- <arg name="grid" type="grid(rows columns rest...)"/>
- splits the incoming grid into dim(rest...) parts.
- for each of those parts at (y,x), a rectangle of such
- parts, centered around (y,x), is combined with the
- convolution grid like a <k>[#]</k> of operation op_para. Then
- each such result is folded like <k>[#fold]</k> of operation
- op_fold and specified base. the results are assembled
- into a grid that is sent to the outlet. near the borders of
- the grid, coordinates wrap around. this means the whole grid
- has to be received before production of the next grid
- starts.
- </method>
- </inlet>
- <inlet id="1">
- <method name="grid">
- <arg name="grid" type="grid(rows2 columns2)"/>
- this is the convolution grid and it gets stored in
- the object. if rows2 and/or columns2 are odd numbers,
- then the centre of convolution is the middle of the convolution
- grid. if they are even numbers, then the chosen centre will
- be slightly more to the left and/or to the top, because the
- actual middle is between cells of the grid.
- </method>
- </inlet>
- <outlet id="0">
- <method name="grid">
- <arg name="grid" type="grid(rows columns rest...)"/>
- </method>
- </outlet>
- </class>
-
- <class name="#contrast">
- <help text="[#contrast]"/>
-
- <method name="init">
- <arg name="iwhiteness" default="256">same as inlet 1.</arg>
- <arg name="contrast" default="256">same as inlet 2.</arg>
- </method>
-
- <inlet id="0">
- <method name="grid">
- <arg name="grid" type="grid(rows columns channels)"/>
- produces a grid like the incoming grid but with
- different constrast.
- </method>
- <p><k>[#contrast]</k> adjusts the intensity in an image.
- resulting values outside 0-255 are automatically clipped.</p>
- </inlet>
- <inlet id="1">
- <method name="int">
- this is the secondary contrast (inverse whiteness).
- it makes the incoming black
- correspond to a certain fraction between output black and the
- master contrast value. no effect is 256. default value is 256.
- </method>
- </inlet>
- <inlet id="2">
- <method name="int">
- this is the master contrast. it makes the incoming white
- correspond to a certain fraction between output black and output
- white. no effect is 256. default value is 256.
- </method>
- </inlet>
- <outlet>
- <method name="grid">
- <arg name="grid" type="grid(rows columns channels)"/>
- </method>
- </outlet>
- </class>
-
- <class name="#posterize">
- <help text="[#posterize]"/>
-
- <p><k>[#posterize]</k> reduces the number of possible intensities in an image;
- it rounds the color values.The effect is mostly apparent with a low
- number of levels.</p>
-
- <method name="init">
- <arg name="levels">same as inlet 1</arg>
- </method>
-
- <inlet id="0">
- <method name="grid">
- <arg name="grid" type="grid(rows columns channels)"/>
- produces a posterized picture from the input picture.
- </method>
- </inlet>
-
- <inlet id="1">
- <method name="int">
- this is the number of possible levels per channel. the
- levels are equally spaced, with the lowest at 0 and the
- highest at 255. the minimum number of levels is 2, and the
- default value is 2.
- </method>
- </inlet>
-
- <outlet id="0">
- </outlet>
-
- <p>example: simulate the 216-color "web" palette using 6 levels.
- simulate a 15-bit display using 32 levels.</p>
- </class>
-
- <class name="#solarize">
- <p>makes medium intensities brightest; formerly brightest colours
- become darkest; formerly darkest stays darkest. This filter is linear:
- it's like a 200% contrast except that overflows are <i>mirrored</i>
- instead of clipped or wrapped.</p>
- <inlet id="0">
- <method name="grid">
- <arg name="grid" type="grid(rows columns channels)"/></method>
- </inlet>
- <outlet id="0">
- <method name="grid">
- <arg name="grid" type="grid(rows columns channels)"/></method>
- </outlet>
- </class>
-
- <class name="#checkers">
- <inlet id="0">
- <method name="grid">
- <arg name="grid" type="grid(y x {y x})"/>
- result from a <k>[#for {0 0} {height width} {1 1}]</k>
- </method>
- </inlet>
- <outlet id="0">
- <method name="grid">
- <arg name="grid" type="grid(y x {r g b})"/>
- checkered pattern of 50%/75% greys
- in 8x8 squares
- </method>
- </outlet>
- </class>
-
- <class name="#layer">
- <inlet id="0">
- <method name="grid">
- <arg name="grid" type="grid(y x {r g b a})"/>
- a picture that has an opacity channel.
- will be used as foreground.
- </method>
- </inlet>
- <inlet id="1">
- <method name="grid">
- <arg name="grid" type="grid(y x {r g b})"/>
- a picture that has NO opacity channel.
- will be used as background.
- </method>
- </inlet>
- <outlet id="0">
- <method name="grid">
- <arg name="grid" type="grid(y x {r g b})"/>
- a picture that has NO opacity channel.
- the opacity channel of the foreground is used as
- a weighting of how much of either picture is seen
- in the result.
- </method>
- </outlet>
- </class>
-
- <class name="#draw_image">
- <method name="init">
- <arg name="operator" type="numop2">
- Normally you would use the "put" operator here;
- but abnormally I recommend + and ^ for psychedelic effects.
- </arg>
- <arg name="picture" type="grid(y,x,channels)"/>
- <arg name="position" type="grid({y x})"/>
- </method>
- <inlet id="0">
- <method name="grid"><arg name="grid" type="grid(y x channels)"/>
- picture onto which another picture will be superimposed.
- </method>
- <method name="tile"><arg name="flag" type="0 or 1"/>
- if enabled, inlet 1 picture will be repeated to cover the inlet 0 picture.
- </method>
- <method name="alpha"><arg name="flag" type="0 or 1"/>
- if enabled, inlet 1 picture will be combined with inlet 0 picture using
- the selected operator,
- and then blended with inlet 0 picture according to transparency of
- the inlet 1 picture, and then inserted in the result.
- if disabled, the blending doesn't occur, as the transparency level
- is considered to be "opaque". note that with alpha enabled,
- the last channel of inlet 1 picture is considered to represent transparency.
- </method>
- </inlet>
- <inlet id="1">
- <method name="grid"><arg name="grid" type="grid(y x channels)"/>
- picture that will be superimposed onto another picture.
- </method>
- </inlet>
- <inlet id="2">
- <method name="grid"><arg name="grid" type="grid({y x})"/>
- position of the inlet 0 picture corresponding to top-left corner
- of inlet 1 picture.
- </method>
- </inlet>
- <outlet id="0">
- <method name="grid"><arg name="grid" type="grid(y x channels)"/>
- resulting picture.
- </method>
- </outlet>
- </class>
-
- <class name="#draw_polygon">
- <method name="init">
- <arg name="operator" type="numop2">
- Normally you would use the "put" operator here;
- but abnormally I recommend + and ^ for psychedelic effects.
- </arg>
- <arg name="color" type="grid(channels)"/>
- <arg name="vertices" type="grid(vertices,{y x})"/>
- </method>
- <inlet id="0">
- <method name="grid"><arg name="grid" type="grid(y x channels)"/>
- picture on which the polygon will be superimposed.
- </method>
- </inlet>
- <inlet id="1">
- <method name="grid"><arg name="grid" type="grid(channels)"/>
- color of each pixel
- </method>
- </inlet>
- <inlet id="2">
- <method name="grid"><arg name="grid" type="grid(vertices {y x})"/>
- vertices of the polygon.
- </method>
- </inlet>
- <outlet id="0">
- <method name="grid">
- <arg name="grid" type="grid(y x channels)"/>
- modified picture.
- note: starting with 0.7.2, drawing a 1-by-1
- square really generates a 1-by-1 square, and
- so on. This is because the right-hand border of a
- polygon is excluded, whereas it was included
- before, leading to slightly-wider-than-expected polygons.
- </method>
- </outlet>
- </class>
-
- <class name="#text_to_image">
- <p>inlet 2 receives a font grid, for example, [#in grid file lucida-typewriter-12.grid.gz]</p>
- <p>inlet 1 receives a 2 by 3 matrix representing the colours to use (e.g. (2 3 # 0 170 0 255 255 0) means yellow on green)</p>
- <p>inlet 0 receives a bang, transforming the data into an image suitable for #draw_image.</p>
- </class>
- <class name="#hueshift">
- <p>inlet 1 receives an angle (0..36000)</p>
- <p>inlet 0 receives a RGB picture that gets hueshifted by a rotation in the colorwheel by the specified angle; it gets sent to outlet 0.</p>
- </class>
-</section>
-
-<section name="Other Objects">
- <class name="rtmetro">This class has been removed (0.7.7).</class>
-
- <class name="bindpatcher">
- <p>sets the receive-symbol for the Pd patcher it is in.</p>
- <p>has no inlets, no outlets.</p>
- <p>EXPERIMENTAL.</p>
- <method name="init">
- <arg name="symbol" type="symbol"/>
- </method>
- </class>
-
- <class name="pingpong">
- Transforms linear counting (0, 1, 2, 3, 4, ...) into a back-and-forth counting (0, 1, 2, 1, 0, ...)
- from 0 to a specified upper bound.
- <method name="init">
- <arg name="top" type="int"/>
- </method>
- <inlet id="1">
- <method name="float"><arg name="top" type="float"/></method>
- </inlet>
- <inlet id="0">
- <method name="float">
- a value to be transformed.
- If, for example, top=10, then values 0 thru 10 are left unchanged,
- values 11 thru 19 are mapped to 9 thru 1 respectively, and 20 thru 30
- are mapped to 0 thru 10, and so on.
- </method>
- </inlet>
- </class>
-
- <class name="#global">
- <help text="[#global]" />
-
- <p>
- objects of this class do nothing by themselves and are just
- an access point to features that don't belong to any object in
- particular.
- </p>
- <method name="profiler_reset">
- resets all the time counters.
- </method>
- <method name="profiler_dump">
- displays the time counters in decreasing order, with
- the names of the classes those objects are in. this is
- an experimental feature. like most statistics,
- it could be vaguely relied upon if
- only you knew to which extent it is unreliable. more on this
- in a future section called "profiling".
- </method>
- </class>
-
- <class name="fps">
- <method name="init">
- <arg name="clocktype" type="symbol(real|user|system|cpu)">
- which clock to use. "real" uses wallclock time. "user" uses
- the amount of time spent in the process. "system" uses the
- amount of time spent in the kernel on behalf of the process.
- "cpu" uses the Pentium clock, which is like a more precise
- version of "real" if you have a Pentium.
- </arg>
- <arg name="detailed" type="symbol(detailed)">optional</arg>
- </method>
- <method name="init detailed">
- </method>
- <inlet id="0">
- <method name="bang">
- Times at which bangs are received are stored until a large
- enough sample of those is accumulated. Large enough is defined
- to be whenever the timespan exceeds one second. Then a report
- is made through the outlet.
- </method>
- <method name="(else)">
- messages other than bangs are ignored.
- </method>
- </inlet>
- <outlet id="0">
- <method name="float">
- non-detailed mode only.
- this is the messages-per-second rating.
- </method>
- <method name="list(float,6)">
- detailed mode only.
- this is: messages-per-second, followed by five values of
- milliseconds-per-message: minimum, median, maximum, average,
- standard deviation.
- (the average happens to be simply 1000 divided by the
- messages-per-second, but it is convenient to have it anyway)
- </method>
- </outlet>
- </class>
-
- <class name="unix_time">
- <p>
- This object returns the Unix timestamp. The first
- outlet does so with ASCII, the second in seconds and the third outlet
- outputs the fractions of seconds up to 1/100 000 th of a second which is useful for creating
- filenames.
- </p>
- <inlet id="0"><method name="bang"/></inlet>
- <outlet id="0"><method name="symbol"/>Outputs the time and date in ASCII format</outlet>
- <outlet id="1"><method name="float"/>Outputs the Unix timestamp in seconds</outlet>
- <outlet id="2"><method name="float"/>Outputs the fractions of a second up to 10 microseconds (?) (actual precision is platform-dependent afaik)</outlet>
- </class>
-
- <class name="ls">
- <p>
- This object is similar to the Unix list command
- 'ls'. It returns the names of files in a given
- directory. May be used with [listlength] to retrieve the number of files.
- Hidden files are displayed.
- </p>
- <inlet id="0"><method name="symbol">
- lists all files in a given directory
- </method>
- <method name="glob">
- lists all files matching a given pattern.
- "symbol hello" is like "glob hello/*"
- </method></inlet>
- </class>
-
- <class name="exec">
- <p>
- This object launches a Unix shell program or script.
- </p>
- <inlet id="0"><method name="symbol"/></inlet>
- </class>
-
- <class name="renamefile">
- <p>
- This object accepts a list of two elements as arguments.
- The current file name being the first and the second is the desired change
- in name.
- </p>
- <inlet id="0"><method name="list"/></inlet>
- </class>
-
- <class name="plotter_control">
- <p>
- This object produces HPGL instructions in ASCII form
- that can be sent to the comport object in order to control an HPGL
- compatible plotter.
- </p>
- <inlet id="0"><method name="symbol"/></inlet>
- <outlet id="0"><method name="symbol"/>Outputs the HPGL commands in ASCII format</outlet>
- </class>
-
- <class name="rubyarray">
- <p>inlet 0 float : sends the specified array entry to outlet 0</p>
- <p>inlet 1 list: writes that list as an array entry in position last specified by inlet 0.</p>
- <p>inlet 0 save(symbol filename): writes the array contents to a file of the given filename as a CSV</p>
- <p>inlet 0 save(symbol filename, symbol format): same thing but using a sprintf string such as %x,%f or whatever</p>
- <p>inlet 0 load(symbol filename): replace all array contents by the contents of a CSV file</p>
- </class>
-</section>
-
-<section name="jMax emulation">
- <p>those classes emulate jMax functionality,
- for use within PureData and Ruby.</p>
-
- <class name="fork">
- <p>Every incoming message is sent to inlet 1 and then sent to
- inlet 0 as well. Messages remain completely unaltered. Contrast
- with PureData's "t a a" objects, which have the same purpose but
- transform bangs into zeros and such.</p>
-
- <inlet id="0"><method name="(any)"/></inlet>
- <outlet id="0"/>
- <outlet id="1"/>
- </class>
- <class name="jmax_udpsend">
- Sends messages (but not grids nor dspsignals) via UDP (which
- does not involve a connection, and may lose packets in case of
- network overload or noise or etc).
-
- <p>This works with jMax 2.5 and 4.1 but not 4.0.</p>
-
- <method name="init">
- <arg name="host" type="host"/>
- <arg name="port" type="integer"/>
- </method>
-
- <inlet id="0"><method name="&lt;any&gt;"/></inlet>
- </class>
- <class name="jmax_udpreceive">
- <p>Counterpart of jmax_udpsend</p>
-
- <p>This works with jMax 2.5 and 4.1 but not 4.0.</p>
-
- <method name="init">
- <arg name="port" type="integer"/>
- </method>
- <outlet id="0"><method name="&lt;any&gt;"/></outlet>
- <outlet id="1"><method name="list">
- <arg name="protocol_name"/>
- <arg name="sender_port"/>
- <arg name="sender_host"/>
- <arg name="sender_ip_address"/>
- </method>
- </outlet>
- </class>
- <class name="foreach">
- <inlet id="0"><method name="list"><rest/>
- Outputs N messages, one per list element, in order.
- </method></inlet>
- </class>
- <class name="rubysprintf">
- <method name="init">
- <arg name="format" type="symbol"/>
- </method>
- <inlet id="0"><method name="list">
- Outputs the format string with %-codes replaced
- by elements of the list formatted as the %-codes say.
- To get a list of those codes, consult a Ruby manual
- (Equivalently, Perl, Python, Tcl and C all have equivalents of this,
- and it's almost always called sprintf, or the % operator, or both)
- </method></inlet>
- <inlet id="1" attr="format" type="symbol"/>
- </class>
- <class name="listflatten">
- <inlet id="0"><method name="list"><rest/>
- </method></inlet>
- </class>
- <class name="listmake">
- Emulation of jMax's [list] (but there cannot be a class named [list] in Pd)
- <method name="init">
- <rest name="list" isattr="yes"/>
- </method>
- <inlet id="0">
- <method name="bang">send "list" to outlet 0</method>
- <method name="list">as sending to inlet 1 and then banging; that is, passes thru and remembers.</method>
- </inlet>
- <inlet id="1" attr="list"/>
- </class>
- <class name="listlength">
- <inlet id="0"><method name="list">
- outputs the number of elements in the incoming list.
- </method></inlet>
- </class>
- <class name="listelement">
- <method name="init">
- <arg name="index" type="int" isattr="yes"/>
- </method>
- <inlet id="0"><method name="list"><rest/>
- Outputs one element of the list, as selected by "index".
- Also accepts negative indices (e.g.: -1 means "last"), like Ruby, but unlike jMax.
- </method></inlet>
- <inlet id="1" attr="index"/>
- </class>
- <class name="listsublist">
- <method name="init">
- <arg name="index" type="int" isattr="yes"/>
- <arg name="length" type="int" isattr="yes"/>
- </method>
- <inlet id="0"><method name="list"><rest/>
- Outputs consecutive elements of the list, as selected by "index" and "length".
- Also accepts negative indices (e.g.: -1 means "last"), like Ruby, but unlike jMax.
- </method></inlet>
- <inlet id="1" attr="index"/>
- <inlet id="2" attr="length"/>
- </class>
- <class name="listprepend">
- <method name="init">
- <rest name="list" isattr="yes"/>
- </method>
- <inlet id="0"><method name="list"><rest/>
- Outputs the stored list followed by the incoming list, all in one message.
- </method></inlet>
- <inlet id="1" attr="list"/>
- </class>
- <class name="listappend">
- <method name="init">
- <rest name="list" isattr="yes"/>
- </method>
- <inlet id="0"><method name="list"><rest/>
- Outputs the incoming list followed by the stored list, all in one message.
- </method></inlet>
- <inlet id="1" attr="list"/>
- </class>
- <class name="listreverse">
- <inlet id="0"><method name="list"><rest/>
- Outputs the incoming list, from last element to first element.
- </method></inlet>
- </class>
- <class name="oneshot">
- Like [spigot], but turns itself off after each message, so you have to turn it on
- again to making it pass another message.
- </class>
- <class name="inv+">
- <method name="init">
- <arg name="b" type="float" isattr="yes"/>
- </method>
- <inlet id="0"><method name="float"><arg name="a" type="float"/>
- outputs b-a
- </method></inlet>
- <inlet id="1" attr="b"/>
- </class>
- <class name="inv*">
- <method name="init">
- <arg name="b" type="float" isattr="yes"/>
- </method>
- <inlet id="0"><method name="float"><arg name="a" type="float"/>
- outputs b/a
- </method></inlet>
- <inlet id="1" attr="b"/>
- </class>
- <class name="messageprepend">
- (This is not in jMax, but is there to help port $* messageboxes)
- <method name="init"><rest name="list" isattr="yes"/></method>
- <inlet id="0"><method name="&lt;any&gt;"><rest/>
- Like [listprepend], but operates on whole messages, that is, including the selector.
- </method></inlet>
- <inlet id="1" attr="list"/>
- </class>
- <class name="messageappend">
- (This is not in jMax, but is there to help port $* messageboxes)
- <method name="init"><rest name="list" isattr="yes"/></method>
- <inlet id="0"><method name="&lt;any&gt;"><rest/>
- Like [listappend], but operates on whole messages, that is, including the selector.
- </method>
- </inlet>
- <inlet id="1" attr="list"/>
- </class>
- <class name="shunt">
- Compatible with jMax's [demux].
- <method name="init">
- <arg name="n">number of outlets</arg>
- <arg name="i" default="0">initial selected outlet</arg>
- </method>
- <inlet id="0"><method name="&lt;any&gt;"><rest/>
- Routes a message to the active outlet.
- </method></inlet>
- <inlet id="1"><method name="int"><arg name="i" type="int"/>
- Selects which outlet is active.
- </method></inlet>
- </class>
- <class name="demux">
- please use shunt instead (name conflict with another Pd external)
- </class>
- <class name="range">
- <method name="init">
- <rest name="separators" type="float"></rest>
- </method>
- <inlet id="0"><method name="float">
- a value to be sent to one of the outlets. The first outlet is for values
- smaller than the first argument; else the second outlet is for values smaller
- than the second argument; and so on; and the last outlet is for values greater
- or equal to the last argument.
- </method></inlet>
- <inlet id="1..n"><method name="float">
- sets the corresponding separator in the separator list.
- </method></inlet>
- </class>
-</section>
-
-<section name="PureData emulation">
- <class name="pd_netsend">
- same as jmax_udpsend but for PureData UDP connections.
- </class>
- <class name="pd_netreceive">
- same as jmax_udpreceive but for PureData UDP connections.
- </class>
-</section>
-
-</documentation>
diff --git a/externals/gridflow/doc/tutorials/0-0-intro_page.pd b/externals/gridflow/doc/tutorials/0-0-intro_page.pd
deleted file mode 100755
index 3ac9fb86..00000000
--- a/externals/gridflow/doc/tutorials/0-0-intro_page.pd
+++ /dev/null
@@ -1,89 +0,0 @@
-#N canvas 226 0 429 638 10;
-#X obj -22 -68 cnv 1 430 80 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj -24 49 cnv 1 430 520 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj -24 82 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj -24 57 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj -17 49 cnv 1 2 480 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 390 50 cnv 1 2 480 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj -24 144 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj -24 168 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 26 98 1.1 What is a grid?;
-#X obj 41 534 cnv 15 300 30 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 53 539 Stephanie Brodeur & Darsha Hewitt 2005;
-#X obj -22 7 cnv 15 430 30 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 88 -3 cnv 15 100 17 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 88 -5 GridFlow 0.8.0;
-#X obj -22 -68 cnv 1 430 1 empty empty empty 20 12 0 14 -66577 -66577
-0;
-#X obj -23 37 cnv 1 430 1 empty empty empty 20 12 0 14 -66577 -66577
-0;
-#X obj 189 11 cnv 15 63 17 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 188 8 Tutorials;
-#X obj -24 48 cnv 1 430 1 empty empty empty 20 12 0 14 -66577 -66577
-0;
-#X obj -24 528 cnv 1 430 1 empty empty empty 20 12 0 14 -66577 -66577
-0;
-#X text 14 63 1;
-#X obj 32 62 Introduction to Grids;
-#X text 26 178 2.1 How does GridFlow understand images?;
-#X text 15 150 2;
-#X obj 36 147 Introduction to Images;
-#X text 419 224 2.3 Different options on how to open an image.;
-#X text 445 241 2.3.1 Opening different images in one window.;
-#X text 445 258 2.3.2 Opening images using send and receive.;
-#X obj -24 310 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj -24 334 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 18 317 3;
-#X obj 39 315 Introduction to Video;
-#X text 482 201 REMOVE 2.3 -- see pd tuts;
-#X text 17 405 4;
-#X obj 38 405 Introduction to Live Feed;
-#X obj 37 481 Putting it all Together;
-#X text 20 482 5;
-#X text 30 430 4.1 Opening a live video feed;
-#X text 30 446 4.2 Motion Detection;
-#X text 29 372 3.3 Recording video;
-#X obj -24 310 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj -24 334 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj -24 400 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj -24 424 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj -24 400 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj -24 424 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj -24 476 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj -24 500 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj -24 476 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj -24 500 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 26 114 1.2 How to create a grid;
-#X text 26 197 2.2 Opening an image;
-#X text 26 214 2.3 Image manipulation;
-#X text 55 244 2.3.2 Resizing an image;
-#X text 55 228 2.3.1 Numop;
-#X text 55 273 2.3.4 Remap image;
-#X text 55 259 2.3.3 Greyscale;
-#X text 55 286 2.3.5 Convolve;
-#X text 29 342 3.1 Opening a video;
-#X text 29 358 3.2 Video manipulation;
diff --git a/externals/gridflow/doc/tutorials/2-3-4-image-modification-2-remap-image.pd b/externals/gridflow/doc/tutorials/2-3-4-image-modification-2-remap-image.pd
deleted file mode 100755
index b6e4755d..00000000
--- a/externals/gridflow/doc/tutorials/2-3-4-image-modification-2-remap-image.pd
+++ /dev/null
@@ -1,55 +0,0 @@
-#N canvas 41 17 876 618 10;
-#X obj 10 519 cnv 15 720 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X msg 53 173 open b001.jpg;
-#X obj 23 116 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 23 204 #in;
-#X obj 23 142 t b b;
-#X obj 23 351 #out window;
-#X obj 102 323 #print;
-#X obj 184 160 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X floatatom 203 225 5 0 0 0 - - -;
-#X obj 173 184 #for (0 0) (240 320) (1 1);
-#X obj 173 134 metro 100;
-#X obj 173 109 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
-1;
-#X obj 23 292 #remap_image;
-#X text 18 526 GridFlow 0.8.0;
-#X text 243 224 <-- Modify the value to see transformations.;
-#X obj 173 257 # / 1;
-#X text 227 261 The remap object works with numops.;
-#X obj 9 -17 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 9 -52 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 15 -17 2.4 Image Manipulation;
-#X text 16 -46 2 Introduction to Images;
-#X text 15 2 2.4.4 Remap Image;
-#X text 26 408 Remap image permits you to modify an image using numeric
-operators. Different numeric Operators have different effects ton the
-image and can be changed to give the desired effect. The multiplication
-operator multiplies the values and distorts the image. The division
-operator does the same but shrinks the operator...;
-#X text 467 24 Have the list of operators and what they do in order
-to know the various effects.;
-#X text 468 77 example:;
-#X obj 474 121 # / 2;
-#X text 523 114 multiplication multiplies the numbers in the grid and
-distorts the image.;
-#N canvas 0 0 450 300 META 0;
-#X restore 130 527 pd META;
-#X connect 1 0 3 0;
-#X connect 2 0 4 0;
-#X connect 3 0 12 0;
-#X connect 4 0 3 0;
-#X connect 4 1 1 0;
-#X connect 7 0 9 0;
-#X connect 8 0 15 1;
-#X connect 9 0 15 0;
-#X connect 10 0 9 0;
-#X connect 11 0 10 0;
-#X connect 12 0 5 0;
-#X connect 12 1 6 0;
-#X connect 15 0 12 1;
diff --git a/externals/gridflow/doc/tutorials/2-3-5-image-modification-2-convolve.pd b/externals/gridflow/doc/tutorials/2-3-5-image-modification-2-convolve.pd
deleted file mode 100755
index 4a099537..00000000
--- a/externals/gridflow/doc/tutorials/2-3-5-image-modification-2-convolve.pd
+++ /dev/null
@@ -1,120 +0,0 @@
-#N canvas 47 0 787 658 10;
-#X msg 468 148 3 3 # 0 4 0 4 9 -4 0 -4 0;
-#X msg 467 100 3 3 # 4 0 0 0 1 0 0 0 4;
-#X obj 80 219 #store;
-#X obj 80 270 # / 9;
-#X msg 467 75 3 3 # 1 1 1 1 1 1 1 1 1;
-#X obj -13 201 #out window;
-#X msg 470 263 1 3 # 0 9 -9;
-#X obj -21 117 #in;
-#X msg 468 124 3 3 # 2 2 2 2 -7 2 2 2 2;
-#X obj 80 145 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
-;
-#X obj 70 325 @! abs;
-#X obj -21 77 loadbang;
-#X obj 80 182 metro 33.3667;
-#X obj -21 139 t a;
-#X obj 80 244 #convolve \, seed 4;
-#X obj 401 78 loadbang;
-#X obj 80 299 shunt 2;
-#X obj 124 270 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0
-1;
-#X msg 170 280 0;
-#X obj 124 351 # + 128;
-#X msg 170 304 1;
-#X obj 469 174 display;
-#X obj -13 225 fps;
-#X obj -13 250 print;
-#X obj -50 466 cnv 15 780 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text -42 473 GridFlow 0.8.0;
-#X text -42 473 GridFlow 0.8.0;
-#X msg 470 242 1 3 # 0 2 -2;
-#X msg 470 325 3 3 # 0 -1 0 -1 4 -1 0 -1 0;
-#X msg 470 348 3 3 # -1 -1 -1 -1 8 -1 -1 -1 -1;
-#X msg 470 416 3 3 # 0 -1 0 -1 13 -1 0 -1 0;
-#X obj 124 325 # << 4;
-#X msg -21 97 open babbage.jpg \, bang;
-#X obj -49 -111 cnv 15 780 15 empty empty empty 20 12 0 14 -228992
--66577 0;
-#X obj -49 -146 cnv 15 780 30 empty empty empty 20 12 0 14 -233017
--66577 0;
-#X obj 470 218 cnv 15 100 15 empty empty empty 20 12 0 14 -260818 -66577
-0;
-#X obj 468 52 cnv 15 37 15 empty empty empty 20 12 0 14 -260818 -66577
-0;
-#X text 470 218 Edge detection;
-#X obj 470 303 cnv 15 110 15 empty empty empty 20 12 0 14 -260818 -66577
-0;
-#X text 472 303 Laplacian masks;
-#X obj 470 393 cnv 15 50 15 empty empty empty 20 12 0 14 -260818 -66577
-0;
-#X text 470 393 Sharpen;
-#X obj -21 383 #clip;
-#X obj 190 118 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577
-0;
-#X obj 210 97 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577
-0;
-#X text 146 97 <-- step #1: load image;
-#X obj 173 141 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577
-0;
-#X text 109 141 <-- step #3: start metro;
-#X text 154 118 step #2: select transformation -->;
-#X text 468 52 Blurs;
-#N canvas 0 0 450 300 META 0;
-#X restore 69 473 pd META;
-#X text -44 -140 2 Introduction to Images;
-#X text -44 -112 2.4 Image Manipulation;
-#X obj -49 24 cnv 15 780 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text -49 23 (Source convolve.pd : Copyright Mathieu Bouchard 2002)
-;
-#X text -16 -67 Convolve is an abstraction used for modifying an image.
-In this patch you can choose to create a "blur" \, to view "edge detection"
-\, to add a "laplacian mask" or to "sharpen" an image. The image must
-be loaded \, the transformation selected and the metro started before
-seeing the transformation applied to the image.;
-#X obj -17 -89 cnv 15 100 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text -17 -90 2.4.4 Convolve;
-#X connect 0 0 18 0;
-#X connect 0 0 14 1;
-#X connect 0 0 21 0;
-#X connect 1 0 18 0;
-#X connect 1 0 14 1;
-#X connect 2 0 14 0;
-#X connect 3 0 16 0;
-#X connect 4 0 18 0;
-#X connect 4 0 14 1;
-#X connect 5 0 22 0;
-#X connect 6 0 14 1;
-#X connect 6 0 20 0;
-#X connect 7 0 13 0;
-#X connect 8 0 18 0;
-#X connect 8 0 14 1;
-#X connect 9 0 12 0;
-#X connect 10 0 42 0;
-#X connect 11 0 32 0;
-#X connect 12 0 2 0;
-#X connect 13 0 2 1;
-#X connect 13 0 5 0;
-#X connect 14 0 3 0;
-#X connect 15 0 4 0;
-#X connect 16 0 10 0;
-#X connect 16 1 31 0;
-#X connect 17 0 16 1;
-#X connect 18 0 17 0;
-#X connect 19 0 42 0;
-#X connect 20 0 17 0;
-#X connect 22 0 23 0;
-#X connect 27 0 18 0;
-#X connect 27 0 14 1;
-#X connect 28 0 14 1;
-#X connect 28 0 20 0;
-#X connect 29 0 20 0;
-#X connect 29 0 14 1;
-#X connect 30 0 18 0;
-#X connect 30 0 14 1;
-#X connect 31 0 19 0;
-#X connect 32 0 7 0;
-#X connect 42 0 13 0;
diff --git a/externals/gridflow/doc/tutorials/2-3-6-image-modification-2-cross-fade.pd b/externals/gridflow/doc/tutorials/2-3-6-image-modification-2-cross-fade.pd
deleted file mode 100755
index 6b8fe50a..00000000
--- a/externals/gridflow/doc/tutorials/2-3-6-image-modification-2-cross-fade.pd
+++ /dev/null
@@ -1,93 +0,0 @@
-#N canvas 92 129 774 521 10;
-#X text 24 355 note: the #layer/#join objects can make the crossfade
-process simpler but it's still not faster.;
-#X obj 14 95 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1;
-#X obj 14 120 metro 33.3667;
-#X obj 14 140 float;
-#X obj 26 169 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
--262144 -1 -1 0 256;
-#X obj 58 139 + 4;
-#X obj 14 190 pingpong 256;
-#X obj 25 212 hsl 129 15 0 256 0 0 empty empty empty -2 -6 0 8 -260818
--1 -1 0 1;
-#X text 25 393 also #draw_image/#join is a possibility;
-#X obj 13 40 cnv 15 680 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 27 53 Copyright 2002 Mathieu Bouchard;
-#X text 27 37 cross_fade.pd;
-#X obj 6 324 cnv 15 680 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 18 326 GridFlow 0.8.0;
-#N canvas 515 126 450 300 cross_fade 0;
-#X obj 40 198 # *>>8;
-#X text 67 242 first picture plus a fraction of the difference;
-#X obj 40 240 # +;
-#X obj 40 177 #store;
-#X obj 264 137 # inv+;
-#X obj 95 261 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0 1
-;
-#X msg 422 195 open r001.jpg \, cast int16 \, bang;
-#X obj 321 156 #in;
-#X obj 40 156 #finished;
-#X text 116 264 click to clip out-of-range colours;
-#X text 89 197 multiply by a N/256 fraction;
-#X obj 88 302 # max 0;
-#X obj 254 89 #in;
-#X obj 88 281 # min 255;
-#X obj 44 337 #out window;
-#X obj 40 116 #cast int16;
-#X text 88 177 keep the difference between both pictures;
-#X obj 447 99 t b b;
-#X obj 445 74 loadbang;
-#X obj 40 260 shunt 2;
-#X obj 40 135 t a a;
-#X msg 459 137 open g001.jpg \, cast int16 \, bang;
-#X obj 30 75 inlet;
-#X connect 0 0 2 0;
-#X connect 2 0 19 0;
-#X connect 3 0 0 0;
-#X connect 4 0 3 1;
-#X connect 5 0 19 1;
-#X connect 6 0 7 0;
-#X connect 7 0 4 1;
-#X connect 8 0 3 0;
-#X connect 11 0 14 0;
-#X connect 12 0 4 0;
-#X connect 12 0 2 1;
-#X connect 13 0 11 0;
-#X connect 15 0 20 0;
-#X connect 17 0 21 0;
-#X connect 17 1 6 0;
-#X connect 18 0 17 0;
-#X connect 19 0 14 0;
-#X connect 19 1 13 0;
-#X connect 20 0 8 0;
-#X connect 20 1 0 1;
-#X connect 21 0 12 0;
-#X connect 22 0 15 0;
-#X restore 13 261 pd cross_fade;
-#X obj 15 11 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 18 11 What is a grid?;
-#X obj 15 -24 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 20 -25 2 Images;
-#X text 22 -11 Description: opening multiple images from one window.
-;
-#X obj 11 416 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 19 423 GridFlow 0.8.0;
-#X text 219 118 some objects have been created to perform specoific
-tasks. One of these is the crossfade patch it permits you to fade from
-one image to another. you can chose the images you want to ping pong
-between \, to get a nice steady fade between two images.;
-#N canvas 0 0 450 300 META 0;
-#X restore 146 428 pd META;
-#X connect 1 0 2 0;
-#X connect 2 0 3 0;
-#X connect 3 0 4 0;
-#X connect 3 0 5 0;
-#X connect 3 0 6 0;
-#X connect 5 0 3 1;
-#X connect 6 0 7 0;
-#X connect 6 0 14 0;
diff --git a/externals/gridflow/doc/tutorials/2nd-part-numop.pd b/externals/gridflow/doc/tutorials/2nd-part-numop.pd
deleted file mode 100755
index a6f96f9c..00000000
--- a/externals/gridflow/doc/tutorials/2nd-part-numop.pd
+++ /dev/null
@@ -1,80 +0,0 @@
-#N canvas 66 33 927 601 10;
-#X obj 16 -206 cnv 15 200 170 empty empty empty 20 12 0 14 -228992
--66577 0;
-#X obj 38 -178 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X obj 24 -127 #in;
-#X obj 82 -114 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -241291
--1 -1 0 1;
-#X obj 24 -88 # + \$1;
-#X obj 125 -157 metro 33.3;
-#X obj 125 -177 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0
-1;
-#X obj 462 -153 cnv 15 400 350 empty empty empty 20 12 0 14 -228992
--66577 0;
-#X obj 482 -109 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X obj 468 -30 #in;
-#X msg 468 -132 open b001.jpg;
-#X obj 508 -49 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -241291
--1 -1 0 1;
-#X obj 468 84 # + \$1;
-#X obj 514 -109 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1
-1;
-#X obj 468 128 #clip;
-#X obj 24 -60 s slider_metro;
-#X obj 468 154 s slider_metro_clip;
-#X floatatom 79 -86 5 0 0 0 - - -;
-#X text 10 210 In all these examples the [# +] numop is used. All the
-numeric operators can be found in the numeric operator help patch (right
-click on the [# +] and select help to view them). If you want to see
-what effects other numops can do \, try replacing the [# +] numop with
-another one (either cut and past a different numop from the help file
-or create the object in the current canvas.;
-#X obj 514 -89 metro 33.3;
-#X obj 552 -21 #color;
-#X msg 552 44 255 0 0;
-#X text 614 44 donner une liste changer couleurs;
-#X obj 552 88 #scale_by (8 8);
-#X msg 552 66 2 2 3 # 255 0 0 0 255 0 0 0 255 191 191 191;
-#X obj 834 211 r slider_metro;
-#X obj 843 238 r slider_metro_clip;
-#X obj 834 265 #out window;
-#X obj 16 -284 cnv 15 70 15 empty empty empty 20 12 0 14 -260818 -66577
-0;
-#X text 15 -284 Example #4;
-#X text 15 -261 Will demonstrate how to use the metro (see pd_intro
-#4) and the slider which allows you to scroll through values and modify
-a grid in real-time.;
-#X msg 24 -202 open b001.jpg;
-#X obj 456 -281 cnv 15 70 15 empty empty empty 20 12 0 14 -260818 -66577
-0;
-#X text 455 -281 Example #5;
-#X text 457 -260 We introduce the [#clip] object. It is used with numops
-in order to set constraints on the pixel to eliminate color wrapping.
-Colour wrapping occurs when the individual pixel values in a grid exceed
-255 which results in over-saturation of colour. GridFlow reads colours
-as values from 0 (black) to 255 (white). Refer to glossary for more
-information on colour.;
-#X connect 1 0 2 0;
-#X connect 2 0 4 0;
-#X connect 3 0 4 1;
-#X connect 3 0 17 0;
-#X connect 4 0 15 0;
-#X connect 5 0 2 0;
-#X connect 6 0 5 0;
-#X connect 8 0 9 0;
-#X connect 9 0 12 0;
-#X connect 10 0 9 0;
-#X connect 11 0 12 1;
-#X connect 12 0 14 0;
-#X connect 13 0 19 0;
-#X connect 14 0 16 0;
-#X connect 19 0 9 0;
-#X connect 20 0 12 1;
-#X connect 21 0 12 1;
-#X connect 23 0 12 1;
-#X connect 24 0 23 0;
-#X connect 25 0 27 0;
-#X connect 26 0 27 0;
-#X connect 31 0 2 0;
diff --git a/externals/gridflow/doc/tutorials/3-1-0-open-video.pd b/externals/gridflow/doc/tutorials/3-1-0-open-video.pd
deleted file mode 100755
index 2abf0e74..00000000
--- a/externals/gridflow/doc/tutorials/3-1-0-open-video.pd
+++ /dev/null
@@ -1,38 +0,0 @@
-#N canvas 48 56 545 431 10;
-#X obj 100 156 #in;
-#X obj 100 222 #out window;
-#X obj 124 33 openpanel;
-#X obj 124 9 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X msg 124 58 open \$1;
-#X obj 17 11 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1;
-#X obj 17 45 metro 33.33;
-#X floatatom 317 190 5 0 0 0 - - -;
-#X obj 401 166 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 401 193 print go;
-#X msg 201 124 loop 0;
-#X msg 201 97 loop 1;
-#X msg 283 13 open home/steph/Desktop/PDDP_summer;
-#X obj 7 -37 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 10 -37 What is a grid?;
-#X obj 7 -72 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 12 -73 2 Images;
-#X text 14 -59 Description: opening multiple images from one window.
-;
-#X obj 8 320 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 16 327 GridFlow 0.8.0;
-#X connect 0 0 1 0;
-#X connect 0 1 7 0;
-#X connect 2 0 4 0;
-#X connect 3 0 2 0;
-#X connect 4 0 0 0;
-#X connect 5 0 6 0;
-#X connect 6 0 0 0;
-#X connect 8 0 9 0;
-#X connect 10 0 0 0;
-#X connect 11 0 0 0;
-#X connect 12 0 0 0;
diff --git a/externals/gridflow/doc/tutorials/3-2-video-manipulation.pd b/externals/gridflow/doc/tutorials/3-2-video-manipulation.pd
deleted file mode 100755
index 78a7b427..00000000
--- a/externals/gridflow/doc/tutorials/3-2-video-manipulation.pd
+++ /dev/null
@@ -1 +0,0 @@
-#N canvas 0 0 450 300 10;
diff --git a/externals/gridflow/doc/tutorials/3-3-record-video.pd b/externals/gridflow/doc/tutorials/3-3-record-video.pd
deleted file mode 100755
index ff158554..00000000
--- a/externals/gridflow/doc/tutorials/3-3-record-video.pd
+++ /dev/null
@@ -1,51 +0,0 @@
-#N canvas 151 21 517 609 10;
-#X obj 15 320 #camera;
-#X obj 15 260 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
-;
-#X obj 142 370 #out window;
-#X obj 90 260 hsl 128 15 20 300 0 0 empty empty empty -2 -6 0 8 -260818
--1 -1 0 1;
-#X obj 142 395 fps detailed;
-#X obj 142 419 print;
-#X obj 15 294 metro 100;
-#X obj 53 473 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 129 506 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 149 505 stop recording;
-#X text 73 471 select filename;
-#X text 111 488 start recording;
-#X obj 91 489 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 15 528 #record_quicktime;
-#X text 21 54 To record a video from a live stream or a video... you
-can use this patch.;
-#X text 224 315 xinitrc ssh pdrc bach rc export bookmarks;
-#X text 11 110 The outside of the patch uses objects seen in previous
-patches. The [#record_quicktime] object is an abstraction in which
-the settings and the optins are situated. to contruct the patch ...
-Do we explain how to do it if it is in an abstraction???;
-#X text 86 198 we don't nec have to explain how to build it since its
-available to them through the pd_examples and they have been through
-enough patvhes to easily understand what's going on.;
-#X obj 11 29 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 14 29 What is a grid?;
-#X obj 11 -6 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 21 -7 2 Images;
-#X text 18 7 Description: opening multiple images from one window.
-;
-#X obj 13 561 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 21 568 GridFlow 0.8.0;
-#X connect 0 0 2 0;
-#X connect 0 0 13 0;
-#X connect 1 0 6 0;
-#X connect 2 0 4 0;
-#X connect 3 0 6 1;
-#X connect 4 0 5 0;
-#X connect 6 0 0 0;
-#X connect 7 0 13 1;
-#X connect 8 0 13 3;
-#X connect 12 0 13 2;
diff --git a/externals/gridflow/doc/tutorials/4-0-open-live-stream.pd b/externals/gridflow/doc/tutorials/4-0-open-live-stream.pd
deleted file mode 100755
index 7ce60b4d..00000000
--- a/externals/gridflow/doc/tutorials/4-0-open-live-stream.pd
+++ /dev/null
@@ -1,24 +0,0 @@
-#N canvas 286 99 571 305 10;
-#X obj 91 104 #camera;
-#X obj 40 40 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
-;
-#X obj 91 12 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1;
-#X obj 91 59 metro 50;
-#X obj 91 151 #out window;
-#X text 162 103 In this case there is no need for the [#in] objec.
-Thereis one in the [#camera] object already.;
-#X obj 7 -37 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 10 -37 What is a grid?;
-#X obj 7 -72 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 12 -73 2 Images;
-#X text 14 -59 Description: opening multiple images from one window.
-;
-#X obj 10 197 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 18 204 GridFlow 0.8.0;
-#X connect 0 0 4 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X connect 3 0 0 0;
diff --git a/externals/gridflow/doc/tutorials/4-1-2-simple-motion-detection-absolute-value.pd b/externals/gridflow/doc/tutorials/4-1-2-simple-motion-detection-absolute-value.pd
deleted file mode 100755
index a4021d41..00000000
--- a/externals/gridflow/doc/tutorials/4-1-2-simple-motion-detection-absolute-value.pd
+++ /dev/null
@@ -1,31 +0,0 @@
-#N canvas 452 202 450 438 10;
-#X obj 91 104 #camera;
-#X obj 40 40 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
-;
-#X obj 91 12 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1;
-#X obj 91 59 metro 50;
-#X obj 100 253 #out window;
-#X obj 88 134 trigger anything anything;
-#X obj 133 162 # -;
-#X obj 133 201 #clip;
-#X obj 343 223 @! abs;
-#X obj 343 254 # + 50;
-#X obj 7 -37 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 10 -37 What is a grid?;
-#X obj 7 -72 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 12 -73 2 Images;
-#X text 14 -59 Description: opening multiple images from one window.
-;
-#X obj 8 320 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 16 327 GridFlow 0.8.0;
-#X connect 0 0 5 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X connect 3 0 0 0;
-#X connect 5 0 6 1;
-#X connect 5 1 6 0;
-#X connect 6 0 7 0;
-#X connect 7 0 4 0;
diff --git a/externals/gridflow/doc/tutorials/4-1-3-motion-detection-more-advanced-and-more-options.pd b/externals/gridflow/doc/tutorials/4-1-3-motion-detection-more-advanced-and-more-options.pd
deleted file mode 100755
index 112d2f8c..00000000
--- a/externals/gridflow/doc/tutorials/4-1-3-motion-detection-more-advanced-and-more-options.pd
+++ /dev/null
@@ -1,49 +0,0 @@
-#N canvas 476 26 450 542 10;
-#X obj 91 104 #camera;
-#X obj 248 302 #out window;
-#X obj 40 40 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
-;
-#X text 167 102 there is an [#in] within [#camera];
-#X obj 80 12 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1;
-#X obj 248 325 fps detailed;
-#X obj 248 351 print;
-#X obj 108 20 metro 50;
-#X obj 248 198 # -;
-#X obj 248 269 #clip;
-#X obj 248 220 @! abs;
-#X obj 248 244 # + 50;
-#X obj 164 141 trigger anything anything;
-#X text 281 197 230400 (240x320x3);
-#X obj 101 303 #rgb_to_greyscale;
-#X obj 101 326 #centroid;
-#X floatatom 154 404 5 0 0 0 - - -;
-#X floatatom 200 403 5 0 0 0 - - -;
-#X obj 85 375 display;
-#X obj 7 -37 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 10 -37 What is a grid?;
-#X obj 7 -72 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 12 -73 2 Images;
-#X text 14 -59 Description: opening multiple images from one window.
-;
-#X obj 6 432 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 14 439 GridFlow 0.8.0;
-#X connect 0 0 12 0;
-#X connect 1 0 5 0;
-#X connect 2 0 0 0;
-#X connect 4 0 7 0;
-#X connect 5 0 6 0;
-#X connect 7 0 0 0;
-#X connect 8 0 10 0;
-#X connect 9 0 1 0;
-#X connect 9 0 14 0;
-#X connect 10 0 11 0;
-#X connect 11 0 9 0;
-#X connect 12 0 8 1;
-#X connect 12 1 8 0;
-#X connect 14 0 15 0;
-#X connect 15 0 18 0;
-#X connect 15 1 16 0;
-#X connect 15 2 17 0;
diff --git a/externals/gridflow/doc/tutorials/4-1-simple-motion-detection.pd b/externals/gridflow/doc/tutorials/4-1-simple-motion-detection.pd
deleted file mode 100755
index bb3962a1..00000000
--- a/externals/gridflow/doc/tutorials/4-1-simple-motion-detection.pd
+++ /dev/null
@@ -1,37 +0,0 @@
-#N canvas 83 181 707 437 10;
-#X obj 91 104 #camera;
-#X obj 40 40 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
-;
-#X obj 91 12 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1;
-#X obj 91 59 metro 50;
-#X obj 100 253 #out window;
-#X obj 40 136 trigger anything anything;
-#X obj 89 187 # -;
-#X obj 89 226 #clip;
-#X text 245 235 as a short cut you can use [t a a]. The values of one
-frame are substracted from the previous frame only keeps the difference
-and gives allows you to see the movement that occured between the first
-seconde frame in relation to the first one.;
-#X text 242 38 Motion detection is a way to view only the movement
-in a space. Movement can be detected in darkness and seen as a video
-image. the detection occurs when one frame it substractes the current
-frame froom the last frame.;
-#X obj 7 -37 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 10 -37 What is a grid?;
-#X obj 7 -72 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 12 -73 2 Images;
-#X text 14 -59 Description: opening multiple images from one window.
-;
-#X obj 8 320 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 16 327 GridFlow 0.8.0;
-#X connect 0 0 5 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X connect 3 0 0 0;
-#X connect 5 0 6 1;
-#X connect 5 1 6 0;
-#X connect 6 0 7 0;
-#X connect 7 0 4 0;
diff --git a/externals/gridflow/doc/tutorials/PD-GF-Lecture.pd b/externals/gridflow/doc/tutorials/PD-GF-Lecture.pd
deleted file mode 100755
index 1f7b6d52..00000000
--- a/externals/gridflow/doc/tutorials/PD-GF-Lecture.pd
+++ /dev/null
@@ -1,80 +0,0 @@
-#N canvas 23 16 880 578 10;
-#X obj 5 6 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 5 550 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 666 549 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
-;
-#X text 9 13 Welcome to Pure-Data...;
-#X obj 6 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 11 46 What is Pure-Data (aka PD)?;
-#X obj 4 233 cnv 15 430 145 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X obj 25 271 pddp_open pure-data-1;
-#X obj 25 294 pddp_open pure-data-2;
-#X obj 25 317 pddp_open pure-data-3;
-#X obj 25 340 pddp_open pure-data-4;
-#X text 200 271 Pure-Data Introduction;
-#X text 200 294 GUI Objects for Interaction;
-#X text 200 317 Creating your first patch;
-#X text 200 340 Control: metro \, random & counter;
-#X obj 444 233 cnv 15 430 145 empty empty empty 20 12 0 14 -179884
--66577 0;
-#X obj 5 391 cnv 15 430 145 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X obj 25 416 pddp_open pure-data-5;
-#X obj 25 439 pddp_open pure-data-6;
-#X text 200 439 The powerful message object;
-#X obj 25 462 pddp_open pure-data-7;
-#X text 200 462 More about lists;
-#X text 200 485 Nesting collections of objects;
-#X text 200 416 Connectionless communications;
-#X obj 25 485 pddp_open pure-data-8;
-#X text 200 509 Using GUI's in abstractions;
-#X obj 25 509 pddp_open pure-data-9;
-#X obj 445 391 cnv 15 430 145 empty empty empty 20 12 0 14 -179884
--66577 0;
-#X text 642 296 Introduction to Images;
-#X obj 468 271 pddp_open GridFlow-1;
-#X obj 468 294 pddp_open GridFlow-2;
-#X obj 468 317 pddp_open GridFlow-3;
-#X obj 468 340 pddp_open GridFlow-4;
-#X text 642 319 Introduction to video;
-#X text 642 342 Introduction to Live Feeds;
-#X obj 446 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 451 46 What is GridFLow?;
-#X text 642 457 Putting it all together;
-#X text 641 428 Interfacing with sensors;
-#X text 642 273 Introduction to Grids;
-#X obj 467 429 pddp_open GridFlow-6;
-#X obj 467 452 pddp_open GridFlow-7;
-#X text 451 236 2 Introduction to GridFlow;
-#X text 454 144 This section deals with the particular objects related
-to GridFlow. GridFlow uses the usual PD "control" objects \, as well
-as a set of GridFlow specific objects. Before we get into the tutorials
-we will explain the grid "#" \, the most important concept in GridFlow.
-;
-#X text 453 84 GridFlow is a plug-in for PureData that introduces the
-frid (#) data type into the PD environment. GridFlow allows you to
-work with live video \, still images and video files in a real-time
-environment.;
-#X text 14 85 Pure-Data is an open-source patching environment for
-multi-media (audio+image). Pure-Data is a programming language where
-you create relationships by connecting visual boxes (rather than typing
-complex commands). This lecture is separated into three sections: An
-Introduction to Pure-Data \, An introduction to GridFlow and intermediate
-PD and GridFlow.;
-#X obj 448 236 cnv 15 15 15 empty empty empty 20 12 0 14 -262144 -66577
-0;
-#X text 451 236 2 Introduction to GridFlow;
-#X obj 8 395 cnv 15 15 15 empty empty empty 20 12 0 14 -262144 -66577
-0;
-#X obj 449 395 cnv 15 15 15 empty empty empty 20 12 0 14 -262144 -66577
-0;
-#X obj 7 236 cnv 15 15 15 empty empty empty 20 12 0 14 -262144 -66577
-0;
-#X text 452 395 4 Intermediate GridFlow;
-#X text 10 236 1 Introduction to Pure-Data;
-#X text 11 395 3 Intermediate Pure-Data;
diff --git a/externals/gridflow/doc/tutorials/PD-Lecture.pd b/externals/gridflow/doc/tutorials/PD-Lecture.pd
deleted file mode 100755
index e2f269c5..00000000
--- a/externals/gridflow/doc/tutorials/PD-Lecture.pd
+++ /dev/null
@@ -1,64 +0,0 @@
-#N canvas 116 102 890 501 10;
-#X obj 8 6 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 457 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 668 459 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
-;
-#X text 12 13 Welcome to Pure-Data...;
-#X obj 8 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 13 46 What is Pure-Data (aka PD)?;
-#X text 28 74 Pure-Data is an open-source patching environment for
-multi-media (audio+image). Pure-Data is a programming language where
-you create relationships by connecting visual boxes (rather than typing
-complex commands). This lecture is separated into three sections: An
-Introduction to Pure-Data \, An introduction to Gem and intermediate
-PD and Gem.;
-#X obj 8 176 cnv 15 430 120 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X obj 22 198 pddp_open pure-data-1;
-#X obj 22 221 pddp_open pure-data-2;
-#X obj 22 244 pddp_open pure-data-3;
-#X obj 22 267 pddp_open pure-data-4;
-#X text 197 198 Pure-Data Introduction;
-#X text 197 221 GUI Objects for Interaction;
-#X text 197 244 Creating your first patch;
-#X text 197 267 Control: metro \, random & counter;
-#X obj 8 306 cnv 15 430 145 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 13 176 Introduction to Pure-Data;
-#X text 13 306 Introduction to Gem (Graphics Environment for Multimedia)
-;
-#X obj 22 328 pddp_open gem-1;
-#X obj 22 351 pddp_open gem-2;
-#X obj 22 374 pddp_open gem-3;
-#X obj 22 397 pddp_open gem-4;
-#X obj 22 421 pddp_open gem-5;
-#X text 197 328 Gem Introduction;
-#X text 197 351 What are gemchains?;
-#X text 197 374 translate \, rotate and scale;
-#X text 197 397 Texturing using pix objects;
-#X text 197 421 Video & Free Exploration;
-#X obj 448 46 cnv 15 430 145 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 453 46 Intermediate Pure-Data;
-#X obj 462 68 pddp_open pure-data-5;
-#X obj 462 91 pddp_open pure-data-6;
-#X text 637 91 The powerful message object;
-#X obj 462 114 pddp_open pure-data-7;
-#X text 637 114 More about lists;
-#X text 637 137 Nesting collections of objects;
-#X text 637 68 Connectionless communications;
-#X obj 462 137 pddp_open pure-data-8;
-#X text 637 161 Using GUI's in abstractions;
-#X obj 462 161 pddp_open pure-data-9;
-#X obj 448 200 cnv 15 430 95 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 637 222 Grouping Gem entities;
-#X text 637 245 Gem render order;
-#X text 453 200 Intermediate Gem;
-#X obj 462 222 pddp_open gem-6;
-#X obj 462 245 pddp_open gem-7;
-#X obj 462 268 pddp_open gem-8;
-#X text 637 268 Video Tracking & Pixel Operations;
diff --git a/externals/gridflow/doc/tutorials/colors.pd b/externals/gridflow/doc/tutorials/colors.pd
deleted file mode 100755
index 39582d52..00000000
--- a/externals/gridflow/doc/tutorials/colors.pd
+++ /dev/null
@@ -1,12 +0,0 @@
-#N canvas 50 148 450 206 10;
-#X obj -10 -171 #pack 3;
-#X obj 46 -203 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -241291
--1 -1 0 1;
-#X obj 46 -223 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -241291
--1 -1 0 1;
-#X obj 46 -243 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -241291
--1 -1 0 1;
-#X obj -6 -132 #color;
-#X connect 1 0 0 2;
-#X connect 2 0 0 1;
-#X connect 3 0 0 0;
diff --git a/externals/gridflow/doc/tutorials/d_gf_2_0-Intro_to_images_open_image.pd b/externals/gridflow/doc/tutorials/d_gf_2_0-Intro_to_images_open_image.pd
deleted file mode 100644
index a95ac185..00000000
--- a/externals/gridflow/doc/tutorials/d_gf_2_0-Intro_to_images_open_image.pd
+++ /dev/null
@@ -1,62 +0,0 @@
-#N canvas 0 0 887 417 10;
-#X obj 4 278 cnv 15 868 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 12 285 GridFlow 0.8.0;
-#X obj 5 -67 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 5 -106 cnv 15 868 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 5 -106 cnv 15 780 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 12 -99 2 Introduction to Images;
-#X text 556 86 <--- click here;
-#N canvas 0 0 450 300 META 0;
-#X restore 126 285 pd META;
-#X obj 452 191 #out window;
-#X msg 452 84 open b001.jpg;
-#X obj 473 107 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X text 13 84 step 3: Add a [bang<.;
-#X text 13 105 step 4: Create a [#out window].;
-#X text 13 63 step 2: Create [#in] object.;
-#X text 14 27 step 1: create message box [open< with the file name
-and extension you want to open.;
-#X text 506 110 <--- then click here;
-#X obj 447 -67 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 450 -67 1.2 How to create a grid.;
-#X obj 447 -67 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 8 -68 2.1 Opening an image.;
-#X text 456 -66 2.1 Patch example.;
-#X obj 452 130 cnv 15 22 15 empty empty empty 20 12 0 14 -241291 -66577
-0;
-#X obj 452 129 #in;
-#X text 12 150 Tip: In order for GridFlow to be able to find your images
-you have to specify the correct path.;
-#X obj 14 151 cnv 15 25 15 empty empty empty 20 12 0 14 -260818 -66577
-0;
-#X text 12 -33 One of the first things you need to know when working
-with GridFlow is how to open an image. GridFlow accepts several image
-formats (.jpg \, .png \, .tiff etc.).;
-#X text 12 150 Tip: In order for GridFlow to be able to find your images
-you have to specify the correct path. Gridflow has an "images" folder
-\, put them there to access them by filename only.;
-#X obj 451 38 cnv 15 25 15 empty empty empty 20 12 0 14 -260818 -66577
-0;
-#X text 450 38 Tip: Sometimes the display window opens behind the patch
-\, try moving the patch if the display seems to be missing.;
-#X text 447 -45 To view the image you must initialize the patch. This
-is done in "run mode" by clicking on the message box \, and then on
-the bang. The image will be displayed in a display window \, off to
-the side of the patch.;
-#X text 476 216 In order to close the parent window displaying your
-image \, the [#out window] object must be deleted.;
-#X obj 512 133 cnv 15 25 15 empty empty empty 20 12 0 14 -260818 -66577
-0;
-#X text 489 132 <--Tip: remember \, as with the rest of PD \, you can
-obtain information regarding specific objects by right-clicking on
-it. Try this for [#in].;
-#X connect 9 0 22 0;
-#X connect 10 0 22 0;
-#X connect 22 0 8 0;
diff --git a/externals/gridflow/doc/tutorials/d_gf_2_2_1-image-modification-1-numop-all-in-one2.pd b/externals/gridflow/doc/tutorials/d_gf_2_2_1-image-modification-1-numop-all-in-one2.pd
deleted file mode 100644
index ddf83eb1..00000000
--- a/externals/gridflow/doc/tutorials/d_gf_2_2_1-image-modification-1-numop-all-in-one2.pd
+++ /dev/null
@@ -1,127 +0,0 @@
-#N canvas 53 0 670 470 10;
-#X obj 20 -34 cnv 15 130 150 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 70 2 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
-;
-#X obj 35 41 #in;
-#X msg 35 -28 open b001.jpg;
-#X obj 35 91 # +;
-#X obj 21 231 cnv 15 185 150 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 29 313 #in;
-#X msg 29 239 open b001.jpg;
-#X obj 96 323 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -260818
--1 -1 4300 1;
-#X obj 29 349 # + \$1;
-#X obj 54 287 metro 33.3;
-#X obj 54 265 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
-;
-#X obj 82 64 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
-0;
-#X obj 82 42 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
-0;
-#X obj 83 86 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
-0;
-#X msg 82 64 67;
-#X msg 82 42 2;
-#X msg 83 86 199;
-#X floatatom 93 349 5 0 0 0 - - -;
-#X text 21 -501 Numeric Operators (numop): transform an image or video
-by applying a mathematical operation to each pixel value in the grid.
-;
-#X obj 21 -522 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 23 -678 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 18 606 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 27 614 GridFlow 0.8.0;
-#X obj 339 -267 cnv 15 130 150 empty empty empty 20 12 0 14 -228992
--66577 0;
-#X obj 404 -228 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X obj 358 -199 #in;
-#X msg 358 -260 open b001.jpg;
-#X obj 378 -171 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
-0;
-#X obj 20 -352 cnv 15 50 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 23 -86 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 26 -87 Example #2 demonstrates how to send the numop an argument
-using a message box. This method allows you to send the numop several
-different arguments.;
-#X text 35 -671 2.4 Image manipulation;
-#X text 57 -523 2.4.1 Numop;
-#X text 25 -445 To transform a grid (in this case an image) using numop
-\, it must first be given an argument (a number value). That value
-will be applied by numop to every value in the grid. The following
-examples show you the three methods that can be used to give the numop
-an argument.;
-#X obj 35 121 s to_out_window;
-#X obj 358 -142 s to_out_window;
-#X obj 29 382 s to_out_window;
-#X obj 246 546 r to_out_window;
-#X msg 498 547 close;
-#X msg 393 544 open window;
-#X obj 30 -294 cnv 15 200 180 empty empty empty 20 12 0 14 -228992
--66577 0;
-#X obj 161 -215 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
-0;
-#X obj 199 -318 display;
-#X msg 79 -282 1 2 3 4 5 6 7 8 9;
-#X obj 79 -253 #import (3 3);
-#X obj 179 -479 display;
-#X obj 140 -215 # + 42;
-#X obj 358 -171 # + 42;
-#X text 337 -288 Here is an example with an image.;
-#X text 19 -352 Example 1: shows how values in a grid are altered when
-an argument is placed directly into the numeric operator object.;
-#X text 157 63 1 click on the argument;
-#X text 124 6 2 click on the bang to see the updated image;
-#X text 94 8 <--;
-#X text 116 42 <--;
-#X text 116 65 <--;
-#X text 116 87 <--;
-#X text 194 -221 <-- argument in this case is 42;
-#X obj 353 581 #out window;
-#X text 22 433 In all these examples the [# +] numop is used. All the
-numeric operators can be found in the numeric operator help patch (right
-click on the [# +] and select help to view them). If you want to see
-what effects other numops can do \, try replacing the [# +] numop with
-another one (either cut and paste a different numop from the help file
-or create the object in the current canvas.;
-#X obj 20 181 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 26 179 Example #3 using the slider and metro.;
-#X text 467 -617 split into 3 patches using ben's switch arrange canvases
-and colors;
-#X text 24 -635 GridFlow performs high level grid processing \; in
-other words its main function is the manipulation of images and video.
-The numeric operators is one of the most common ways to modify an image.
-;
-#X connect 1 0 2 0;
-#X connect 2 0 4 0;
-#X connect 3 0 2 0;
-#X connect 4 0 35 0;
-#X connect 6 0 9 0;
-#X connect 7 0 6 0;
-#X connect 8 0 9 1;
-#X connect 8 0 18 0;
-#X connect 9 0 37 0;
-#X connect 10 0 6 0;
-#X connect 11 0 10 0;
-#X connect 15 0 4 1;
-#X connect 16 0 4 1;
-#X connect 17 0 4 1;
-#X connect 25 0 26 0;
-#X connect 26 0 48 0;
-#X connect 27 0 26 0;
-#X connect 38 0 58 0;
-#X connect 39 0 58 0;
-#X connect 40 0 58 0;
-#X connect 44 0 45 0;
-#X connect 45 0 46 0;
-#X connect 45 0 47 0;
-#X connect 47 0 43 0;
-#X connect 48 0 36 0;
diff --git a/externals/gridflow/doc/tutorials/d_gf_2_2_2.pd b/externals/gridflow/doc/tutorials/d_gf_2_2_2.pd
deleted file mode 100644
index a918d620..00000000
--- a/externals/gridflow/doc/tutorials/d_gf_2_2_2.pd
+++ /dev/null
@@ -1,68 +0,0 @@
-#N canvas 38 0 687 415 10;
-#X obj 31 -223 cnv 15 243 358 empty empty empty 20 12 0 14 -228992
--66577 0;
-#X obj 39 -141 #in;
-#X msg 39 -215 open b001.jpg;
-#X obj 79 -132 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -260818
--1 -1 0 1;
-#X obj 39 -18 # + \$1;
-#X obj 62 -189 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1
-;
-#X obj 69 76 #clip;
-#X obj 28 -322 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 62 -167 metro 33.3;
-#X obj 94 -99 #color;
-#X obj 23 -678 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 36 168 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 44 175 GridFlow 0.8.0;
-#X obj 39 108 #out window;
-#X text 35 -671 2.2 Image manipulation \, colour wrapping;
-#X obj 12 -518 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 18 -519 Example #1 colour wrapping;
-#X msg 74 -491 240 0 0;
-#X obj 179 -368 display;
-#X obj 74 -457 # + 20;
-#X obj 178 -423 #cast uint8;
-#X obj 23 -368 display;
-#X text 274 -429 <-- This transforms the grid into 8 bit values \,
-that corresponds to the way that images are usually shown in images
-and video;
-#X text 42 -323 Example #2 clipping the values;
-#X text 10 -545 Tip: Refer to glossary for more information on colour.
-;
-#X text 215 -132 <-- add value to all channels at once;
-#X obj 39 37 shunt;
-#X obj 69 11 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1;
-#X text 93 12 <-- switch to see clip's effect;
-#X text 96 38 <-- directs the flow of data;
-#X text 7 -643 When an image is represented as a grid every pixel value
-will vary between 0 and 255 Color wrapping occurs when the result of
-the operation on the pixel value would be higher than 255 Values above
-255 are counted from 0 For example: if a pixel has a red value of 240
-and 20 is added to it \, you get 5 instead of displaying 260 (240 +
-20 - 255 = 5);
-#X text 450 -583 aks matju to fix bug in [display]'s display;
-#X text 32 -301 The [#clip] object is used with numops in order to
-set an lower and upper range to pixel values in order to eliminate
-color wrapping (those nifty 60s effects).;
-#X text 288 -70 <-- drag to add value to specific channel;
-#X text 163 -206 remember to load the image and strat the metro;
-#X connect 1 0 4 0;
-#X connect 2 0 1 0;
-#X connect 3 0 4 1;
-#X connect 4 0 26 0;
-#X connect 5 0 8 0;
-#X connect 6 0 13 0;
-#X connect 8 0 1 0;
-#X connect 9 0 4 1;
-#X connect 17 0 19 0;
-#X connect 19 0 20 0;
-#X connect 19 0 21 0;
-#X connect 20 0 18 0;
-#X connect 26 0 13 0;
-#X connect 26 1 6 0;
-#X connect 27 0 26 1;
diff --git a/externals/gridflow/doc/tutorials/gf_1_0-Introduction_to_grids.pd b/externals/gridflow/doc/tutorials/gf_1_0-Introduction_to_grids.pd
deleted file mode 100755
index fb78a496..00000000
--- a/externals/gridflow/doc/tutorials/gf_1_0-Introduction_to_grids.pd
+++ /dev/null
@@ -1,98 +0,0 @@
-#N canvas 0 207 762 514 10;
-#X obj 470 287 display;
-#X obj 7 6 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 7 -29 cnv 15 970 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 7 -29 cnv 15 780 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 12 661 cnv 15 970 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 20 668 GridFlow 0.8.0;
-#X text 10 6 1.1 What is a grid?;
-#X text 12 -22 1 Introduction to Grids;
-#X text 10 333 GridFlow can create a grid from a list of numbers. The
-[#import] object permits you to set the desired amount of rows and
-columns. A message box permits you to tell the grid which numbers to
-display.;
-#X msg 473 429 3 3 # 6 1 3 6 3 324 6 3 4;
-#X msg 550 169 reset;
-#X msg 494 475 3 3 # 1 0 0 0;
-#X obj 474 572 display;
-#X obj 9 307 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 12 307 1.2 How to create a grid.;
-#X obj 9 307 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 13 307 1.2 How to create a grid using the [#import] object.
-;
-#X text 10 427 1 - Create a list of numbers using a message box. The
-numbers must be seperated by a space. The list can have as many numbers
-as you want but only the amount defined by [#import] will be displayed.
-As you click on the message box the numbers will appear in the grid.
-The numbers are positioned in the grid from left to right and from
-the top to the bottom.;
-#X text 12 605 3 - Connect the objects to a [display] object or a [print]
-object to see the resulting grid. You don't have to "see" the grid
-in order to manipulate it.;
-#X text 558 306 display object;
-#N canvas 0 0 450 300 META 0;
-#X restore 921 616 pd META;
-#X obj 457 6 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 460 6 1.2 How to create a grid.;
-#X obj 457 6 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 663 43 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577
-0;
-#X obj 469 238 cnv 15 92 15 empty empty empty 20 12 0 14 -241291 -66577
-0;
-#X obj 469 237 #import (3 3);
-#X obj 473 520 cnv 15 37 15 empty empty empty 20 12 0 14 -241291 -66577
-0;
-#X obj 473 519 # + 0;
-#X text 8 267 The following examples illustrate how grids are interpreted
-and represented in GridFlow.;
-#X text 3 402 Steps for creating a grid:;
-#X text 11 537 2 - Create the [#import] object and indicate the parameters
-you want as grid dimensions. By indicating 3 3 in brackets following
-[#import] \, you are creating a grid that has 3 rows and 3 columns.
-This 3 by 3 grid will display 9 numbers.;
-#X text 518 516 works like the [#import] object but allows you to put
-your grid parameters and values into one message box;
-#X text 10 29 A grid is composed of rows and columns that contain numeric
-data. For instance \, a checkerboard is a grid that consists in a series
-of rows and columns containing information: a dark square or a light
-square.;
-#X text 10 91 Computers interpret images as three-dimentional grids:
-the rows (height) and columns (width) contain pixel positions. There
-are usually three channels (depth) of rows and columns. Channels are
-the colours that make up an image. Each channel is a single colour
-\, usually red \, green and blue (RGB). Videos are also interpreted
-as grids since they are a series of still images.;
-#X text 9 194 Because GridFlow uses grids \, images and videos are
-represented as such. GridFlow objects that accept or produce grids
-are identified by the number sign "#" (think of that symbol as a mini
-grid). From now on we will refer to images and videos as grids.;
-#X msg 469 44 1 2 3 4 5 6 7 8 9;
-#X msg 537 107 1 2 3 4;
-#X text 466 6 1.2 Patch example.;
-#X text 471 405 Other objects can create grids...;
-#X text 601 42 <-- step 1: click here to view the numbers from the
-list in a grid.;
-#X text 601 104 <-- click here three times to see how import only outputs
-a grid once it recieves the number of values iassociated with its dimensions
-;
-#X text 602 169 <-- resets the grid to only display the numbers from
-the list;
-#X obj 634 236 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577
-0;
-#X text 572 236 <-- step 2: This object creates a grid that is 3 rows
-by 3 columns;
-#X connect 9 0 28 0;
-#X connect 10 0 26 0;
-#X connect 11 0 28 0;
-#X connect 26 0 0 0;
-#X connect 28 0 12 0;
-#X connect 36 0 26 0;
-#X connect 37 0 26 0;
diff --git a/externals/gridflow/doc/tutorials/gf_2-2-3-resize-image_dec_2005.pd b/externals/gridflow/doc/tutorials/gf_2-2-3-resize-image_dec_2005.pd
deleted file mode 100644
index 02cf9166..00000000
--- a/externals/gridflow/doc/tutorials/gf_2-2-3-resize-image_dec_2005.pd
+++ /dev/null
@@ -1,60 +0,0 @@
-#N canvas 127 0 672 603 10;
-#X obj 22 160 metro 10;
-#X obj 22 118 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
-;
-#X floatatom 80 298 5 1 4 0 - - -;
-#X obj 7 -37 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 7 -72 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 26 478 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 34 485 GridFlow 0.8.0;
-#X obj 22 438 #out window;
-#X obj 59 248 #in;
-#X msg 59 225 load bluemarble.jpg;
-#X obj 80 387 #pack 2;
-#X floatatom 124 369 5 1 4 0 - - -;
-#X obj 22 272 #store;
-#X text 21 -67 2.4 Image manipulation;
-#X text 46 -37 2.4.1 Resizing an image;
-#X obj 22 272 #store;
-#X obj 59 202 loadbang;
-#N canvas 0 0 450 300 META 0;
-#X restore 154 484 pd META;
-#X obj 274 226 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577
-0;
-#X obj 23 414 cnv 15 63 15 empty empty empty 20 12 0 14 -241291 -66577
-0;
-#X obj 113 118 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577
-0;
-#X text 49 117 <-- step #2 : start the metro;
-#X obj 22 413 #scale_by;
-#X obj 468 344 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577
-0;
-#X obj 165 379 cnv 15 152 15 empty empty empty 20 12 0 14 -260818 -66577
-0;
-#X text 167 365 changing this number permits you to change the image's
-horizontal parameters.;
-#X text 404 344 <-- step #3 : change the parameters;
-#X text 11 -10 [#scale_by] resizes grids by multiplying its parameters
-(width and height). To resize an image proportionatily a specific scaleing
-size must appylied \, ex: [#scale_by 4].;
-#X text 11 31 [# pack] lets you resize grids by altering the vertical
-and horizontal parameters.;
-#X text 88 157 the metro refreshes the display window so you don't
-have to reload the grid every time it's altered.;
-#X text 210 225 <-- step #1 : load the image;
-#X text 132 295 changing this number changes the grid's vertical parameters.
-(a slider can be connected to [#pack] instead of a number box.;
-#X connect 0 0 12 0;
-#X connect 0 0 15 0;
-#X connect 1 0 0 0;
-#X connect 2 0 10 0;
-#X connect 8 0 12 1;
-#X connect 8 0 15 1;
-#X connect 9 0 8 0;
-#X connect 10 0 22 1;
-#X connect 11 0 10 1;
-#X connect 15 0 22 0;
-#X connect 16 0 9 0;
diff --git a/externals/gridflow/doc/tutorials/gf_2-2-4-greyscale_dec_2005.pd b/externals/gridflow/doc/tutorials/gf_2-2-4-greyscale_dec_2005.pd
deleted file mode 100644
index cbb11af1..00000000
--- a/externals/gridflow/doc/tutorials/gf_2-2-4-greyscale_dec_2005.pd
+++ /dev/null
@@ -1,27 +0,0 @@
-#N canvas 183 58 542 460 10;
-#X obj 21 207 #rgb_to_greyscale;
-#X obj 7 -37 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 7 -72 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 320 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 16 327 GridFlow 0.8.0;
-#X obj 21 178 #in;
-#X text 21 -67 2.4 Image manipulation;
-#X text 48 -37 2.4.2 Greyscale;
-#N canvas 0 0 450 300 META 0;
-#X restore 147 327 pd META;
-#X text 149 242 This patch and other image modifications can be can
-be found in the gridflow help files.;
-#X text 159 102 insert your own images to convert it to greyscale.
-click on the message to load image.;
-#X text 19 4 To convert an image to greyscale use [#rgb_to_greyscale].
-It transforms colour information into a black to white gradient.;
-#X obj 33 157 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X msg 21 135 open bluemarble.jpg;
-#X obj 21 282 #out window;
-#X connect 5 0 0 0;
-#X connect 12 0 5 0;
-#X connect 13 0 5 0;
diff --git a/externals/gridflow/doc/tutorials/gf_2_0-Intro_to_images_open_image.pd b/externals/gridflow/doc/tutorials/gf_2_0-Intro_to_images_open_image.pd
deleted file mode 100755
index ea6aa98d..00000000
--- a/externals/gridflow/doc/tutorials/gf_2_0-Intro_to_images_open_image.pd
+++ /dev/null
@@ -1,62 +0,0 @@
-#N canvas 0 0 894 417 10;
-#X obj 4 278 cnv 15 868 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 12 285 GridFlow 0.8.0;
-#X obj 5 -67 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 5 -106 cnv 15 868 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 5 -106 cnv 15 780 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 12 -99 2 Introduction to Images;
-#X text 556 86 <--- click here;
-#N canvas 0 0 450 300 META 0;
-#X restore 126 285 pd META;
-#X obj 452 191 #out window;
-#X msg 452 84 open b001.jpg;
-#X obj 473 107 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X text 13 84 step 3: Add a [bang<.;
-#X text 13 105 step 4: Create a [#out window].;
-#X text 13 63 step 2: Create [#in] object.;
-#X text 14 27 step 1: create message box [open< with the file name
-and extension you want to open.;
-#X text 506 110 <--- then click here;
-#X obj 447 -67 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 450 -67 1.2 How to create a grid.;
-#X obj 447 -67 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 8 -68 2.1 Opening an image.;
-#X text 456 -66 2.1 Patch example.;
-#X obj 452 130 cnv 15 22 15 empty empty empty 20 12 0 14 -241291 -66577
-0;
-#X obj 452 129 #in;
-#X text 12 150 Tip: In order for GridFlow to be able to find your images
-you have to specify the correct path.;
-#X obj 14 151 cnv 15 25 15 empty empty empty 20 12 0 14 -260818 -66577
-0;
-#X text 12 -33 One of the first things you need to know when working
-with GridFlow is how to open an image. GridFlow accepts several image
-formats (.jpg \, .png \, .tiff etc.).;
-#X text 12 150 Tip: In order for GridFlow to be able to find your images
-you have to specify the correct path. Gridflow has an "images" folder
-\, put them there to access them by filename only.;
-#X obj 451 38 cnv 15 25 15 empty empty empty 20 12 0 14 -260818 -66577
-0;
-#X text 450 38 Tip: Sometimes the display window opens behind the patch
-\, try moving the patch if the display seems to be missing.;
-#X text 447 -45 To view the image you must initialize the patch. This
-is done in "run mode" by clicking on the message box \, and then on
-the bang. The image will be displayed in a display window \, off to
-the side of the patch.;
-#X text 476 216 In order to close the parent window displaying your
-image \, the [#out window] object must be deleted.;
-#X obj 512 133 cnv 15 25 15 empty empty empty 20 12 0 14 -260818 -66577
-0;
-#X text 489 132 <--Tip: remember \, as with the rest of PD \, you can
-obtain information regarding specific objects by right-clicking on
-it. Try this for [#in].;
-#X connect 9 0 22 0;
-#X connect 10 0 22 0;
-#X connect 22 0 8 0;
diff --git a/externals/gridflow/doc/tutorials/gf_2_2_1-image-modification-1-numop-all-in-one2.pd b/externals/gridflow/doc/tutorials/gf_2_2_1-image-modification-1-numop-all-in-one2.pd
deleted file mode 100755
index cc1d1902..00000000
--- a/externals/gridflow/doc/tutorials/gf_2_2_1-image-modification-1-numop-all-in-one2.pd
+++ /dev/null
@@ -1,127 +0,0 @@
-#N canvas 53 0 670 470 10;
-#X obj 20 -34 cnv 15 130 150 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 70 2 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
-;
-#X obj 35 41 #in;
-#X msg 35 -28 open b001.jpg;
-#X obj 35 91 # +;
-#X obj 21 231 cnv 15 185 150 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 29 313 #in;
-#X msg 29 239 open b001.jpg;
-#X obj 96 323 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -260818
--1 -1 4300 1;
-#X obj 29 349 # + \$1;
-#X obj 54 287 metro 33.3;
-#X obj 54 265 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
-;
-#X obj 82 64 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
-0;
-#X obj 82 42 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
-0;
-#X obj 83 86 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
-0;
-#X msg 82 64 67;
-#X msg 82 42 2;
-#X msg 83 86 199;
-#X floatatom 93 349 5 0 0 0 - - -;
-#X text 21 -501 Numeric Operators (numop): transform an image or video
-by applying a mathematical operation to each pixel value in the grid.
-;
-#X obj 21 -522 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 23 -678 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 18 606 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 27 614 GridFlow 0.8.0;
-#X obj 339 -267 cnv 15 130 150 empty empty empty 20 12 0 14 -228992
--66577 0;
-#X obj 404 -228 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X obj 358 -199 #in;
-#X msg 358 -260 open b001.jpg;
-#X obj 378 -171 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
-0;
-#X obj 20 -352 cnv 15 50 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 23 -86 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 26 -87 Example #2 demonstrates how to send the numop an argument
-using a message box. This method allows you to send the numop several
-different arguments.;
-#X text 35 -671 2.4 Image manipulation;
-#X text 57 -523 2.4.1 Numop;
-#X text 25 -445 To transform a grid (in this case an image) using numop
-\, it must first be given an argument (a number value). That value
-will be applied by numop to every value in the grid. The following
-examples show you the three methods that can be used to give the numop
-an argument.;
-#X obj 35 121 s to_out_window;
-#X obj 358 -142 s to_out_window;
-#X obj 29 382 s to_out_window;
-#X obj 246 546 r to_out_window;
-#X msg 498 547 close;
-#X msg 393 544 open window;
-#X obj 30 -294 cnv 15 200 180 empty empty empty 20 12 0 14 -228992
--66577 0;
-#X obj 161 -215 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
-0;
-#X obj 199 -318 display;
-#X msg 79 -282 1 2 3 4 5 6 7 8 9;
-#X obj 79 -253 #import (3 3);
-#X obj 179 -479 display;
-#X obj 140 -215 # + 42;
-#X obj 358 -171 # + 42;
-#X text 337 -288 Here is an example with an image.;
-#X text 19 -352 Example 1: shows how values in a grid are altered when
-an argument is placed directly into the numeric operator object.;
-#X text 157 63 1 click on the argument;
-#X text 124 6 2 click on the bang to see the updated image;
-#X text 94 8 <--;
-#X text 116 42 <--;
-#X text 116 65 <--;
-#X text 116 87 <--;
-#X text 194 -221 <-- argument in this case is 42;
-#X obj 353 581 #out window;
-#X text 22 433 In all these examples the [# +] numop is used. All the
-numeric operators can be found in the numeric operator help patch (right
-click on the [# +] and select help to view them). If you want to see
-what effects other numops can do \, try replacing the [# +] numop with
-another one (either cut and paste a different numop from the help file
-or create the object in the current canvas.;
-#X obj 20 181 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 26 179 Example #3 using the slider and metro.;
-#X text 467 -617 split into 3 patches using ben's switch arrange canvases
-and colors;
-#X text 24 -635 GridFlow performs high level grid processing \; in
-other words its main function is the manipulation of images and video.
-There are several ways to modify images \, one of the most common is
-the numeric operators.;
-#X connect 1 0 2 0;
-#X connect 2 0 4 0;
-#X connect 3 0 2 0;
-#X connect 4 0 35 0;
-#X connect 6 0 9 0;
-#X connect 7 0 6 0;
-#X connect 8 0 9 1;
-#X connect 8 0 18 0;
-#X connect 9 0 37 0;
-#X connect 10 0 6 0;
-#X connect 11 0 10 0;
-#X connect 15 0 4 1;
-#X connect 16 0 4 1;
-#X connect 17 0 4 1;
-#X connect 25 0 26 0;
-#X connect 26 0 48 0;
-#X connect 27 0 26 0;
-#X connect 38 0 58 0;
-#X connect 39 0 58 0;
-#X connect 40 0 58 0;
-#X connect 44 0 45 0;
-#X connect 45 0 46 0;
-#X connect 45 0 47 0;
-#X connect 47 0 43 0;
-#X connect 48 0 36 0;
diff --git a/externals/gridflow/doc/tutorials/gf_2_2_2.pd b/externals/gridflow/doc/tutorials/gf_2_2_2.pd
deleted file mode 100644
index 2728c61c..00000000
--- a/externals/gridflow/doc/tutorials/gf_2_2_2.pd
+++ /dev/null
@@ -1,68 +0,0 @@
-#N canvas 38 0 687 415 10;
-#X obj 31 -223 cnv 15 243 358 empty empty empty 20 12 0 14 -228992
--66577 0;
-#X obj 39 -141 #in;
-#X msg 39 -215 open b001.jpg;
-#X obj 79 -132 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -260818
--1 -1 0 1;
-#X obj 39 -18 # + \$1;
-#X obj 62 -189 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1
-;
-#X obj 69 76 #clip;
-#X obj 28 -322 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 62 -167 metro 33.3;
-#X obj 94 -99 #color;
-#X obj 23 -678 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 36 168 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 44 175 GridFlow 0.8.0;
-#X obj 39 108 #out window;
-#X text 35 -671 2.2 Image manipulation \, colour wrapping;
-#X obj 12 -518 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 18 -519 Example #1 colour wrapping;
-#X msg 74 -491 240 0 0;
-#X obj 179 -368 display;
-#X obj 74 -457 # + 20;
-#X obj 178 -423 #cast uint8;
-#X obj 23 -368 display;
-#X text 274 -429 <-- This transforms the grid into 8 bit values \,
-that corresponds to the way that images are usually shown in images
-and video;
-#X text 42 -323 Example #2 clipping the values;
-#X text 10 -545 Tip: Refer to glossary for more information on colour.
-;
-#X text 215 -132 <-- add value to all channels at once;
-#X obj 39 37 shunt;
-#X obj 69 11 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1;
-#X text 93 12 <-- switch to see clip's effect;
-#X text 96 38 <-- directs the flow of data;
-#X text 7 -643 When an image is represented as a grid every pixel value
-will vary between 0 and 255 Color wrapping occurs when the result of
-the operation on the pixel value would be higher than 255 Values above
-255 are counted from 0 For example: if a pixel has a red value of 240
-and 20 is added to it \, you get 5 instead of displaying 260 (240 +
-20 - 255 = 5);
-#X text 451 -583 aks matju to fix bug in [display]'s display;
-#X text 32 -301 The [#clip] object is used with numops in order to
-set an lower and upper range to pixel values in order to eliminate
-color wrapping (those nifty 60s effects).;
-#X text 288 -70 <-- drag to add value to specific channel;
-#X text 163 -206 remember to load the image and strat the metro;
-#X connect 1 0 4 0;
-#X connect 2 0 1 0;
-#X connect 3 0 4 1;
-#X connect 4 0 26 0;
-#X connect 5 0 8 0;
-#X connect 6 0 13 0;
-#X connect 8 0 1 0;
-#X connect 9 0 4 1;
-#X connect 17 0 19 0;
-#X connect 19 0 20 0;
-#X connect 19 0 21 0;
-#X connect 20 0 18 0;
-#X connect 26 0 13 0;
-#X connect 26 1 6 0;
-#X connect 27 0 26 1;
diff --git a/externals/gridflow/doc/tutorials/grid-intro.pd b/externals/gridflow/doc/tutorials/grid-intro.pd
deleted file mode 100755
index e3aa53b8..00000000
--- a/externals/gridflow/doc/tutorials/grid-intro.pd
+++ /dev/null
@@ -1,10 +0,0 @@
-#N canvas 0 0 476 213 10;
-#X text 29 30 GridFlow is a plug-in for PureData that introduces the
-frid (#) data type into the PD environment. GridFlow allows you to
-work with live video \, still images and video files in a rel-time
-environment.;
-#X text 32 97 This section deals with the particular objects related
-to GridFlow. GridFlow uses the usual PD "control" objects \, as well
-as a set of GridFlow specific objects. Before we get into the tutorials
-we will explain the grid "#" \, the most important concept in GridFlow.
-;
diff --git a/externals/gridflow/doc/tutorials/probably_not_good_2-3-0-1-image-modification-1-numop-all-in-one.pd b/externals/gridflow/doc/tutorials/probably_not_good_2-3-0-1-image-modification-1-numop-all-in-one.pd
deleted file mode 100755
index a743e82d..00000000
--- a/externals/gridflow/doc/tutorials/probably_not_good_2-3-0-1-image-modification-1-numop-all-in-one.pd
+++ /dev/null
@@ -1,123 +0,0 @@
-#N canvas 0 0 977 630 10;
-#X obj 17 -114 #out window;
-#X obj 43 -174 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X obj 17 -143 #in;
-#X msg 17 -205 open b001.jpg;
-#X obj 507 -245 cnv 15 185 150 empty empty empty 20 12 0 14 -228992
--66577 0;
-#X obj 529 -205 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X obj 515 -166 #in;
-#X msg 515 -238 open b001.jpg;
-#X obj 555 -167 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -260818
--1 -1 0 1;
-#X obj 515 -110 s slider;
-#X obj 515 -138 # + 1;
-#X text 11 -499 Numeric Operators (numop): transform an image or video
-by applying a mathematical operation to each pixel value in the grid.
-;
-#X text 12 -445 To transform a grid (in this case an image) using numop
-\, it must first be given an argument (a number value) in order to
-affect a pixel value. The examples here show you the three methods
-that can be used to give the numop an argument.;
-#X obj 3 -643 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 3 -678 cnv 15 970 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 10 -618 GridFlow performs high level grid processing \; in
-other words its main function is the manipulation of images and video.
-There are several ways to madify images in GridFlow \, some are very
-basic while others are more advanced (and are saved for the intermediate
-tutorials.) In this section we will introduce some very basic functions
-of the numeric operator \, one of the most common methods used for
-image transformation.;
-#X obj 155 -220 cnv 15 130 150 empty empty empty 20 12 0 14 -228992
--66577 0;
-#X obj 220 -181 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X obj 174 -152 #in;
-#X msg 174 -213 open b001.jpg;
-#X obj 199 -124 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
-0;
-#X obj 174 -124 # + 109;
-#X obj 174 -95 s argument;
-#X text 235 -125 <--- argument in this case is 109;
-#X obj 13 -273 + 1;
-#X floatatom 13 -297 5 0 0 0 - - -;
-#X floatatom 13 -249 5 0 0 0 - - -;
-#X text 54 -282 this is a basic numop. GridFlow has its own set of
-numops that are applied to grids \, 3 dimensions \, on each channel.
-;
-#X obj 14 -357 cnv 15 70 15 empty empty empty 20 12 0 14 -260818 -66577
-0;
-#X text 11 -672 2.4 Image manipulation;
-#X text 11 -644 2.4.3 Numop;
-#X obj 500 -559 cnv 15 130 150 empty empty empty 20 12 0 14 -228992
--66577 0;
-#X obj 550 -523 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X obj 515 -484 #in;
-#X msg 515 -553 open b001.jpg;
-#X obj 515 -434 # +;
-#X obj 515 -404 s message;
-#X obj 562 -461 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
-0;
-#X obj 562 -483 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
-0;
-#X obj 563 -439 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
-0;
-#X msg 562 -461 67;
-#X msg 562 -483 2;
-#X msg 563 -439 199;
-#X text 596 -461 <--- messages used as arguments;
-#X text 596 -486 <---;
-#X text 596 -438 <---;
-#X obj 764 -116 r argument;
-#X obj 891 -91 #out window;
-#X obj 842 -115 r message;
-#X obj 911 -115 r slider;
-#X obj 3 -67 cnv 15 970 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 14 -57 GridFlow 0.8.0;
-#N canvas 0 0 450 300 META 0;
-#X restore 919 -60 pd META;
-#X text 13 -357 Example #1;
-#X text 12 -338 Shows you how to put an argument directly into the
-numeric operator object.;
-#X obj 507 -320 cnv 15 70 15 empty empty empty 20 12 0 14 -260818 -66577
-0;
-#X obj 497 -629 cnv 15 70 15 empty empty empty 20 12 0 14 -260818 -66577
-0;
-#X text 496 -628 Example #2;
-#X text 506 -320 Example #3;
-#X text 497 -608 Demonstrates how to send the numop an argument using
-a message box. This method allows you to send the numop several different
-arguments.;
-#X text 507 -299 Introduces the use of the slider as a method to give
-the numop an argument. The slider allows you to easily scroll through
-a series of values.;
-#X connect 1 0 2 0;
-#X connect 2 0 0 0;
-#X connect 3 0 2 0;
-#X connect 5 0 6 0;
-#X connect 6 0 10 0;
-#X connect 7 0 6 0;
-#X connect 8 0 10 1;
-#X connect 10 0 9 0;
-#X connect 17 0 18 0;
-#X connect 18 0 21 0;
-#X connect 19 0 18 0;
-#X connect 21 0 22 0;
-#X connect 24 0 26 0;
-#X connect 25 0 24 0;
-#X connect 32 0 33 0;
-#X connect 33 0 35 0;
-#X connect 34 0 33 0;
-#X connect 35 0 36 0;
-#X connect 40 0 35 1;
-#X connect 41 0 35 1;
-#X connect 42 0 35 1;
-#X connect 46 0 47 0;
-#X connect 48 0 47 0;
-#X connect 49 0 47 0;
diff --git a/externals/gridflow/doc/tutorials/probably_not_good_2-3-0-2.pd b/externals/gridflow/doc/tutorials/probably_not_good_2-3-0-2.pd
deleted file mode 100644
index 18625731..00000000
--- a/externals/gridflow/doc/tutorials/probably_not_good_2-3-0-2.pd
+++ /dev/null
@@ -1,61 +0,0 @@
-#N canvas 58 0 665 421 10;
-#X obj 29 -473 cnv 15 185 190 empty empty empty 20 12 0 14 -228992
--66577 0;
-#X obj 37 -391 #in;
-#X msg 37 -465 open b001.jpg;
-#X obj 77 -382 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -260818
--1 -1 0 1;
-#X obj 37 -359 # + \$1;
-#X obj 60 -439 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
-;
-#X obj 37 -315 #clip;
-#X obj 27 -634 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 60 -417 metro 33.3;
-#X obj 278 -430 #pack 3;
-#X obj 326 -455 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -260818
--1 -1 0 1;
-#X obj 326 -475 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -260818
--1 -1 0 1;
-#X obj 326 -495 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -260818
--1 -1 0 1;
-#X obj 286 -391 #color;
-#X msg 269 -301 255 0 0;
-#X text 336 -304 donner une liste changer couleurs;
-#X obj 234 -245 #scale_by (8 8);
-#X msg 235 -265 2 2 3 # 255 0 0 0 255 0 0 0 255 191 191 191;
-#X obj 37 -273 s to_out_window;
-#X text 29 -633 Example #4 the [#clip] object is used with numops in
-order to set constraints on pixels to eliminate color wrapping. Colour
-wrapping occurs when the individual pixel values in a grid exceed 255
-which results in of colour. GridFlow reads colours as values from 0
-(black) to 255 (white). Refer to glossary for more information on colour.
-;
-#X obj 23 -678 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 35 -671 2.4 Image manipulation;
-#X obj 25 -102 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 34 -94 GridFlow 0.8.0;
-#X obj 253 -162 r to_out_window;
-#X msg 505 -161 close;
-#X msg 400 -164 open window;
-#X obj 360 -127 #out window;
-#X connect 1 0 4 0;
-#X connect 2 0 1 0;
-#X connect 3 0 4 1;
-#X connect 4 0 6 0;
-#X connect 5 0 8 0;
-#X connect 6 0 18 0;
-#X connect 8 0 1 0;
-#X connect 9 0 4 1;
-#X connect 10 0 9 2;
-#X connect 11 0 9 1;
-#X connect 12 0 9 0;
-#X connect 13 0 4 1;
-#X connect 14 0 4 1;
-#X connect 16 0 4 1;
-#X connect 17 0 16 0;
-#X connect 24 0 27 0;
-#X connect 25 0 27 0;
-#X connect 26 0 27 0;
diff --git a/externals/gridflow/doc/tutorials/pure-data-1.pd b/externals/gridflow/doc/tutorials/pure-data-1.pd
deleted file mode 100755
index 7be2a91a..00000000
--- a/externals/gridflow/doc/tutorials/pure-data-1.pd
+++ /dev/null
@@ -1,71 +0,0 @@
-#N canvas 221 110 894 498 10;
-#N canvas 0 22 450 300 this 0;
-#X obj 192 128 inlet;
-#X obj 192 171 outlet;
-#X text 8 7 If you're looking at this you're just going to confuse
-yourself!;
-#X connect 0 0 1 0;
-#X restore 499 380 pd this is an object;
-#X text 509 358 <- This is a connection;
-#X msg 499 319 10;
-#X text 13 348 Objects are like filters \, they change the way messages
-flow through them.;
-#X text 13 153 You can think of a patch as plumbing. The way water
-flows through the plumbing of your house \, messages flow through the
-connections in your patch. Objects change the flow of the messages
-to allow different things to happen. Messages always go into objects
-at the top \, called the inlet \, and always come out at the bottom
-\, called the outlet. In PD messages flow from top to bottom.;
-#X text 458 236 This is a very simple example of a patch \, the message
-"10" can be sent through the "pd this is an object" and can be seen
-being passed out the outlet.;
-#X floatatom 499 416 5 0 0 0 - - -;
-#X text 539 415 <- This number box shows the float message;
-#X text 553 334 and watch the output!;
-#X obj 8 6 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 13 252 You can work with PD in two ways \, the first is in
-"edit mode". Edit-mode is where you create your patch by adding objects
-and the connections between them. "Run mode" is when you're done with
-the construction of your patch \, and you wish to send messages through
-it. In run-mode your cursor is an arrow (as it is right now since we
-are in run-mode) \, in edit-mode your cursor is a pointing hand.;
-#X text 458 136 Messages are what allow objects to communicate with
-one and other. Messages can change the way an object acts \, and/or
-express the work the object is doing. Messages come in different types.
-They can contain words \, numbers and groups of these. The main types
-of messages we will be dealing with are floats (numbers). You can click
-on a message \, when in run-mode \, to send it through your patch.
-;
-#X obj 448 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X obj 448 290 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X obj 8 447 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 668 449 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
-;
-#X text 12 20 DESCRIPTION: What is a patch? An object? A message?;
-#N canvas 0 22 466 316 META 0;
-#X text 12 5 CATEGORY: tutorial;
-#X text 12 15 KEYWORDS: metaphor object message GUI introduction;
-#X restore 16 453 pd META;
-#X text 457 67 GUI objects allow you to interact with your PD patch
-as it is running. They allow you to change what your patch is doing
-without reconnecting the objects. The simplest GUI object is the "Message"
-that simply contains a message you want to send in your patch.;
-#X text 453 290 A patch that connects a GUI to an object to a second
-GUI.;
-#X text 531 320 <- This GUI sends a float message (click on it);
-#X text 13 66 When working with PD you are dealing primarily with objects
-\, GUI (Graphical User Interface) objects \, connections and messages.
-These are the building blocks of PD programming. When you connect objects
-\, GUI objects \, and messages you are creating a "patch". Patching
-is making something complex out of smaller building blocks.;
-#X text 13 46 The "patch" \, "objects" and "connections";
-#X text 453 46 "GUI objects" and "messages";
-#X text 12 8 1 Introduction to Pure-Data & its Metaphors;
-#X connect 0 0 6 0;
-#X connect 2 0 0 0;
diff --git a/externals/gridflow/doc/tutorials/pure-data-2.pd b/externals/gridflow/doc/tutorials/pure-data-2.pd
deleted file mode 100755
index 151af26f..00000000
--- a/externals/gridflow/doc/tutorials/pure-data-2.pd
+++ /dev/null
@@ -1,73 +0,0 @@
-#N canvas 197 100 899 548 10;
-#X obj 8 6 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X obj 448 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X obj 8 497 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 668 499 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
-;
-#N canvas 0 22 470 320 META 0;
-#X text 12 5 CATEGORY: tutorial;
-#X text 12 15 KEYWORDS: GUI slider toggle number message introduction
-;
-#X restore 16 503 pd META;
-#X text 12 20 DESCRIPTION: Message \, slider \, toggle \, bang and
-number;
-#X msg 93 145 hello world;
-#X obj 93 168 print;
-#X text 181 146 <- Click on this message;
-#X text 18 74 Messages control the behavior of objects and it is the
-objects that change what a patch does. The first object we're going
-to learn is "print". All "print" does is print out the messages you
-send it to the terminal:;
-#X text 19 197 TIP: If you forget what an object does you can always
-double-click (on a mac) or right-click (on a PC) and then choose "help".
-;
-#X text 19 250 In this tutorial we will use two different types of
-objects: "objects" (of which "print" is an example) and GUI objects
-\, (of which "message" is an example). GUI objects allow you to interact
-with your patch \, control PD and change parameters of objects. We
-are going to learn four types of GUI objects (but there are many more):
-Slider \, Toggle \, Bang \, and Number.;
-#X obj 76 355 hsl 300 30 0 127 0 0 empty empty This_is_a_HSlider_(Horizontal)
-10 15 1 10 -262144 -1 -1 0 1;
-#X obj 73 393 print;
-#X text 21 421 This "hslider" is connected to the print object. This
-way we can see what messages the "hslider" sends. Try clicking and
-dragging in the Slider. You can change the scale (and other properties)
-of some GUI Objects by double-clicking (mac) or right-clicking (pc)
-and choosing "properties".;
-#X text 13 46 The "message" and "hslider" GUI Objects:;
-#X text 453 46 "toggle" \, "bang" \, "number";
-#X obj 519 176 tgl 30 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
-1;
-#X obj 629 176 bng 30 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 629 210 print Bang;
-#X obj 519 210 print Toggle;
-#X obj 739 210 print Number;
-#X floatatom 739 192 5 0 0 0 - - -;
-#X text 466 76 "slider" \, "toggle" and "number" all send messages
-made up of floats (numbers). "bang" is a special case and it only sends
-the message "bang". Below we're using an argument to the print object
-that tags each message sent to the terminal. This way when we have
-multiple "print" objects in one patch we can differenciate thier output.
-;
-#X text 465 268 "toggle" sends the message "1" or "0" \, "bang" always
-sends "bang" and if you click and drag on the "number" you can see
-it acts a lot like a Slider. With "number" you can also click once
-\, and then type a number to send.;
-#X text 467 335 TIP: You can send floating point numbers by holding
-down the SHIFT key as you click and drag on the "number".;
-#X text 467 375 There are other types of GUI objects not covered here.
-See the guis-about.pd PDDP patch:;
-#X text 12 8 2 PD Introduction - Some Useful GUI Objects in Pure-Data
-;
-#X connect 7 0 8 0;
-#X connect 13 0 14 0;
-#X connect 18 0 21 0;
-#X connect 19 0 20 0;
-#X connect 23 0 22 0;
diff --git a/externals/gridflow/doc/tutorials/pure-data-3.pd b/externals/gridflow/doc/tutorials/pure-data-3.pd
deleted file mode 100755
index 729b2dc7..00000000
--- a/externals/gridflow/doc/tutorials/pure-data-3.pd
+++ /dev/null
@@ -1,70 +0,0 @@
-#N canvas 261 121 900 544 10;
-#X obj 8 6 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X obj 448 366 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X obj 8 497 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 668 499 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
-;
-#N canvas 0 22 474 324 META 0;
-#X text 12 5 CATEGORY: tutorial;
-#X text 12 15 KEYWORDS: patch first connecting placing place connect
-;
-#X restore 16 503 pd META;
-#X text 12 20 DESCRIPTION: Using PD to create your first patch;
-#X text 13 46 Adding Objects:;
-#X text 19 75 In order to create a patch you need to first place objects
-and GUI objects \, and second make connections between these objects.
-To place an object you need to be in "edit-mode". You should now be
-in run mode \, so please go to the "Edit" pull-down menu and choose
-"Edit mode" at the bottom. You should see your cursor change from an
-arrow to a pointing hand.;
-#X text 19 175 SHORTCUT: You can press "Control" and "e" simultaneously
-in order to toggle (switch) between edit and Run modes.;
-#X obj 448 386 cnv 15 430 100 empty empty empty 20 12 0 14 -233017
--66577 0;
-#X floatatom 506 406 5 0 0 0 - - -;
-#X text 19 355 SHORTCUT: You can press "Control" and "3" simultaneously
-in order to place a number. All shortcuts are listed next to the items
-in the "Put" menu.;
-#X text 453 366 Patch work area:;
-#X text 19 215 Once you are in "edit-mode" you are now free to place
-objects. To place an object go to the "Put" pull-down menu and choose
-"Number". Once you have chosen this menu item you will see that a "number"
-gui is attached to your mouse pointer. In order to place the number
-into the patch move your pointer to the grey area to the right (in
-the "Patch work area" -> Click once to release it from your mouse.
-Note that the number is coloured blue. The blue colour shows that an
-item in your patch is selected. To unselect any item simply click once
-on the blank (white) space between items.;
-#X obj 520 440 print;
-#X obj 448 156 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 453 156 Connecting Objects:;
-#X text 19 411 Next we're going to place the familar "print" object
-beneath the "number" GUI. Press "Control" and "1" to place an object
-box. Again the object gets attached to your mouse and again click once
-to place it in the patch area somewhere under the "number".;
-#X text 459 41 While the number box is still selected (coloured blue)
-you can see a flashing cursor. Type the word "print" into the object
-box. The object will retain a dashed line while you type. In order
-to create the object you simply need to unselect \, by clicking somewhere
-outside the object. Note that once you have clicked to create the object
-the dashed line turns solid and an inlet (small rectangle) gets drawn
-around the word "print". The objects have now been created!;
-#X text 459 185 All connections between objects in PD are created from
-outlet to inlet (top to bottom). To start making a connection move
-your hand-pointer over the outlet of the "number" gui. When over the
-outlet your pointer will change to a circle. When you see the circle
-press and hold the mouse button. As you drag (holding the mouse button
-down) the pointer you see a line being drawn from the outlet to your
-pointer. To attach this connection to another object drag your mouse
-to an inlet of another object. The pointer will again change to a circle
-and at this point you can release the mouse button. Once released the
-objects are now connected! To play with your patch go back into run-mode
-and click and drag on the number-box while watching the terminal.;
-#X text 12 8 3 PD Introduction - Creating your first patch;
-#X connect 11 0 15 0;
diff --git a/externals/gridflow/doc/tutorials/pure-data-4.pd b/externals/gridflow/doc/tutorials/pure-data-4.pd
deleted file mode 100755
index 4d38f41d..00000000
--- a/externals/gridflow/doc/tutorials/pure-data-4.pd
+++ /dev/null
@@ -1,87 +0,0 @@
-#N canvas 183 61 890 531 10;
-#X obj 8 6 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 96 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X obj 8 487 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 668 489 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
-;
-#N canvas 0 22 478 328 META 0;
-#X text 12 5 CATEGORY: tutorial;
-#X text 12 15 KEYWORDS: metro counter random;
-#X restore 16 493 pd META;
-#X text 12 20 DESCRIPTION: Learning "metro" \, "counter" & "random"
-;
-#X text 13 96 Using the "metro" object:;
-#X text 21 47 In this section we will learn three new objects \, "metro"
-\, "counter" \, and "random". Metro sends a bang at regular intervals
-\, just like a metronome.;
-#X obj 164 142 metro 250;
-#X obj 164 123 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
-1;
-#X obj 164 163 bng 15 100 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X floatatom 222 123 5 0 0 0 - - -;
-#X text 21 187 You can turn a Metro on and off by sending it a "1"
-or "0" message. Because a toggle sends 0/1 messages \, we can simply
-connect it directly. Metro also accepts an argument (words or numbers
-wirtten after the object name). This argument is how fast the metro
-should send out bangs (in milliseconds). You can always change the
-speed of the metro by sending it number messages through the rightmost
-inlet.;
-#X obj 8 306 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 13 306 Using the "random" object:;
-#X text 21 277 For more info see the metro-help.pd patch.;
-#X obj 168 385 bng 15 100 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 168 425 print;
-#X obj 168 404 random 100;
-#X floatatom 233 385 5 0 0 0 - - -;
-#X text 20 327 The Random object returns a number between 0 and the
-(number) argument when it receives a bang message in the leftmost inlet.
-You can also change the upper limit by sending a message to the rightmost
-inlet.;
-#X obj 448 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 453 46 Using the "random" object:;
-#X obj 559 154 bng 15 100 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X floatatom 590 154 3 1 3 0 - - -;
-#X floatatom 621 174 3 0 0 0 - - -;
-#X floatatom 652 194 3 0 0 0 - - -;
-#X obj 652 234 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X floatatom 559 234 8 0 0 0 - - -;
-#X obj 559 213 counter 0 10 1;
-#X text 21 447 For more info see the random-help.pd patch.;
-#X text 461 77 "counter" is simply an object that counts. It can count
-up \, count down and count up and then down. Where it starts and where
-it stops are all definable. This is the counter that in included with
-Gem \, it is not compatible with other counter objects.;
-#X text 461 274 The first argument for counter is the lower limit (number
-to start counting at). The second is the upper limit to count to. The
-third argument is the direction in which to count. "1" means forward
-\, "2" means backward and "3" means forward and then backward. You
-can also use the three rightmost inlets to change the behaviour of
-counter. The rightmost inlet is the upper limit \, the second right-most
-the lower limit \, and the third right-most as the direction. The rightmost
-outlet sends out a bang message when the counter loops.;
-#X text 681 193 Rightmost inlet;
-#X text 651 173 Second Rightmost inlet;
-#X text 621 153 Third Rightmost inlet;
-#X text 461 407 For more info see the counter-help.pd patch.;
-#X text 12 8 4 Introduction to PD - More objects;
-#X connect 8 0 10 0;
-#X connect 9 0 8 0;
-#X connect 11 0 8 1;
-#X connect 16 0 18 0;
-#X connect 18 0 17 0;
-#X connect 19 0 18 1;
-#X connect 23 0 29 0;
-#X connect 24 0 29 1;
-#X connect 25 0 29 2;
-#X connect 26 0 29 3;
-#X connect 29 0 28 0;
-#X connect 29 1 27 0;
diff --git a/externals/gridflow/doc/tutorials/pure-data-5.pd b/externals/gridflow/doc/tutorials/pure-data-5.pd
deleted file mode 100755
index dc357bb1..00000000
--- a/externals/gridflow/doc/tutorials/pure-data-5.pd
+++ /dev/null
@@ -1,108 +0,0 @@
-#N canvas -235 0 891 673 10;
-#X obj 8 6 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X obj 8 627 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 668 629 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
-;
-#N canvas 0 22 482 332 META 0;
-#X text 12 5 CATEGORY: tutorial;
-#X text 12 15 KEYWORDS: send receive netsend netreceive cordless communication
-network TCP/IP UDP internet;
-#X restore 16 633 pd META;
-#X obj 448 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 12 20 DESCRIPTION: Communicating between objects w/out connections
-;
-#X text 13 46 "send" & "receive";
-#X obj 86 223 send invisible-link;
-#X obj 86 248 receive invisible-link;
-#X floatatom 86 273 5 0 0 0 - - -;
-#X msg 86 198 10;
-#X floatatom 266 273 5 0 0 0 - - -;
-#X floatatom 266 203 5 0 0 0 - - -;
-#X obj 266 223 s invisible-link2;
-#X obj 266 248 r invisible-link2;
-#X obj 102 483 r send-from-number;
-#X floatatom 102 508 5 0 0 0 - - -;
-#X floatatom 102 462 5 0 0 0 - - send-from-number;
-#X floatatom 242 462 5 0 0 0 - - -;
-#X obj 242 483 s send-to-number2;
-#X floatatom 242 508 5 0 0 0 - send-to-number2 -;
-#X text 19 385 Note: Many GUI objects have built-in send and receive
-objects. The tag names are specified in the GUI properties. Remeber
-to get the GUI properties Right-Click or Control-Click on the GUI object
-and select "Properties".;
-#X text 453 46 "netsend" & "netreceive";
-#X text 19 575 For more info see: send-help.pd \, receive-help.pd \,
-netsend-help.pd and netreceive-help.pd;
-#X text 459 75 While "send" and "receive" allow you to send messages
-without connecting objects with patch-cords "netsend" and "netreceive"
-do the same but communicate between objects using TCP/IP the internet
-protocol. This means that you can send messages from a patch running
-on one machine to a second patch running on a second machine on the
-same network \, or even over the internet.;
-#X text 19 545 You can also send messages using UDP rather than TCP/IP.
-See "more info" below for details.;
-#X obj 589 292 netreceive 8001;
-#X text 459 185 The first argument of "netreceive" is the port the
-netrecive should listen on. "netsend" can connect to this port from
-other machines. "netreceive" has two outlets. The first outlet sends
-out the messages it receives over network \, and the second argument
-send a "1" when netsend is connected and "0" when netsend disconnects.
-;
-#X obj 589 318 print;
-#X obj 689 318 tgl 16 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
-1;
-#X obj 503 563 netsend;
-#X text 459 355 "netsend" is controlled using three messages: "connect"
-\, "disconnect" and "send". "connect" has two arguments \, the host
-or IP and the port number you wish to connect to. There needs to be
-a "netreceive" listening on the port you connect to. "disconnect" drops
-the current connection. "send" sends any arguments to the "netreceive"
-over the network. The single outlet of "netsend" prints "1" when a
-connection is made and "0" when the connection is lost.;
-#X obj 503 586 tgl 16 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
-1;
-#X msg 503 486 connect localhost 8001;
-#X msg 516 511 disconnect;
-#X msg 525 537 send hello from the internet;
-#X text 602 510 Close connection;
-#X text 673 486 Connect to this machine;
-#X text 733 536 Send message;
-#X text 19 75 In some cases you will want to send messages without
-connecting objects. You may be sending one message to many different
-places that would make connections too laborious. "send" and "receive"
-both have a single argument. This argument is the tag name for the
-communication. "send" will always send any messages it gets in it inlet
-to any number of "receive" objects in a patch with the same tag name.
-"s" and "r" can be used in the place of "send" and "receive".;
-#X obj 86 336 s broadcast;
-#X floatatom 86 317 5 0 0 0 - - -;
-#X obj 176 316 r broadcast;
-#X floatatom 176 339 5 0 0 0 - - -;
-#X obj 266 316 r broadcast;
-#X floatatom 266 339 5 0 0 0 - - -;
-#X text 12 8 5 Intermediate Pure-Data - send and receive;
-#X msg 585 598 send \$1;
-#X floatatom 584 567 5 0 0 0 - - -;
-#X text 651 596 send variables to another computer;
-#X connect 9 0 10 0;
-#X connect 11 0 8 0;
-#X connect 13 0 14 0;
-#X connect 15 0 12 0;
-#X connect 16 0 17 0;
-#X connect 19 0 20 0;
-#X connect 27 0 29 0;
-#X connect 27 1 30 0;
-#X connect 31 0 33 0;
-#X connect 34 0 31 0;
-#X connect 35 0 31 0;
-#X connect 36 0 31 0;
-#X connect 42 0 41 0;
-#X connect 43 0 44 0;
-#X connect 45 0 46 0;
-#X connect 48 0 31 0;
-#X connect 49 0 48 0;
diff --git a/externals/gridflow/doc/tutorials/pure-data-6.pd b/externals/gridflow/doc/tutorials/pure-data-6.pd
deleted file mode 100755
index 01e6dcd7..00000000
--- a/externals/gridflow/doc/tutorials/pure-data-6.pd
+++ /dev/null
@@ -1,92 +0,0 @@
-#N canvas 304 98 891 675 10;
-#X obj 8 6 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 627 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 668 629 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
-;
-#N canvas 0 22 486 336 META 0;
-#X text 12 5 CATEGORY: tutorial;
-#X text 12 15 KEYWORDS: message comma semicolon dollersign receive
-list;
-#X restore 16 633 pd META;
-#X text 12 20 DESCRIPTION: Advanced uses for the message object;
-#X text 19 45 In Pure-Data there are two distinct concepts with the
-name "message". Messages are the data that gets send in PD from object
-to object. There is also the Messsage object that contains a message
-you want to send. The message object is the first GUI object we covered
-in this tutorial. The message is not the only way to send messages
-in a patch \, since all GUI objects also send messages. So what makes
-the message object different? The message object can sent messages
-of any type \, where a number for example can only send float (number)
-messages. There are a number of powerful features in the message object.
-We are familar with the "usual" way of using the message object:;
-#X msg 163 208 hello;
-#X msg 212 208 bye;
-#X obj 196 238 print messages;
-#X text 459 556 Note: It is a very common mistake to confuse the message
-object with an object box. The object box is framed in a rectangle.
-The message object has a notch removed from the right edge.;
-#X obj 106 385 print messages;
-#X msg 106 358 hello \, bye;
-#X text 19 305 You can send multiple messages in succession from a
-single message box by using a comma " \, " between the messages. The
-messages get send from left to right.;
-#X obj 8 276 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X obj 8 416 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 13 416 Semicolon in message boxes;
-#X text 13 276 Comma in message boxes;
-#X text 19 445 Just like you can specify receive tags directly in GUI
-objects you can also use a message box to send a message directly to
-a particular "receive".;
-#X obj 34 536 r myreceive;
-#X floatatom 34 560 5 0 0 0 - - -;
-#X text 189 360 Click to send both messages;
-#X text 136 502 send "10" to receive tag "myreceive";
-#X text 19 585 For more info see: message-help.pd 04.messages.pd 10.more.messages.pd
-;
-#X msg 34 498 \; myreceive 10;
-#X obj 448 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 453 46 Dollarsign in message boxes;
-#X msg 534 175 \$1 \$1 \$1;
-#X msg 534 154 10;
-#X text 459 75 In messages there are placeholders that start with "$".
-These placeholders are variables that get replaced with messages you
-send to the message box. In the example below we have a single message
-"10". Each "$1" in the message box gets replaced with the message "10".
-;
-#X text 601 175 \$1 placeholder gets replaced;
-#X text 570 154 message sent to message box;
-#X msg 534 304 list 1 2;
-#X text 600 304 a list with items "1" and "2";
-#X msg 534 325 \$2 \$1;
-#X text 584 325 \$1 becomes "1" and \$2 becomes "2";
-#X obj 534 347 print reverse-list;
-#X text 459 235 The "$1" placeholder refers to the first element of
-the list the message box gets from its inlet. We can use this to use
-a message box to reverse the order of elements (called atoms) in a
-list.;
-#X text 459 385 In this case the list "1 2" has two elements (called
-atoms) when this list gets sent to the inlet of a message box its atoms
-are available to the message box through the $ variables. \$1 gets
-replaced with the first element \, \$2 the second and so on.;
-#X obj 534 197 print repeated-message;
-#X obj 480 511 print complex-message;
-#X msg 480 468 list Fred Marcus;
-#X text 607 468 a list with two symbol atoms;
-#X msg 480 489 Hi \$1. \, Ya know \$2?;
-#X text 623 489 Becomes: "Hi Fred \, Ya know Marcus?";
-#X text 12 8 6 Intermediate Pure-Data - Using the message object;
-#X connect 6 0 8 0;
-#X connect 7 0 8 0;
-#X connect 11 0 10 0;
-#X connect 18 0 19 0;
-#X connect 26 0 38 0;
-#X connect 27 0 26 0;
-#X connect 31 0 33 0;
-#X connect 33 0 35 0;
-#X connect 40 0 42 0;
-#X connect 42 0 39 0;
diff --git a/externals/gridflow/doc/tutorials/pure-data-7.pd b/externals/gridflow/doc/tutorials/pure-data-7.pd
deleted file mode 100755
index 0d8360ec..00000000
--- a/externals/gridflow/doc/tutorials/pure-data-7.pd
+++ /dev/null
@@ -1,106 +0,0 @@
-#N canvas 280 89 936 678 10;
-#X obj 8 6 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 627 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 668 629 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
-;
-#N canvas 0 22 482 332 META 0;
-#X text 12 5 CATEGORY: tutorial;
-#X text 12 15 KEYWORDS: send receive netsend netreceive cordless communication
-network TCP/IP UDP internet;
-#X restore 16 633 pd META;
-#X obj 8 266 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 13 266 "pack" object;
-#X msg 96 543 2;
-#X msg 45 521 1;
-#X obj 45 588 print mylist;
-#X text 12 20 DESCRIPTION: Using pack \, unpack and route with lists
-;
-#X text 19 75 In the Pure-Data introduction we discussed the three
-different types of data in PD. These are floats (numbers) \, symbols
-(words) and lists (groups of floats and words). Floats and symbols
-are known as atoms. Atoms are single elements \, they do not contain
-spaces or other special characters. Atoms can be grouped into lists.
-;
-#X obj 8 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 13 46 What is a list?;
-#X msg 145 216 list one two three;
-#X obj 145 239 print this is a list;
-#X text 19 155 Lists can be created in a number of ways \, but we are
-going to cover the two most common ways of creating lists. The most
-simple way to create a list is to type the list into a message box
-starting with the word (symbol) "list":;
-#X text 19 295 The "pack" object is the second most common way to create
-a list. "pack" allows you to take individual atoms and combine them
-into a single list. "pack" accepts a number of arguments. Each argument
-defines the type of atom in the resulting list. The "f" argument creates
-an inlet that accepts float atoms. The "s" argument creates an inlet
-accepts symbol atoms. The number of arguments is the same as the number
-of elements in the resultant list.;
-#X text 19 405 "pack" is the first object we are going to learn that
-has a "cold" inlet. Some control objects in PD have "hot" and "cold"
-inlets. When you send a message to a "cold" inlet the object does not
-generate any output (it does not send any messages). When "hot" inlets
-get messages then the object does generate output. The leftmost inlet
-is always the "hot" inlet and all other inlets are "cold" or in some
-cases all inlets are "hot";
-#X text 75 521 sets the first atom "1" and then sends the list;
-#X text 132 543 sets the second atom "2";
-#X obj 45 566 pack f f;
-#X text 459 45 Note that if you do not set the second and onwards atoms
-via thier "cold" inlets and you generate the list by setting the first
-atom via the "hot" inlet then all float atoms will be set to "0" and
-all symbol atoms will be set to "symbol" in the resultant list.;
-#X obj 448 126 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 453 126 "unpack" object;
-#X obj 596 241 unpack f f f;
-#X msg 596 219 list 1 2 3;
-#X floatatom 596 294 5 0 0 0 - - -;
-#X floatatom 635 277 5 0 0 0 - - -;
-#X floatatom 675 262 5 0 0 0 - - -;
-#X text 639 293 First Atom;
-#X text 678 277 Second Atom;
-#X text 718 261 Third Atom;
-#X text 459 156 The "unpack" object is very similar to the "pack" object
-except it works in reverse. "unpack" takes a list and splits it up
-into a number of atoms. It uses the same arguments as "pack" but generates
-outlets rather than inlets.;
-#X obj 448 319 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 453 319 "route" object;
-#X text 459 349 The "route" object sorts lists based on the first atom
-of the list. It as a number of float or symbol arguments. For each
-argument "route" creates one outlet. "route" also creates one additional
-rightmost outlet for rejections. For each list route gets it compares
-the first atom to all its arguments. If the first atom matches one
-of the arguments it the rest of the list \, without the first atom
-\, gets send through the outlet corresponding to that argument. If
-the first atom of the list does not match any arguments the entire
-list \, including the first atom \, gets sent out the rejection outlet.
-;
-#X msg 688 493 rejection 1;
-#X obj 685 553 print rejection;
-#X msg 538 493 o1 2;
-#X msg 613 493 o2 3;
-#X obj 613 531 route o1 o2;
-#X obj 613 593 print o1;
-#X obj 649 573 print o2;
-#X text 12 8 7 Intermediate Pure-Data - Working with lists;
-#X connect 6 0 20 1;
-#X connect 7 0 20 0;
-#X connect 13 0 14 0;
-#X connect 20 0 8 0;
-#X connect 24 0 26 0;
-#X connect 24 1 27 0;
-#X connect 24 2 28 0;
-#X connect 25 0 24 0;
-#X connect 36 0 40 0;
-#X connect 38 0 40 0;
-#X connect 39 0 40 0;
-#X connect 40 0 41 0;
-#X connect 40 1 42 0;
-#X connect 40 2 37 0;
diff --git a/externals/gridflow/doc/tutorials/pure-data-8.pd b/externals/gridflow/doc/tutorials/pure-data-8.pd
deleted file mode 100755
index aa95c087..00000000
--- a/externals/gridflow/doc/tutorials/pure-data-8.pd
+++ /dev/null
@@ -1,89 +0,0 @@
-#N canvas 238 94 891 621 10;
-#X obj 8 6 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 577 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 668 579 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
-;
-#N canvas 0 22 482 332 META 0;
-#X text 12 5 CATEGORY: tutorial;
-#X text 12 15 KEYWORDS: send receive netsend netreceive cordless communication
-network TCP/IP UDP internet;
-#X restore 16 583 pd META;
-#X obj 8 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 12 20 DESCRIPTION: nested patches using abstractions & subpatches
-;
-#X text 13 46 What is an abstraction?;
-#X text 23 76 Since objects are very simple in Pure-Data doing complex
-tasks often leads to very complex patches. Often it is useful to use
-the same bit of patching you do for one project for another. Pure-Data
-has a facility to "nest" \, that is to take a number of objects in
-a collection and place them into a group that looks like a single object.
-This is also handy to make a complex patch look simple and clear by
-hiding the nitty-gritty details. There are two types of these collections
-\, the subpatch and the abstraction.;
-#X obj 8 216 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 13 216 The subpatch;
-#X text 23 246 Subpatches are collections of objects that get "hidden"
-inside a container that looks like a normal PD object. Subpatches are
-created by creating an object box \, and typing the word "pd" followed
-by whatever you want to describe the contents of the subpatch. Subpatches
-are saved at the same time as the "parent" patch. Here is a subpatch:
-;
-#N canvas 0 22 460 310 subpatch 0;
-#X obj 30 34 inlet;
-#X obj 30 77 outlet;
-#X text 99 35 This is inside the subpatch.;
-#X connect 0 0 1 0;
-#X restore 178 359 pd subpatch;
-#X floatatom 178 336 5 0 0 0 - - -;
-#X floatatom 178 387 5 0 0 0 - - -;
-#X text 23 416 To open a subpatch simply click once on the subpatch
-in run-mode or control-click (or right-click) and select open in edit-mode.
-Both subpatches and abstractions communicate with the parent patch
-through special objects called "inlet" and "outlet" for each "inlet"
-in a subpatch or abstraction an inlet is created on the subpatch. This
-example has one inlet and one outlet.;
-#X obj 448 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 453 46 The abstraction;
-#X text 463 76 Abstractions are very similar to subpatches. They are
-collections of objects that are "hidden" inside PD objects \, and they
-both use "inlet" and "outlet" objects to communicate with the parent
-patch. The difference between subpatches and abstractions is that abstractions
-are saved in a separate file from the parent. This means when you save
-the parent patch containing abstractions the abstractions are not saved.
-The abstractions are saved as separate files so that they can be used
-in multiple patches. A second feature that exists in abstractions and
-not in subpatches is the ability to use arguments. "send" and "receive"
-can be used inside abstractions to send data without connections (patch-cords).
-;
-#X obj 682 253 r output;
-#X obj 682 277 print;
-#X obj 564 253 abstraction 1 2;
-#X text 463 316 To create an abstraction all you need to do is create
-a new PD patch ("File" -> "New"). Create the contents of the abstraction
-and then save it in the same directory as the patch you want to use
-it in. In this case the abstraction is saved as "abstraction.pd". Once
-saved you can easily embed the abstraction simply by typing its name
-\, without the .pd extension \, into an object box.;
-#X obj 448 416 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 453 416 Dollarsign in object boxes;
-#X text 463 446 If you open the above example you will see that the
-familiar "pack" object has a number of "$" arguments. The "$" arguments
-in a object box differ entirely from the "$" used in message objects.
-When you use a "$" in an object box inside an abstraction the values
-get replaced with the arguments to that abstraction. In the case above
-the "pack" object's first argument "$1" gets replaced with the first
-argument of the abstraction "1" "$2" gets replaced with the second
-argument "2".;
-#X text 23 536 For more info see: 12.PART2.subpatch.pd 14.dollersign.pd
-;
-#X text 12 8 8 Intermediate Pure-Data - Using abstractions and subpacthes
-;
-#X connect 11 0 13 0;
-#X connect 12 0 11 0;
-#X connect 18 0 19 0;
diff --git a/externals/gridflow/doc/tutorials/pure-data-9.pd b/externals/gridflow/doc/tutorials/pure-data-9.pd
deleted file mode 100755
index e5188ee0..00000000
--- a/externals/gridflow/doc/tutorials/pure-data-9.pd
+++ /dev/null
@@ -1,43 +0,0 @@
-#N canvas 291 108 450 562 10;
-#X obj 8 6 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 8 517 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 228 519 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
-;
-#N canvas 0 22 486 336 META 0;
-#X text 12 5 CATEGORY: tutorial;
-#X text 12 15 KEYWORDS: GOP graph parent abstraction nesting ui interface
-;
-#X restore 16 523 pd META;
-#X obj 8 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text 12 20 DESCRIPTION: Using Graph on Parent abstractions;
-#X text 13 46 What is Graph on Parent?;
-#X text 13 76 Graph on Parent is a feature of PD that allows you to
-show the GUI objects contained in an abstraction on the parent patch.
-This means that you can create abstractions that not only include a
-collection of objects but can also include a user interface. To use
-graph on parent you simply need to create an abstraction the usual
-way but before saving it you need should Control-Click (Right-Click)
-on the background (white area) in the abstraction and choose "properties".
-From the properties menu check the "graph on parent" option. Now when
-you save the patch and embed it in a second patch all GUI objects will
-be visible.;
-#X obj 154 250 gop_abstraction;
-#X text 13 331 In this simple example there is only one GUI object
-\, a slider. Inside the abstraction the slider is connected to an inlet
-and an outlet. If you move the slider you can see the result in the
-outlet. If you set a value in the inlet with the number GUI you can
-see the position of the slider change.;
-#X floatatom 154 231 5 0 0 0 - - -;
-#X floatatom 154 297 5 0 0 0 - - -;
-#X text 13 421 Note you can change the size of the abstractions bounding
-box by Control-Click (Right-Click) on the abstraction and choose "properties".
-The size of the bounding-box is specified by the "screen width" and
-"screen height".;
-#X text 13 487 For more info see:;
-#X text 12 8 9 Intermediate Pure-Data - Using GUI's in abstractions
-;
-#X connect 8 0 11 0;
-#X connect 10 0 8 0;
diff --git a/externals/gridflow/doc/tutorials/randomly-select-an-image.pd b/externals/gridflow/doc/tutorials/randomly-select-an-image.pd
deleted file mode 100755
index 5817aa32..00000000
--- a/externals/gridflow/doc/tutorials/randomly-select-an-image.pd
+++ /dev/null
@@ -1,53 +0,0 @@
-#N canvas 417 0 446 428 10;
-#X text 6 15 You can open multiple images in the same window. To do
-so you connect the outputs from the images to the inlet of the out
-window.;
-#X obj 136 295 #out window;
-#X obj 65 198 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 28 232 #in;
-#X msg 28 160 open b001.jpg;
-#X obj 188 197 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 151 231 #in;
-#X msg 151 159 open r001.jpg;
-#X obj 301 196 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 264 230 #in;
-#X msg 264 158 open g001.jpg;
-#X obj 7 -37 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 10 -37 What is a grid?;
-#X obj 8 320 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
-0;
-#X text 16 327 GridFlow 0.8.0;
-#X obj 7 -72 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X text 12 -73 2 Images;
-#X text 14 -59 Description: opening multiple images from one window.
-;
-#X obj 56 115 random 3;
-#X floatatom 195 81 5 0 0 0 - - -;
-#X obj 3 55 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1;
-#X obj 163 112 sel 0;
-#X obj 226 127 sel 1;
-#X obj 304 115 sel 2;
-#X obj 55 92 metro 1000;
-#X connect 2 0 3 0;
-#X connect 3 0 1 0;
-#X connect 4 0 3 0;
-#X connect 5 0 6 0;
-#X connect 6 0 1 0;
-#X connect 7 0 6 0;
-#X connect 8 0 9 0;
-#X connect 9 0 1 0;
-#X connect 10 0 9 0;
-#X connect 18 0 19 0;
-#X connect 19 0 21 0;
-#X connect 19 0 22 0;
-#X connect 19 0 23 0;
-#X connect 20 0 24 0;
-#X connect 21 0 2 0;
-#X connect 22 0 5 0;
-#X connect 23 0 8 0;
-#X connect 24 0 18 0;
diff --git a/externals/gridflow/doc/tutorials/title-page-pd-gf-in-one.pd b/externals/gridflow/doc/tutorials/title-page-pd-gf-in-one.pd
deleted file mode 100755
index 18798314..00000000
--- a/externals/gridflow/doc/tutorials/title-page-pd-gf-in-one.pd
+++ /dev/null
@@ -1,129 +0,0 @@
-#N canvas 18 0 762 514 10;
-#X obj 102 -15 cnv 15 430 50 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 102 66 cnv 1 430 430 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 102 98 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 102 73 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 108 66 cnv 1 2 430 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 516 67 cnv 1 2 430 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 102 158 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 102 182 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 152 114 1.1 What is a grid?;
-#X obj 142 456 cnv 15 300 30 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 154 461 Stephanie Brodeur & Darsha Hewitt 2005;
-#X obj 102 36 cnv 15 430 30 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 214 -6 cnv 15 100 17 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 214 -6 GridFlow 0.8.0;
-#X obj 102 -15 cnv 1 430 1 empty empty empty 20 12 0 14 -66577 -66577
-0;
-#X obj 102 34 cnv 1 430 1 empty empty empty 20 12 0 14 -66577 -66577
-0;
-#X obj 315 8 cnv 15 63 17 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 314 8 Tutorials;
-#X obj 102 65 cnv 1 430 1 empty empty empty 20 12 0 14 -66577 -66577
-0;
-#X obj 102 495 cnv 1 430 1 empty empty empty 20 12 0 14 -66577 -66577
-0;
-#X text 140 79 1;
-#X obj 158 78 Introduction to Grids;
-#X text 152 130 1.2 How to create grid.;
-#X text 152 192 2.1 How does GridFlow understand images?;
-#X text 141 164 2;
-#X obj 162 161 Introduction to Images;
-#X text 152 211 2.2 Opening an image.;
-#X text 152 230 2.3 Different options on how to open an image.;
-#X text 178 247 2.3.1 Opening different images in one window.;
-#X text 178 264 2.3.2 Opening images using send and receive.;
-#X obj 102 356 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X obj 102 380 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
-0;
-#X text 141 362 3;
-#X obj 162 359 Introduction to Video;
-#X text 178 300 2.4.1 Resizing an image.;
-#X text 151 284 2.4 Image manipulation.;
-#X text 178 315 2.4.2 Greyscale.;
-#X text 178 330 2.4.3 numop.;
-#X text 149 394 4 Introduction to live feed;
-#X text 150 422 5 Putting it all together;
-#X obj -401 -18 cnv 15 455 30 empty empty empty 20 12 0 14 -233017
--66577 0;
-#X obj -398 898 cnv 15 870 30 empty empty empty 20 12 0 14 -233017
--66577 0;
-#X text -393 898 Copyright Ben Bogart 2005 \; (See COPYING.TXT for
-details);
-#X text -397 -11 Welcome to Pure-Data...;
-#X obj -401 22 cnv 15 455 15 empty empty empty 20 12 0 14 -179884 -66577
-0;
-#X text -396 22 What is Pure-Data (aka PD)?;
-#X text -381 50 Pure-Data is an open-source patching environment for
-multi-media (audio+image). Pure-Data is a programming language where
-you create relationships by connecting visual boxes (rather than typing
-complex commands). This lecture is separated into three sections: An
-Introduction to Pure-Data \, An introduction to Gem and intermediate
-PD and Gem.;
-#X obj -381 152 cnv 15 430 120 empty empty empty 20 12 0 14 -179884
--66577 0;
-#X obj -367 174 pddp_open pure-data-1;
-#X obj -367 197 pddp_open pure-data-2;
-#X obj -367 220 pddp_open pure-data-3;
-#X obj -367 243 pddp_open pure-data-4;
-#X text -192 174 Pure-Data Introduction;
-#X text -192 197 GUI Objects for Interaction;
-#X text -192 220 Creating your first patch;
-#X text -192 243 Control: metro \, random & counter;
-#X obj -382 376 cnv 15 430 145 empty empty empty 20 12 0 14 -179884
--66577 0;
-#X obj -378 580 cnv 15 430 145 empty empty empty 20 12 0 14 -179884
--66577 0;
-#X obj -364 602 pddp_open pure-data-5;
-#X obj -364 625 pddp_open pure-data-6;
-#X text -189 625 The powerful message object;
-#X obj -364 648 pddp_open pure-data-7;
-#X text -189 648 More about lists;
-#X text -189 671 Nesting collections of objects;
-#X text -189 602 Connectionless communications;
-#X obj -364 671 pddp_open pure-data-8;
-#X text -189 695 Using GUI's in abstractions;
-#X obj -364 695 pddp_open pure-data-9;
-#X obj -378 787 cnv 15 430 95 empty empty empty 20 12 0 14 -179884
--66577 0;
-#X text -194 422 Introduction to Images;
-#X text -194 468 Introduction to Live Feeds;
-#X obj -401 308 cnv 15 455 15 empty empty empty 20 12 0 14 -179884
--66577 0;
-#X text -189 837 Putting it all together;
-#X text -190 808 Interfacing with sensors;
-#X text -194 399 Introduction to Grids;
-#X text -384 331 GridFlow is a multidimentional dataflow processing
-library for PureData and Ruby \, designed for interactive multimedia.
-;
-#X text -377 376 2 Introduction to GridFlow;
-#X text -376 152 1 Introduction to Pure-Data;
-#X text -373 580 3 Intermediate Pure-Data;
-#X text -373 787 4 Intermediate GridFlow;
-#X obj -401 542 cnv 15 455 15 empty empty empty 20 12 0 14 -179884
--66577 0;
-#X text -396 542 What is GridFLow?;
-#X obj -400 751 cnv 15 455 15 empty empty empty 20 12 0 14 -179884
--66577 0;
-#X text -395 751 What is GridFLow?;
-#X obj -283 400 GridFlow-1;
-#X obj -283 423 GridFlow-2;
-#X obj -283 446 GridFlow-3;
-#X obj -283 469 GridFlow-4;
-#X obj -281 809 GridFlow-6;
-#X obj -281 832 GridFlow-7;
-#X text -395 308 What is GridFlow?;
-#X text -194 445 Introduction to Video;
diff --git a/externals/gridflow/doc/tutorials/txt-for-resize-image.pd b/externals/gridflow/doc/tutorials/txt-for-resize-image.pd
deleted file mode 100755
index f991ba07..00000000
--- a/externals/gridflow/doc/tutorials/txt-for-resize-image.pd
+++ /dev/null
@@ -1,3 +0,0 @@
-#N canvas 0 0 450 300 10;
-#X text 48 29 How to resize an image:;
-#X text 39 70 # scale 640 480 pour les images;