[GEM-cvs] SF.net SVN: pd-gem:[2700] trunk/Gem/src/Pixes
Brought to you by:
zmoelnig
From: <zmo...@us...> - 2009-01-26 16:31:39
|
Revision: 2700 http://pd-gem.svn.sourceforge.net/pd-gem/?rev=2700&view=rev Author: zmoelnig Date: 2009-01-26 16:31:26 +0000 (Mon, 26 Jan 2009) Log Message: ----------- added arguments as requested in #2535557 Modified Paths: -------------- trunk/Gem/src/Pixes/pix_background.cpp trunk/Gem/src/Pixes/pix_background.h Modified: trunk/Gem/src/Pixes/pix_background.cpp =================================================================== --- trunk/Gem/src/Pixes/pix_background.cpp 2009-01-26 15:41:53 UTC (rev 2699) +++ trunk/Gem/src/Pixes/pix_background.cpp 2009-01-26 16:31:26 UTC (rev 2700) @@ -10,7 +10,7 @@ #include "pix_background.h" #include <string.h> -CPPEXTERN_NEW(pix_background) +CPPEXTERN_NEW_WITH_GIMME(pix_background) ///////////////////////////////////////////////////////// // @@ -20,7 +20,7 @@ // Constructor // ///////////////////////////////////////////////////////// -pix_background :: pix_background() : +pix_background :: pix_background(int argc, t_atom*argv) : m_Yrange(0), m_Urange(0), m_Vrange(0), m_Arange(0), m_reset(1) { inletRange = inlet_new(this->x_obj, &this->x_obj->ob_pd, &s_float, gensym("range_n")); @@ -29,6 +29,12 @@ m_savedImage.ysize=240; m_savedImage.setCsizeByFormat(GL_RGBA); m_savedImage.reallocate(); + switch(argc) { + case 4: case 3: case 1: + rangeNMess(argc, argv); + break; + default: break; + } } ///////////////////////////////////////////////////////// @@ -71,7 +77,6 @@ unsigned char*data =image.data; unsigned char*saved=m_savedImage.data; - for (h=0; h<image.ysize; h++){ for(w=0; w<hlength; w++){ if (((data[src+chRed ] > saved[src+chRed ] - m_Yrange)&& @@ -519,6 +524,31 @@ } #endif //ALTIVEC + +void pix_background :: rangeNMess(int argc, t_atom*argv){ + /* normalized values (float)0..1 instead of (int)0..255 */ + unsigned int v=0; + m_Arange=255; + switch(argc){ + case 4: + m_Arange=CLAMP((float)255.*atom_getfloat(argv+3)); + case 3: + m_Yrange=CLAMP((float)255.*atom_getfloat(argv)); + m_Urange=CLAMP((float)255.*atom_getfloat(argv+1)); + m_Vrange=CLAMP((float)255.*atom_getfloat(argv+2)); + break; + case 1: + v=CLAMP((float)255.*atom_getfloat(argv)); + m_Yrange=v; + m_Urange=v; + m_Vrange=v; + break; + default: + error("only 1 or 3 values are allowed as ranges (not %d)", argc); + } +} + + ///////////////////////////////////////////////////////// // static member function // @@ -550,23 +580,5 @@ void pix_background :: rangeNCallback(void *data, t_symbol*,int argc, t_atom*argv){ /* normalized values (float)0..1 instead of (int)0..255 */ - unsigned int v=0; - GetMyClass(data)->m_Arange=255; - switch(argc){ - case 4: - GetMyClass(data)->m_Arange=CLAMP((float)255.*atom_getfloat(argv+3)); - case 3: - GetMyClass(data)->m_Yrange=CLAMP((float)255.*atom_getfloat(argv)); - GetMyClass(data)->m_Urange=CLAMP((float)255.*atom_getfloat(argv+1)); - GetMyClass(data)->m_Vrange=CLAMP((float)255.*atom_getfloat(argv+2)); - break; - case 1: - v=CLAMP((float)255.*atom_getfloat(argv)); - GetMyClass(data)->m_Yrange=v; - GetMyClass(data)->m_Urange=v; - GetMyClass(data)->m_Vrange=v; - break; - default: - GetMyClass(data)->error("only 1 or 3 values are allowed as ranges (not %d)", argc); - } + GetMyClass(data)->rangeNMess(argc, argv); } Modified: trunk/Gem/src/Pixes/pix_background.h =================================================================== --- trunk/Gem/src/Pixes/pix_background.h 2009-01-26 15:41:53 UTC (rev 2699) +++ trunk/Gem/src/Pixes/pix_background.h 2009-01-26 16:31:26 UTC (rev 2700) @@ -37,7 +37,7 @@ ////////// // Constructor - pix_background(); + pix_background(int argc, t_atom*argv); protected: @@ -60,6 +60,8 @@ // Do the YUV Altivec processing virtual void processYUVAltivec(imageStruct &image); #endif + + virtual void rangeNMess(int argc, t_atom*argv); imageStruct m_savedImage; int m_Yrange,m_Urange,m_Vrange, m_Arange; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |