#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;
UInt_t fMinorStamp;
Short_t fLOD;
Short_t fStyle;
TGLClip * fClip;
Bool_t fSelectable;
mutable TGLBoundingBox fBoundingBox;
mutable Bool_t fBoundingBoxValid;
Bool_t fDoFrustumCheck;
Bool_t fDoClipCheck;
typedef std::list<TGLViewerBase*> ViewerList_t;
typedef std::list<TGLViewerBase*>::iterator ViewerList_i;
ViewerList_t fViewers;
Bool_t fAutoDestruct;
public:
TGLSceneBase();
virtual ~TGLSceneBase();
void AddViewer(TGLViewerBase* viewer);
void RemoveViewer(TGLViewerBase* viewer);
void TagViewersChanged();
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 RebuildSceneInfo(TGLRnrCtx& ctx);
virtual void UpdateSceneInfo(TGLRnrCtx& ctx);
virtual void LodifySceneInfo(TGLRnrCtx& ctx);
virtual void PreDraw (TGLRnrCtx & rnrCtx);
virtual void PreRender (TGLRnrCtx & rnrCtx);
virtual void Render (TGLRnrCtx & rnrCtx);
virtual void RenderOpaque (TGLRnrCtx & rnrCtx);
virtual void RenderTransp (TGLRnrCtx & rnrCtx);
virtual void RenderSelOpaque (TGLRnrCtx & rnrCtx);
virtual void RenderSelTransp (TGLRnrCtx & rnrCtx);
virtual void PostRender(TGLRnrCtx & rnrCtx);
virtual void PostDraw (TGLRnrCtx & rnrCtx);
virtual Bool_t ResolveSelectRecord(TGLSelectRecord& rec, Int_t curIdx);
UInt_t GetTimeStamp() const { return fTimeStamp; }
void IncTimeStamp() { ++fTimeStamp; fMinorStamp = 1; }
UInt_t GetMinorStamp() const { return fMinorStamp; }
void IncMinorStamp() { ++fMinorStamp; }
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; }
Bool_t GetSelectable() const { return fSelectable; }
void SetSelectable(Bool_t a) { fSelectable = a; }
Bool_t GetAutoDestruct() const { return fAutoDestruct; }
void SetAutoDestruct(Bool_t a) { fAutoDestruct = a; }
virtual void CalcBoundingBox() const = 0;
void InvalidateBoundingBox() { fBoundingBoxValid = kFALSE; }
const TGLBoundingBox& BoundingBox() const
{ if (!fBoundingBoxValid) CalcBoundingBox(); return fBoundingBox; }
ClassDef(TGLSceneBase, 0)
};
#endif
Last change: Mon Oct 27 08:03:16 2008
Last generated: 2008-10-27 08:03
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.