[GEM-cvs] SF.net SVN: pd-gem:[3863] trunk/Gem/src/Controls
Brought to you by:
zmoelnig
From: <zmo...@us...> - 2011-02-25 11:19:58
|
Revision: 3863 http://pd-gem.svn.sourceforge.net/pd-gem/?rev=3863&view=rev Author: zmoelnig Date: 2011-02-25 11:19:51 +0000 (Fri, 25 Feb 2011) Log Message: ----------- prepare for 2nd argument (chainID) Modified Paths: -------------- trunk/Gem/src/Controls/gemhead.cpp trunk/Gem/src/Controls/gemhead.h Modified: trunk/Gem/src/Controls/gemhead.cpp =================================================================== --- trunk/Gem/src/Controls/gemhead.cpp 2011-02-25 11:19:22 UTC (rev 3862) +++ trunk/Gem/src/Controls/gemhead.cpp 2011-02-25 11:19:51 UTC (rev 3863) @@ -27,9 +27,26 @@ #include "Base/GLStack.h" #include "RTE/MessageCallbacks.h" +#include "Base/GemException.h" -CPPEXTERN_NEW_WITH_ONE_ARG(gemhead, t_floatarg, A_DEFFLOAT) +#include <stdio.h> +#ifdef _MSC_VER /* This is only for Microsoft's compiler, not cygwin, e.g. */ +# define snprintf _snprintf +#endif + +CPPEXTERN_NEW_WITH_GIMME(gemhead); + + +static std::string float2str(t_float v) { + std::string s; + char buf[1000]; + snprintf(buf, 1000, "%g", v); + s=buf; + return s; +} + + ///////////////////////////////////////////////////////// // // gemhead @@ -38,14 +55,51 @@ // Constructor // ///////////////////////////////////////////////////////// -gemhead :: gemhead(t_floatarg priority) : +gemhead :: gemhead(int argc, t_atom*argv) : gemreceive(gensym("__gem_render")), m_cache(new GemCache(this)), m_renderOn(1) { - if(m_fltin)inlet_free(m_fltin); - m_fltin=NULL; + if(m_fltin)inlet_free(m_fltin); m_fltin=NULL; - setMess(priority); + m_basename=m_name->s_name; + float priority=50.; +#if 0 + switch(argc) { + case 2: + if(argv[0].a_type == A_FLOAT && argv[1].a_type == A_SYMBOL) { + priority=atom_getfloat(argv+0); + m_basename+=atom_getsymbol(argv+1)->s_name; + } else if(argv[1].a_type == A_FLOAT && argv[0].a_type == A_SYMBOL) { + priority=atom_getfloat(argv+1); + m_basename+=atom_getsymbol(argv+0)->s_name; + } else if(argv[1].a_type == A_FLOAT && argv[0].a_type == A_FLOAT) { + priority=atom_getfloat(argv+0); + m_basename+=::float2str(atom_getfloat (argv+1)); + } + break; + case 1: + if(argv[0].a_type == A_FLOAT) { + priority=atom_getfloat(argv+0); + } else if(argv[0].a_type == A_SYMBOL) { + m_basename+=atom_getsymbol(argv+0)->s_name; + } + break; + case 0: + priority=50.f; + break; + default: + throw(GemException("invalid arguments: 'gemhead [<priority> [<basereceivename>]]'")); + } +#else + if(argc==0) + priority=50.; + else if(argv[0].a_type == A_FLOAT) { + priority=atom_getfloat(argv); + } else + throw(GemException("invalid arguments: 'gemhead [<priority>]'")); +#endif + m_priority=priority+1; + setMess(priority); } ///////////////////////////////////////////////////////// @@ -149,15 +203,16 @@ ///////////////////////////////////////////////////////// void gemhead :: setMess(t_float priority) { - if (priority == 0.)priority=50.; + if (0.==priority)priority=50.; + if(priority==m_priority) return; m_priority=priority; - std::string rcv="__gem_render"; + std::string rcv=m_basename; if(priority<0.f) - rcv="__gem_render_osd"; + rcv=m_basename+"_osd"; gemreceive::priorityMess(priority); gemreceive::nameMess(gensym(rcv.c_str())); Modified: trunk/Gem/src/Controls/gemhead.h =================================================================== --- trunk/Gem/src/Controls/gemhead.h 2011-02-25 11:19:22 UTC (rev 3862) +++ trunk/Gem/src/Controls/gemhead.h 2011-02-25 11:19:51 UTC (rev 3863) @@ -1,16 +1,16 @@ /*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia + LOG + GEM - Graphics Environment for Multimedia - The starting point for all graphics trees + The starting point for all graphics trees - Copyright (c) 1997-1998 Mark Danks. ma...@da... - Copyright (c) Günther Geiger. ge...@ep... - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmo...@ie... - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + Copyright (c) 1997-1998 Mark Danks. ma...@da... + Copyright (c) Günther Geiger. ge...@ep... + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmo...@ie... + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. ------------------------------------------------------------------*/ + -----------------------------------------------------------------*/ #ifndef INCLUDE_GEMHEAD_H_ #define INCLUDE_GEMHEAD_H_ @@ -22,66 +22,66 @@ class GemCache; /*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - gemhead + ------------------------------------------------------------------- + CLASS + gemhead - The starting point for all graphics trees + The starting point for all graphics trees -DESCRIPTION + DESCRIPTION - "bang" - sends out a state list + "bang" - sends out a state list ------------------------------------------------------------------*/ + -----------------------------------------------------------------*/ class GEM_EXTERN gemhead : public gemreceive { CPPEXTERN_HEADER(gemhead, CPPExtern); - public: + public: - ////////// - // Constructor - gemhead(t_floatarg priority); + ////////// + // Constructor + gemhead(int, t_atom*); - ////////// - // A render message - void renderGL(GemState *state); + ////////// + // A render message + void renderGL(GemState *state); - ////////// - // Set up the modifying flags - virtual void startRendering(); + ////////// + // Set up the modifying flags + virtual void startRendering(); - ////////// - // Clean up the modifying flags - virtual void stopRendering(); + ////////// + // Clean up the modifying flags + virtual void stopRendering(); - ////////// - // change the priority - void setMess(t_float priority); + ////////// + // change the priority + void setMess(t_float priority); - virtual void receive(t_symbol*s, int argc, t_atom*argv); + virtual void receive(t_symbol*s, int argc, t_atom*argv); - protected: + protected: - ////////// - // Destructor - ~gemhead(); + ////////// + // Destructor + virtual ~gemhead(); + + std::string m_basename; - private: + private: - t_outlet *m_out1; + t_outlet *m_out1; - GemCache *m_cache; // The cache information + GemCache *m_cache; // The cache information - void outputRenderOnOff(int state); + void outputRenderOnOff(int state); - void renderOnOff(int state); // Turn rendering on and off - int m_renderOn; + void renderOnOff(int state); // Turn rendering on and off + int m_renderOn; - t_float m_priority; - - void bangMess(); + void bangMess(); }; #endif // for header file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |