[GEM-cvs] SF.net SVN: pd-gem:[3434] trunk/Gem/src/Pixes
Brought to you by:
zmoelnig
From: <nu...@us...> - 2010-07-14 11:03:48
|
Revision: 3434 http://pd-gem.svn.sourceforge.net/pd-gem/?rev=3434&view=rev Author: nusmuk Date: 2010-07-14 11:03:42 +0000 (Wed, 14 Jul 2010) Log Message: ----------- add repeat(int) and quality(int) message to pix_imageInPlace Modified Paths: -------------- trunk/Gem/src/Pixes/pix_imageInPlace.cpp trunk/Gem/src/Pixes/pix_imageInPlace.h Modified: trunk/Gem/src/Pixes/pix_imageInPlace.cpp =================================================================== --- trunk/Gem/src/Pixes/pix_imageInPlace.cpp 2010-07-14 10:33:51 UTC (rev 3433) +++ trunk/Gem/src/Pixes/pix_imageInPlace.cpp 2010-07-14 11:03:42 UTC (rev 3434) @@ -33,7 +33,9 @@ ///////////////////////////////////////////////////////// pix_imageInPlace :: pix_imageInPlace(t_symbol *filename, t_floatarg baseImage, t_floatarg topImage, t_floatarg skipRate) : pix_multiimage(filename, baseImage, topImage, skipRate), - mInPreload(0) + mInPreload(0), + m_textureQuality(GL_LINEAR), m_repeat(GL_REPEAT) + { } ///////////////////////////////////////////////////////// @@ -151,10 +153,10 @@ glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, m_repeat); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, m_repeat); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, m_textureQuality); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, m_textureQuality); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glTexImage2D(GL_TEXTURE_2D, 0, m_loadedCache->images[i]->csize, @@ -187,6 +189,37 @@ } ///////////////////////////////////////////////////////// +// textureQuality +// +///////////////////////////////////////////////////////// +void pix_imageInPlace :: textureQuality(int type) +{ + if (type) + m_textureQuality = GL_LINEAR; + else + m_textureQuality = GL_NEAREST; +} + + +//////////////////////////////////////////////////////// +// texture repeat message +// +///////////////////////////////////////////////////////// +void pix_imageInPlace :: repeatMess(int type) +{ + if (type) + m_repeat = GL_REPEAT; + else { + if(GLEW_EXT_texture_edge_clamp) + m_repeat = GL_CLAMP_TO_EDGE; + else + m_repeat = GL_CLAMP; + } + +} + + +///////////////////////////////////////////////////////// // static member function // ///////////////////////////////////////////////////////// @@ -198,6 +231,10 @@ gensym("download"), A_NULL); class_addmethod(classPtr, reinterpret_cast<t_method>(&pix_imageInPlace::purgeImageCallback), gensym("purge"), A_NULL); + class_addmethod(classPtr, reinterpret_cast<t_method>(&pix_imageInPlace::textureMessCallback), + gensym("quality"), A_FLOAT, A_NULL); + class_addmethod(classPtr, reinterpret_cast<t_method>(&pix_imageInPlace::repeatMessCallback), + gensym("repeat"), A_FLOAT, A_NULL); } void pix_imageInPlace :: preloadMessCallback(void *data, t_symbol *filename, t_floatarg baseImage, @@ -221,3 +258,11 @@ { GetMyClass(data)->purgeMess(); } +void pix_imageInPlace :: textureMessCallback(void *data, t_floatarg quality) +{ + GetMyClass(data)->textureQuality((int)quality); +} +void pix_imageInPlace :: repeatMessCallback(void *data, t_floatarg repeat) +{ + GetMyClass(data)->repeatMess((int)repeat); +} Modified: trunk/Gem/src/Pixes/pix_imageInPlace.h =================================================================== --- trunk/Gem/src/Pixes/pix_imageInPlace.h 2010-07-14 10:33:51 UTC (rev 3433) +++ trunk/Gem/src/Pixes/pix_imageInPlace.h 2010-07-14 11:03:42 UTC (rev 3434) @@ -77,9 +77,18 @@ ////////// // When a purge is received virtual void purgeMess(); + + ////////// + // quality message + virtual void textureQuality(int type); + + ////////// + // repeat message + virtual void repeatMess(int type); ////////// int mInPreload; + GLuint m_textureQuality, m_repeat; private: @@ -88,6 +97,8 @@ static void preloadMessCallback(void *data, t_symbol *filename, t_floatarg baseImage, t_floatarg topImage, t_floatarg skipRate); static void downloadImageCallback(void *data); static void purgeImageCallback(void *data); + static void textureMessCallback(void *data, t_floatarg type); + static void repeatMessCallback(void *data, t_floatarg type); }; #endif // for header file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |