#ifndef Tulip_GLGRAPHSTRATEGY_H
#define Tulip_GLGRAPHSTRATEGY_H
#include <string>

class GlGraph;
class GlGraphStrategy {
public:
  GlGraphStrategy(): toUpdate(false){}
  virtual ~GlGraphStrategy(){}
  
  //GlGraph has to call this before any GL operation
  virtual void MakeCurrent()=0;
  virtual void UpdateGL()=0;

  //GL stuff
  virtual void setDoubleBuffering(bool)=0;
  
  //timer methods
  virtual bool timerIsActive()=0;
  virtual int timerStart(int msec, bool sshot=false)=0;
  virtual void timerStop()=0;

  //
  virtual void mPaint(GlGraph *)=0;
  virtual void outputSetText(const std::string&)=0;
  virtual const std::string outputGetText()=0;
  //
  //GlGraph will call this if it can't handle Observable
  virtual void update(std::set<Observable *>::iterator itb)=0;

  bool toUpdate;
};

#endif
