59   fAcceptedPhysicals (0),
 
 
  145      if (
const TH3 *
th3 = 
dynamic_cast<const TH3*
>(obj)) {
 
  146         if(!
th3->GetEntries())
 
  167   pad->SetViewer3D(
this);
 
 
  237      Error(
"TGLScenePad::PadPaint", 
"Mismatch between pad argument and data-member!");
 
 
  262      Info(
"TGLScenePad::BeginScene", 
"entering.");
 
  266      Error(
"TGLScenePad::BeginScene", 
"could not take scene lock.");
 
  299      Info(
"TGLScenePad::BeginScene", 
"destroyed %d physicals %d logicals in %f msec",
 
 
  358      Error(
"TGLScenePad::AddObject", 
"0 physical ID reserved");
 
  364      Error(
"TGLScenePad::AddObject", 
"invalid next physical ID - mix of internal + external IDs?");
 
  374      Error(
"TGLScenePad::AddObject", 
"expected scene to be modify-locked.");
 
  383      RootCsg::TBaseMesh *
newMesh = RootCsg::ConvertToMesh(buffer);
 
  411            Error(
"TGLScenePad::AddObject", 
"cached physical with no associated cached logical");
 
  432      Error(
"TGLScenePad::AddObject", 
"internal physical ID tracking error?");
 
  437      Error(
"TGLScenePad::AddObject", 
"expecting to require physical");
 
  446         Error(
"TGLScenePad::AddObject", 
"failed to create logical");
 
  467      Error(
"TGLScenePad::AddObject", 
"failed to create physical");
 
 
  485      Error(
"TGLScenePad::OpenComposite", 
"composite already open");
 
  490      Error(
"TGLScenePad::OpenComposite", 
"expected top level composite to not require extra buffer sections");
 
 
  547      Error(
"TGLScenePad::ValidateObjectBuffer", 
"kCore section of buffer should be filled always");
 
  580         Error(
"TGLScenePad::ValidateObjectBuffer", 
"failed to cast buffer of type 'kSphere' to TBuffer3DSphere");
 
 
  621      const_cast<TBuffer3D&
>(buffer).fColor = 42;
 
  623   switch (buffer.
Type())
 
  645            Error(
"TGLScenePad::CreateNewLogical", 
"failed to cast buffer of type 'kSphere' to TBuffer3DSphere");
 
  663            Error(
"TGLScenePad::CreateNewLogical", 
"failed to cast buffer of type 'kTube/kTubeSeg/kCutTube' to TBuffer3DTube");
 
  673            Error(
"TGLScenePad::CreateNewLogical", 
"composite already open");
 
 
  719      } 
else if (
TH3 *
dTH3 = 
dynamic_cast<TH3*
>(obj)) {
 
  720         if(!
th3 && !
dTH3->GetEntries())
 
 
  761         return RootCsg::BuildUnion(left, right);
 
  763         return RootCsg::BuildIntersection(left, right);
 
  765         return RootCsg::BuildDifference(left, right);
 
  767         Error(
"BuildComposite", 
"Wrong operation code %d\n", 
opCode);
 
 
  789         status = 
rnr->SetModel(
id);
 
  791      catch (std::exception&)
 
  797         Warning(
"TGLScenePad::AttemptDirectRenderer", 
"failed initializing direct rendering.");
 
 
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
Sphere description class - see TBuffer3DTypes for producer classes Supports hollow and cut spheres.
 
Complete tube description class - see TBuffer3DTypes for producer classes.
 
Generic 3D primitive description class.
 
Bool_t SectionsValid(UInt_t mask) const
 
Double_t fLocalMaster[16]
 
TClass instances represent classes, structs and namespaces in the ROOT type system.
 
The color creation and management class.
 
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb",...
 
Concrete class describing an orientated (free) or axis aligned box of 8 vertices.
 
Implements a native ROOT-GL cylinder that can be rendered at different levels of detail.
 
Implements a native ROOT-GL representation of an arbitrary set of polygons.
 
void SetFromMesh(const RootCsg::TBaseMesh *m)
Should only be done on an empty faceset object.
 
ELock CurrentLock() const
 
Abstract logical shape - a GL 'drawable' - base for all shapes - faceset sphere etc.
 
16 component (4x4) transform matrix - column MAJOR as per GL.
 
Base-class for direct OpenGL renderers.
 
static TClass * GetGLRenderer(TClass *isa)
Return direct-rendering GL class for class isa.
 
Concrete physical shape - a GL drawable.
 
Description of TGLPlot3D.
 
static TGLPlot3D * CreatePlot(TH3 *h, TPolyMarker3D *pm)
Create GL plot for specified TH3 and polymarker.
 
To draw a 3D polyline in a GL window.
 
To draw a 3D polymarker in a GL window.
 
Implements VirtualViewer3D interface and fills the base-class visualization structures from pad conte...
 
TGLLogicalShape * CreateNewLogical(const TBuffer3D &buffer) const
Create and return a new TGLLogicalShape from the supplied buffer.
 
std::vector< CSPart_t > fCSTokens
 
RootCsg::TBaseMesh * BuildComposite()
Build and return composite shape mesh.
 
void EndScene() override
End building of the scene.
 
void CloseComposite() override
Close composite container TVirtualViewer3D interface overload - see base/src/TVirtualViewer3D....
 
Bool_t OpenComposite(const TBuffer3D &buffer, Bool_t *addChildren=nullptr) override
Open new composite container.
 
Int_t AddObject(const TBuffer3D &buffer, Bool_t *addChildren=nullptr) override
Add an object to the viewer, using internal physical IDs TVirtualViewer3D interface overload - see ba...
 
void PadPaint(TVirtualPad *pad) override
Entry point for updating scene contents via VirtualViewer3D interface.
 
TGLPhysicalShape * CreateNewPhysical(UInt_t physicalID, const TBuffer3D &buffer, const TGLLogicalShape &logical) const
Create and return a new TGLPhysicalShape with id 'ID', using 'buffer' placement information (translat...
 
void BeginScene() override
Start building of the scene.
 
TGLLogicalShape * AttemptDirectRenderer(TObject *id)
Try to construct an appropriate logical-shape sub-class based on id'class, following convention that ...
 
virtual void PadPaintFromViewer(TGLViewer *viewer)
Entry point for requesting update of scene's contents from gl-viewer.
 
void SubPadPaint(TVirtualPad *pad)
Iterate over pad-primitives and import them.
 
UInt_t fLastPID
next internal physical ID (from 1 - 0 reserved)
 
Int_t ValidateObjectBuffer(const TBuffer3D &buffer, Bool_t includeRaw) const
Validate if the passed 'buffer' contains all sections we require to add object.
 
Int_t fAcceptedPhysicals
last physical ID that was processed in AddObject()
 
void ComposePolymarker(const TList *padPrimitives)
 
void ObjectPaint(TObject *obj, Option_t *opt="") override
Override of virtual TVirtualViewer3D::ObjectPaint().
 
void AddCompositeOp(UInt_t operation) override
Add composite operation used to combine objects added via AddObject TVirtualViewer3D interface overlo...
 
UInt_t fCSLevel
Paritally created composite.
 
void AddHistoPhysical(TGLLogicalShape *log, const Float_t *histColor=nullptr)
Scale and rotate a histo object to mimic placement in canvas.
 
TGLScenePad(const TGLScenePad &)=delete
 
std::pair< UInt_t, RootCsg::TBaseMesh * > CSPart_t
 
UInt_t fNextInternalPID
using internal physical IDs
 
TGLScene provides management and rendering of ROOT's default 3D /object representation as logical and...
 
virtual TGLPhysicalShape * FindPhysical(UInt_t phid) const
Find and return physical shape identified by unique 'ID'.
 
virtual Bool_t BeginUpdate()
Put scene in update mode, return true if lock acquired.
 
virtual void AdoptPhysical(TGLPhysicalShape &shape)
Adopt dynamically created physical 'shape' - add to internal map and take responsibility for deleting...
 
virtual void EndUpdate(Bool_t minorChange=kTRUE, Bool_t sceneChanged=kTRUE, Bool_t updateViewers=kTRUE)
Exit scene update mode.
 
virtual Int_t DestroyPhysicals()
Destroy physical shapes.
 
virtual void AdoptLogical(TGLLogicalShape &shape)
Adopt dynamically created logical 'shape' - add to internal map and take responsibility for deleting.
 
void EndSmartRefresh()
Wipes logicals in refresh-cache.
 
static void RGBAFromColorIdx(Float_t rgba[4], Color_t ci, Char_t transp=0)
Fill rgba color from ROOT color-index ci and transparency (0->100).
 
virtual Int_t DestroyLogicals()
Destroy all logical shapes in scene.
 
void DumpMapSizes() const
Print sizes of logical and physical-shape maps.
 
TGLLogicalShape * FindLogical(TObject *logid) const override
Find and return logical shape identified by unique logid.
 
UInt_t BeginSmartRefresh()
Moves logicals that support smart-refresh to intermediate cache.
 
Implements a native ROOT-GL sphere that can be rendered at different levels of detail.
 
Stopwatch object for timing GL work.
 
3 component (x/y/z) vector class.
 
Base GL viewer object - used by both standalone and embedded (in pad) GL.
 
The 3-D histogram classes derived from the 1-D histogram classes.
 
Mother of all ROOT objects.
 
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
 
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
virtual void Paint(Option_t *option="")
This method must be overridden if a class wants to paint itself.
 
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
 
TVirtualPad is an abstract base class for the Pad and Canvas classes.
 
Abstract 3D shapes viewer.
 
constexpr Double_t PiOver2()
 
constexpr Double_t DegToRad()
Conversion from degree to radian: .
 
Double_t Sqrt(Double_t x)
Returns the square root of x.
 
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.