#N canvas 138 61 775 371 10;
#X declare -lib Gem;
#X obj 254 305 pix_texture;
#X obj 290 112 gemhead 20;
#X obj 254 65 gemhead;
#X text 257 30 various methods for blending images;
#N canvas 165 295 561 386 blending 0;
#X obj 28 65 inlet;
#X obj 191 354 outlet;
#X obj 173 285 inlet;
#X obj 320 8 inlet;
#X obj 28 322 pix_composite;
#X obj 129 323 pix_add;
#X obj 285 322 pix_diff;
#X obj 191 322 pix_subtract;
#X obj 28 227 pix_alpha;
#N canvas 445 182 508 174 select 0;
#X obj 88 35 inlet;
#X msg 88 98 1;
#X msg 144 98 2;
#X msg 201 97 3;
#X msg 257 97 0;
#X obj 88 121 outlet;
#X msg 329 100 4;
#X obj 88 59 select pix_add pix_subtract pix_diff pix_composite pix_multiply
;
#X connect 0 0 7 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 7 0 1 0;
#X connect 7 1 2 0;
#X connect 7 2 3 0;
#X connect 7 3 4 0;
#X connect 7 4 6 0;
#X restore 350 82 pd select blending method;
#X obj 360 324 pix_multiply;
#N canvas 172 373 450 300 demux5 0;
#X obj 59 30 inlet;
#X obj 283 17 inlet;
#X obj 59 193 outlet;
#X obj 59 137 spigot;
#X obj 96 109 == 0;
#X obj 106 137 spigot;
#X obj 153 139 spigot;
#X obj 200 137 spigot;
#X obj 246 137 spigot;
#X obj 143 109 == 1;
#X obj 190 109 == 2;
#X obj 237 109 == 3;
#X obj 283 109 == 4;
#X obj 96 83 loadbang;
#X obj 59 52 t a a a a a;
#X obj 106 194 outlet;
#X obj 153 195 outlet;
#X obj 200 196 outlet;
#X obj 246 195 outlet;
#X obj 283 61 f;
#X connect 0 0 14 0;
#X connect 1 0 19 0;
#X connect 3 0 2 0;
#X connect 4 0 3 1;
#X connect 5 0 15 0;
#X connect 6 0 16 0;
#X connect 7 0 17 0;
#X connect 8 0 18 0;
#X connect 9 0 5 1;
#X connect 10 0 6 1;
#X connect 11 0 7 1;
#X connect 12 0 8 1;
#X connect 13 0 4 0;
#X connect 14 0 3 0;
#X connect 14 1 5 0;
#X connect 14 2 6 0;
#X connect 14 3 7 0;
#X connect 14 4 8 0;
#X connect 19 0 4 0;
#X connect 19 0 9 0;
#X connect 19 0 10 0;
#X connect 19 0 11 0;
#X connect 19 0 12 0;
#X restore 28 189 pd demux5;
#X obj 320 28 t b a;
#X obj 28 129 pix_buf;
#X text 26 39 pix1;
#X text 176 269 pix2;
#X obj 350 56 symbol;
#X text 99 232 we need an alpha component for 'composite';
#X text 85 115 [pix_add] and friends will overwrite the original (left)
image with the blend. [pix_buf] holds a local copy of the original
image and will refresh the output when banged.;
#X connect 0 0 13 0;
#X connect 2 0 5 1;
#X connect 2 0 4 1;
#X connect 2 0 7 1;
#X connect 2 0 6 1;
#X connect 2 0 10 1;
#X connect 3 0 12 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 1 0;
#X connect 7 0 1 0;
#X connect 8 0 4 0;
#X connect 9 0 11 1;
#X connect 10 0 1 0;
#X connect 11 0 8 0;
#X connect 11 1 5 0;
#X connect 11 2 7 0;
#X connect 11 3 6 0;
#X connect 11 4 10 0;
#X connect 12 0 13 0;
#X connect 12 1 16 0;
#X connect 13 0 11 0;
#X connect 16 0 9 0;
#X restore 254 250 pd blending;
#X obj 254 328 square 3;
#X text 461 210 additive blending (likely to get white);
#X text 461 231 subtractive blending (likely to get black);
#X text 467 184 alpha blending;
#X msg 367 281 pix_multiply;
#X msg 368 256 pix_diff;
#X msg 366 232 pix_subtract;
#X msg 366 207 pix_add;
#X msg 367 184 pix_composite;
#X text 469 281 multiply 2 images together;
#X obj 254 87 pix_image ../data/dancer.JPG;
#X obj 290 136 pix_image ../data/fractal.JPG;
#X text 465 259 difference;
#X obj 20 69 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 454 304 gemwin 0;
#X obj 132 136 gemwin;
#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 connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 6 0;
#X connect 3 1 5 0;
#X connect 3 1 7 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X connect 8 0 0 0;
#X restore 25 113 pd gemwin;
#X msg 25 89 create;
#X text 21 69 Create window and render;
#X obj 662 5 declare -lib Gem;
#X connect 0 0 5 0;
#X connect 1 0 16 0;
#X connect 2 0 15 0;
#X connect 4 0 0 0;
#X connect 9 0 4 2;
#X connect 10 0 4 2;
#X connect 11 0 4 2;
#X connect 12 0 4 2;
#X connect 13 0 4 2;
#X connect 15 0 4 0;
#X connect 16 0 4 1;
#X connect 19 0 20 0;
#X connect 20 0 19 0;
