Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
TGLCylinder Class Reference

Implements a native ROOT-GL cylinder that can be rendered at different levels of detail.

Definition at line 21 of file TGLCylinder.h.

Public Types

enum  ELODAxes {
  kLODAxesNone = 0 , kLODAxesX = 1 << 0 , kLODAxesY = 1 << 1 , kLODAxesZ = 1 << 2 ,
  kLODAxesAll = kLODAxesX | kLODAxesY | kLODAxesZ
}

Public Member Functions

 TGLCylinder (const TBuffer3DTube &buffer)
 Copy out relevant parts of buffer - we create and delete mesh parts on demand in DirectDraw() and they are DL cached.
 ~TGLCylinder () override
 destructor
void AddRef (TGLPhysicalShape *phys) const
 Add reference to given physical shape.
virtual Bool_t AlwaysSecondarySelect () const
const TGLBoundingBoxBoundingBox () const
void DestroyPhysicals ()
 Destroy all physicals attached to this logical.
void DirectDraw (TGLRnrCtx &rnrCtx) const override
 Debug tracing.
virtual void DLCacheClear ()
 Clear all entries for all LODs for this drawable from the display list cache but keeping the reserved ids from GL context.
virtual void DLCacheDrop ()
 Drop all entries for all LODs for this drawable from the display list cache, WITHOUT returning the reserved ids to GL context.
virtual void DLCachePurge ()
 Purge all entries for all LODs for this drawable from the display list cache, returning the reserved ids to GL context.
UInt_t DLOffset (Short_t lod) const override
 Return display-list offset for given LOD.
virtual void Draw (TGLRnrCtx &rnrCtx) const
 Draw the GL drawable, using draw flags.
virtual void DrawHighlight (TGLRnrCtx &rnrCtx, const TGLPhysicalShape *pshp, Int_t lvl=-1) const
 Draw the logical shape in highlight mode.
TObjectGetExternal () const
const TGLPhysicalShapeGetFirstPhysical () const
TGLSceneGetScene () const
TObjectID () const
virtual Bool_t IgnoreSizeForOfInterest () const
 Return true if size of this shape should be ignored when determining if the object should be drawn.
void InvokeContextMenu (TContextMenu &menu, UInt_t x, UInt_t y) const
 Invoke popup menu or our bound external TObject (if any), using passed 'menu' object, at location 'x' 'y'.
TClassIsA () const override
virtual Bool_t KeepDuringSmartRefresh () const
virtual void ProcessSelection (TGLRnrCtx &rnrCtx, TGLSelectRecord &rec)
 Virtual method called-back after a secondary selection hit is recorded (see TGLViewer::HandleButton(), Ctrl-Button1).
Short_t QuantizeShapeLOD (Short_t shapeLOD, Short_t combiLOD) const override
 Factor in scene/viewer LOD and quantize.
UInt_t Ref () const
Bool_t SetDLCache (Bool_t cached)
 Modify capture of draws into display list cache kTRUE - capture, kFALSE direct draw.
virtual Bool_t ShouldDLCache (const TGLRnrCtx &rnrCtx) const
 Returns kTRUE if draws should be display list cached kFALSE otherwise.
void Streamer (TBuffer &) override
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
void StrongRef (Bool_t strong) const
void SubRef (TGLPhysicalShape *phys) const
 Remove reference to given physical shape, potentially deleting this object when hitting zero ref-count (if fRefStrong is true).
ELODAxes SupportedLODAxes () const override
virtual Bool_t SupportsSecondarySelect () const
UInt_t UnrefFirstPhysical ()
 Unreferenced first physical in the list, returning its id and making it fit for destruction somewhere else.
virtual void UpdateBoundingBox ()
void UpdateBoundingBoxesOfPhysicals ()
 Update bounding-boxed of all dependent physicals.

Static Public Member Functions

static TClassClass ()
static const char * Class_Name ()
static constexpr Version_t Class_Version ()
static const char * DeclFileName ()
static Bool_t GetIgnoreSizeForCameraInterest ()
 Get state of static fgIgnoreSizeForCameraInterest flag.
static void SetEnvDefaults ()
static void SetIgnoreSizeForCameraInterest (Bool_t isfci)
 Set state of static fgIgnoreSizeForCameraInterest flag.

Protected Member Functions

void PurgeDLRange (UInt_t base, Int_t size) const
 Purge given display-list range.

Protected Attributes

TGLBoundingBox fBoundingBox
 ! Shape's bounding box.
UInt_t fDLBase
 ! display-list id base
Bool_t fDLCache
 ! use display list caching
Int_t fDLSize
 ! display-list size for different LODs
UShort_t fDLValid
 ! display-list validity bit-field
TObjectfExternalObj
 ! Also plays the role of ID.
TGLPhysicalShapefFirstPhysical
 ! first replica
Bool_t fOwnExtObj
 ! External object is a fake
UInt_t fRef
 ! physical instance ref counting
Bool_t fRefStrong
 ! Strong ref (delete on 0 ref); not in scene
TGLScenefScene
 ! scene where object is stored (can be zero!)

Static Protected Attributes

static Bool_t fgIgnoreSizeForCameraInterest = kFALSE
static Bool_t fgUseDLs = kTRUE
 ! global flag for usage of display-lists
static Bool_t fgUseDLsForVertArrs = kTRUE
 ! global flag for usage of display-lists in shapes that use vertex arrays

Private Attributes

Double_t fDz
TGLVector3 fHighPlaneNorm
TGLVector3 fLowPlaneNorm
Double_t fPhi1
Double_t fPhi2
Double_t fR1
Double_t fR2
Double_t fR3
Double_t fR4
Bool_t fSegMesh

#include <TGLCylinder.h>

Inheritance diagram for TGLCylinder:
TGLLogicalShape

Member Enumeration Documentation

◆ ELODAxes

enum TGLLogicalShape::ELODAxes
inherited
Enumerator
kLODAxesNone 
kLODAxesX 
kLODAxesY 
kLODAxesZ 
kLODAxesAll 

Definition at line 38 of file TGLLogicalShape.h.

Constructor & Destructor Documentation

◆ TGLCylinder()

TGLCylinder::TGLCylinder ( const TBuffer3DTube & buffer)

Copy out relevant parts of buffer - we create and delete mesh parts on demand in DirectDraw() and they are DL cached.

Definition at line 520 of file TGLCylinder.cxx.

◆ ~TGLCylinder()

TGLCylinder::~TGLCylinder ( )
override

destructor

Definition at line 582 of file TGLCylinder.cxx.

Member Function Documentation

◆ AddRef()

void TGLLogicalShape::AddRef ( TGLPhysicalShape * phys) const
inherited

Add reference to given physical shape.

Definition at line 162 of file TGLLogicalShape.cxx.

◆ AlwaysSecondarySelect()

virtual Bool_t TGLLogicalShape::AlwaysSecondarySelect ( ) const
inlinevirtualinherited

Reimplemented in TEveCalo2DGL, TEveCalo3DGL, TEveCaloLegoGL, and TEveDigitSetGL.

Definition at line 111 of file TGLLogicalShape.h.

◆ BoundingBox()

const TGLBoundingBox & TGLLogicalShape::BoundingBox ( ) const
inlineinherited

Definition at line 86 of file TGLLogicalShape.h.

◆ Class()

TClass * TGLCylinder::Class ( )
static
Returns
TClass describing this class

◆ Class_Name()

const char * TGLCylinder::Class_Name ( )
static
Returns
Name of this class

◆ Class_Version()

constexpr Version_t TGLCylinder::Class_Version ( )
inlinestaticconstexpr
Returns
Version of this class

Definition at line 50 of file TGLCylinder.h.

◆ DeclFileName()

const char * TGLCylinder::DeclFileName ( )
inlinestatic
Returns
Name of the file containing the class declaration

Definition at line 50 of file TGLCylinder.h.

◆ DestroyPhysicals()

void TGLLogicalShape::DestroyPhysicals ( )
inherited

Destroy all physicals attached to this logical.

Definition at line 205 of file TGLLogicalShape.cxx.

◆ DirectDraw()

void TGLCylinder::DirectDraw ( TGLRnrCtx & rnrCtx) const
overridevirtual

Debug tracing.

Implements TGLLogicalShape.

Definition at line 626 of file TGLCylinder.cxx.

◆ DLCacheClear()

void TGLLogicalShape::DLCacheClear ( )
virtualinherited

Clear all entries for all LODs for this drawable from the display list cache but keeping the reserved ids from GL context.

Reimplemented in TEveJetConeGL.

Definition at line 302 of file TGLLogicalShape.cxx.

◆ DLCacheDrop()

void TGLLogicalShape::DLCacheDrop ( )
virtualinherited

Drop all entries for all LODs for this drawable from the display list cache, WITHOUT returning the reserved ids to GL context.

This is called by scene if it realized that the GL context was destroyed.

Reimplemented in TEveBoxSetGL, and TEveCaloLegoGL.

Definition at line 314 of file TGLLogicalShape.cxx.

◆ DLCachePurge()

void TGLLogicalShape::DLCachePurge ( )
virtualinherited

Purge all entries for all LODs for this drawable from the display list cache, returning the reserved ids to GL context.

If you override this function:

  1. call the base-class version from it;
  2. call it from the destructor of the derived class!

Reimplemented in TEveBoxSetGL, and TEveCaloLegoGL.

Definition at line 328 of file TGLLogicalShape.cxx.

◆ DLOffset()

UInt_t TGLCylinder::DLOffset ( Short_t lod) const
overridevirtual

Return display-list offset for given LOD.

Calculation based on what is done in virtual QuantizeShapeLOD below.

Reimplemented from TGLLogicalShape.

Definition at line 590 of file TGLCylinder.cxx.

◆ Draw()

void TGLLogicalShape::Draw ( TGLRnrCtx & rnrCtx) const
virtualinherited

Draw the GL drawable, using draw flags.

If DL caching is enabled (see SetDLCache) then attempt to draw from the cache, if not found attempt to capture the draw - done by DirectDraw() - into a new cache entry. If not cached just call DirectDraw() for normal non DL cached drawing.

Reimplemented in TEveBoxGL, TEveBoxProjectedGL, TEveJetConeGL, TEveJetConeProjectedGL, TEvePolygonSetProjectedGL, TEveProjectionAxesGL, TEveStraightLineSetGL, and TPointSet3DGL.

Definition at line 373 of file TGLLogicalShape.cxx.

◆ DrawHighlight()

void TGLLogicalShape::DrawHighlight ( TGLRnrCtx & rnrCtx,
const TGLPhysicalShape * pshp,
Int_t lvl = -1 ) const
virtualinherited

Draw the logical shape in highlight mode.

If lvl argument is less than 0 (-1 by default), the index into color-set is taken from the physical shape itself.

Reimplemented in TEveCalo2DGL, TEveCalo3DGL, TEveCaloLegoGL, TEveDigitSetGL, and TEvePolygonSetProjectedGL.

Definition at line 427 of file TGLLogicalShape.cxx.

◆ GetExternal()

TObject * TGLLogicalShape::GetExternal ( ) const
inlineinherited

Definition at line 83 of file TGLLogicalShape.h.

◆ GetFirstPhysical()

const TGLPhysicalShape * TGLLogicalShape::GetFirstPhysical ( ) const
inlineinherited

Definition at line 80 of file TGLLogicalShape.h.

◆ GetIgnoreSizeForCameraInterest()

Bool_t TGLLogicalShape::GetIgnoreSizeForCameraInterest ( )
staticinherited

Get state of static fgIgnoreSizeForCameraInterest flag.

When this is true all objects, also very small, will be drawn by GL.

Definition at line 480 of file TGLLogicalShape.cxx.

◆ GetScene()

TGLScene * TGLLogicalShape::GetScene ( ) const
inlineinherited

Definition at line 84 of file TGLLogicalShape.h.

◆ ID()

TObject * TGLLogicalShape::ID ( ) const
inlineinherited

Definition at line 82 of file TGLLogicalShape.h.

◆ IgnoreSizeForOfInterest()

Bool_t TGLLogicalShape::IgnoreSizeForOfInterest ( ) const
virtualinherited

Return true if size of this shape should be ignored when determining if the object should be drawn.

In this base-class we simply return state of static flag fgIgnoreSizeForCameraInterest.

Several sub-classes override this virtual function.

Reimplemented in TEveBoxGL, TEveBoxProjectedGL, TEvePolygonSetProjectedGL, TEveProjectionAxesGL, TEveQuadSetGL, TEveStraightLineSetGL, TGLPolyMarker, and TPointSet3DGL.

Definition at line 471 of file TGLLogicalShape.cxx.

◆ InvokeContextMenu()

void TGLLogicalShape::InvokeContextMenu ( TContextMenu & menu,
UInt_t x,
UInt_t y ) const
inherited

Invoke popup menu or our bound external TObject (if any), using passed 'menu' object, at location 'x' 'y'.

Definition at line 457 of file TGLLogicalShape.cxx.

◆ IsA()

TClass * TGLCylinder::IsA ( ) const
inlineoverridevirtual
Returns
TClass describing current object

Reimplemented from TGLLogicalShape.

Definition at line 50 of file TGLCylinder.h.

◆ KeepDuringSmartRefresh()

virtual Bool_t TGLLogicalShape::KeepDuringSmartRefresh ( ) const
inlinevirtualinherited

Reimplemented in TEvePlot3DGL, TF2GL, TGLObject, TGLParametricEquationGL, and TGLPlot3D.

Definition at line 108 of file TGLLogicalShape.h.

◆ ProcessSelection()

void TGLLogicalShape::ProcessSelection ( TGLRnrCtx & rnrCtx,
TGLSelectRecord & rec )
virtualinherited

Virtual method called-back after a secondary selection hit is recorded (see TGLViewer::HandleButton(), Ctrl-Button1).

The ptr argument holds the GL pick-record of the closest hit.

This base-class implementation simply prints out the result.

Reimplemented in TEveCalo2DGL, TEveCalo3DGL, TEveCaloLegoGL, TEveDigitSetGL, TEveStraightLineSetGL, TEveTrackGL, and TPointSet3DGL.

Definition at line 444 of file TGLLogicalShape.cxx.

◆ PurgeDLRange()

void TGLLogicalShape::PurgeDLRange ( UInt_t base,
Int_t size ) const
protectedinherited

Purge given display-list range.

Utility function.

Definition at line 342 of file TGLLogicalShape.cxx.

◆ QuantizeShapeLOD()

Short_t TGLCylinder::QuantizeShapeLOD ( Short_t shapeLOD,
Short_t combiLOD ) const
overridevirtual

Factor in scene/viewer LOD and quantize.

Reimplemented from TGLLogicalShape.

Definition at line 602 of file TGLCylinder.cxx.

◆ Ref()

UInt_t TGLLogicalShape::Ref ( ) const
inlineinherited

Definition at line 73 of file TGLLogicalShape.h.

◆ SetDLCache()

Bool_t TGLLogicalShape::SetDLCache ( Bool_t cache)
inherited

Modify capture of draws into display list cache kTRUE - capture, kFALSE direct draw.

Return kTRUE is state changed, kFALSE if not.

Definition at line 264 of file TGLLogicalShape.cxx.

◆ SetEnvDefaults()

void TGLLogicalShape::SetEnvDefaults ( )
staticinherited

Definition at line 496 of file TGLLogicalShape.cxx.

◆ SetIgnoreSizeForCameraInterest()

void TGLLogicalShape::SetIgnoreSizeForCameraInterest ( Bool_t isfci)
staticinherited

Set state of static fgIgnoreSizeForCameraInterest flag.

Definition at line 488 of file TGLLogicalShape.cxx.

◆ ShouldDLCache()

Bool_t TGLLogicalShape::ShouldDLCache ( const TGLRnrCtx & rnrCtx) const
virtualinherited

Returns kTRUE if draws should be display list cached kFALSE otherwise.

Here we check that: a) fScene is set (Scene manages link to GL-context); b) secondary selection is not in progress as different render-path is usually taken in this case.

Otherwise we return internal bool.

Override this in sub-class if different behaviour is required.

Reimplemented in TEveBoxSetGL, TEveCalo3DGL, TEveStraightLineSetGL, TGLObject, and TPointSet3DGL.

Definition at line 288 of file TGLLogicalShape.cxx.

◆ Streamer()

void TGLCylinder::Streamer ( TBuffer & )
overridevirtual

Reimplemented from TGLLogicalShape.

◆ StreamerNVirtual()

void TGLCylinder::StreamerNVirtual ( TBuffer & ClassDef_StreamerNVirtual_b)
inline

Definition at line 50 of file TGLCylinder.h.

◆ StrongRef()

void TGLLogicalShape::StrongRef ( Bool_t strong) const
inlineinherited

Definition at line 76 of file TGLLogicalShape.h.

◆ SubRef()

void TGLLogicalShape::SubRef ( TGLPhysicalShape * phys) const
inherited

Remove reference to given physical shape, potentially deleting this object when hitting zero ref-count (if fRefStrong is true).

Definition at line 174 of file TGLLogicalShape.cxx.

◆ SupportedLODAxes()

ELODAxes TGLCylinder::SupportedLODAxes ( ) const
inlineoverridevirtual

Reimplemented from TGLLogicalShape.

Definition at line 39 of file TGLCylinder.h.

◆ SupportsSecondarySelect()

virtual Bool_t TGLLogicalShape::SupportsSecondarySelect ( ) const
inlinevirtualinherited

◆ UnrefFirstPhysical()

UInt_t TGLLogicalShape::UnrefFirstPhysical ( )
inherited

Unreferenced first physical in the list, returning its id and making it fit for destruction somewhere else.

Returns 0 if there are no replicas attached.

Definition at line 225 of file TGLLogicalShape.cxx.

◆ UpdateBoundingBox()

virtual void TGLLogicalShape::UpdateBoundingBox ( )
inlinevirtualinherited

Reimplemented in TGLObject.

Definition at line 87 of file TGLLogicalShape.h.

◆ UpdateBoundingBoxesOfPhysicals()

void TGLLogicalShape::UpdateBoundingBoxesOfPhysicals ( )
inherited

Update bounding-boxed of all dependent physicals.

Definition at line 245 of file TGLLogicalShape.cxx.

Member Data Documentation

◆ fBoundingBox

TGLBoundingBox TGLLogicalShape::fBoundingBox
protectedinherited

! Shape's bounding box.

Definition at line 50 of file TGLLogicalShape.h.

◆ fDLBase

UInt_t TGLLogicalShape::fDLBase
mutableprotectedinherited

! display-list id base

Definition at line 52 of file TGLLogicalShape.h.

◆ fDLCache

Bool_t TGLLogicalShape::fDLCache
mutableprotectedinherited

! use display list caching

Definition at line 55 of file TGLLogicalShape.h.

◆ fDLSize

Int_t TGLLogicalShape::fDLSize
mutableprotectedinherited

! display-list size for different LODs

Definition at line 53 of file TGLLogicalShape.h.

◆ fDLValid

UShort_t TGLLogicalShape::fDLValid
mutableprotectedinherited

! display-list validity bit-field

Definition at line 54 of file TGLLogicalShape.h.

◆ fDz

Double_t TGLCylinder::fDz
private

Definition at line 25 of file TGLCylinder.h.

◆ fExternalObj

TObject* TGLLogicalShape::fExternalObj
protectedinherited

! Also plays the role of ID.

Definition at line 49 of file TGLLogicalShape.h.

◆ fFirstPhysical

TGLPhysicalShape* TGLLogicalShape::fFirstPhysical
mutableprotectedinherited

! first replica

Definition at line 47 of file TGLLogicalShape.h.

◆ fgIgnoreSizeForCameraInterest

Bool_t TGLLogicalShape::fgIgnoreSizeForCameraInterest = kFALSE
staticprotectedinherited

Definition at line 61 of file TGLLogicalShape.h.

◆ fgUseDLs

Bool_t TGLLogicalShape::fgUseDLs = kTRUE
staticprotectedinherited

! global flag for usage of display-lists

Definition at line 63 of file TGLLogicalShape.h.

◆ fgUseDLsForVertArrs

Bool_t TGLLogicalShape::fgUseDLsForVertArrs = kTRUE
staticprotectedinherited

! global flag for usage of display-lists in shapes that use vertex arrays

Definition at line 64 of file TGLLogicalShape.h.

◆ fHighPlaneNorm

TGLVector3 TGLCylinder::fHighPlaneNorm
private

Definition at line 28 of file TGLCylinder.h.

◆ fLowPlaneNorm

TGLVector3 TGLCylinder::fLowPlaneNorm
private

Definition at line 28 of file TGLCylinder.h.

◆ fOwnExtObj

Bool_t TGLLogicalShape::fOwnExtObj
mutableprotectedinherited

! External object is a fake

Definition at line 57 of file TGLLogicalShape.h.

◆ fPhi1

Double_t TGLCylinder::fPhi1
private

Definition at line 26 of file TGLCylinder.h.

◆ fPhi2

Double_t TGLCylinder::fPhi2
private

Definition at line 26 of file TGLCylinder.h.

◆ fR1

Double_t TGLCylinder::fR1
private

Definition at line 24 of file TGLCylinder.h.

◆ fR2

Double_t TGLCylinder::fR2
private

Definition at line 24 of file TGLCylinder.h.

◆ fR3

Double_t TGLCylinder::fR3
private

Definition at line 24 of file TGLCylinder.h.

◆ fR4

Double_t TGLCylinder::fR4
private

Definition at line 24 of file TGLCylinder.h.

◆ fRef

UInt_t TGLLogicalShape::fRef
mutableprotectedinherited

! physical instance ref counting

Definition at line 46 of file TGLLogicalShape.h.

◆ fRefStrong

Bool_t TGLLogicalShape::fRefStrong
mutableprotectedinherited

! Strong ref (delete on 0 ref); not in scene

Definition at line 56 of file TGLLogicalShape.h.

◆ fScene

TGLScene* TGLLogicalShape::fScene
mutableprotectedinherited

! scene where object is stored (can be zero!)

Definition at line 51 of file TGLLogicalShape.h.

◆ fSegMesh

Bool_t TGLCylinder::fSegMesh
private

Definition at line 29 of file TGLCylinder.h.


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