12 #ifndef ROOT_TGLViewerBase
13 #define ROOT_TGLViewerBase
29 class TGLLogicalShape;
30 class TGLSelectRecord;
31 class TGLOvlSelectRecord;
32 class TGLOverlayElement;
36 class TGLViewerBase :
public TGLLockable
39 TGLViewerBase(
const TGLViewerBase&);
40 TGLViewerBase& operator=(
const TGLViewerBase&);
43 typedef std::list<TGLSceneInfo*> SceneInfoList_t;
44 typedef SceneInfoList_t::iterator SceneInfoList_i;
46 typedef std::vector<TGLSceneInfo*> SceneInfoVec_t;
47 typedef SceneInfoVec_t::iterator SceneInfoVec_i;
49 typedef std::vector<TGLOverlayElement*> OverlayElmVec_t;
50 typedef OverlayElmVec_t::iterator OverlayElmVec_i;
52 SceneInfoList_i FindScene(TGLSceneBase* scene);
54 typedef void (TGLSceneBase::* SubRender_foo) (TGLRnrCtx &);
56 void SubRenderScenes(SubRender_foo render_foo);
58 virtual void SetupClipObject();
71 Bool_t fResetSceneInfosOnRender;
74 SceneInfoList_t fScenes;
75 SceneInfoVec_t fVisScenes;
77 TGLBoundingBox fOverallBoundingBox;
79 OverlayElmVec_t fOverlay;
86 virtual ~TGLViewerBase();
88 virtual const char* LockIdStr()
const;
90 TGLSceneInfo* AddScene(TGLSceneBase* scene);
91 void RemoveScene(TGLSceneBase* scene);
92 void RemoveAllScenes();
93 void SceneDestructing(TGLSceneBase* scene);
95 TGLSceneInfo* GetSceneInfo(TGLSceneBase* scene);
97 TGLLogicalShape* FindLogicalInScenes(TObject*
id);
99 virtual void AddOverlayElement(TGLOverlayElement* el);
100 virtual void RemoveOverlayElement(TGLOverlayElement* el);
101 virtual void DeleteOverlayAnnotations();
102 virtual void DeleteOverlayElements(TGLOverlayElement::ERole r);
104 TGLClip* Clip()
const {
return fClip; }
105 void SetClip(TGLClip *p) { fClip = p; }
107 Short_t LOD()
const {
return fLOD; }
108 void SetLOD(Short_t lod) { fLOD = lod; }
110 Short_t Style()
const {
return fStyle; }
111 void SetStyle(Short_t st) { fStyle = st; }
113 Float_t WFLineW()
const {
return fWFLineW; }
114 void SetWFLineW(Float_t w) { fWFLineW = w; }
115 Float_t OLLineW()
const {
return fOLLineW; }
116 void SetOLLineW(Float_t w) { fOLLineW = w; }
120 virtual void ResetSceneInfos();
121 virtual void Changed() { fChanged = kTRUE; }
122 virtual Bool_t IsChanged()
const {
return fChanged; }
124 virtual void MergeSceneBBoxes(TGLBoundingBox& bbox);
126 const TGLBoundingBox& RefOverallBoundingBox()
const {
return fOverallBoundingBox; }
131 virtual void PreRender();
132 virtual void Render();
133 virtual void RenderNonSelected();
134 virtual void RenderSelected();
135 virtual void RenderSelectedForHighlight();
136 virtual void RenderOpaque(Bool_t rnr_non_selected=kTRUE, Bool_t rnr_selected=kTRUE);
137 virtual void RenderTransparent(Bool_t rnr_non_selected=kTRUE, Bool_t rnr_selected=kTRUE);
138 virtual void RenderOverlay(Int_t state, Bool_t selection);
139 virtual void PostRender();
141 virtual void PreRenderOverlaySelection();
142 virtual void PostRenderOverlaySelection();
150 Bool_t ResolveSelectRecord(TGLSelectRecord& rec, Int_t recIdx);
152 Bool_t FindClosestRecord (TGLSelectRecord& rec, Int_t& recIdx);
153 Bool_t FindClosestOpaqueRecord(TGLSelectRecord& rec, Int_t& recIdx);
156 Bool_t FindClosestOverlayRecord(TGLOvlSelectRecord& rec, Int_t& recIdx);
158 TGLRnrCtx* GetRnrCtx()
const {
return fRnrCtx; }
159 TGLRnrCtx& RnrCtx()
const {
return *fRnrCtx; }
161 ClassDef(TGLViewerBase, 0);