#N canvas 0 0 632 659 10; #X obj 0 0 doc_demo; #X obj 3 32 doc_section General Topics; #X obj 108 64 doc_link about 1; #X text 180 64 about GridFlow (credits \, etc); #X obj 108 96 doc_link intro 1; #X text 180 96 the main goal of this library (but not the only one); #X obj 114 128 doc_link grid 1; #X text 180 128 what is a grid ?; #X obj 108 160 doc_link image 1; #X text 180 160 an image of pixels is just one way to use a grid; #X obj 90 192 doc_link indexmap 1; #X text 180 192 goes with \[#store\]; #X obj 96 224 doc_link numtype 1; #X text 180 224 numtypes allow you to balance precision \, range \, headroom and efficiency ("speed"); #X obj 108 256 doc_link numop 1; #X text 180 256 numops represent ways of combining two numbers (usually); #X obj 102 288 doc_link canvas 1; #X text 180 288 methods added by GridFlow to pd's canvas class accessible through \[namecanvas\]); #X obj 3 340 doc_section Object Classes; #X obj 138 372 # +; #X text 180 372 plain numeric operators on grids: + - * / etc; #X obj -6 404 #apply_colormap_channelwise; #X text 180 404 apply color correction tables separately on each channel; #X obj 54 436 #background_model; #X text 180 436 make mask from learning to distinguish background from foreground; #X obj 114 468 #border; #X text 180 468 add padding on sides of a grid; #X obj 114 500 #camera; #X text 180 500 control panel for opening cameras; #X obj 114 532 #cast i; #X text 180 532 convert grid from one number type to another; #X obj 102 564 #centroid; #X text 180 564 find centroid (weighted average) of the coordinates of a grid; #X obj 114 596 #change; #X text 180 596 send grid only if different from previous grid; #X obj 102 628 #checkers; #X text 180 628 make image of chequered background in two tones of grey; #X obj 126 660 #clip; #X text 180 660 min and max; #X obj 72 692 #cluster_avg 4; #X text 180 692 computes several averages at once according to a table of indices; #X obj 4 724 #color; #X text 180 724 GUI for selecting a colour; #X obj 102 795 #contrast; #X text 180 795 adjust contrast in two different ways; #X obj 102 827 #convolve; #X text 180 827 compute convolution product of a grid (blur and edge-detection); #X obj 132 859 #dim; #X text 180 859 get the size (dimensions) of a grid; #X obj 78 891 #downscale_by; #X text 180 891 reduce the size of an image by a whole factor; #X obj 96 923 #draw_hpgl; #X text 180 923 plot lines given in HPGL format \, using [#draw_polygon]; #X obj 90 955 #draw_image; #X text 180 955 picture-in-picture; #X obj 84 987 #draw_points; #X text 180 987 (future use); #X obj 78 1019 #draw_polygon; #X text 180 1019 draw polygon in an image; #X obj 96 1051 #draw_rect; #X text 180 1051 draw a rectangle in an image; #X obj 84 1083 #draw_slider; #X text 180 1083 draw a slider in an image; #X obj 54 1115 #extract_diagonal; #X text 180 1115 extract the main diagonal from a matrix; #X obj 126 1147 #fade; #X text 180 1147 fade in exponential-decay fashion (linear recurrence); #X obj 102 1179 #fade_lin; #X text 180 1179 fade in piecewise-linear fashion; #X obj 102 1211 #fastblur; #X text 180 1211 speedy shortcut for rectangular blur; #X obj 132 1243 #fft; #X text 180 1243 compute forward or inverse one-or-two-dimensional complex FFT of a grid; #X obj 102 1275 #finished; #X text 180 1275 bang when grid transmission has ended; #X obj 114 1307 #fold +; #X text 180 1307 compute the sum of each row \, product of each row \, and other similar operations; #X obj 96 1339 #for 0 4 1; #X text 180 1339 make a grid from all numbers or coordinates in a certain range; #X obj 102 1371 #from_pdp; #X text 180 1371 convert pdp image/*/* to grid; #X obj 102 1403 #from_pix; #X text 180 1403 convert pix (GEM) to grid; #X obj 120 1435 #gamma; #X text 180 1435 apply gamma correction; #X obj 120 1467 #grade; #X text 180 1467 make an index of the sorting of a grid; #X obj 54 1499 #greyscale_to_rgb; #X text 180 1499 convert greyscale to RGB; #X obj 120 1531 #hello; #X text 180 1531 make 7 colour bars; #X obj 102 1563 #hueshift; #X text 180 1563 apply hue shift by rotating the color wheel; #X obj 114 1595 #import; #X text 180 1595 convert float \, list \, or symbol ASCII codes \, to a grid; #X obj 138 1627 #in; #X text 180 1627 open file or device for reading or download; #X obj 120 1659 #inner; #X text 180 1659 scalar ("dot") product \, matrix product \, tensor contraction \, image channel remapping \, etc.; #X obj 114 1691 doc_link #in~; #X text 180 1691 open file or device for reading or download \, with sound (experimental); #X obj 84 1723 doc_link #io.aalib; #X text 180 1723 open an aalib window; #X obj 78 1755 doc_link #io.dc1394; #X text 180 1755 open a faiawaia "DC" camera (not DV) using a Linux-compatible OS; #X obj 90 1787 doc_link #io.grid; #X text 180 1787 read or write a .grid file (GridFlow storage format); #X obj 90 1819 doc_link #io.jpeg; #X text 180 1819 read or write a .jpeg file; #X obj 90 1851 doc_link #io.mpeg; #X text 180 1851 read a .mpeg video file; #X obj 96 1883 doc_link #io.png; #X text 180 1883 read a .png image file; #X obj 96 1915 doc_link #io.ppm; #X text 180 1915 read a .pbm or .pgm or .ppm image file or write a .ppm image file; #X obj 78 1947 doc_link #io.quartz; #X text 180 1947 open a Quartz window (OSX); #X obj 30 1979 doc_link #io.quicktimeapple; #X text 180 1979 read a .mov video file (OSX); #X obj 24 2011 doc_link #io.quicktimecamera; #X text 180 2011 open a QuickTime Sequence Grabber (Camera / Video input) device; #X obj 48 2043 doc_link #io.quicktimehw; #X text 180 2043 read a .mov or .avi video file (Linux); #X obj 96 2075 doc_link #io.sdl; #X text 180 2075 open a SDL window (Windows \, Linux \, OSX); #X obj 66 2107 doc_link #io.videodev; #X text 180 2107 open a V4L1 device (Linux-only interface for video cameras and video digitisers); #X obj 96 2139 doc_link #io.x11; #X text 180 2139 open a X11 window (Linux \, etc); #X obj 126 2171 #join; #X text 180 2171 join two grids together along any dimension; #X obj 96 2203 #labelling; #X text 180 2203 tag connected pixels with region numbers in a two-tone single-channel image; #X obj 120 2235 #layer; #X text 180 2235 layer two same-sized images; #X obj 60 2267 #line_to_polygon; #X text 180 2267 convert line (as point pair) to polygon (rotated rectangle); #X obj 96 2299 #lop_space; #X text 180 2299 fade in spatially (up \, down \, left \, right \, etc) by IIR filtering; #X obj 90 2331 #make_arrow; #X text 180 2331 make an arrow "polygon" from 2 points (for use with line mode of [#draw_polygon]); #X obj 90 2363 #make_cross; #X text 180 2363 make cross-shaped polygon; #X obj 107 2395 #many tgl 3 3; #X text 180 2395 [#many]: create and organise many identical GUI objects; #X obj 96 2464 #many-prop; #X text 180 2464 properties dialogue for [#many]; #X obj 114 2496 #moment; #X text 180 2496 find 1st or 2nd order moment (weighted average or variance) of the coordinates of a grid; #X obj 78 2528 #moment_polar; #X text 180 2528 convert covariance matrix to the longest and shortest radius of an ellipse and a rotation angle; #X obj 54 2560 #motion_detection; #X text 180 2560 frame difference with some options; #X obj 120 2592 #mouse; #X text 180 2592 converts mouse events to reports of clicks \, drags \, unclicks \, motions \, and separate buttons and wheel; #X obj 60 2624 #noise_gate_yuvs; #X text 180 2624 replaces dark pixels by black pixels in signed YUV images; #X obj 132 2656 #out; #X text 180 2656 open file or device for writing or upload; #X obj 108 2688 #outer +; #X text 180 2688 apply numeric operator on all possible combinations of elements of one grid with elements of another; #X obj 126 2720 #pack; #X text 180 2720 combine floats on separate inlets to make a grid; #X obj 84 2752 #perspective; #X text 180 2752 divide each point by its depth; #X obj 78 2784 #polygon_area; #X text 180 2784 find area of a polygon in square pixels; #X obj 42 2816 #polygon_comparator; #X text 180 2816 find similarity between two polygons independently of rotation \, by radial maps and FFT; #X obj 48 2848 #polygon_each_edge; #X text 180 2848 convert a polygon to a sequence of overlapping 2-sided polygons representing edges; #X obj 66 2880 #polygon_moment; #X text 180 2880 find average of all points inside of a polygon; #X obj 48 2912 #polygon_perimetre; #X text 180 2912 find perimetre of a polygon in pixels (euclidian); #X obj 42 2944 #polygon_radial_map; #X text 180 2944 find radius of a polygon from a given origin \, sampled at equally spaced angles; #X obj 96 2976 #posterize; #X text 180 2976 quantise pixel values; #X obj 120 3008 #print; #X text 180 3008 print to console; #X obj 120 3040 #ravel; #X text 180 3040 do #redim so that a grid keeps same number of elements but just one dimension; #X obj 114 3072 #record; #X text 180 3072 wrapper around [#in quicktime]; #X obj 102 3104 #redim (); #X text 180 3104 change the size of a grid by restreaming contents into a new shape; #X obj 90 3136 #reinterval; #X text 180 3136 change the scale of values from one interval to another; #X obj 84 3168 #remap_image; #X text 180 3168 apply object chain on pixel positions to make new image from chosen pixels of the input image; #X obj 108 3200 #reverse; #X text 180 3200 mirror image of a grid along a dimension; #X obj 54 3232 #rgb_to_greyscale; #X text 180 3232 convert RGB to greyscale; #X obj 84 3264 #rgb_to_rgba; #X text 180 3264 convert RGB to RGBA (but setting alpha to 0); #X obj 90 3296 #rgb_to_yuv; #X text 180 3296 convert RGB to unsigned YUV; #X obj 84 3328 #rgba_to_rgb; #X text 180 3328 convert RGBA to RGB; #X obj 114 3360 #rotate; #X text 180 3360 rotate points through two axes (or rotate pixels as points in a colorspace); #X obj 72 3392 #rotatificator; #X text 180 3392 make rotation matrix for any two dimensions chosen from a space of any number of dimensions; #X obj 90 3424 #saturation; #X text 180 3424 multiply chroma by some value; #X obj 102 3456 #scale_by; #X text 180 3456 reduce the size of an image by a whole factor; #X obj 102 3488 #scale_to; #X text 180 3488 scale an image from one size to any other size by deleting or duplicating rows and columns; #X obj 114 3520 #scan +; #X text 180 3520 compute the cumulative sums of each row \, and other similar operations; #X obj 91 3552 #see; #X text 180 3552 [#see]: view video output within patch and collect mouse/key info; #X obj 102 3624 #seq_fold; #X text 180 3624 cascade the use of an object on all elements of an incoming grid message sequence; #X obj 120 3656 #slice; #X text 180 3656 crop an image using a start point (top left) and end point (bottom right); #X obj 102 3688 #solarize; #X text 180 3688 like pingpong but on all pixel values of a grid; #X obj 126 3720 #sort; #X text 180 3720 sort each row of a grid; #X obj 114 3752 #spread; #X text 180 3752 add noise to each vector (point or pixel); #X obj 120 3784 #store; #X text 180 3784 store image in RAM \, in-place picture-in-picture \, and make lookups in various ways; #X obj 126 3816 #swap; #X text 180 3816 like [swap] for grids; #X obj 138 3848 #t; #X text 180 3848 like [t a a] for grids; #X obj 72 3880 #text_to_image; #X text 180 3880 use a fixed-width font grid to make a tiling of characters as specified by a text string; #X obj 102 3912 #to_float; #X text 180 3912 convert grid to sequence of floats; #X obj 114 3944 #to_iem; #X text 180 3944 convert grid(3) to IEMGUI colour code; #X obj 108 3976 #to_list; #X text 180 3976 convert grid to list; #X obj 90 4008 #to_literal; #X text 180 4008 convert grid to grid-literal (list with a # sign); #X obj 114 4040 #to_pdp; #X text 180 4040 convert grid to pdp image/*/*; #X obj 114 4072 #to_pix; #X text 180 4072 convert grid to pix (GEM); #X obj 96 4104 #to_symbol; #X text 180 4104 convert grid of ASCII codes to symbol; #X obj 114 4136 doc_link #to~; #X text 180 4136 convert grid to signal; #X obj 96 4168 #transpose; #X text 180 4168 swap two dimensions out of any \, in a grid; #X obj 126 4200 #type; #X text 180 4200 get a symbol representing the number type of a grid; #X obj 114 4232 #unpack; #X text 180 4232 split a grid into floats on separate outlets; #X obj 114 4264 #window; #X text 180 4264 a [#out window] that can be toggled to appear and disappear; #X obj 90 4296 #yuv_to_rgb; #X text 180 4296 convert unsigned YUV to RGB; #X obj 132 4328 args; #X text 180 4328 pick up the arguments of an abstraction instance \, including nested lists and init-messages; #X obj 126 4360 ascii; #X text 180 4360 write integer as decimal in ascii codes; #X obj 96 4392 ascii_to_f; #X text 180 4392 converts a list of ascii codes to a float; #X obj 132 4424 attr; #X text 180 4424 dictionary to be used for storing attributes of abstractions \, among other things; #X obj 84 4456 class_exists; #X text 180 4456 figure out whether a class has been loaded by pd; #X obj 114 4488 cv/#Add; #X text 180 4488 OpenCV addition; #X obj 114 4520 cv/#And; #X text 180 4520 OpenCV bitwise AND; #X obj 72 4552 cv/#ApproxPoly; #X text 180 4552 OpenCV polygon approximator; #X obj 60 4584 cv/#CornerHarris; #X text 180 4584 OpenCV Harris corner-detector; #X obj 114 4616 cv/#Div; #X text 180 4616 OpenCV division; #X obj 90 4648 cv/#Ellipse; #X text 180 4648 OpenCV draw ellipse; #X obj 30 4680 cv/#HaarDetectObjects; #X text 180 4680 OpenCV (future use); #X obj 96 4712 cv/#Invert; #X text 180 4712 OpenCV invert matrix; #X obj 84 4744 cv/#KMeans 4; #X text 180 4744 OpenCV K-Means clusteriser; #X obj 114 4776 cv/#Mul; #X text 180 4776 OpenCV multiplication; #X obj 120 4808 cv/#Or; #X text 180 4808 OpenCV bitwise OR; #X obj 114 4840 cv/#SVD; #X text 180 4840 OpenCV singular value decomposition (eigendecomposition); #X obj 114 4872 cv/#Sub; #X text 180 4872 OpenCV subtraction; #X obj 114 4904 cv/#Xor; #X text 180 4904 OpenCV bitwise XOR; #X obj 138 4936 display; #X text 180 4936 [display]: print message or grid inside of the patch; #X obj 66 4968 doc_link doc_accolade; #X text 180 4968 GFDP accolade; #X obj 96 5000 doc_link doc_add; #X text 180 5000 add a [doc_m] in the parent of the parent canvas; #X obj 90 5032 doc_link doc_also; #X text 180 5032 GFDP subheader for listing related classes; #X obj 84 5064 doc_link doc_below; #X text 180 5064 instruct [doc_layout] to put a GFDP element below another one; #X obj 78 5096 doc_link doc_bottom; #X text 180 5096 find the bottom of a GFDP element; #X obj 108 5128 doc_link doc_c; #X text 180 5128 GFDP subheader for creation arguments documentation; #X obj 102 5160 doc_link doc_cc; #X text 180 5160 GFDP subsubheader for creation arguments documentation; #X obj 90 5192 doc_link doc_demo; #X text 180 5192 header of an example patch; #X obj 66 5224 doc_link doc_editmode; #X text 180 5224 automatically move [cnv] and [bng] when switching from/to edit mode; #X obj 84 5256 doc_link doc_exist; #X text 180 5256 check whether a certain GFDP component already exists in the help patch; #X obj 108 5288 doc_link doc_f; #X text 180 5288 footer of a GFDP help patch; #X obj 108 5320 doc_link doc_h; #X text 180 5320 header of a GFDP help patch; #X obj 108 5352 doc_link doc_i; #X text 180 5352 GFDP subheader for inlet documentation; #X obj 102 5384 doc_link doc_ii; #X text 180 5384 GFDP subsubheader for inlet documentation; #X obj 78 5416 doc_link doc_layout; #X text 180 5416 enforce correct layout of the abstraction containing it \, in the parent's abstraction; #X obj 90 5448 doc_link doc_link; #X text 180 5448 GFDP hyperlink for opening another helpfile; #X obj 108 5480 doc_link doc_m; #X text 180 5480 GFDP subsubsubheader for one method or one creation argument; #X obj 90 5512 doc_link doc_make; #X text 180 5512 add GFDP subsubheaders in the parent of the parent canvas; #X obj 108 5544 doc_link doc_o; #X text 180 5544 GFDP subheader for outlet documentation; #X obj 102 5576 doc_link doc_oo; #X text 180 5576 GFDP subsubheader for outlet documentation; #X obj 90 5608 doc_link doc_same; #X text 180 5608 GFDP pseudo-comment for saying a method is same as a creation argument; #X obj 55 5640 doremi; #X text 180 5640 [doremi]: gui object for displaying midi notes; #X obj 120 5729 expect; #X text 180 5729 currently does like list.== (will do more than that in the future); #X obj 138 5761 for; #X text 180 5761 make sequence of float messages for each number in a range with specified stepping; #X obj 114 5793 foreach; #X text 180 5793 convert a list to a sequence of atom messages; #X obj 138 5825 fps; #X text 180 5825 measure frames per second and make statistics; #X obj 114 5857 gemdead; #X text 180 5857 fake [gemhead] for use with [#to_pix] without having to use [gemwin]; #X obj 66 5889 gf/canvas_count; #X text 180 5889 tell total number of objects in a canvas; #X obj 36 5921 gf/canvas_dollarzero; #X text 180 5921 tell the \$0 of an uplevel canvas; #X obj 42 5953 gf/canvas_edit_mode; #X text 180 5953 tell the edit mode of a canvas; #X obj 48 5985 gf/canvas_filename; #X text 180 5985 tell the filename of a canvas; #X obj 60 6017 gf/canvas_getpos; #X text 180 6017 tell the position of a canvas in its parent canvas; #X obj 48 6049 gf/canvas_hehehe 0; #X text 180 6049 resize window automatically; #X obj 48 6081 gf/canvas_hohoho 0; #X text 180 6081 draw dashed box; #X obj 66 6113 gf/canvas_index; #X text 180 6113 tell the index of a canvas in its parent canvas; #X obj 36 6145 gf/canvas_isselected; #X text 180 6145 tell whether a canvas is selected in its parent canvas; #X obj 48 6177 gf/canvas_loadbang; #X text 180 6177 send loadbang to the most recently created objects of a canvas; #X obj 60 6209 gf/canvas_setgop; #X text 180 6209 set GOP options of a canvas; #X obj 60 6241 gf/canvas_setpos; #X text 180 6241 set the position of a canvas in its parent canvas; #X obj 78 6273 gf/canvas_xid; #X text 180 6273 tell the x11 id of a canvas \, its window \, and tell the tk id of a canvas; #X obj 108 6305 gf/error; #X text 180 6305 emit error message from the perspective of the current abstraction instance in its parent patch; #X obj 84 6337 gf/find_file; #X text 180 6337 find a file the same way that [#in] does; #X obj 102 6369 gf/getcwd; #X text 180 6369 tell the current working directory (as set by the "cd" shell command); #X obj 102 6401 gf/getpid; #X text 180 6401 tell the process id of the pd server; #X obj 72 6433 gf/io_generate; #X text 180 6433 for internal use by #in and #out; #X obj 108 6465 gf/lol 0; #X text 180 6465 make wires dashed or invisible \, reposition and measure height of comments \, etc.; #X obj 84 6497 gf/mouse_spy; #X text 180 6497 tell mouse/key events of a single patch window in [#out window] format; #X obj 84 6529 doc_link gf/nbxhsl; #X text 180 6529 combined [nbx] and [hsl] boxes as used by [#camera]; #X obj 90 6561 gf/not_open; #X text 180 6561 used by [#in] [#in~] [#out] to represent closed state; #X obj 72 6593 gf/object_bbox; #X text 180 6593 find bounding box of object in canvas; #X obj 96 6625 gf/oneshot; #X text 180 6625 spigot that shuts itself down after each message; #X obj 66 6657 gf/propertybang; #X text 180 6657 bang when right-click properties; #X obj 90 6689 gf/selector; #X text 180 6689 report the true selector of the incoming message; #X obj 90 6721 gf/string_<; #X text 180 6721 compare two strings; #X obj 60 6753 gf/string_length; #X text 180 6753 measure the length of a string (in bytes); #X obj 54 6785 gf/string_replace; #X text 180 6785 search and replace substrings in a symbol; #X obj 60 6817 gf/suffix_lookup; #X text 180 6817 find the objectclass corresponding ; #X obj 108 6849 gridflow; #X text 180 6849 get GridFlow's version number...; #X obj 72 6881 hpgl_find_bbox; #X text 180 6881 find the bounding box of a sequence of hpgl commands; #X obj 60 6913 hpgl_font_render; #X text 180 6913 include hpgl files from disk for drawing text; #X obj 114 6945 hpgl_op; #X text 180 6945 use [#] on hpgl commands; #X obj 42 6977 hpgl_track_position; #X text 180 6977 remember last mentioned hpgl coordinate; #X obj 60 7009 interval_overlap; #X text 180 7009 test whether two intervals of floats overlap; #X obj 132 7041 inv*; #X text 180 7041 swapped /; #X obj 132 7073 inv+; #X text 180 7073 swapped -; #X obj 114 7105 list.==; #X text 180 7105 test two lists of floats and/or symbols for equality; #X obj 108 7137 listfind; #X text 180 7137 find index of an element in a list; #X obj 90 7169 listflatten; #X text 180 7169 merge all nested lists together \, depth-first; #X obj 108 7201 listread; #X text 180 7201 find element at an index in a list; #X obj 90 7233 listreverse; #X text 180 7233 mirror image of a list; #X obj 102 7265 norecurse; #X text 180 7265 simple spigot for preventing control-recursion; #X obj 60 7297 doc_link parallel_port; #X text 180 7297 send to and receive from a DB25 parallel port; #X obj 108 7329 pingpong; #X text 180 7329 turns value of a counter into a zigzag between 0 and a given value; #X obj 66 7361 plotter_control; #X text 180 7361 make HPGL commands; #X obj 72 7393 plotter_parser; #X text 180 7393 interprets ascii codes as HPGL commands and output them as messages; #X obj 84 7425 qwerty_piano; #X text 180 7425 imitation of [notein] using [key] and [keyup]; #X obj 126 7457 range; #X text 180 7457 multiple moses in cascade; #X obj 84 7489 receives \$0-; #X text 180 7489 multiple receives with common outlet and other outlet telling the name of intended destination; #X obj 120 7521 route2; #X text 180 7521 route messages but keep them intact (does not remove selector); #X obj 108 7553 seq_fold; #X text 180 7553 cascade the use of an object on all elements of an incoming message sequence; #X obj 114 7585 setargs; #X text 180 7585 set the arguments of an abstraction instance; #X obj 126 7617 shunt; #X text 180 7617 demultiplexer: send input to separately specified outlet; #X obj 96 7649 systemtime; #X text 180 7649 time spent by process in kernel mode \, as measured by the OS; #X obj 114 7681 tsctime; #X text 180 7681 high-resolution real time \, as measured by the CPU; #X obj 102 7713 unix_time; #X text 180 7713 real time as measured by the OS \, including date; #X obj 108 7745 usertime; #X text 180 7745 time spent by process in non-kernel mode \, as measured by the OS; #X obj 126 7777 var.#; #X text 180 7777 like [f] for grids; #X text 0 7809 227 classes are listed in this index.;