#ifndef Tulip_GLGRAPHSTRATEGY_H
#define Tulip_GLGRAPHSTRATEGY_H
class GlGraph;
class GlGraphStrategy {
public:
  GlGraphStrategy(string name): name(name), 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 string&)=0;
  virtual const string outputGetText()=0;
  //
  //GlGraph will call this if it can't handle Observable
  virtual void update(set<Observable *>::iterator itb)=0;

  string name;
  bool toUpdate;
};

#endif
