From eb688a8b22a03d660e4b439336c721912c1d6fee Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Sat, 24 May 2008 01:51:05 +0000 Subject: - First stabs at getting pdvjtools as part of Pd-extended - build fixes for Mac OS X - updated help files to standard names svn path=/trunk/externals/pdvjtools/; revision=9893 --- Makefile | 17 ++ imagegrid/imagegrid.libs | 1 + pdp_frei0r/help_pdp_frei0r.pd | 330 -------------------------- pdp_frei0r/pdp_frei0r-help.pd | 330 ++++++++++++++++++++++++++ pix_preview/pix_preview.cc | 538 ++++++++++++++++++++++++++++++++++++++++++ pix_preview/pix_preview.cpp | 538 ------------------------------------------ videogrid/videogrid.cpp | 4 +- videogrid/videogrid.libs | 1 + 8 files changed, 889 insertions(+), 870 deletions(-) create mode 100644 Makefile create mode 100644 imagegrid/imagegrid.libs delete mode 100644 pdp_frei0r/help_pdp_frei0r.pd create mode 100644 pdp_frei0r/pdp_frei0r-help.pd create mode 100644 pix_preview/pix_preview.cc delete mode 100644 pix_preview/pix_preview.cpp create mode 100644 videogrid/videogrid.libs diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..2b8688b --- /dev/null +++ b/Makefile @@ -0,0 +1,17 @@ +TARGET := $(shell pwd | sed 's|.*/\(.*\)$$|\1|') +EXTERNALS_ROOT := $(shell pwd | sed 's|^\(/.*externals\).*|\1|') + +default: + make -C $(EXTERNALS_ROOT) $(TARGET) + +install: + make -C $(EXTERNALS_ROOT) $(TARGET)_install + +clean: + make -C $(EXTERNALS_ROOT) $(TARGET)_clean + +test_locations: + make -C $(EXTERNALS_ROOT) test_locations + +etags: + etags *.[ch] ~/code/pure-data/trunk/pd/src/*.[ch] /usr/include/*.h /usr/include/sys/*.h diff --git a/imagegrid/imagegrid.libs b/imagegrid/imagegrid.libs new file mode 100644 index 0000000..7c8909b --- /dev/null +++ b/imagegrid/imagegrid.libs @@ -0,0 +1 @@ +-lMagick -lWand diff --git a/pdp_frei0r/help_pdp_frei0r.pd b/pdp_frei0r/help_pdp_frei0r.pd deleted file mode 100644 index 42c82d5..0000000 --- a/pdp_frei0r/help_pdp_frei0r.pd +++ /dev/null @@ -1,330 +0,0 @@ -#N canvas 528 22 996 665 10; -#X floatatom 151 379 5 0 0 0 - - -; -#X obj 196 377 hradio 15 1 0 49 empty empty empty 0 -6 0 8 -262144 --1 -1 0; -#X obj 261 171 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 0 1; -#X obj 401 171 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 0 1; -#X obj 541 171 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 0 1; -#X msg 258 191 param 3 \$1; -#X msg 398 190 param 4 \$1; -#X msg 539 190 param 5 \$1; -#X text 197 358 Select the plugin; -#X text 258 72 Adjust plugin parameters.; -#X symbolatom 87 501 20 0 0 0 - - -; -#X text 240 501 <-- plugin name; -#X floatatom 106 479 5 0 0 0 - - -; -#X text 154 477 <-- number of parameters; -#X text 205 451 <-- parameter name; -#X text 232 423 <-- parameter type; -#X obj 263 112 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 0 1; -#X obj 401 112 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 0 1; -#X obj 542 112 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 0 1; -#X obj 261 234 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 0 1; -#X obj 402 234 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 0 1; -#X obj 544 234 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 0 1; -#X msg 260 131 param 0 \$1; -#X msg 398 131 param 1 \$1; -#X msg 539 131 param 2 \$1; -#X msg 260 254 param 6 \$1; -#X msg 399 253 param 7 \$1; -#X msg 541 253 param 8 \$1; -#N canvas 0 22 996 665 pname 0; -#X obj 51 119 l2s; -#X obj 80 119 l2s; -#X obj 111 119 l2s; -#X obj 143 119 l2s; -#X obj 207 120 l2s; -#X obj 236 120 l2s; -#X obj 267 120 l2s; -#X obj 298 119 l2s; -#X obj 327 119 l2s; -#X obj 97 51 inlet; -#X obj 51 154 s ffparam0; -#X obj 79 178 s ffparam1; -#X obj 118 205 s ffparam2; -#X obj 148 227 s ffparam3; -#X obj 185 157 s ffparam4; -#X obj 213 181 s ffparam5; -#X obj 255 206 s ffparam6; -#X obj 283 230 s ffparam7; -#X obj 305 155 s ffparam8; -#X obj 391 53 inlet; -#X msg 390 79 symbol; -#X obj 359 118 l2s; -#X obj 391 118 l2s; -#X obj 97 79 route 0 1 2 3 4 5 6 7 8 9 10; -#X obj 357 178 s ffparam9; -#X obj 414 202 s ffparam10; -#X connect 0 0 10 0; -#X connect 1 0 11 0; -#X connect 2 0 12 0; -#X connect 3 0 13 0; -#X connect 4 0 14 0; -#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 23 0; -#X connect 19 0 20 0; -#X connect 20 0 10 0; -#X connect 20 0 11 0; -#X connect 20 0 12 0; -#X connect 20 0 13 0; -#X connect 20 0 14 0; -#X connect 20 0 15 0; -#X connect 20 0 16 0; -#X connect 20 0 17 0; -#X connect 20 0 18 0; -#X connect 20 0 24 0; -#X connect 20 0 25 0; -#X connect 21 0 24 0; -#X connect 22 0 25 0; -#X connect 23 0 0 0; -#X connect 23 1 1 0; -#X connect 23 2 2 0; -#X connect 23 3 3 0; -#X connect 23 4 4 0; -#X connect 23 5 5 0; -#X connect 23 6 6 0; -#X connect 23 7 7 0; -#X connect 23 8 8 0; -#X connect 23 9 21 0; -#X connect 23 10 22 0; -#X restore 137 451 pd pname; -#X symbolatom 260 93 18 0 0 0 - ffparam0 -; -#X symbolatom 399 92 18 0 0 0 - ffparam1 -; -#X symbolatom 538 92 18 0 0 0 - ffparam2 -; -#X symbolatom 261 154 18 0 0 0 - ffparam3 -; -#X symbolatom 400 153 18 0 0 0 - ffparam4 -; -#X symbolatom 539 153 18 0 0 0 - ffparam5 -; -#X symbolatom 261 214 18 0 0 0 - ffparam6 -; -#X symbolatom 400 213 18 0 0 0 - ffparam7 -; -#X symbolatom 539 213 18 0 0 0 - ffparam8 -; -#X text 489 424 frei0r host for Pure Data Packet version 0.1; -#X text 491 439 by Lluis Gomez i Bigorda (lluis@artefacte.org); -#X text 510 452 & Yves Degoyon (ydegoyon@free.fr); -#X text 491 495 made at piksel yearly gathering : http://www.piksel.no -; -#X obj 155 423 print type; -#X text 491 467 using frei0r specification 1.1 by Georg Seidel \, Phillip -Promesberger and Martin Bayer; -#X obj 261 304 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 0 1; -#X obj 404 304 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 --1 -1 0 1; -#X symbolatom 261 283 18 0 0 0 - ffparam9 -; -#X symbolatom 400 283 18 0 0 0 - ffparam10 -; -#X msg 259 323 param 9 \$1; -#X msg 401 323 param 10 \$1; -#X obj 46 545 pdp_xv; -#N canvas 222 59 450 300 input1 0; -#X obj 49 181 pdp_qt; -#X msg 49 49 bang; -#X msg 110 111 loop 1; -#X obj 50 214 pdp_scale 320 240; -#X msg 167 111 open \$1; -#X obj 167 89 openpanel; -#X text 98 49 Load a mov file; -#X obj 244 113 pdp_v4l; -#X msg 244 58 bang; -#X obj 49 250 outlet; -#X obj 49 5 inlet; -#X obj 251 7 inlet; -#X obj 247 33 route 0; -#X msg 298 59 stop; -#X obj 50 28 route 0; -#X msg 14 79 stop; -#X obj 49 111 metro 80; -#X obj 244 86 metro 80; -#X connect 0 0 3 0; -#X connect 1 0 2 0; -#X connect 1 0 5 0; -#X connect 1 0 16 0; -#X connect 2 0 0 0; -#X connect 3 0 9 0; -#X connect 4 0 0 0; -#X connect 5 0 4 0; -#X connect 7 0 3 0; -#X connect 8 0 17 0; -#X connect 10 0 14 0; -#X connect 11 0 12 0; -#X connect 12 0 13 0; -#X connect 12 1 8 0; -#X connect 13 0 17 0; -#X connect 14 0 15 0; -#X connect 14 1 1 0; -#X connect 15 0 16 0; -#X connect 16 0 0 0; -#X connect 17 0 7 0; -#X restore 44 44 pd input1; -#X text 49 24 .mov; -#X text 115 24 cam; -#X obj 102 10 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 -; -#X obj 44 10 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 -; -#X text 85 89 .mov; -#X text 151 89 cam; -#X obj 138 75 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 -; -#X obj 80 75 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 -; -#N canvas 222 59 450 300 input2 0; -#X obj 49 181 pdp_qt; -#X msg 49 49 bang; -#X msg 110 111 loop 1; -#X obj 50 214 pdp_scale 320 240; -#X msg 167 111 open \$1; -#X obj 167 89 openpanel; -#X text 98 49 Load a mov file; -#X obj 244 113 pdp_v4l; -#X msg 244 58 bang; -#X obj 49 250 outlet; -#X obj 49 5 inlet; -#X obj 251 7 inlet; -#X obj 247 33 route 0; -#X msg 298 59 stop; -#X obj 50 28 route 0; -#X msg 14 79 stop; -#X obj 49 111 metro 80; -#X obj 244 86 metro 80; -#X connect 0 0 3 0; -#X connect 1 0 2 0; -#X connect 1 0 5 0; -#X connect 1 0 16 0; -#X connect 2 0 0 0; -#X connect 3 0 9 0; -#X connect 4 0 0 0; -#X connect 5 0 4 0; -#X connect 7 0 3 0; -#X connect 8 0 17 0; -#X connect 10 0 14 0; -#X connect 11 0 12 0; -#X connect 12 0 13 0; -#X connect 12 1 8 0; -#X connect 13 0 17 0; -#X connect 14 0 15 0; -#X connect 14 1 1 0; -#X connect 15 0 16 0; -#X connect 16 0 0 0; -#X connect 17 0 7 0; -#X restore 80 109 pd input2; -#X text 116 148 .mov; -#X text 182 148 cam; -#X obj 169 134 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#X obj 111 134 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#N canvas 222 59 450 300 input3 0; -#X obj 49 181 pdp_qt; -#X msg 49 49 bang; -#X msg 110 111 loop 1; -#X obj 50 214 pdp_scale 320 240; -#X msg 167 111 open \$1; -#X obj 167 89 openpanel; -#X text 98 49 Load a mov file; -#X obj 244 113 pdp_v4l; -#X msg 244 58 bang; -#X obj 49 250 outlet; -#X obj 49 5 inlet; -#X obj 251 7 inlet; -#X obj 247 33 route 0; -#X msg 298 59 stop; -#X obj 50 28 route 0; -#X msg 14 79 stop; -#X obj 49 111 metro 80; -#X obj 244 86 metro 80; -#X connect 0 0 3 0; -#X connect 1 0 2 0; -#X connect 1 0 5 0; -#X connect 1 0 16 0; -#X connect 2 0 0 0; -#X connect 3 0 9 0; -#X connect 4 0 0 0; -#X connect 5 0 4 0; -#X connect 7 0 3 0; -#X connect 8 0 17 0; -#X connect 10 0 14 0; -#X connect 11 0 12 0; -#X connect 12 0 13 0; -#X connect 12 1 8 0; -#X connect 13 0 17 0; -#X connect 14 0 15 0; -#X connect 14 1 1 0; -#X connect 15 0 16 0; -#X connect 16 0 0 0; -#X connect 17 0 7 0; -#X restore 111 168 pd input3; -#X obj 43 202 pdp_scale 320 240; -#X obj 69 232 pdp_scale 320 240; -#X obj 93 262 pdp_scale 320 240; -#X obj 905 409 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#X obj 905 461 pdp_control; -#X msg 905 434 thread \$1; -#X floatatom 905 522 5 0 0 0 - - -; -#X obj 905 493 route pdp_drop; -#X text 498 547 constructor : pdp_frei0r ; -#X obj 46 376 pdp_frei0r 16; -#X text 499 562 you can get the index from the list of loaded plugins -; -#X text 498 575 at startup ( check pd window ); -#X text 13 290 WARNING : sizes of inputs; -#X text 12 302 _must_ be the same; -#X msg 290 18 plugindir /usr/local/lib/frei0r; -#X connect 0 0 75 3; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 6 0; -#X connect 4 0 7 0; -#X connect 5 0 75 0; -#X connect 6 0 75 0; -#X connect 7 0 75 0; -#X connect 12 0 28 1; -#X connect 16 0 22 0; -#X connect 17 0 23 0; -#X connect 18 0 24 0; -#X connect 19 0 25 0; -#X connect 20 0 26 0; -#X connect 21 0 27 0; -#X connect 22 0 75 0; -#X connect 23 0 75 0; -#X connect 24 0 75 0; -#X connect 25 0 75 0; -#X connect 26 0 75 0; -#X connect 27 0 75 0; -#X connect 44 0 48 0; -#X connect 45 0 49 0; -#X connect 48 0 75 0; -#X connect 49 0 75 0; -#X connect 51 0 66 0; -#X connect 54 0 51 1; -#X connect 55 0 51 0; -#X connect 58 0 60 1; -#X connect 59 0 60 0; -#X connect 60 0 67 0; -#X connect 63 0 65 1; -#X connect 64 0 65 0; -#X connect 65 0 68 0; -#X connect 66 0 75 0; -#X connect 67 0 75 1; -#X connect 68 0 75 2; -#X connect 69 0 71 0; -#X connect 70 0 73 0; -#X connect 71 0 70 0; -#X connect 73 0 72 0; -#X connect 75 0 50 0; -#X connect 75 1 10 0; -#X connect 75 2 12 0; -#X connect 75 3 28 0; -#X connect 75 4 42 0; -#X connect 80 0 75 0; diff --git a/pdp_frei0r/pdp_frei0r-help.pd b/pdp_frei0r/pdp_frei0r-help.pd new file mode 100644 index 0000000..42c82d5 --- /dev/null +++ b/pdp_frei0r/pdp_frei0r-help.pd @@ -0,0 +1,330 @@ +#N canvas 528 22 996 665 10; +#X floatatom 151 379 5 0 0 0 - - -; +#X obj 196 377 hradio 15 1 0 49 empty empty empty 0 -6 0 8 -262144 +-1 -1 0; +#X obj 261 171 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 0 1; +#X obj 401 171 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 0 1; +#X obj 541 171 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 0 1; +#X msg 258 191 param 3 \$1; +#X msg 398 190 param 4 \$1; +#X msg 539 190 param 5 \$1; +#X text 197 358 Select the plugin; +#X text 258 72 Adjust plugin parameters.; +#X symbolatom 87 501 20 0 0 0 - - -; +#X text 240 501 <-- plugin name; +#X floatatom 106 479 5 0 0 0 - - -; +#X text 154 477 <-- number of parameters; +#X text 205 451 <-- parameter name; +#X text 232 423 <-- parameter type; +#X obj 263 112 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 0 1; +#X obj 401 112 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 0 1; +#X obj 542 112 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 0 1; +#X obj 261 234 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 0 1; +#X obj 402 234 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 0 1; +#X obj 544 234 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 0 1; +#X msg 260 131 param 0 \$1; +#X msg 398 131 param 1 \$1; +#X msg 539 131 param 2 \$1; +#X msg 260 254 param 6 \$1; +#X msg 399 253 param 7 \$1; +#X msg 541 253 param 8 \$1; +#N canvas 0 22 996 665 pname 0; +#X obj 51 119 l2s; +#X obj 80 119 l2s; +#X obj 111 119 l2s; +#X obj 143 119 l2s; +#X obj 207 120 l2s; +#X obj 236 120 l2s; +#X obj 267 120 l2s; +#X obj 298 119 l2s; +#X obj 327 119 l2s; +#X obj 97 51 inlet; +#X obj 51 154 s ffparam0; +#X obj 79 178 s ffparam1; +#X obj 118 205 s ffparam2; +#X obj 148 227 s ffparam3; +#X obj 185 157 s ffparam4; +#X obj 213 181 s ffparam5; +#X obj 255 206 s ffparam6; +#X obj 283 230 s ffparam7; +#X obj 305 155 s ffparam8; +#X obj 391 53 inlet; +#X msg 390 79 symbol; +#X obj 359 118 l2s; +#X obj 391 118 l2s; +#X obj 97 79 route 0 1 2 3 4 5 6 7 8 9 10; +#X obj 357 178 s ffparam9; +#X obj 414 202 s ffparam10; +#X connect 0 0 10 0; +#X connect 1 0 11 0; +#X connect 2 0 12 0; +#X connect 3 0 13 0; +#X connect 4 0 14 0; +#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 23 0; +#X connect 19 0 20 0; +#X connect 20 0 10 0; +#X connect 20 0 11 0; +#X connect 20 0 12 0; +#X connect 20 0 13 0; +#X connect 20 0 14 0; +#X connect 20 0 15 0; +#X connect 20 0 16 0; +#X connect 20 0 17 0; +#X connect 20 0 18 0; +#X connect 20 0 24 0; +#X connect 20 0 25 0; +#X connect 21 0 24 0; +#X connect 22 0 25 0; +#X connect 23 0 0 0; +#X connect 23 1 1 0; +#X connect 23 2 2 0; +#X connect 23 3 3 0; +#X connect 23 4 4 0; +#X connect 23 5 5 0; +#X connect 23 6 6 0; +#X connect 23 7 7 0; +#X connect 23 8 8 0; +#X connect 23 9 21 0; +#X connect 23 10 22 0; +#X restore 137 451 pd pname; +#X symbolatom 260 93 18 0 0 0 - ffparam0 -; +#X symbolatom 399 92 18 0 0 0 - ffparam1 -; +#X symbolatom 538 92 18 0 0 0 - ffparam2 -; +#X symbolatom 261 154 18 0 0 0 - ffparam3 -; +#X symbolatom 400 153 18 0 0 0 - ffparam4 -; +#X symbolatom 539 153 18 0 0 0 - ffparam5 -; +#X symbolatom 261 214 18 0 0 0 - ffparam6 -; +#X symbolatom 400 213 18 0 0 0 - ffparam7 -; +#X symbolatom 539 213 18 0 0 0 - ffparam8 -; +#X text 489 424 frei0r host for Pure Data Packet version 0.1; +#X text 491 439 by Lluis Gomez i Bigorda (lluis@artefacte.org); +#X text 510 452 & Yves Degoyon (ydegoyon@free.fr); +#X text 491 495 made at piksel yearly gathering : http://www.piksel.no +; +#X obj 155 423 print type; +#X text 491 467 using frei0r specification 1.1 by Georg Seidel \, Phillip +Promesberger and Martin Bayer; +#X obj 261 304 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 0 1; +#X obj 404 304 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 0 1; +#X symbolatom 261 283 18 0 0 0 - ffparam9 -; +#X symbolatom 400 283 18 0 0 0 - ffparam10 -; +#X msg 259 323 param 9 \$1; +#X msg 401 323 param 10 \$1; +#X obj 46 545 pdp_xv; +#N canvas 222 59 450 300 input1 0; +#X obj 49 181 pdp_qt; +#X msg 49 49 bang; +#X msg 110 111 loop 1; +#X obj 50 214 pdp_scale 320 240; +#X msg 167 111 open \$1; +#X obj 167 89 openpanel; +#X text 98 49 Load a mov file; +#X obj 244 113 pdp_v4l; +#X msg 244 58 bang; +#X obj 49 250 outlet; +#X obj 49 5 inlet; +#X obj 251 7 inlet; +#X obj 247 33 route 0; +#X msg 298 59 stop; +#X obj 50 28 route 0; +#X msg 14 79 stop; +#X obj 49 111 metro 80; +#X obj 244 86 metro 80; +#X connect 0 0 3 0; +#X connect 1 0 2 0; +#X connect 1 0 5 0; +#X connect 1 0 16 0; +#X connect 2 0 0 0; +#X connect 3 0 9 0; +#X connect 4 0 0 0; +#X connect 5 0 4 0; +#X connect 7 0 3 0; +#X connect 8 0 17 0; +#X connect 10 0 14 0; +#X connect 11 0 12 0; +#X connect 12 0 13 0; +#X connect 12 1 8 0; +#X connect 13 0 17 0; +#X connect 14 0 15 0; +#X connect 14 1 1 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X connect 17 0 7 0; +#X restore 44 44 pd input1; +#X text 49 24 .mov; +#X text 115 24 cam; +#X obj 102 10 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X obj 44 10 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X text 85 89 .mov; +#X text 151 89 cam; +#X obj 138 75 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X obj 80 75 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#N canvas 222 59 450 300 input2 0; +#X obj 49 181 pdp_qt; +#X msg 49 49 bang; +#X msg 110 111 loop 1; +#X obj 50 214 pdp_scale 320 240; +#X msg 167 111 open \$1; +#X obj 167 89 openpanel; +#X text 98 49 Load a mov file; +#X obj 244 113 pdp_v4l; +#X msg 244 58 bang; +#X obj 49 250 outlet; +#X obj 49 5 inlet; +#X obj 251 7 inlet; +#X obj 247 33 route 0; +#X msg 298 59 stop; +#X obj 50 28 route 0; +#X msg 14 79 stop; +#X obj 49 111 metro 80; +#X obj 244 86 metro 80; +#X connect 0 0 3 0; +#X connect 1 0 2 0; +#X connect 1 0 5 0; +#X connect 1 0 16 0; +#X connect 2 0 0 0; +#X connect 3 0 9 0; +#X connect 4 0 0 0; +#X connect 5 0 4 0; +#X connect 7 0 3 0; +#X connect 8 0 17 0; +#X connect 10 0 14 0; +#X connect 11 0 12 0; +#X connect 12 0 13 0; +#X connect 12 1 8 0; +#X connect 13 0 17 0; +#X connect 14 0 15 0; +#X connect 14 1 1 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X connect 17 0 7 0; +#X restore 80 109 pd input2; +#X text 116 148 .mov; +#X text 182 148 cam; +#X obj 169 134 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +1; +#X obj 111 134 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +1; +#N canvas 222 59 450 300 input3 0; +#X obj 49 181 pdp_qt; +#X msg 49 49 bang; +#X msg 110 111 loop 1; +#X obj 50 214 pdp_scale 320 240; +#X msg 167 111 open \$1; +#X obj 167 89 openpanel; +#X text 98 49 Load a mov file; +#X obj 244 113 pdp_v4l; +#X msg 244 58 bang; +#X obj 49 250 outlet; +#X obj 49 5 inlet; +#X obj 251 7 inlet; +#X obj 247 33 route 0; +#X msg 298 59 stop; +#X obj 50 28 route 0; +#X msg 14 79 stop; +#X obj 49 111 metro 80; +#X obj 244 86 metro 80; +#X connect 0 0 3 0; +#X connect 1 0 2 0; +#X connect 1 0 5 0; +#X connect 1 0 16 0; +#X connect 2 0 0 0; +#X connect 3 0 9 0; +#X connect 4 0 0 0; +#X connect 5 0 4 0; +#X connect 7 0 3 0; +#X connect 8 0 17 0; +#X connect 10 0 14 0; +#X connect 11 0 12 0; +#X connect 12 0 13 0; +#X connect 12 1 8 0; +#X connect 13 0 17 0; +#X connect 14 0 15 0; +#X connect 14 1 1 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X connect 17 0 7 0; +#X restore 111 168 pd input3; +#X obj 43 202 pdp_scale 320 240; +#X obj 69 232 pdp_scale 320 240; +#X obj 93 262 pdp_scale 320 240; +#X obj 905 409 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +1; +#X obj 905 461 pdp_control; +#X msg 905 434 thread \$1; +#X floatatom 905 522 5 0 0 0 - - -; +#X obj 905 493 route pdp_drop; +#X text 498 547 constructor : pdp_frei0r ; +#X obj 46 376 pdp_frei0r 16; +#X text 499 562 you can get the index from the list of loaded plugins +; +#X text 498 575 at startup ( check pd window ); +#X text 13 290 WARNING : sizes of inputs; +#X text 12 302 _must_ be the same; +#X msg 290 18 plugindir /usr/local/lib/frei0r; +#X connect 0 0 75 3; +#X connect 1 0 0 0; +#X connect 2 0 5 0; +#X connect 3 0 6 0; +#X connect 4 0 7 0; +#X connect 5 0 75 0; +#X connect 6 0 75 0; +#X connect 7 0 75 0; +#X connect 12 0 28 1; +#X connect 16 0 22 0; +#X connect 17 0 23 0; +#X connect 18 0 24 0; +#X connect 19 0 25 0; +#X connect 20 0 26 0; +#X connect 21 0 27 0; +#X connect 22 0 75 0; +#X connect 23 0 75 0; +#X connect 24 0 75 0; +#X connect 25 0 75 0; +#X connect 26 0 75 0; +#X connect 27 0 75 0; +#X connect 44 0 48 0; +#X connect 45 0 49 0; +#X connect 48 0 75 0; +#X connect 49 0 75 0; +#X connect 51 0 66 0; +#X connect 54 0 51 1; +#X connect 55 0 51 0; +#X connect 58 0 60 1; +#X connect 59 0 60 0; +#X connect 60 0 67 0; +#X connect 63 0 65 1; +#X connect 64 0 65 0; +#X connect 65 0 68 0; +#X connect 66 0 75 0; +#X connect 67 0 75 1; +#X connect 68 0 75 2; +#X connect 69 0 71 0; +#X connect 70 0 73 0; +#X connect 71 0 70 0; +#X connect 73 0 72 0; +#X connect 75 0 50 0; +#X connect 75 1 10 0; +#X connect 75 2 12 0; +#X connect 75 3 28 0; +#X connect 75 4 42 0; +#X connect 80 0 75 0; diff --git a/pix_preview/pix_preview.cc b/pix_preview/pix_preview.cc new file mode 100644 index 0000000..b759460 --- /dev/null +++ b/pix_preview/pix_preview.cc @@ -0,0 +1,538 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-1998 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////// +// +// pix_preview +// +// 0409:forum::für::umläute:2000 +// IOhannes m zmoelnig +// mailto:zmoelnig@iem.kug.ac.at +// +///////////////////////////////////////////////////////// + +#include +#include +#include +using namespace std; +#include "stdio.h" + + +#include "m_pd.h" +#include "m_imp.h" +#include "g_canvas.h" +#include "t_tk.h" + +#include "pix_preview.h" + +int guidebug=0; + +#define COLORGRID_SYS_VGUI2(a,b) if (guidebug) \ + post(a,b);\ + sys_vgui(a,b) + +#define COLORGRID_SYS_VGUI3(a,b,c) if (guidebug) \ + post(a,b,c);\ + sys_vgui(a,b,c) + +#define COLORGRID_SYS_VGUI4(a,b,c,d) if (guidebug) \ + post(a,b,c,d);\ + sys_vgui(a,b,c,d) + +#define COLORGRID_SYS_VGUI5(a,b,c,d,e) if (guidebug) \ + post(a,b,c,d,e);\ + sys_vgui(a,b,c,d,e) + +#define COLORGRID_SYS_VGUI6(a,b,c,d,e,f) if (guidebug) \ + post(a,b,c,d,e,f);\ + sys_vgui(a,b,c,d,e,f) + +#define COLORGRID_SYS_VGUI7(a,b,c,d,e,f,g) if (guidebug) \ + post(a,b,c,d,e,f,g );\ + sys_vgui(a,b,c,d,e,f,g) + +#define COLORGRID_SYS_VGUI8(a,b,c,d,e,f,g,h) if (guidebug) \ + post(a,b,c,d,e,f,g,h );\ + sys_vgui(a,b,c,d,e,f,g,h) + +#define COLORGRID_SYS_VGUI9(a,b,c,d,e,f,g,h,i) if (guidebug) \ + post(a,b,c,d,e,f,g,h,i );\ + sys_vgui(a,b,c,d,e,f,g,h,i) + + + char *fdata="R0lGODlhHAAcAIABAAAAAP///ywAAAAAHAAcAAACGoSPqcvtD6OctNqLs968+w+G4kiW5omm6ooUADs="; + + +/* base64 conversion*/ + +static const std::string base64_chars = + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789+/"; + +std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len) { + std::string ret; + int i = 0; + int j = 0; + unsigned char char_array_3[3]; + unsigned char char_array_4[4]; + + while (in_len--) { + char_array_3[i++] = *(bytes_to_encode++); + if (i == 3) { + char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; + char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); + char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); + char_array_4[3] = char_array_3[2] & 0x3f; + + for(i = 0; (i <4) ; i++) + ret += base64_chars[char_array_4[i]]; + i = 0; + } + } + + if (i) + { + for(j = i; j < 3; j++) + char_array_3[j] = '\0'; + + char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; + char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); + char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); + char_array_4[3] = char_array_3[2] & 0x3f; + + for (j = 0; (j < i + 1); j++) + ret += base64_chars[char_array_4[j]]; + + while((i++ < 3)) + ret += '='; + + } + + return ret; + +} + + + + + + + + + + + + + + + +CPPEXTERN_NEW_WITH_TWO_ARGS(pix_preview, t_floatarg, A_DEFFLOAT, t_floatarg, A_DEFFLOAT) + + + ///////////////////////////////////////////////////////// + // + // pix_preview + // + ///////////////////////////////////////////////////////// + // Constructor + // + ///////////////////////////////////////////////////////// + pix_preview :: pix_preview(t_floatarg fx, t_floatarg fy) +{ + #include "pix_preview.tk2c" + xsize = (int)fx; + ysize = (int)fy; + m_csize = 3; + + + image_widgetbehavior.w_getrectfn = image_getrect; + image_widgetbehavior.w_displacefn = image_displace; + image_widgetbehavior.w_selectfn = image_select; + image_widgetbehavior.w_activatefn = image_activate; + image_widgetbehavior.w_deletefn = image_delete; + image_widgetbehavior.w_visfn = image_vis; +#if (PD_VERSION_MINOR > 31) + image_widgetbehavior.w_clickfn = NULL; + image_widgetbehavior.w_propertiesfn = NULL; +#endif +#if PD_MINOR_VERSION < 37 + image_widgetbehavior.w_savefn = image_save; +#endif + + + class_setwidget(pix_preview_class,&image_widgetbehavior); + + if (xsize < 0) xsize = 0; + if (ysize < 0) ysize = 0; + + m_xsize = xsize; + m_ysize = ysize; + + oldimagex = xsize; + oldimagey = ysize; + + m_bufsize = m_xsize * m_ysize * m_csize; + + m_buffer = new t_atom[m_bufsize]; + + //m_dataOut = outlet_new(this->x_obj, &s_list); +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_preview :: ~pix_preview() +{ +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_preview :: processImage(imageStruct &image) +{ + int x = m_xsize, y = m_ysize, c = m_csize; + + if (image.xsize != oldimagex) { + oldimagex = image.xsize; + m_xsize = ((!xsize) || (xsize > oldimagex))?oldimagex:xsize; + } + if (image.ysize != oldimagey) { + oldimagey = image.ysize; + m_ysize = ((!ysize) || (ysize > oldimagey))?oldimagey:ysize; + } + + if (image.csize != m_csize) m_csize = image.csize; + + if ( (m_xsize != x) || (m_ysize != y) || (m_csize != c) ) { + // resize the image buffer + if(m_buffer)delete [] m_buffer; + m_bufsize = m_xsize * m_ysize * m_csize; + m_buffer = new t_atom[m_bufsize]; + + m_xstep = m_csize * ((float)image.xsize/(float)m_xsize); + m_ystep = m_csize * ((float)image.ysize/(float)m_ysize) * image.xsize; + } + + m_data = image.data; +} + +///////////////////////////////////////////////////////// +// processYUVImage +// +///////////////////////////////////////////////////////// +void pix_preview :: processYUVImage(imageStruct &image) +{ + int x = m_xsize, y = m_ysize, c = m_csize; + + if (image.xsize != oldimagex) { + oldimagex = image.xsize; + m_xsize = ((!xsize) || (xsize > oldimagex))?oldimagex:xsize; + } + if (image.ysize != oldimagey) { + oldimagey = image.ysize; + m_ysize = ((!ysize) || (ysize > oldimagey))?oldimagey:ysize; + } + + if (image.csize != m_csize) m_csize = image.csize; + + if ( (m_xsize != x) || (m_ysize != y) || (m_csize != c) ) { + // resize the image buffer + if(m_buffer)delete [] m_buffer; + m_bufsize = m_xsize * m_ysize * m_csize; + m_buffer = new t_atom[m_bufsize]; + + m_xstep = m_csize * ((float)image.xsize/(float)m_xsize); + m_ystep = m_csize * ((float)image.ysize/(float)m_ysize) * image.xsize; + } + + m_data = image.data; +} + +///////////////////////////////////////////////////////// +// trigger +// +///////////////////////////////////////////////////////// +void pix_preview :: trigger() +{ + if (!m_data) return; + + int n = m_ysize, m = 0; + int i = 0; + + unsigned char *data, *line; + stringstream sx,sy; + + fprintf (stderr,"%d %d %d %d %d %d \n",xsize, ysize,m_xsize, m_ysize,oldimagex,oldimagey); + + std::string pnm; + std::string pnm64; + pnm += "P6\n"; + sx << m_xsize; + pnm += sx.str(); + pnm += " "; + sy << m_ysize; + pnm += sy.str(); + pnm += "\n255\n"; + + //fprintf (stderr,"%s",pnm.c_str()); + + /*/escriu el contingut de data a un arxiu.*/ + char* ig_path = "/tmp/pixdump01.pnm"; + FILE * fp = fopen(ig_path, "w"); + fprintf (fp, "P6\n%d %d\n255\n", m_xsize, m_ysize); + data = line = m_data; + switch(m_csize){ + case 4: +/* + while (n > 0) { + while (m < m_xsize) { + int r, g, b, a; + r = (int)data[chRed]; + fprintf (fp, "%c", (char)r); + i++; + g = (int)data[chGreen]; + fprintf (fp, "%c", (char)g); + i++; + b = (int)data[chBlue]; + fprintf (fp, "%c", (char)b); + i++; + a = (int)data[chAlpha]; + i++; + m++; + data = line + (int)(m_xstep * (float)m); + } + m = 0; + n--; + line = m_data + (int)(m_ystep*n); + data = line; + } + fclose (fp); +*/ + while (n > 0) { + while (m < m_xsize) { + int r, g, b, a; + r = (int)data[chRed]; + pnm += (char)r; + fprintf (fp, "%c", (char)r); + i++; + g = (int)data[chGreen]; + pnm += (char)g; + fprintf (fp, "%c", (char)g); + i++; + b = (int)data[chBlue]; + pnm += (char)b; + fprintf (fp, "%c", (char)b); + i++; + a = (int)data[chAlpha]; + i++; + m++; + data = line + (int)(m_xstep * (float)m); + } + m = 0; + n--; + line = m_data + (int)(m_ystep*n); + data = line; + } + fclose (fp); + + + //std::cout << "NOT encoded: " << pnm << std::endl; + + //pnm64 = base64_encode(reinterpret_cast(pnm.c_str()), pnm.length()); + //std::cout << "encoded: " << pnm64 << std::endl; + + + + //m_glist = (t_glist *) canvas_getcurrent(); + + + //sys_vgui("img%x put {%s}\n", this->x_obj, reinterpret_cast(pnm64.c_str()) ); + image_drawme((pix_preview *)this->x_obj, (t_glist *) this->getCanvas(), 0, m_xsize, m_ysize); +// sys_vgui(".x%x.c coords %xS %d %d\n", +// this->getCanvas(), this->x_obj, +// text_xpix(this->x_obj, (t_glist *)this->getCanvas()) + (m_xsize/2), text_ypix(this->x_obj, (t_glist *)this->getCanvas()) + (m_ysize/2)); + //fprintf (stderr, "%x %x - %d %d\n",x,(t_object*)x, text_xpix((t_object*)x, glist), text_ypix((t_object*)x, glist)); + + break; + case 2: + while (n < m_ysize) { + while (m < m_xsize/2) { + float y,u,y1,v; + u = (float)data[0] / 255.f; + SETFLOAT(&m_buffer[i], u); + i++; + y = (float)data[1] / 255.f; + SETFLOAT(&m_buffer[i], y); + i++; + v = (float)data[2] / 255.f; + SETFLOAT(&m_buffer[i], v); + i++; + y1 = (float)data[3] / 255.f; + SETFLOAT(&m_buffer[i], y1); + i++; + m++; + data = line + (int)(m_xstep * (float)m); + } + m = 0; + n++; + line = m_data + (int)(m_ystep*n); + data = line; + } + case 1: default: + int datasize=m_xsize*m_ysize*m_csize/4; + while (datasize--) { + float v; + v = (float)(*data++) / 255.f; SETFLOAT(&m_buffer[i], v); + v = (float)(*data++) / 255.f; SETFLOAT(&m_buffer[i+1], v); + v = (float)(*data++) / 255.f; SETFLOAT(&m_buffer[i+2], v); + v = (float)(*data++) / 255.f; SETFLOAT(&m_buffer[i+3], v); + i+=4; + } + } + //outlet_list(m_dataOut, gensym("list"), i, m_buffer); +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_preview :: obj_setupCallback(t_class *classPtr) +{ + class_addbang(classPtr, (t_method)&pix_preview::triggerMessCallback); +} + +void pix_preview :: triggerMessCallback(void *data) +{ + GetMyClass(data)->trigger(); +} + + + + +/* widget helper functions */ + + + + +void pix_preview :: image_drawme(pix_preview *x, t_glist *glist, int firsttime, int m_xsize, int m_ysize) +{ + char* ig_path = "/tmp/pixdump01.pnm"; + if (firsttime) { + + sys_vgui("image create photo img%x -data {%s}\n",x,fdata); + sys_vgui(".x%x.c create image %d %d -image img%x -tags %xS\n", + glist_getcanvas(glist),text_xpix((t_object*)x, glist)+14, text_ypix((t_object*)x, glist)+14,x,x); + //fprintf (stderr, "%x %x - %d %d \n",x,(t_object*)x, text_xpix((t_object*)x, glist), text_ypix((t_object*)x, glist)); + } + else { + sys_vgui(".x%x.c delete %xS\n", glist_getcanvas(glist), x); + sys_vgui(".x%x.c delete img%x\n", glist_getcanvas(glist), x); + sys_vgui("image create photo img%x -file %s\n",x,ig_path); + sys_vgui(".x%x.c create image %d %d -image img%x -tags %xS\n", + glist_getcanvas(glist),text_xpix((t_object*)x, glist)+(m_xsize/2), text_ypix((t_object*)x, glist)+(m_ysize/2),x,x); + //sys_vgui(".x%x.c coords %xS \ +%d %d\n", + // glist_getcanvas(glist), x, + // text_xpix((t_object*)x, glist), text_ypix((t_object*)x, glist)); + //fprintf (stderr, "%x %x - %d %d\n",x,(t_object*)x, text_xpix((t_object*)x, glist), text_ypix((t_object*)x, glist)); + } + +} + +void pix_preview :: image_erase(pix_preview* x,t_glist* glist) +{ + int n; + sys_vgui(".x%x.c delete %xS\n", + glist_getcanvas(glist), x); + +} + + +/* ------------------------ image widgetbehaviour----------------------------- */ + + +void pix_preview :: image_getrect(t_gobj *z, t_glist *glist, + int *xp1, int *yp1, int *xp2, int *yp2) +{ + int width, height; + pix_preview* x = (pix_preview*)z; + + + width = 250; + height = 50; + *xp1 = text_xpix((t_object*)x, glist); + *yp1 = text_ypix((t_object*)x, glist); + *xp2 = text_xpix((t_object*)x, glist) + width; + *yp2 = text_ypix((t_object*)x, glist) + height; +} + +void pix_preview :: image_displace(t_gobj *z, t_glist *glist, + int dx, int dy) +{ + t_object *x = (t_object *)z; + x->te_xpix += dx; + x->te_ypix += dy; + sys_vgui(".x%x.c coords %xSEL %d %d %d %d\n", + glist_getcanvas(glist), x, + text_xpix(x, glist), text_ypix(x, glist), + text_xpix(x, glist) + 25, text_ypix(x, glist) + 25); + + //image_drawme((pix_preview *)x, glist, 0); + canvas_fixlinesfor(glist_getcanvas(glist),(t_text*) x); +} + +void pix_preview :: image_select(t_gobj *z, t_glist *glist, int state) +{ t_object *x = (t_object *)z; + if (state) { + sys_vgui(".x%x.c create rectangle \ +%d %d %d %d -tags %xSEL -outline blue\n", + glist_getcanvas(glist), + text_xpix(x, glist), text_ypix(x, glist), + text_xpix(x, glist) + 25, text_ypix(x, glist) + 25, + x); + } + else { + sys_vgui(".x%x.c delete %xSEL\n", + glist_getcanvas(glist), x); + } +} + + +void pix_preview :: image_activate(t_gobj *z, t_glist *glist, int state) +{ +} + +void pix_preview :: image_delete(t_gobj *z, t_glist *glist) +{ + + t_text *x = (t_text *)z; + pix_preview* s = (pix_preview*)z; + canvas_deletelinesfor(glist_getcanvas(glist), x); + image_erase(s, glist); +} + + +void pix_preview :: image_vis(t_gobj *z, t_glist *glist, int vis) +{ + pix_preview* s = (pix_preview*)z; + if (vis) + image_drawme(s, glist, 1, 28, 28); +} + diff --git a/pix_preview/pix_preview.cpp b/pix_preview/pix_preview.cpp deleted file mode 100644 index b759460..0000000 --- a/pix_preview/pix_preview.cpp +++ /dev/null @@ -1,538 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-1998 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////// -// -// pix_preview -// -// 0409:forum::für::umläute:2000 -// IOhannes m zmoelnig -// mailto:zmoelnig@iem.kug.ac.at -// -///////////////////////////////////////////////////////// - -#include -#include -#include -using namespace std; -#include "stdio.h" - - -#include "m_pd.h" -#include "m_imp.h" -#include "g_canvas.h" -#include "t_tk.h" - -#include "pix_preview.h" - -int guidebug=0; - -#define COLORGRID_SYS_VGUI2(a,b) if (guidebug) \ - post(a,b);\ - sys_vgui(a,b) - -#define COLORGRID_SYS_VGUI3(a,b,c) if (guidebug) \ - post(a,b,c);\ - sys_vgui(a,b,c) - -#define COLORGRID_SYS_VGUI4(a,b,c,d) if (guidebug) \ - post(a,b,c,d);\ - sys_vgui(a,b,c,d) - -#define COLORGRID_SYS_VGUI5(a,b,c,d,e) if (guidebug) \ - post(a,b,c,d,e);\ - sys_vgui(a,b,c,d,e) - -#define COLORGRID_SYS_VGUI6(a,b,c,d,e,f) if (guidebug) \ - post(a,b,c,d,e,f);\ - sys_vgui(a,b,c,d,e,f) - -#define COLORGRID_SYS_VGUI7(a,b,c,d,e,f,g) if (guidebug) \ - post(a,b,c,d,e,f,g );\ - sys_vgui(a,b,c,d,e,f,g) - -#define COLORGRID_SYS_VGUI8(a,b,c,d,e,f,g,h) if (guidebug) \ - post(a,b,c,d,e,f,g,h );\ - sys_vgui(a,b,c,d,e,f,g,h) - -#define COLORGRID_SYS_VGUI9(a,b,c,d,e,f,g,h,i) if (guidebug) \ - post(a,b,c,d,e,f,g,h,i );\ - sys_vgui(a,b,c,d,e,f,g,h,i) - - - char *fdata="R0lGODlhHAAcAIABAAAAAP///ywAAAAAHAAcAAACGoSPqcvtD6OctNqLs968+w+G4kiW5omm6ooUADs="; - - -/* base64 conversion*/ - -static const std::string base64_chars = - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "abcdefghijklmnopqrstuvwxyz" - "0123456789+/"; - -std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len) { - std::string ret; - int i = 0; - int j = 0; - unsigned char char_array_3[3]; - unsigned char char_array_4[4]; - - while (in_len--) { - char_array_3[i++] = *(bytes_to_encode++); - if (i == 3) { - char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; - char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); - char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); - char_array_4[3] = char_array_3[2] & 0x3f; - - for(i = 0; (i <4) ; i++) - ret += base64_chars[char_array_4[i]]; - i = 0; - } - } - - if (i) - { - for(j = i; j < 3; j++) - char_array_3[j] = '\0'; - - char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; - char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); - char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); - char_array_4[3] = char_array_3[2] & 0x3f; - - for (j = 0; (j < i + 1); j++) - ret += base64_chars[char_array_4[j]]; - - while((i++ < 3)) - ret += '='; - - } - - return ret; - -} - - - - - - - - - - - - - - - -CPPEXTERN_NEW_WITH_TWO_ARGS(pix_preview, t_floatarg, A_DEFFLOAT, t_floatarg, A_DEFFLOAT) - - - ///////////////////////////////////////////////////////// - // - // pix_preview - // - ///////////////////////////////////////////////////////// - // Constructor - // - ///////////////////////////////////////////////////////// - pix_preview :: pix_preview(t_floatarg fx, t_floatarg fy) -{ - #include "pix_preview.tk2c" - xsize = (int)fx; - ysize = (int)fy; - m_csize = 3; - - - image_widgetbehavior.w_getrectfn = image_getrect; - image_widgetbehavior.w_displacefn = image_displace; - image_widgetbehavior.w_selectfn = image_select; - image_widgetbehavior.w_activatefn = image_activate; - image_widgetbehavior.w_deletefn = image_delete; - image_widgetbehavior.w_visfn = image_vis; -#if (PD_VERSION_MINOR > 31) - image_widgetbehavior.w_clickfn = NULL; - image_widgetbehavior.w_propertiesfn = NULL; -#endif -#if PD_MINOR_VERSION < 37 - image_widgetbehavior.w_savefn = image_save; -#endif - - - class_setwidget(pix_preview_class,&image_widgetbehavior); - - if (xsize < 0) xsize = 0; - if (ysize < 0) ysize = 0; - - m_xsize = xsize; - m_ysize = ysize; - - oldimagex = xsize; - oldimagey = ysize; - - m_bufsize = m_xsize * m_ysize * m_csize; - - m_buffer = new t_atom[m_bufsize]; - - //m_dataOut = outlet_new(this->x_obj, &s_list); -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_preview :: ~pix_preview() -{ -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_preview :: processImage(imageStruct &image) -{ - int x = m_xsize, y = m_ysize, c = m_csize; - - if (image.xsize != oldimagex) { - oldimagex = image.xsize; - m_xsize = ((!xsize) || (xsize > oldimagex))?oldimagex:xsize; - } - if (image.ysize != oldimagey) { - oldimagey = image.ysize; - m_ysize = ((!ysize) || (ysize > oldimagey))?oldimagey:ysize; - } - - if (image.csize != m_csize) m_csize = image.csize; - - if ( (m_xsize != x) || (m_ysize != y) || (m_csize != c) ) { - // resize the image buffer - if(m_buffer)delete [] m_buffer; - m_bufsize = m_xsize * m_ysize * m_csize; - m_buffer = new t_atom[m_bufsize]; - - m_xstep = m_csize * ((float)image.xsize/(float)m_xsize); - m_ystep = m_csize * ((float)image.ysize/(float)m_ysize) * image.xsize; - } - - m_data = image.data; -} - -///////////////////////////////////////////////////////// -// processYUVImage -// -///////////////////////////////////////////////////////// -void pix_preview :: processYUVImage(imageStruct &image) -{ - int x = m_xsize, y = m_ysize, c = m_csize; - - if (image.xsize != oldimagex) { - oldimagex = image.xsize; - m_xsize = ((!xsize) || (xsize > oldimagex))?oldimagex:xsize; - } - if (image.ysize != oldimagey) { - oldimagey = image.ysize; - m_ysize = ((!ysize) || (ysize > oldimagey))?oldimagey:ysize; - } - - if (image.csize != m_csize) m_csize = image.csize; - - if ( (m_xsize != x) || (m_ysize != y) || (m_csize != c) ) { - // resize the image buffer - if(m_buffer)delete [] m_buffer; - m_bufsize = m_xsize * m_ysize * m_csize; - m_buffer = new t_atom[m_bufsize]; - - m_xstep = m_csize * ((float)image.xsize/(float)m_xsize); - m_ystep = m_csize * ((float)image.ysize/(float)m_ysize) * image.xsize; - } - - m_data = image.data; -} - -///////////////////////////////////////////////////////// -// trigger -// -///////////////////////////////////////////////////////// -void pix_preview :: trigger() -{ - if (!m_data) return; - - int n = m_ysize, m = 0; - int i = 0; - - unsigned char *data, *line; - stringstream sx,sy; - - fprintf (stderr,"%d %d %d %d %d %d \n",xsize, ysize,m_xsize, m_ysize,oldimagex,oldimagey); - - std::string pnm; - std::string pnm64; - pnm += "P6\n"; - sx << m_xsize; - pnm += sx.str(); - pnm += " "; - sy << m_ysize; - pnm += sy.str(); - pnm += "\n255\n"; - - //fprintf (stderr,"%s",pnm.c_str()); - - /*/escriu el contingut de data a un arxiu.*/ - char* ig_path = "/tmp/pixdump01.pnm"; - FILE * fp = fopen(ig_path, "w"); - fprintf (fp, "P6\n%d %d\n255\n", m_xsize, m_ysize); - data = line = m_data; - switch(m_csize){ - case 4: -/* - while (n > 0) { - while (m < m_xsize) { - int r, g, b, a; - r = (int)data[chRed]; - fprintf (fp, "%c", (char)r); - i++; - g = (int)data[chGreen]; - fprintf (fp, "%c", (char)g); - i++; - b = (int)data[chBlue]; - fprintf (fp, "%c", (char)b); - i++; - a = (int)data[chAlpha]; - i++; - m++; - data = line + (int)(m_xstep * (float)m); - } - m = 0; - n--; - line = m_data + (int)(m_ystep*n); - data = line; - } - fclose (fp); -*/ - while (n > 0) { - while (m < m_xsize) { - int r, g, b, a; - r = (int)data[chRed]; - pnm += (char)r; - fprintf (fp, "%c", (char)r); - i++; - g = (int)data[chGreen]; - pnm += (char)g; - fprintf (fp, "%c", (char)g); - i++; - b = (int)data[chBlue]; - pnm += (char)b; - fprintf (fp, "%c", (char)b); - i++; - a = (int)data[chAlpha]; - i++; - m++; - data = line + (int)(m_xstep * (float)m); - } - m = 0; - n--; - line = m_data + (int)(m_ystep*n); - data = line; - } - fclose (fp); - - - //std::cout << "NOT encoded: " << pnm << std::endl; - - //pnm64 = base64_encode(reinterpret_cast(pnm.c_str()), pnm.length()); - //std::cout << "encoded: " << pnm64 << std::endl; - - - - //m_glist = (t_glist *) canvas_getcurrent(); - - - //sys_vgui("img%x put {%s}\n", this->x_obj, reinterpret_cast(pnm64.c_str()) ); - image_drawme((pix_preview *)this->x_obj, (t_glist *) this->getCanvas(), 0, m_xsize, m_ysize); -// sys_vgui(".x%x.c coords %xS %d %d\n", -// this->getCanvas(), this->x_obj, -// text_xpix(this->x_obj, (t_glist *)this->getCanvas()) + (m_xsize/2), text_ypix(this->x_obj, (t_glist *)this->getCanvas()) + (m_ysize/2)); - //fprintf (stderr, "%x %x - %d %d\n",x,(t_object*)x, text_xpix((t_object*)x, glist), text_ypix((t_object*)x, glist)); - - break; - case 2: - while (n < m_ysize) { - while (m < m_xsize/2) { - float y,u,y1,v; - u = (float)data[0] / 255.f; - SETFLOAT(&m_buffer[i], u); - i++; - y = (float)data[1] / 255.f; - SETFLOAT(&m_buffer[i], y); - i++; - v = (float)data[2] / 255.f; - SETFLOAT(&m_buffer[i], v); - i++; - y1 = (float)data[3] / 255.f; - SETFLOAT(&m_buffer[i], y1); - i++; - m++; - data = line + (int)(m_xstep * (float)m); - } - m = 0; - n++; - line = m_data + (int)(m_ystep*n); - data = line; - } - case 1: default: - int datasize=m_xsize*m_ysize*m_csize/4; - while (datasize--) { - float v; - v = (float)(*data++) / 255.f; SETFLOAT(&m_buffer[i], v); - v = (float)(*data++) / 255.f; SETFLOAT(&m_buffer[i+1], v); - v = (float)(*data++) / 255.f; SETFLOAT(&m_buffer[i+2], v); - v = (float)(*data++) / 255.f; SETFLOAT(&m_buffer[i+3], v); - i+=4; - } - } - //outlet_list(m_dataOut, gensym("list"), i, m_buffer); -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_preview :: obj_setupCallback(t_class *classPtr) -{ - class_addbang(classPtr, (t_method)&pix_preview::triggerMessCallback); -} - -void pix_preview :: triggerMessCallback(void *data) -{ - GetMyClass(data)->trigger(); -} - - - - -/* widget helper functions */ - - - - -void pix_preview :: image_drawme(pix_preview *x, t_glist *glist, int firsttime, int m_xsize, int m_ysize) -{ - char* ig_path = "/tmp/pixdump01.pnm"; - if (firsttime) { - - sys_vgui("image create photo img%x -data {%s}\n",x,fdata); - sys_vgui(".x%x.c create image %d %d -image img%x -tags %xS\n", - glist_getcanvas(glist),text_xpix((t_object*)x, glist)+14, text_ypix((t_object*)x, glist)+14,x,x); - //fprintf (stderr, "%x %x - %d %d \n",x,(t_object*)x, text_xpix((t_object*)x, glist), text_ypix((t_object*)x, glist)); - } - else { - sys_vgui(".x%x.c delete %xS\n", glist_getcanvas(glist), x); - sys_vgui(".x%x.c delete img%x\n", glist_getcanvas(glist), x); - sys_vgui("image create photo img%x -file %s\n",x,ig_path); - sys_vgui(".x%x.c create image %d %d -image img%x -tags %xS\n", - glist_getcanvas(glist),text_xpix((t_object*)x, glist)+(m_xsize/2), text_ypix((t_object*)x, glist)+(m_ysize/2),x,x); - //sys_vgui(".x%x.c coords %xS \ -%d %d\n", - // glist_getcanvas(glist), x, - // text_xpix((t_object*)x, glist), text_ypix((t_object*)x, glist)); - //fprintf (stderr, "%x %x - %d %d\n",x,(t_object*)x, text_xpix((t_object*)x, glist), text_ypix((t_object*)x, glist)); - } - -} - -void pix_preview :: image_erase(pix_preview* x,t_glist* glist) -{ - int n; - sys_vgui(".x%x.c delete %xS\n", - glist_getcanvas(glist), x); - -} - - -/* ------------------------ image widgetbehaviour----------------------------- */ - - -void pix_preview :: image_getrect(t_gobj *z, t_glist *glist, - int *xp1, int *yp1, int *xp2, int *yp2) -{ - int width, height; - pix_preview* x = (pix_preview*)z; - - - width = 250; - height = 50; - *xp1 = text_xpix((t_object*)x, glist); - *yp1 = text_ypix((t_object*)x, glist); - *xp2 = text_xpix((t_object*)x, glist) + width; - *yp2 = text_ypix((t_object*)x, glist) + height; -} - -void pix_preview :: image_displace(t_gobj *z, t_glist *glist, - int dx, int dy) -{ - t_object *x = (t_object *)z; - x->te_xpix += dx; - x->te_ypix += dy; - sys_vgui(".x%x.c coords %xSEL %d %d %d %d\n", - glist_getcanvas(glist), x, - text_xpix(x, glist), text_ypix(x, glist), - text_xpix(x, glist) + 25, text_ypix(x, glist) + 25); - - //image_drawme((pix_preview *)x, glist, 0); - canvas_fixlinesfor(glist_getcanvas(glist),(t_text*) x); -} - -void pix_preview :: image_select(t_gobj *z, t_glist *glist, int state) -{ t_object *x = (t_object *)z; - if (state) { - sys_vgui(".x%x.c create rectangle \ -%d %d %d %d -tags %xSEL -outline blue\n", - glist_getcanvas(glist), - text_xpix(x, glist), text_ypix(x, glist), - text_xpix(x, glist) + 25, text_ypix(x, glist) + 25, - x); - } - else { - sys_vgui(".x%x.c delete %xSEL\n", - glist_getcanvas(glist), x); - } -} - - -void pix_preview :: image_activate(t_gobj *z, t_glist *glist, int state) -{ -} - -void pix_preview :: image_delete(t_gobj *z, t_glist *glist) -{ - - t_text *x = (t_text *)z; - pix_preview* s = (pix_preview*)z; - canvas_deletelinesfor(glist_getcanvas(glist), x); - image_erase(s, glist); -} - - -void pix_preview :: image_vis(t_gobj *z, t_glist *glist, int vis) -{ - pix_preview* s = (pix_preview*)z; - if (vis) - image_drawme(s, glist, 1, 28, 28); -} - diff --git a/videogrid/videogrid.cpp b/videogrid/videogrid.cpp index 98c770c..37203e4 100644 --- a/videogrid/videogrid.cpp +++ b/videogrid/videogrid.cpp @@ -34,8 +34,8 @@ along with this program. If not, see . #include "pthread.h" /*ffmpeg includes*/ -#include -#include +#include +#include /*libquicktime includes*/ //#include diff --git a/videogrid/videogrid.libs b/videogrid/videogrid.libs new file mode 100644 index 0000000..1662ffd --- /dev/null +++ b/videogrid/videogrid.libs @@ -0,0 +1 @@ +-lavcodec -lavformat -lavutil -lquicktime -- cgit v1.2.1