#ifndef ROOT_TGLSceneBase_H
#define ROOT_TGLSceneBase_H
#include "TGLLockable.h"
#include "TGLBoundingBox.h"
#include <TString.h>
#include <list>
class TGLViewerBase;
class TGLSceneInfo;
class TGLClip;
class TGLRnrCtx;
class TGLSelectRecord;
class TGLSceneBase : public TGLLockable 
{
private:
   TGLSceneBase(const TGLSceneBase&);            
   TGLSceneBase& operator=(const TGLSceneBase&); 
   static UInt_t fgSceneIDSrc;
protected:
   UInt_t             fSceneID;     
   TString            fName;        
   TString            fTitle;       
   UInt_t             fTimeStamp;   
   Short_t            fLOD;         
   Short_t            fStyle;       
   TGLClip          * fClip;        
   
   mutable TGLBoundingBox fBoundingBox;      
   mutable Bool_t         fBoundingBoxValid; 
   Bool_t  fDoFrustumCheck;  
   Bool_t  fDoClipCheck;     
   
   std::list<TGLViewerBase*> fViewers;
   
   
public:
   TGLSceneBase();
   virtual ~TGLSceneBase() {}
   virtual const char* LockIdStr() const;
   virtual const char  *GetName()  const { return fName; }
   virtual const char  *GetTitle() const { return fTitle; }
   virtual void  SetName (const char *name)  { fName = name; }
   virtual void  SetTitle(const char *title) { fTitle = title; }
   virtual void  SetNameTitle(const char *name, const char *title) { SetName(name); SetTitle(title); }
   virtual TGLSceneInfo* CreateSceneInfo(TGLViewerBase* view);
   virtual void          UpdateSceneInfo(TGLRnrCtx& ctx);
   virtual void          LodifySceneInfo(TGLRnrCtx& ctx);
   
   virtual void FullRender(TGLRnrCtx & rnrCtx);
   virtual void PreRender (TGLRnrCtx & rnrCtx);
   virtual void Render    (TGLRnrCtx & rnrCtx);
   virtual void PostRender(TGLRnrCtx & rnrCtx);
   
   virtual Bool_t ResolveSelectRecord(TGLSelectRecord& rec, Int_t curIdx);
   
   UInt_t GetTimeStamp() const { return fTimeStamp; }
   void   IncTimeStamp()       { ++fTimeStamp;      }
   Short_t  LOD()          const { return fLOD; }
   void     SetLOD(Short_t lod)  { fLOD = lod;  }
   Short_t  Style()        const { return fStyle; }
   void     SetStyle(Short_t st) { fStyle = st;   }
   TGLClip* Clip()         const { return fClip; }
   void     SetClip(TGLClip *p)  { fClip = p;    }
   
   virtual void CalcBoundingBox() const = 0;
   void         InvalidateBoundingBox() { fBoundingBoxValid = kFALSE; }
   const TGLBoundingBox& BoundingBox() const
   { if (!fBoundingBoxValid) CalcBoundingBox(); return fBoundingBox; }
   ClassDef(TGLSceneBase, 0) 
}; 
#endif
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.