forked from root-project/root
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TEveGeoNode.h
137 lines (98 loc) · 4.52 KB
/
TEveGeoNode.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
// @(#)root/eve:$Id$
// Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
/*************************************************************************
* Copyright (C) 1995-2007, Rene Brun and Fons Rademakers. *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/
#ifndef ROOT_TEveGeoNode
#define ROOT_TEveGeoNode
#include "TEveElement.h"
class TGeoVolume;
class TGeoNode;
class TGeoHMatrix;
class TGeoManager;
// Added here to ease transition - forward declaration should be used.
// This include will be removed for 5.24.
#include <TEveGeoShape.h>
// class TGeoShape;
class TEveGeoShapeExtract;
//----------------------------------------------------------------
class TEveGeoNode : public TEveElement,
public TObject
{
friend class TEveGeoNodeEditor;
TEveGeoNode(const TEveGeoNode&); // Not implemented
TEveGeoNode& operator=(const TEveGeoNode&); // Not implemented
protected:
TGeoNode *fNode;
TEveGeoShapeExtract* DumpShapeTree(TEveGeoNode* geon, TEveGeoShapeExtract* parent=0, Bool_t leafs_only=kFALSE);
static Int_t fgCSGExportNSeg; //!
static std::list<TGeoShape*> fgTemporaryStore; //!
public:
TEveGeoNode(TGeoNode* node);
virtual TObject* GetObject(const TEveException&) const
{ const TObject* obj = this; return const_cast<TObject*>(obj); }
virtual const char* GetName() const;
virtual const char* GetTitle() const;
virtual const char* GetElementName() const;
virtual const char* GetElementTitle() const;
TGeoNode* GetNode() const { return fNode; }
virtual void ExpandIntoListTree(TGListTree* ltree, TGListTreeItem* parent);
virtual void ExpandIntoListTrees();
virtual void ExpandIntoListTreesRecursively();
virtual Bool_t CanEditElement() const { return kFALSE; }
virtual void AddStamp(UChar_t bits);
virtual Bool_t CanEditMainColor() const;
virtual void SetMainColor(Color_t color);
virtual Bool_t CanEditMainTransparency() const;
virtual Char_t GetMainTransparency() const;
virtual void SetMainTransparency(Char_t t);
void UpdateNode(TGeoNode* node);
void UpdateVolume(TGeoVolume* volume);
void Save(const char* file, const char* name="Extract", Bool_t leafs_only=kFALSE);
void SaveExtract(const char* file, const char* name, Bool_t leafs_only);
void WriteExtract(const char* name, Bool_t leafs_only);
virtual void Draw(Option_t* option="");
static Int_t GetCSGExportNSeg();
static void SetCSGExportNSeg(Int_t nseg);
ClassDef(TEveGeoNode, 1); // Wrapper for TGeoNode that allows it to be shown in GUI and controlled as a TEveElement.
};
//----------------------------------------------------------------
class TEveGeoTopNode : public TEveGeoNode
{
TEveGeoTopNode(const TEveGeoTopNode&); // Not implemented
TEveGeoTopNode& operator=(const TEveGeoTopNode&); // Not implemented
protected:
TGeoManager* fManager;
Int_t fVisOption;
Int_t fVisLevel;
Int_t fMaxVisNodes;
public:
TEveGeoTopNode(TGeoManager* manager, TGeoNode* node, Int_t visopt=1,
Int_t vislvl=3, Int_t maxvisnds=10000);
virtual ~TEveGeoTopNode() {}
void UseNodeTrans();
TGeoManager* GetGeoManager() const { return fManager; }
Int_t GetVisOption() const { return fVisOption; }
void SetVisOption(Int_t vo) { fVisOption = vo; }
Int_t GetVisLevel() const { return fVisLevel; }
void SetVisLevel(Int_t vl) { fVisLevel = vl; }
Int_t GetMaxVisNodes() const { return fMaxVisNodes; }
void SetMaxVisNodes(Int_t mvn) { fMaxVisNodes = mvn; }
virtual Bool_t CanEditElement() const { return kTRUE; }
virtual Bool_t SingleRnrState() const { return kTRUE; }
virtual void AddStamp(UChar_t bits);
virtual void Draw(Option_t* option="");
virtual void Paint(Option_t* option="");
// Signals from GeoManager.
// These are not available any more ... colors in list-tree not refreshed
// properly.
void VolumeVisChanged(TGeoVolume* volume);
void VolumeColChanged(TGeoVolume* volume);
void NodeVisChanged(TGeoNode* node);
ClassDef(TEveGeoTopNode, 1); // Top-level TEveGeoNode with a pointer to TGeoManager and controls for steering of TGeoPainter.
};
#endif