library: libRGL
#include "TGLViewer.h"

TGLViewer


class description - source file - inheritance tree (.pdf)

class TGLViewer : public TVirtualViewer3D

Inheritance Chart:
TObject
<-
TVirtualViewer3D
<-
TGLViewer
<-
TGLSAViewer
    private:
TGLViewer(const TGLViewer&) RootCsg::BaseMesh* BuildComposite() TGLLogicalShape* CreateNewLogical(const TBuffer3D& buffer) const TGLPhysicalShape* CreateNewPhysical(UInt_t physicalID, const TBuffer3D& buffer, const TGLLogicalShape& logical) const TGLCamera& CurrentCamera() const void InitGL() void MakeCurrent() const TGLViewer& operator=(const TGLViewer&) void PostDraw() void PreDraw() Bool_t RebuildScene() void SetupCameras(const TGLBoundingBox& box) void SetupLights() void SetViewport(Int_t x, Int_t y, UInt_t width, UInt_t height) void SwapBuffers() const Int_t ValidateObjectBuffer(const TBuffer3D& buffer, Bool_t logical) const void WindowToGL(TGLRect& rect) const void WindowToGL(TGLVertex3& vertex) const public:
TGLViewer(TVirtualPad* pad, Int_t x, Int_t y, UInt_t width, UInt_t height) virtual ~TGLViewer() virtual void AddCompositeOp(UInt_t operation) virtual Int_t AddObject(const TBuffer3D& buffer, Bool_t* addChildren = 0) virtual Int_t AddObject(UInt_t physicalID, const TBuffer3D& buffer, Bool_t* addChildren = 0) virtual void BeginScene() virtual Bool_t BuildingScene() const void ChangedBy(const char* method) static TClass* Class() virtual void CloseComposite() Bool_t Connect(const char* sig, const char* cl, void* rcvr, const char* slt) void Destroyed() Bool_t Disconnect(const char* sig = "0", void* rcvr = 0, const char* slt = "0") virtual Int_t DistancetoPrimitive(Int_t px, Int_t py) void DoDraw() Bool_t DoSelect(const TGLRect& rect) void Emit(const char* signal) void Emit(const char* signal, const char* params) void Emit(const char* signal, Long_t* paramArr) void Emit(const char* signal, Double_t param) void Emit(const char* signal, Long_t param) void Emit(const char* signal, Long64_t param) void Emit(const char* signal, ULong64_t param) void Emit(const char* signal, Bool_t param) void Emit(const char* signal, Char_t param) void Emit(const char* signal, UChar_t param) void Emit(const char* signal, Short_t param) void Emit(const char* signal, UShort_t param) void Emit(const char* signal, Int_t param) void Emit(const char* signal, UInt_t param) void Emit(const char* signal, ULong_t param) void Emit(const char* signal, Float_t param) void EmitVA(const char* signal, Int_t nargs) virtual void EndScene() virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py) TList* GetListOfSignals() const const TGLPhysicalShape* GetSelected() const Bool_t HandleButton(Event_t* ev) Bool_t HandleConfigureNotify(Event_t* ev) Bool_t HandleDoubleClick(Event_t* ev) Bool_t HandleEvent(Event_t* ev) Bool_t HandleExpose(Event_t* ev) Bool_t HandleKey(Event_t* ev) Bool_t HandleMotion(Event_t* ev) void HighPriority(const char* signal_name, const char* slot_name = "0") virtual TClass* IsA() const void LowPriority(const char* signal_name, const char* slot_name = "0") void Message(const char* msg) virtual Bool_t OpenComposite(const TBuffer3D& buffer, Bool_t* addChildren = 0) virtual Bool_t PreferLocalFrame() const void RequestDraw(UInt_t redrawLOD = kMed) void RequestSelect(UInt_t x, UInt_t y) virtual void SelectionChanged() void SetClipPlaneEq(const TGLPlane& eqn) void SetColorOnSelectedFamily(const Float_t* rgba) void SetCurrentCamera(TGLViewer::ECamera camera) void SetSelectedColor(const Float_t* rgba) void SetSelectedGeom(const TGLVertex3& trans, const TGLVector3& scale) virtual void ShowMembers(TMemberInspector& insp, char* parent) virtual void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b) void ToggleAxes() void ToggleClip() void ToggleLight(TGLViewer::ELight light)

Data Members

    private:
TQObjSender fQObject TVirtualPad* fPad ! external pad - remove replace with signal TContextMenu* fContextMenu ! TGLPerspectiveCamera fPerspectiveCamera ! TGLOrthoCamera fOrthoXOYCamera ! TGLOrthoCamera fOrthoYOZCamera ! TGLOrthoCamera fOrthoXOZCamera ! TGLCamera* fCurrentCamera ! Bool_t fInternalRebuild ! internal scene rebuild in progress? Bool_t fAcceptedAllPhysicals ! did we take all physicals offered in AddObject() Bool_t fInternalPIDs ! using internal physical IDs UInt_t fNextInternalPID ! next internal physical ID (from 1 - 0 reserved) TGLFaceSet* fComposite ! Paritally created composite UInt_t fCSLevel vector<CSPart_t> fCSTokens TGLViewer::EAction fAction TPoint fStartPos TPoint fLastPos UInt_t fActiveButtonID EDrawStyle fDrawStyle ! current draw style (Fill/Outline/WireFrame) TGLRedrawTimer* fRedrawTimer ! UInt_t fNextSceneLOD ! TGLScene fScene ! the GL scene - owned by viewer at present TGLRect fViewport ! viewport - drawn area UInt_t fLightState ! light states (on/off) mask TGLPlane fClipPlane ! current clip plane Bool_t fUseClipPlane ! use current clipping plane Bool_t fDrawAxes ! draw scene axes Bool_t fInitGL ! has GL been initialised? Bool_t fDebugMode ! debug mode (forced rebuild + draw scene/frustum/interest boxes) UInt_t fAcceptedPhysicals ! number of physicals accepted in last rebuild UInt_t fRejectedPhysicals ! number of physicals rejected in last rebuild Bool_t fIsPrinting protected:
TGLWindow* fGLWindow ! remove - replace with TGLManager public:
static const TGLViewer::ECamera kCameraPerspective static const TGLViewer::ECamera kCameraXOY static const TGLViewer::ECamera kCameraYOZ static const TGLViewer::ECamera kCameraXOZ static const TGLViewer::ELight kLightFront static const TGLViewer::ELight kLightTop static const TGLViewer::ELight kLightBottom static const TGLViewer::ELight kLightLeft static const TGLViewer::ELight kLightRight static const TGLViewer::ELight kLightMask static const TGLViewer::EAction kNone static const TGLViewer::EAction kRotate static const TGLViewer::EAction kTruck static const TGLViewer::EAction kDolly static const TGLViewer::EAction kDrag

Class Description


TGLViewer(TVirtualPad * pad, Int_t x, Int_t y, UInt_t width, UInt_t height) : fPad(pad), fContextMenu(0), fPerspectiveCamera(), fOrthoXOYCamera(TGLOrthoCamera::kXOY), fOrthoYOZCamera(TGLOrthoCamera::kYOZ), fOrthoXOZCamera(TGLOrthoCamera::kXOZ), fCurrentCamera(&fPerspectiveCamera), fInternalRebuild(kFALSE), fAcceptedAllPhysicals(kTRUE), fInternalPIDs(kFALSE), fNextInternalPID(1), // 0 reserved fComposite(0), fCSLevel(0), fAction(kNone), fStartPos(0,0), fLastPos(0,0), fActiveButtonID(0), fDrawStyle(kFill), fRedrawTimer(0), fNextSceneLOD(kHigh), fLightState(kLightMask), // All on fClipPlane(1.0, 0.0, 0.0, 0.0), fUseClipPlane(kFALSE), fDrawAxes(kFALSE), fInitGL(kFALSE), fDebugMode(kFALSE), fAcceptedPhysicals(0), fRejectedPhysicals(0), fIsPrinting(kFALSE), fGLWindow(0)

~TGLViewer()

Bool_t PreferLocalFrame() const

void BeginScene()

void EndScene()

Bool_t RebuildScene()
 If we accepted all offered physicals into the scene no point in
 rebuilding it

Int_t AddObject(const TBuffer3D & buffer, Bool_t * addChildren)
 Add an object to the viewer, using internal physical IDs

Int_t AddObject(UInt_t physicalID, const TBuffer3D & buffer, Bool_t * addChildren)
 Add an object to the viewer, using an external physical ID.

Bool_t OpenComposite(const TBuffer3D & buffer, Bool_t * addChildren)

void CloseComposite()
 If we have a partially complete composite build it now

void AddCompositeOp(UInt_t operation)

Int_t ValidateObjectBuffer(const TBuffer3D & buffer, Bool_t logical) const
 kCore: Should always be filled

TGLLogicalShape* CreateNewLogical(const TBuffer3D & buffer) const
 Buffer should now be correctly filled

TGLPhysicalShape* CreateNewPhysical(UInt_t ID, const TBuffer3D & buffer, const TGLLogicalShape & logical) const
 Extract indexed color from buffer
 TODO: Still required? Better use proper color triplet in buffer?

RootCsg::BaseMesh* BuildComposite()

void InitGL

void SetupCameras(const TGLBoundingBox & box)

void SetupLights()
 Setup lights

void DoDraw()
 Draw out the the current viewer/scene

void PreDraw()
 GL work which must be done before each draw of scene

void PostDraw()
 GL work which must be done after each draw of scene

void MakeCurrent() const

void SwapBuffers() const

void RequestDraw(UInt_t LOD)

Bool_t DoSelect(const TGLRect & rect)
 Select lock should already been taken in other thread in
 TGLViewer::DoSelect()

void RequestSelect(UInt_t x, UInt_t y)
 Take select lock on scene immediately we enter here - it is released
 in the other (drawing) thread - see TGLViewer::Select()
 Removed when gVirtualGL removed

void SetViewport(Int_t x, Int_t y, UInt_t width, UInt_t height)

void SetCurrentCamera(ECamera camera)

void ToggleLight(ELight light)
 Toggle supplied light on/off

void ToggleAxes()

void ToggleClip()

void SetClipPlaneEq(const TGLPlane & eqn)

void SetSelectedColor(const Float_t rgba[4])

void SetColorOnSelectedFamily(const Float_t rgba[4])

void SetSelectedGeom(const TGLVertex3 & trans, const TGLVector3 & scale)

void SelectionChanged()

Int_t DistancetoPrimitive(Int_t /*px*/, Int_t /*py*/)
 Can't track the indvidual objects in rollover. Just set the viewer as the
 selected object, and return 0 (object identified) so we receive ExecuteEvent calls

void ExecuteEvent(Int_t event, Int_t px, Int_t py)

Bool_t HandleEvent(Event_t *event)

Bool_t HandleButton(Event_t *event)

Bool_t HandleDoubleClick(Event_t *event)

Bool_t HandleConfigureNotify(Event_t *event)

Bool_t HandleKey(Event_t *event)

Bool_t HandleMotion(Event_t *event)

Bool_t HandleExpose(Event_t *)



Inline Functions


                         TList* GetListOfSignals() const
                         Bool_t Connect(const char* sig, const char* cl, void* rcvr, const char* slt)
                         Bool_t Disconnect(const char* sig = "0", void* rcvr = 0, const char* slt = "0")
                           void HighPriority(const char* signal_name, const char* slot_name = "0")
                           void LowPriority(const char* signal_name, const char* slot_name = "0")
                           void EmitVA(const char* signal, Int_t nargs)
                           void Emit(const char* signal)
                           void Emit(const char* signal, const char* params)
                           void Emit(const char* signal, Long_t* paramArr)
                           void Emit(const char* signal, Double_t param)
                           void Emit(const char* signal, Long_t param)
                           void Emit(const char* signal, Long64_t param)
                           void Emit(const char* signal, ULong64_t param)
                           void Emit(const char* signal, Bool_t param)
                           void Emit(const char* signal, Char_t param)
                           void Emit(const char* signal, UChar_t param)
                           void Emit(const char* signal, Short_t param)
                           void Emit(const char* signal, UShort_t param)
                           void Emit(const char* signal, Int_t param)
                           void Emit(const char* signal, UInt_t param)
                           void Emit(const char* signal, ULong_t param)
                           void Emit(const char* signal, Float_t param)
                           void Destroyed()
                           void ChangedBy(const char* method)
                           void Message(const char* msg)
                     TGLCamera& CurrentCamera() const
                           void WindowToGL(TGLRect& rect) const
                           void WindowToGL(TGLVertex3& vertex) const
                     TGLViewer& operator=(const TGLViewer&)
                      TGLViewer TGLViewer(TVirtualPad* pad, Int_t x, Int_t y, UInt_t width, UInt_t height)
                         Bool_t BuildingScene() const
        const TGLPhysicalShape* GetSelected() const
                        TClass* Class()
                        TClass* IsA() const
                           void ShowMembers(TMemberInspector& insp, char* parent)
                           void Streamer(TBuffer& b)
                           void StreamerNVirtual(TBuffer& b)


Author: Richard Maunder 25/05/2005
Last update: root/gl:$Name: $:$Id: TGLViewer.cxx,v 1.16 2005/09/06 09:26:40 brun Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *


ROOT page - Class index - Class Hierarchy - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.