#N canvas 577 136 632 537 10; #X obj 0 0 doc_h gf/; #X obj 0 503 doc_f; #X msg 42 43 symbol mud; #X msg 51 63 symbol slim_shady; #X msg 55 84 symbol who; #X obj 3 141 doc_c any; #X obj 14 171 doc_cc any; #X obj 97 171 doc_m cany ; #X obj 3 443 doc_o 0; #X obj 3 255 doc_i 1; #X obj 14 285 doc_ii 0; #X obj 97 285 doc_m i0 list; #X text 232 171 will be converted to a long string by joining stringified atoms using single spaces. then will be searched for %s placeholders \, which will be replaced by arguments \$1 \, \$2 \, \$3 \, etc. \, sprintf style. (supports several %s unlike [makefilename]).; #X obj 3 483 doc_also; #X obj 31 105 gf/error my name is %s; #X obj 199 105 gf/error got %d channels expecting 3 (rgb) or 4 (rgba) ; #X obj 103 483 gf/sprintf; #X msg 199 86 list 6; #X text 244 29 make error messages on behalf of the containing abstraction instance; #X text 256 72 in the case of a toplevel patch like this (non-abstraction) the error message will contain "[???]"; #X text 232 285 list of arguments for substituting into the %s placeholders. after substitution is done \, an error message will be generated with that text. the apparent source of the error will be the abstraction instance containing [gf/error] \, if applicable. this is what Find Last Error will find and highlight.; #X obj 97 372 doc_m i0 uplevel; #X text 232 372 generate an error on behave of a higher abstraction. \$1 is how many instances to climb up (NOT how many canvases). then \$1 is shifted out \, as the rest of the arguments are used as in list (list \$2 \$3 \$4 ...); #X connect 2 0 14 0; #X connect 3 0 14 0; #X connect 4 0 14 0; #X connect 7 1 12 0; #X connect 11 1 20 0; #X connect 13 1 16 0; #X connect 17 0 15 0; #X connect 21 1 22 0;