#N canvas 6 321 733 553 10; #X declare -lib Gem; #X text 542 8 GEM object; #X obj 8 386 cnv 15 430 150 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 39 388 Inlets:; #X text 38 495 Outlets:; #X obj 8 306 cnv 15 430 60 empty empty empty 20 12 0 14 -195568 -66577 0; #X text 47 305 Arguments:; #X obj 7 76 cnv 15 430 220 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 449 77 cnv 15 270 250 empty empty empty 20 12 0 14 -228992 -66577 0; #X text 453 60 Example:; #X obj 514 254 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 0 0 450 300 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 142 68 set create; #X msg 132 112 create \, 1; #X msg 198 112 destroy; #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 restore 519 293 pd gemwin; #X msg 519 274 create; #X text 515 253 Create window:; #X obj 451 138 cnv 15 260 100 empty empty empty 20 12 0 14 -24198 -66577 0; #X obj 451 84 gemhead; #X text 71 31 Class: pix object; #X obj 510 85 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144 -1 -1; #N canvas 0 0 587 366 image 0; #X obj 77 48 inlet; #X obj 77 344 outlet; #X obj 77 205 pix_image examples/data/fractal.JPG; #X obj 223 55 inlet; #X msg 223 123 open \$1; #X obj 223 100 openpanel; #X text 156 263 [pix_buf] with "auto 1" is important if we want to recalculate our pix-effect each frame but don't want to reload the image all the time.; #X obj 77 281 pix_buf; #X obj 102 229 loadbang; #X msg 102 250 auto 1; #X connect 0 0 2 0; #X connect 2 0 7 0; #X connect 3 0 5 0; #X connect 4 0 2 0; #X connect 5 0 4 0; #X connect 7 0 1 0; #X connect 8 0 9 0; #X connect 9 0 7 0; #X restore 451 113 pd image; #X text 16 511 Outlet 1: gemlist; #X text 23 402 Inlet 1: gemlist; #X obj 451 253 pix_draw; #X text 516 105 open an image; #X text 509 118 (JPEG \, TIFF \, ..); #X text 50 12 Synopsis: [pix_curve]; #X text 29 76 Description: apply color curves to an image; #X text 13 96 [pix_curve] applies color-curves (that are stored in arrays) to an image.; #X text 14 125 You can specify one table for all 4 (RGBA) channels or one for each channel. If you do not specify a table for the Alpha-channel \, it will not be touched.; #X text 17 175 You can specify the tables with creation-arguments and (re)set them with the "set"-message.; #X text 15 204 The length of the used table does not matter. The table will be stretched/squeezed to (virtually) hold 256 items. If it is stretched \, no interpolation is done!; #X text 17 257 The values of the table-items have range between 0 and 255 !; #X msg 469 142 set tab-rgba; #X msg 469 162 set tab-red tab-green tab-blue; #N canvas 46 428 568 342 table-init 0; #X msg 26 171 \; tab-red cosinesum 128 1 0.6 -0.2 0.2 \; tab-red normalize 256; #X msg 26 222 \; tab-blue cosinesum 8 0.5 -0.4 0.3 \; tab-blue normalize 256; #X obj 352 120 until; #X msg 353 49 100; #X obj 352 167 i; #X obj 383 167 + 1; #X msg 367 147 0; #X obj 352 196 t f f f; #X obj 381 219 * -1; #X obj 381 259 pack; #X obj 338 304 tabwrite tab-green; #X msg 338 281 \$1 \$1; #X obj 381 280 tabwrite tab-rgba; #X obj 210 11 loadbang; #X obj 352 71 t f b; #X obj 381 239 + 100; #X obj 200 39 t b b b; #X msg 148 103 \; tab-green normalize 256 \; tab-rgba normalize 256 ; #X obj 37 125 t b b; #X connect 2 0 4 0; #X connect 3 0 14 0; #X connect 4 0 5 0; #X connect 4 0 7 0; #X connect 5 0 4 1; #X connect 6 0 4 1; #X connect 7 0 11 0; #X connect 7 1 8 0; #X connect 7 2 9 1; #X connect 8 0 15 0; #X connect 9 0 12 0; #X connect 11 0 10 0; #X connect 13 0 16 0; #X connect 14 0 2 0; #X connect 14 1 6 0; #X connect 15 0 9 0; #X connect 16 0 18 0; #X connect 16 1 17 0; #X connect 16 2 3 0; #X connect 18 0 0 0; #X connect 18 1 1 0; #X restore 463 392 pd table-init; #X obj 459 344 table tab-rgba; #X obj 580 342 table tab-red; #X obj 580 362 table tab-green; #X obj 580 382 table tab-blue; #X obj 451 215 pix_curve tab-rgba; #X msg 469 183 set tab-green tab-blue tab-red tab-rgba; #X text 13 336 3 args: separate s for all channels; #X text 13 350 4 args: separate s for all channels (incl. alpha); #X text 13 322 1 arg:: common for all channels; #X text 23 415 Inlet 1: set : common table for all channels ; #X text 23 432 Inlet 1: set : separate tables for all channels; #X text 23 461 Inlet 1: set : separate tables for all channels (incl. Alpha); #X obj 618 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; #X connect 16 0 17 1; #X connect 17 0 37 0; #X connect 30 0 37 0; #X connect 31 0 37 0; #X connect 37 0 20 0; #X connect 38 0 37 0;