#include <graphicsImmediateDeferredSwitch.h>


void graphicsImmediateDeferredSwitch::toggle(uintc index)
{
  assert(index<gswitches.size());

  gswitches[index]->toggle();
}

void graphicsImmediateDeferredSwitch::pushdeferred
(
  uint & index, 
  gobj* p
)
{
  assert(p);

  index = gswitches.size();
  gswitches.push_back(new gobjSwitch<>(p,true,false));
  graphicsDeferred.push(gswitches[index]);
}

graphicsImmediateDeferredSwitch::~graphicsImmediateDeferredSwitch()
{
  for (uint i=0; i<gswitches.size(); ++i)
  {
    delete gswitches[i]->x;
    gswitches[i]->x=0;
  }
}


void graphicsImmediateDeferredSwitch::pushimmediate(uint & index, gobj* p)
{
  index = gswitches.size();
  gswitches.push_back(new gobjSwitch<>(p,true,false));
  graphicsImmediate.push(gswitches[index]);
}
 

boolc graphicsImmediateDeferredSwitch::isdrawn(uintc index) const
{
  assert(index<gswitches.size());

  return gswitches[index]->isdrawn;
}


