1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
////////////////////////////////////////////////////////
//
// 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-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at
// For information on usage and redistribution, and for a DISCLAIMER OF ALL
// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution.
//
/////////////////////////////////////////////////////////
#include "pix_clearblock.h"
#include "Gem/Cache.h"
#include "Gem/State.h"
CPPEXTERN_NEW(pix_clearblock);
/////////////////////////////////////////////////////////
//
// pix_clearblock
//
/////////////////////////////////////////////////////////
// Constructor
//
/////////////////////////////////////////////////////////
pix_clearblock :: pix_clearblock()
: m_oldcache(NULL)
{ }
/////////////////////////////////////////////////////////
// Destructor
//
/////////////////////////////////////////////////////////
pix_clearblock :: ~pix_clearblock()
{
if (m_oldcache) stopRendering();
}
/////////////////////////////////////////////////////////
// render
//
/////////////////////////////////////////////////////////
void pix_clearblock :: render(GemState *state)
{
// the cache and image should have been set
if (!m_oldcache || m_oldcache->m_magic!=GEMCACHE_MAGIC){
// our cache has not been set or has been destroyed
startRendering(); // i'm not sure, whether this breaks the default behaviour
return;
}
state->set(GemState::_PIX, static_cast<pixBlock*>(NULL));
}
/////////////////////////////////////////////////////////
// postrender
//
/////////////////////////////////////////////////////////
void pix_clearblock :: postrender(GemState *state)
{
#ifdef __GNUC__
# warning shant we reset to the original image?
#endif
state->set(GemState::_PIX, static_cast<pixBlock*>(NULL));
}
/////////////////////////////////////////////////////////
// startRendering
//
/////////////////////////////////////////////////////////
void pix_clearblock :: startRendering()
{
if (m_cache && m_cache->m_magic!=GEMCACHE_MAGIC)
m_cache=NULL;
m_oldcache = m_cache;
if(m_oldcache)
m_cache = new GemCache(m_oldcache->m_parent);
}
/////////////////////////////////////////////////////////
// stopRendering
//
/////////////////////////////////////////////////////////
void pix_clearblock :: stopRendering()
{
if (m_cache) delete m_cache;
}
/////////////////////////////////////////////////////////
// static member function
//
/////////////////////////////////////////////////////////
void pix_clearblock :: obj_setupCallback(t_class *)
{ }
|