#N canvas 119 61 764 634 10;
#X declare -lib Gem;
#N canvas 285 0 681 629 tables 0;
#N canvas 0 0 450 300 (subpatch) 0;
#X array red 256 float 0;
#X coords 0 255 255 0 256 140 1;
#X restore 95 30 graph;
#N canvas 0 0 450 300 (subpatch) 0;
#X array green 256 float 0;
#X coords 0 255 255 0 256 140 1;
#X restore 399 29 graph;
#N canvas 0 0 450 300 (subpatch) 0;
#X array blue 256 float 0;
#X coords 0 255 255 0 256 140 1;
#X restore 98 214 graph;
#N canvas 0 0 450 300 (subpatch) 0;
#X array alpha 64 float 0;
#X coords 0 255 63 0 256 140 1;
#X restore 396 212 graph;
#N canvas 0 0 450 300 (subpatch) 0;
#X array edge 8 float 0;
#X coords 0 255 7 0 256 140 1;
#X restore 49 440 graph;
#X text 319 459 set all black and white pixels to black.;
#X text 318 477 set all "grey" pixels (the transients) to white.;
#X restore 219 225 pd tables;
#X obj 30 272 gemhead;
#X obj 30 468 pix_texture;
#N canvas 0 0 450 300 (subpatch) 0;
#X array rgba 256 float 0;
#X coords 0 256 255 0 256 140 1;
#X restore 217 70 graph;
#X text 78 8 pix_curve: adjust the colour of an image;
#X text 291 227 separate tables for r \, g \, b and a;
#X obj 466 274 pix_curve rgba;
#X obj 469 324 pix_curve red green blue;
#X obj 470 373 pix_curve red green blue alpha;
#X text 504 291 one curve for all channels;
#X text 505 391 curves for r \, g \, b \, a;
#X text 500 341 curves for r \, g \, b \; leave a unchanged;
#X msg 507 127 \; rgba cosinesum 64 128 128;
#X obj 30 393 pix_curve rgba;
#N canvas 328 58 600 502 init 0;
#X obj 93 39 loadbang;
#X msg 115 87 \; rgba resize 256 \; red resize 256 green resize 256
\; blue resize 256 \; alpha resize 64 \; alpha const 128;
#X obj 93 197 t b b;
#X msg 93 219 256;
#X msg 125 218 0;
#X obj 93 241 until;
#X obj 93 262 i;
#X obj 123 261 + 1;
#X msg 93 177 bang;
#X obj 93 283 t f f f;
#X obj 93 370 tabwrite rgba;
#X msg 93 348 \$1 \$1;
#X obj 210 304 / 255;
#X obj 210 326 sqrt;
#X obj 210 347 * 255;
#X obj 210 395 tabwrite red;
#X obj 210 373 pack 0 0;
#X obj 319 456 tabwrite green;
#X obj 104 395 tabwrite blue;
#X obj 93 63 t b b b;
#X msg 364 83 \; edge resize 8 \; edge const 255 \; edge 0 0 \; edge
7 0;
#X obj 319 393 unpack;
#X obj 319 413 - 255;
#X obj 319 432 * -1;
#X obj 362 413 - 255;
#X obj 362 432 * -1;
#X connect 0 0 19 0;
#X connect 2 0 3 0;
#X connect 2 1 4 0;
#X connect 3 0 5 0;
#X connect 4 0 6 1;
#X connect 5 0 6 0;
#X connect 6 0 7 0;
#X connect 6 0 9 0;
#X connect 7 0 6 1;
#X connect 8 0 2 0;
#X connect 9 0 11 0;
#X connect 9 1 12 0;
#X connect 9 2 16 1;
#X connect 11 0 10 0;
#X connect 11 0 18 0;
#X connect 12 0 13 0;
#X connect 13 0 14 0;
#X connect 14 0 16 0;
#X connect 16 0 15 0;
#X connect 16 0 21 0;
#X connect 19 0 8 0;
#X connect 19 1 1 0;
#X connect 19 2 20 0;
#X connect 21 0 22 0;
#X connect 21 1 24 0;
#X connect 22 0 23 0;
#X connect 23 0 17 0;
#X connect 24 0 25 0;
#X connect 25 0 17 1;
#X restore 604 470 pd init;
#X msg 284 275 set rgba;
#X msg 282 325 set red green blue;
#X msg 278 375 set red green blue alpha;
#X text 505 110 an alternative colour-curve;
#X text 228 56 paint your own curve;
#X obj 30 509 square 2;
#X obj 30 488 translateXYZ -2 0 0;
#X obj 244 486 gemhead;
#X obj 244 548 pix_texture;
#X obj 244 569 translateXYZ 2 0 0;
#X obj 244 527 pix_curve edge;
#N canvas 80 38 600 318 pix_update 0;
#X obj 59 115 inlet;
#X obj 59 227 outlet;
#X text 61 19 this is quite a dummy-routine:;
#X text 78 47 just multiply the pix-buffer with 1 (do nothing !) \,
and make it thereby dirty \, so that the pix_curve routines are going
to be called....;
#X text 56 272 maybe this could be done more easily..?;
#X obj 59 202 pix_buf;
#X obj 59 156 t a b;
#X connect 0 0 6 0;
#X connect 5 0 1 0;
#X connect 6 0 5 0;
#X connect 6 1 5 0;
#X restore 30 331 pd pix_update;
#X obj 244 592 square 2;
#X obj 30 435 alpha;
#X obj 30 303 pix_image ../data/fractal.JPG;
#X obj 244 506 pix_image ../data/dancer.JPG;
#X obj 11 151 cnv 15 200 70 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 454 304 gemwin 0;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 182 68 set create;
#X msg 132 112 create \, 1;
#X msg 238 112 destroy;
#N canvas 87 154 247 179 Gem.init 0;
#X obj 118 46 loadbang;
#X msg 118 81 reset;
#X obj 118 113 outlet;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X restore 289 80 pd Gem.init;
#X obj 132 193 gemwin;
#X obj 132 135 t a;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 2 0 5 0;
#X connect 2 1 4 0;
#X connect 2 1 6 0;
#X connect 3 0 0 0;
#X connect 4 0 0 0;
#X connect 5 0 9 0;
#X connect 6 0 9 0;
#X connect 7 0 9 0;
#X connect 9 0 8 0;
#X restore 16 195 pd gemwin;
#X msg 16 171 create;
#X text 12 151 Create window and render;
#X obj 652 5 declare -lib Gem;
#X connect 1 0 29 0;
#X connect 2 0 21 0;
#X connect 13 0 28 0;
#X connect 15 0 13 0;
#X connect 16 0 13 0;
#X connect 17 0 13 0;
#X connect 21 0 20 0;
#X connect 22 0 30 0;
#X connect 23 0 24 0;
#X connect 24 0 27 0;
#X connect 25 0 23 0;
#X connect 26 0 13 0;
#X connect 28 0 2 0;
#X connect 29 0 26 0;
#X connect 30 0 25 0;
#X connect 32 0 33 0;
#X connect 33 0 32 0;
