ROOT  6.06/09
Reference Guide
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
TGLViewerBase Class Reference

Base class for GL viewers.

Provides a basic scene management and a small set of control variables (camera, LOD, style, clip) that are used by the scene classes. Renering wrappers are available but minimal.

There is no concept of GL-context here ... we just draw into whatever is set from outside.

Development notes:

Each viewer automatically creates a TGLRnrCtx and passes it down all render functions.

Definition at line 36 of file TGLViewerBase.h.

Public Member Functions

 TGLViewerBase ()
 
virtual ~TGLViewerBase ()
 Destructor. More...
 
virtual const char * LockIdStr () const
 Name to print in locking output. More...
 
TGLSceneInfoAddScene (TGLSceneBase *scene)
 Add new scene, appropriate scene-info is created. More...
 
void RemoveScene (TGLSceneBase *scene)
 Remove scene from the viewer, its scene-info is deleted. More...
 
void RemoveAllScenes ()
 Remove all scenes from the viewer, their scene-infos are deleted. More...
 
void SceneDestructing (TGLSceneBase *scene)
 Remove scene, its scene-info is deleted. More...
 
TGLSceneInfoGetSceneInfo (TGLSceneBase *scene)
 Find scene-info corresponding to scene. More...
 
TGLLogicalShapeFindLogicalInScenes (TObject *id)
 Find logical-shape representing object id in the list of scenes. More...
 
virtual void AddOverlayElement (TGLOverlayElement *el)
 Add overlay element. More...
 
virtual void RemoveOverlayElement (TGLOverlayElement *el)
 Remove overlay element. More...
 
virtual void DeleteOverlayAnnotations ()
 Delete overlay elements that are annotations. More...
 
virtual void DeleteOverlayElements (TGLOverlayElement::ERole r)
 Delete overlay elements. More...
 
TGLClipClip () const
 
void SetClip (TGLClip *p)
 
Short_t LOD () const
 
void SetLOD (Short_t lod)
 
Short_t Style () const
 
void SetStyle (Short_t st)
 
Float_t WFLineW () const
 
void SetWFLineW (Float_t w)
 
Float_t OLLineW () const
 
void SetOLLineW (Float_t w)
 
virtual void ResetSceneInfos ()
 Force rebuild of view-dependent scene-info structures. More...
 
virtual void Changed ()
 
virtual Bool_t IsChanged () const
 
virtual void MergeSceneBBoxes (TGLBoundingBox &bbox)
 Merge bounding-boxes of all active registered scenes. More...
 
const TGLBoundingBoxRefOverallBoundingBox () const
 
virtual void PreRender ()
 Initialize render-context, setup camera, GL, render-area. More...
 
virtual void Render ()
 Render all scenes. More...
 
virtual void RenderNonSelected ()
 Render non-selected objects from all scenes. More...
 
virtual void RenderSelected ()
 Render selected objects from all scenes. More...
 
virtual void RenderSelectedForHighlight ()
 Render selected objects from all scenes for highlight. More...
 
virtual void RenderOpaque (Bool_t rnr_non_selected=kTRUE, Bool_t rnr_selected=kTRUE)
 Render opaque objects from all scenes. More...
 
virtual void RenderTransparent (Bool_t rnr_non_selected=kTRUE, Bool_t rnr_selected=kTRUE)
 Render transparent objects from all scenes. More...
 
virtual void RenderOverlay (Int_t state, Bool_t selection)
 Render overlay objects. More...
 
virtual void PostRender ()
 Function called after rendering is finished. More...
 
virtual void PreRenderOverlaySelection ()
 Perform minimal initialization for overlay selection. More...
 
virtual void PostRenderOverlaySelection ()
 Perform cleanup after overlay selection. More...
 
Bool_t ResolveSelectRecord (TGLSelectRecord &rec, Int_t recIdx)
 Process selection record on buffer-position 'recIdx' and fill the data into 'rec'. More...
 
Bool_t FindClosestRecord (TGLSelectRecord &rec, Int_t &recIdx)
 Find next select record that can be resolved, starting from position 'recIdx'. More...
 
Bool_t FindClosestOpaqueRecord (TGLSelectRecord &rec, Int_t &recIdx)
 Find next select record that can be resolved and whose result is not transparent, starting from position 'recIdx'. More...
 
Bool_t FindClosestOverlayRecord (TGLOvlSelectRecord &rec, Int_t &recIdx)
 Find next overlay-select record that can be resolved, starting from position 'recIdx'. More...
 
TGLRnrCtxGetRnrCtx () const
 
TGLRnrCtxRnrCtx () const
 
 ClassDef (TGLViewerBase, 0)
 
- Public Member Functions inherited from TGLLockable
 TGLLockable ()
 
virtual ~TGLLockable ()
 
Bool_t TakeLock (ELock lock) const
 Lock the object in mode 'lock'. More...
 
Bool_t ReleaseLock (ELock lock) const
 Release current lock, make sure it the same as the 'lock' argument. More...
 
Bool_t IsLocked () const
 
ELock CurrentLock () const
 
Bool_t IsDrawOrSelectLock () const
 
 ClassDef (TGLLockable, 0)
 

Protected Types

typedef std::list< TGLSceneInfo * > SceneInfoList_t
 
typedef SceneInfoList_t::iterator SceneInfoList_i
 
typedef std::vector< TGLSceneInfo * > SceneInfoVec_t
 
typedef SceneInfoVec_t::iterator SceneInfoVec_i
 
typedef std::vector< TGLOverlayElement * > OverlayElmVec_t
 
typedef OverlayElmVec_t::iterator OverlayElmVec_i
 
typedef void(TGLSceneBase::* SubRender_foo) (TGLRnrCtx &)
 

Protected Member Functions

SceneInfoList_i FindScene (TGLSceneBase *scene)
 Find scene-info corresponding to scene. More...
 
void SubRenderScenes (SubRender_foo render_foo)
 Call sub-rendering function render_foo on all currently visible scenes. More...
 
virtual void SetupClipObject ()
 Setup clip-object. Protected virtual method. More...
 

Protected Attributes

TGLRnrCtxfRnrCtx
 
TGLCamerafCamera
 
TGLClipfClip
 
Short_t fLOD
 
Short_t fStyle
 
Float_t fWFLineW
 
Float_t fOLLineW
 
Bool_t fResetSceneInfosOnRender
 
Bool_t fChanged
 
SceneInfoList_t fScenes
 
SceneInfoVec_t fVisScenes
 
TGLBoundingBox fOverallBoundingBox
 
OverlayElmVec_t fOverlay
 
- Protected Attributes inherited from TGLLockable
ELock fLock
 

Private Member Functions

 TGLViewerBase (const TGLViewerBase &)
 
TGLViewerBaseoperator= (const TGLViewerBase &)
 

Additional Inherited Members

- Public Types inherited from TGLLockable
enum  ELock { kUnlocked, kDrawLock, kSelectLock, kModifyLock }
 
- Static Public Member Functions inherited from TGLLockable
static const char * LockName (ELock lock)
 Return name-string for given lock-type. More...
 
static Bool_t LockValid (ELock lock)
 Test if lock is a valid type to take/release. More...
 

#include <TGLViewerBase.h>

+ Inheritance diagram for TGLViewerBase:
+ Collaboration diagram for TGLViewerBase:

Member Typedef Documentation

typedef OverlayElmVec_t::iterator TGLViewerBase::OverlayElmVec_i
protected

Definition at line 50 of file TGLViewerBase.h.

typedef std::vector<TGLOverlayElement*> TGLViewerBase::OverlayElmVec_t
protected

Definition at line 49 of file TGLViewerBase.h.

typedef SceneInfoList_t::iterator TGLViewerBase::SceneInfoList_i
protected

Definition at line 44 of file TGLViewerBase.h.

typedef std::list<TGLSceneInfo*> TGLViewerBase::SceneInfoList_t
protected

Definition at line 43 of file TGLViewerBase.h.

typedef SceneInfoVec_t::iterator TGLViewerBase::SceneInfoVec_i
protected

Definition at line 47 of file TGLViewerBase.h.

typedef std::vector<TGLSceneInfo*> TGLViewerBase::SceneInfoVec_t
protected

Definition at line 46 of file TGLViewerBase.h.

typedef void(TGLSceneBase::* TGLViewerBase::SubRender_foo) (TGLRnrCtx &)
protected

Definition at line 54 of file TGLViewerBase.h.

Constructor & Destructor Documentation

TGLViewerBase::TGLViewerBase ( const TGLViewerBase )
private
TGLViewerBase::TGLViewerBase ( )

Definition at line 54 of file TGLViewerBase.cxx.

TGLViewerBase::~TGLViewerBase ( )
virtual

Destructor.

Definition at line 77 of file TGLViewerBase.cxx.

Member Function Documentation

void TGLViewerBase::AddOverlayElement ( TGLOverlayElement el)
virtual
TGLSceneInfo * TGLViewerBase::AddScene ( TGLSceneBase scene)

Add new scene, appropriate scene-info is created.

Definition at line 116 of file TGLViewerBase.cxx.

Referenced by TEveViewer::AddScene(), and TGLViewer::PadPaint().

virtual void TGLViewerBase::Changed ( )
inlinevirtual
TGLViewerBase::ClassDef ( TGLViewerBase  ,
 
)
TGLClip* TGLViewerBase::Clip ( ) const
inline

Definition at line 104 of file TGLViewerBase.h.

void TGLViewerBase::DeleteOverlayAnnotations ( )
virtual

Delete overlay elements that are annotations.

Definition at line 231 of file TGLViewerBase.cxx.

Referenced by TEveViewerList::DeleteAnnotations().

void TGLViewerBase::DeleteOverlayElements ( TGLOverlayElement::ERole  r)
virtual

Delete overlay elements.

Definition at line 239 of file TGLViewerBase.cxx.

Referenced by DeleteOverlayAnnotations(), and ~TGLViewerBase().

Bool_t TGLViewerBase::FindClosestOpaqueRecord ( TGLSelectRecord rec,
Int_t recIdx 
)

Find next select record that can be resolved and whose result is not transparent, starting from position 'recIdx'.

'recIdx' is passed as reference and points to found record in the buffer.

Definition at line 642 of file TGLViewerBase.cxx.

Referenced by TGLViewer::DoSelect().

Bool_t TGLViewerBase::FindClosestOverlayRecord ( TGLOvlSelectRecord rec,
Int_t recIdx 
)

Find next overlay-select record that can be resolved, starting from position 'recIdx'.

'recIdx' is passed as reference and points to found record in the buffer.

Definition at line 660 of file TGLViewerBase.cxx.

Referenced by TGLViewer::DoOverlaySelect().

Bool_t TGLViewerBase::FindClosestRecord ( TGLSelectRecord rec,
Int_t recIdx 
)

Find next select record that can be resolved, starting from position 'recIdx'.

'recIdx' is passed as reference and points to found record in the buffer.

Definition at line 624 of file TGLViewerBase.cxx.

Referenced by TGLViewer::DoSelect().

TGLLogicalShape * TGLViewerBase::FindLogicalInScenes ( TObject id)

Find logical-shape representing object id in the list of scenes.

Return 0 if not found.

Definition at line 197 of file TGLViewerBase.cxx.

Referenced by TEveCaloLegoOverlay::Render().

TGLViewerBase::SceneInfoList_i TGLViewerBase::FindScene ( TGLSceneBase scene)
protected

Find scene-info corresponding to scene.

Definition at line 106 of file TGLViewerBase.cxx.

Referenced by AddScene(), GetSceneInfo(), RemoveScene(), and SceneDestructing().

TGLRnrCtx* TGLViewerBase::GetRnrCtx ( ) const
inline

Definition at line 158 of file TGLViewerBase.h.

Referenced by TEveLegoEventHandler::Rotate().

TGLSceneInfo * TGLViewerBase::GetSceneInfo ( TGLSceneBase scene)

Find scene-info corresponding to scene.

Definition at line 184 of file TGLViewerBase.cxx.

virtual Bool_t TGLViewerBase::IsChanged ( ) const
inlinevirtual

Definition at line 122 of file TGLViewerBase.h.

Referenced by TEveViewerList::RepaintChangedViewers().

const char * TGLViewerBase::LockIdStr ( ) const
virtual

Name to print in locking output.

Reimplemented from TGLLockable.

Definition at line 93 of file TGLViewerBase.cxx.

Short_t TGLViewerBase::LOD ( ) const
inline

Definition at line 107 of file TGLViewerBase.h.

void TGLViewerBase::MergeSceneBBoxes ( TGLBoundingBox bbox)
virtual

Merge bounding-boxes of all active registered scenes.

Definition at line 278 of file TGLViewerBase.cxx.

Referenced by TGLViewer::PostSceneBuildSetup(), and TGLViewer::ResetCurrentCamera().

Float_t TGLViewerBase::OLLineW ( ) const
inline

Definition at line 115 of file TGLViewerBase.h.

Referenced by TGLViewerEditor::SetModel().

TGLViewerBase& TGLViewerBase::operator= ( const TGLViewerBase )
private
void TGLViewerBase::PostRender ( )
virtual

Function called after rendering is finished.

Here we just unlock the scenes.

Reimplemented in TGLViewer.

Definition at line 547 of file TGLViewerBase.cxx.

Referenced by TGLViewer::PostRender().

void TGLViewerBase::PostRenderOverlaySelection ( )
virtual

Perform cleanup after overlay selection.

Definition at line 574 of file TGLViewerBase.cxx.

Referenced by TGLViewer::DoOverlaySelect().

void TGLViewerBase::PreRender ( )
virtual

Initialize render-context, setup camera, GL, render-area.

Check and lock scenes, determine their visibility.

Reimplemented in TGLViewer.

Definition at line 311 of file TGLViewerBase.cxx.

Referenced by TGLViewer::PreRender().

void TGLViewerBase::PreRenderOverlaySelection ( )
virtual

Perform minimal initialization for overlay selection.

Here we assume that scene has already been drawn and that camera and overall bounding box are ok. Scenes are not locked.

Definition at line 566 of file TGLViewerBase.cxx.

Referenced by TGLViewer::DoOverlaySelect().

const TGLBoundingBox& TGLViewerBase::RefOverallBoundingBox ( ) const
inline

Definition at line 126 of file TGLViewerBase.h.

void TGLViewerBase::RemoveAllScenes ( )

Remove all scenes from the viewer, their scene-infos are deleted.

Definition at line 152 of file TGLViewerBase.cxx.

Referenced by TEveViewer::RemoveElementsLocal().

void TGLViewerBase::RemoveOverlayElement ( TGLOverlayElement el)
virtual

Remove overlay element.

Reimplemented in TGLViewer.

Definition at line 220 of file TGLViewerBase.cxx.

Referenced by TGLViewer::RemoveOverlayElement().

void TGLViewerBase::RemoveScene ( TGLSceneBase scene)

Remove scene from the viewer, its scene-info is deleted.

Definition at line 135 of file TGLViewerBase.cxx.

Referenced by TEveViewer::RemoveElementLocal().

void TGLViewerBase::Render ( )
virtual

Render all scenes.

This is done in two main passes:

  • render opaque objects from all scenes
  • render transparent objects from all scenes

Reimplemented in TGLViewer.

Definition at line 423 of file TGLViewerBase.cxx.

Referenced by TGLViewer::DoSelect(), and TGLViewer::Render().

void TGLViewerBase::RenderNonSelected ( )
virtual

Render non-selected objects from all scenes.

Definition at line 432 of file TGLViewerBase.cxx.

void TGLViewerBase::RenderOpaque ( Bool_t  rnr_non_selected = kTRUE,
Bool_t  rnr_selected = kTRUE 
)
virtual

Render opaque objects from all scenes.

Definition at line 488 of file TGLViewerBase.cxx.

Referenced by Render().

void TGLViewerBase::RenderOverlay ( Int_t  state,
Bool_t  selection 
)
virtual

Render overlay objects.

Definition at line 528 of file TGLViewerBase.cxx.

Referenced by TGLViewer::DoOverlaySelect(), and TGLViewer::Render().

void TGLViewerBase::RenderSelected ( )
virtual

Render selected objects from all scenes.

Definition at line 450 of file TGLViewerBase.cxx.

void TGLViewerBase::RenderSelectedForHighlight ( )
virtual

Render selected objects from all scenes for highlight.

Definition at line 468 of file TGLViewerBase.cxx.

Referenced by TGLViewer::Render().

void TGLViewerBase::RenderTransparent ( Bool_t  rnr_non_selected = kTRUE,
Bool_t  rnr_selected = kTRUE 
)
virtual

Render transparent objects from all scenes.

Definition at line 505 of file TGLViewerBase.cxx.

Referenced by Render().

void TGLViewerBase::ResetSceneInfos ( )
virtual

Force rebuild of view-dependent scene-info structures.

This should be called before calling render (draw/select) if something that affects camera interest has been changed.

Definition at line 265 of file TGLViewerBase.cxx.

Referenced by TGLViewer::DoDraw(), and PreRender().

Bool_t TGLViewerBase::ResolveSelectRecord ( TGLSelectRecord rec,
Int_t  recIdx 
)

Process selection record on buffer-position 'recIdx' and fill the data into 'rec'.

Returns TRUE if scene was demangled and an object identified. When FALSE is returned it is still possible that scene has been identified. Check for this if interested in scene-selection.

The select-buffer is taken form fRnrCtx.

Definition at line 601 of file TGLViewerBase.cxx.

Referenced by FindClosestOpaqueRecord(), and FindClosestRecord().

TGLRnrCtx& TGLViewerBase::RnrCtx ( ) const
inline

Definition at line 159 of file TGLViewerBase.h.

Referenced by TGLViewerEditor::DoClearColor(), and TGLViewerEditor::SetModel().

void TGLViewerBase::SceneDestructing ( TGLSceneBase scene)

Remove scene, its scene-info is deleted.

Called from scene that is being destroyed while still holding viewer references.

Definition at line 169 of file TGLViewerBase.cxx.

void TGLViewerBase::SetClip ( TGLClip p)
inline

Definition at line 105 of file TGLViewerBase.h.

void TGLViewerBase::SetLOD ( Short_t  lod)
inline

Definition at line 108 of file TGLViewerBase.h.

void TGLViewerBase::SetOLLineW ( Float_t  w)
inline

Definition at line 116 of file TGLViewerBase.h.

Referenced by TGLViewerEditor::UpdatePointLineStuff().

void TGLViewerBase::SetStyle ( Short_t  st)
inline

Definition at line 111 of file TGLViewerBase.h.

Referenced by TGLEventHandler::HandleKey().

void TGLViewerBase::SetupClipObject ( )
protectedvirtual

Setup clip-object. Protected virtual method.

Reimplemented in TGLViewer.

Definition at line 299 of file TGLViewerBase.cxx.

Referenced by PreRender().

void TGLViewerBase::SetWFLineW ( Float_t  w)
inline

Definition at line 114 of file TGLViewerBase.h.

Referenced by TGLViewerEditor::UpdatePointLineStuff().

Short_t TGLViewerBase::Style ( ) const
inline

Definition at line 110 of file TGLViewerBase.h.

void TGLViewerBase::SubRenderScenes ( SubRender_foo  render_foo)
protected

Call sub-rendering function render_foo on all currently visible scenes.

Definition at line 400 of file TGLViewerBase.cxx.

Referenced by RenderNonSelected(), RenderOpaque(), RenderSelected(), RenderSelectedForHighlight(), and RenderTransparent().

Float_t TGLViewerBase::WFLineW ( ) const
inline

Definition at line 113 of file TGLViewerBase.h.

Referenced by TGLViewerEditor::SetModel().

Member Data Documentation

TGLCamera* TGLViewerBase::fCamera
protected
Bool_t TGLViewerBase::fChanged
protected

Definition at line 72 of file TGLViewerBase.h.

Referenced by IsChanged(), and PostRender().

TGLClip* TGLViewerBase::fClip
protected

Definition at line 65 of file TGLViewerBase.h.

Referenced by Clip(), PreRender(), TGLViewer::PreRender(), and SetupClipObject().

Short_t TGLViewerBase::fLOD
protected
Float_t TGLViewerBase::fOLLineW
protected

Definition at line 69 of file TGLViewerBase.h.

Referenced by OLLineW(), PreRender(), and TGLViewerBase().

TGLBoundingBox TGLViewerBase::fOverallBoundingBox
protected
OverlayElmVec_t TGLViewerBase::fOverlay
protected
Bool_t TGLViewerBase::fResetSceneInfosOnRender
protected

Definition at line 71 of file TGLViewerBase.h.

Referenced by PreRender().

TGLRnrCtx* TGLViewerBase::fRnrCtx
protected
SceneInfoList_t TGLViewerBase::fScenes
protected
Short_t TGLViewerBase::fStyle
protected

Definition at line 67 of file TGLViewerBase.h.

Referenced by PreRender(), and Style().

SceneInfoVec_t TGLViewerBase::fVisScenes
protected

Definition at line 75 of file TGLViewerBase.h.

Referenced by PostRender(), PreRender(), ResolveSelectRecord(), and SubRenderScenes().

Float_t TGLViewerBase::fWFLineW
protected

Definition at line 68 of file TGLViewerBase.h.

Referenced by PreRender(), TGLViewerBase(), and WFLineW().


The documentation for this class was generated from the following files: