[GEM-cvs] SF.net SVN: pd-gem:[2695] trunk/Gem/src/Controls
Brought to you by:
zmoelnig
From: <zmo...@us...> - 2009-01-22 17:14:52
|
Revision: 2695 http://pd-gem.svn.sourceforge.net/pd-gem/?rev=2695&view=rev Author: zmoelnig Date: 2009-01-22 17:14:37 +0000 (Thu, 22 Jan 2009) Log Message: ----------- [gem_state] does the GemState/GemCache part of [gemhead] Added Paths: ----------- trunk/Gem/src/Controls/gem_state.cpp trunk/Gem/src/Controls/gem_state.h Added: trunk/Gem/src/Controls/gem_state.cpp =================================================================== --- trunk/Gem/src/Controls/gem_state.cpp (rev 0) +++ trunk/Gem/src/Controls/gem_state.cpp 2009-01-22 17:14:37 UTC (rev 2695) @@ -0,0 +1,103 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// ch...@ch... +// +// Implementation file +// +// Copyright (c) 1997-1999 Mark Danks. +// Copyright (c) G\xFCnther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::f\xFCr::uml\xE4ute. IEM +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "gem_state.h" +#include "Base/GemState.h" + +#include "Base/GemCache.h" +#include "Base/GemMan.h" + +CPPEXTERN_NEW(gem_state) + +///////////////////////////////////////////////////////// +// +// gem_state +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +gem_state :: gem_state() : + m_newcache(NULL), m_oldcache(NULL), + m_profiling(0) +{ + m_newcache = new GemCache(NULL); +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +gem_state :: ~gem_state() +{ + if(m_newcache) + delete m_newcache; + m_newcache=NULL; +} + +///////////////////////////////////////////////////////// +// render +// +///////////////////////////////////////////////////////// +void gem_state :: render(GemState *state) +{ + m_oldcache=m_cache; + if(state) + { + state->reset(); + + // set the state dirty flag + state->dirty = m_newcache->dirty; + state->VertexDirty=m_newcache->vertexDirty; + } + + // are we profiling and need to send new images? + if (m_profiling >= 2) + m_newcache->resendImage = 1; + + m_cache=m_newcache; +} + +///////////////////////////////////////////////////////// +// postrender +// +///////////////////////////////////////////////////////// +void gem_state :: postrender(GemState *state) +{ + m_newcache->dirty = 0; + m_newcache->vertexDirty=0; + m_cache=m_oldcache; +} + +void gem_state :: profileMess(int state) +{ + if(state<0)state=0; + m_profiling=state; +} + + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void gem_state :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&gem_state::profileMessCallback, gensym("profile"), A_FLOAT, A_NULL); +} +void gem_state :: profileMessCallback(void *data, t_floatarg n) +{ + GetMyClass(data)->profileMess((int)n); +} Added: trunk/Gem/src/Controls/gem_state.h =================================================================== --- trunk/Gem/src/Controls/gem_state.h (rev 0) +++ trunk/Gem/src/Controls/gem_state.h 2009-01-22 17:14:37 UTC (rev 2695) @@ -0,0 +1,64 @@ +/*----------------------------------------------------------------- + LOG + GEM - Graphics Environment for Multimedia + + this object resets the gem_state + + Copyright (c) 2009 IOhannes m zmoelnig. forum::f\xFCr::uml\xE4ute. 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_GEM_STATE_H_ +#define INCLUDE_GEM_STATE_H_ + +#include "Base/GemBase.h" + +/*----------------------------------------------------------------- + ------------------------------------------------------------------- + CLASS + gem_state + + DESCRIPTION + + "gem_state" - reset the Gem->State + + -----------------------------------------------------------------*/ +class GEM_EXTERN gem_state : public GemBase +{ + CPPEXTERN_HEADER(gem_state, GemBase) + + public: + + ////////// + // Constructor + gem_state(); + + protected: + + ////////// + // Destructor + virtual ~gem_state(); + + ////////// + // Push the current state + virtual void render(GemState *state); + + ////////// + virtual void postrender(GemState *state); + + ////////// + // curent state + GemCache *m_newcache, *m_oldcache; + + virtual void profileMess(int state); + int m_profiling; + + private: + + static void profileMessCallback(void *data, t_floatarg n); + +}; + +#endif // for header file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |