Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TGLSceneBase.h
Go to the documentation of this file.
1// @(#)root/gl:$Id$
2// Author: Matevz Tadel, Feb 2007
3
4/*************************************************************************
5 * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TGLSceneBase_H
13#define ROOT_TGLSceneBase_H
14
15#include "TGLLockable.h"
16#include "TGLBoundingBox.h"
17
18#include <TString.h>
19
20#include <list>
21
22class TGLViewerBase;
23class TGLSceneInfo;
24class TGLClip;
25class TGLRnrCtx;
26class TGLLogicalShape;
27class TGLSelectRecord;
28
29// Avoid TObject inheritance due to clash with TObject::Draw as well
30// as possible inheritance of TGLPadScene from VierualViewer3D.
31
32class TGLSceneBase : public TGLLockable // : public TObject / TNamed
33{
34private:
35 TGLSceneBase(const TGLSceneBase&); // Not implemented
36 TGLSceneBase& operator=(const TGLSceneBase&); // Not implemented
37
39
40protected:
41 UInt_t fSceneID; // Unique scene id.
42 TString fName; // Object identifier.
43 TString fTitle; // Object title.
44
45 UInt_t fTimeStamp; // Counter increased on every update.
46 UInt_t fMinorStamp; // Counter increased on minimal update.
47 Short_t fLOD; // Scene-lod.
48 Short_t fStyle; // Scene-style.
49 Float_t fWFLineW; // Scene wire-frame line-width.
50 Float_t fOLLineW; // Scene outline line-width.
51 TGLClip * fClip; // Scene clipping-plane.
52 Bool_t fSelectable; // Objects in the scene are selectable.
53
54 // BoundingBox
55 mutable TGLBoundingBox fBoundingBox; // bounding box for scene (axis aligned) - lazy update - use BoundingBox() to access
56 mutable Bool_t fBoundingBoxValid; // bounding box valid?
57
58 Bool_t fDoFrustumCheck; // Perform global frustum-check in UpdateSceneInfo()
59 Bool_t fDoClipCheck; // Perform global clip-plane-check in UpdateSceneInfo()
60
61 // Interface to other components
62 typedef std::list<TGLViewerBase*> ViewerList_t;
63 typedef std::list<TGLViewerBase*>::iterator ViewerList_i;
64
67
68 // Possible future extensions
69 // TGLMatrix fGlobalTrans;
70
71public:
73 ~TGLSceneBase() override;
74
75 void AddViewer(TGLViewerBase* viewer);
76 void RemoveViewer(TGLViewerBase* viewer);
77 void TagViewersChanged();
78
79 const char* LockIdStr() const override;
80
81 virtual const char *GetName() const { return fName; }
82 virtual const char *GetTitle() const { return fTitle; }
83 virtual void SetName (const char *name) { fName = name; }
84 virtual void SetTitle(const char *title) { fTitle = title; }
85 virtual void SetNameTitle(const char *name, const char *title) { SetName(name); SetTitle(title); }
86
88 virtual void RebuildSceneInfo(TGLRnrCtx& ctx);
89 virtual void UpdateSceneInfo(TGLRnrCtx& ctx);
90 virtual void LodifySceneInfo(TGLRnrCtx& ctx);
91
92 // Rendering
93 virtual void PreDraw (TGLRnrCtx& rnrCtx);
94 virtual void PreRender (TGLRnrCtx& rnrCtx);
95 virtual void Render (TGLRnrCtx& rnrCtx);
96 virtual void RenderOpaque (TGLRnrCtx& rnrCtx);
97 virtual void RenderTransp (TGLRnrCtx& rnrCtx);
98 virtual void RenderSelOpaque(TGLRnrCtx& rnrCtx);
99 virtual void RenderSelTransp(TGLRnrCtx& rnrCtx);
100 virtual void RenderSelOpaqueForHighlight(TGLRnrCtx& rnrCtx);
101 virtual void RenderSelTranspForHighlight(TGLRnrCtx& rnrCtx);
102 virtual void PostRender(TGLRnrCtx& rnrCtx);
103 virtual void PostDraw (TGLRnrCtx& rnrCtx);
104
105 virtual TGLLogicalShape* FindLogical(TObject*) const { return nullptr; }
106
107 // Selection interface
108 virtual Bool_t ResolveSelectRecord(TGLSelectRecord& rec, Int_t curIdx);
109
110
111 // Getters & setters
112
113 UInt_t GetTimeStamp() const { return fTimeStamp; }
115
116 UInt_t GetMinorStamp() const { return fMinorStamp; }
118
119 Short_t LOD() const { return fLOD; }
120 void SetLOD(Short_t lod) { fLOD = lod; }
121
122 Short_t Style() const { return fStyle; }
123 void SetStyle(Short_t st) { fStyle = st; }
124
125 TGLClip* Clip() const { return fClip; }
126 void SetClip(TGLClip *p) { fClip = p; }
127
128 Bool_t GetSelectable() const { return fSelectable; }
130
133
134 // BoundingBox
135
136 virtual void CalcBoundingBox() const = 0;
140
141
142 ClassDefOverride(TGLSceneBase, 0) // Base-class for OpenGL scenes.
143}; // endclass TGLSceneBase
144
145
146#endif
#define a(i)
Definition RSha256.hxx:99
bool Bool_t
Definition RtypesCore.h:63
int Int_t
Definition RtypesCore.h:45
float Float_t
Definition RtypesCore.h:57
short Short_t
Definition RtypesCore.h:39
constexpr Bool_t kFALSE
Definition RtypesCore.h:101
#define ClassDefOverride(name, id)
Definition Rtypes.h:341
winID h TVirtualViewer3D TVirtualGLPainter p
char name[80]
Definition TGX11.cxx:110
Concrete class describing an orientated (free) or axis aligned box of 8 vertices.
Abstract clipping shape - derives from TGLPhysicalShape Adds clip mode (inside/outside) and pure virt...
Definition TGLClip.h:32
Simple locking interface used by viewer and scene.
Definition TGLLockable.h:18
Abstract logical shape - a GL 'drawable' - base for all shapes - faceset sphere etc.
The TGLRnrCtx class aggregates data for a given redering context as needed by various parts of the RO...
Definition TGLRnrCtx.h:41
Scene base-class – provides basic interface expected by the TGLViewer or its sub-classes:
virtual const char * GetName() const
Bool_t fAutoDestruct
void SetAutoDestruct(Bool_t a)
virtual void PostDraw(TGLRnrCtx &rnrCtx)
Finalize drawing.
const TGLBoundingBox & BoundingBox() const
virtual void RenderSelOpaque(TGLRnrCtx &rnrCtx)
Render selected opaque elements.
TGLClip * fClip
Bool_t fSelectable
TString fName
virtual void PostRender(TGLRnrCtx &rnrCtx)
Perform post-render clean-up.
UInt_t fMinorStamp
static UInt_t fgSceneIDSrc
virtual void SetTitle(const char *title)
virtual TGLLogicalShape * FindLogical(TObject *) const
virtual void SetName(const char *name)
TGLBoundingBox fBoundingBox
virtual TGLSceneInfo * CreateSceneInfo(TGLViewerBase *view)
Create a scene-info instance appropriate for this scene class.
UInt_t fTimeStamp
ViewerList_t fViewers
void RemoveViewer(TGLViewerBase *viewer)
Remove viewer from the list.
TGLSceneBase(const TGLSceneBase &)
virtual void LodifySceneInfo(TGLRnrCtx &ctx)
Setup LOD-dependant values in scene-info.
Bool_t fBoundingBoxValid
Short_t fStyle
virtual void RenderSelTransp(TGLRnrCtx &rnrCtx)
Render selected transparent elements for highlight.
TString fTitle
void IncTimeStamp()
virtual void PreRender(TGLRnrCtx &rnrCtx)
Perform pre-render initialization - fill rnrCtx with values stored during PreDraw().
void SetLOD(Short_t lod)
virtual Bool_t ResolveSelectRecord(TGLSelectRecord &rec, Int_t curIdx)
Process selection record rec.
UInt_t fSceneID
virtual void RenderTransp(TGLRnrCtx &rnrCtx)
Render transparent elements.
const char * LockIdStr() const override
Name printed on locking info messages.
UInt_t GetMinorStamp() const
virtual void RenderSelTranspForHighlight(TGLRnrCtx &rnrCtx)
Render selected transparent elements.
void InvalidateBoundingBox()
Bool_t fDoClipCheck
UInt_t GetTimeStamp() const
std::list< TGLViewerBase * >::iterator ViewerList_i
std::list< TGLViewerBase * > ViewerList_t
void SetSelectable(Bool_t a)
virtual void PreDraw(TGLRnrCtx &rnrCtx)
Perform basic pre-render initialization:
TGLSceneBase & operator=(const TGLSceneBase &)
virtual void RebuildSceneInfo(TGLRnrCtx &ctx)
Fill scene-info with very basic information that is practically view independent.
void AddViewer(TGLViewerBase *viewer)
Add viewer to the list.
virtual void CalcBoundingBox() const =0
void SetStyle(Short_t st)
TGLClip * Clip() const
Bool_t fDoFrustumCheck
Bool_t GetAutoDestruct() const
virtual void SetNameTitle(const char *name, const char *title)
virtual void RenderOpaque(TGLRnrCtx &rnrCtx)
Render opaque elements.
virtual void RenderSelOpaqueForHighlight(TGLRnrCtx &rnrCtx)
Render selected opaque elements for highlight.
Float_t fWFLineW
virtual void UpdateSceneInfo(TGLRnrCtx &ctx)
Fill scene-info with information needed for rendering, take into account the render-context (viewer s...
Short_t LOD() const
void TagViewersChanged()
Tag all viewers as changed.
void IncMinorStamp()
Float_t fOLLineW
virtual const char * GetTitle() const
void SetClip(TGLClip *p)
~TGLSceneBase() override
Destructor.
virtual void Render(TGLRnrCtx &rnrCtx)
This function does rendering of all stages, the shapes are rendered in the following order: opaque,...
Short_t Style() const
Bool_t GetSelectable() const
Base class for extended scene context.
Standard selection record including information about containing scene and details ob out selected ob...
Base class for GL viewers.
Mother of all ROOT objects.
Definition TObject.h:41
Basic string class.
Definition TString.h:139