00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef ROOT_TVolumeView
00012 #define ROOT_TVolumeView
00013
00014 #include <assert.h>
00015
00016 #include "TVolume.h"
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 class TVolumeView : public TObjectSet, public TAtt3D {
00027 protected:
00028 TList *fListOfShapes;
00029
00030 virtual void PaintShape(Option_t *option);
00031 TVolumeView(TVolumeView &viewNode);
00032
00033
00034 public:
00035 TVolumeView():TObjectSet(),fListOfShapes(0) {;}
00036 TVolumeView(TVolumeView *viewNode,TVolumePosition *nodePosition=0);
00037 TVolumeView(TVolumeView *viewNode,const Char_t *NodeName1,const Char_t *NodeName2=0);
00038 TVolumeView(TVolumeView *viewNode,TVolumeView *topNode);
00039 TVolumeView(TVolumeView *viewNode,const TVolumeView *node1,const TVolumeView *node2);
00040 TVolumeView(TVolume &pattern,Int_t maxDepLevel=0,const TVolumePosition *nodePosition=0,EDataSetPass iopt=kMarked,TVolumeView *root=0);
00041 TVolumeView(Double_t *translate, Double_t *rotate, UInt_t positionId, TVolume *thisNode,
00042 const Char_t *thisNodePath, const Char_t *matrixName=0, Int_t matrixType=0);
00043 TVolumeView(TVolume *thisNode,TVolumePosition *nodePosition);
00044 virtual ~TVolumeView();
00045 virtual TVolume *AddNode(TVolume *node);
00046 virtual void Add(TDataSet *dataset);
00047 virtual void Add(TVolumeView *node);
00048 virtual void Add(TShape *shape, Bool_t IsMaster=kFALSE);
00049 virtual void Browse(TBrowser *b);
00050 virtual void Draw(Option_t *depth="3");
00051 virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
00052 virtual TVolumePosition *GetPosition() const { return (TVolumePosition *)GetObject();}
00053 virtual TVolume *GetNode() const ;
00054 virtual Int_t GetGlobalRange(const TVolumeView *rootNode,Float_t *min, Float_t *max);
00055 virtual TList *GetListOfShapes() const;
00056 virtual void GetLocalRange(Float_t *min, Float_t *max);
00057 virtual char *GetObjectInfo(Int_t px, Int_t py) const;
00058 virtual TShape *GetShape() const;
00059 virtual Int_t GetVisibility() const;
00060 virtual Bool_t IsMarked() const;
00061 virtual Bool_t Is3D() const {return kTRUE;}
00062 virtual TVolumePosition *Local2Master(const TVolumeView *localNode,const TVolumeView *masterNode=0);
00063 virtual TVolumePosition *Local2Master(const Char_t *localName, const Char_t *masterName=0);
00064 virtual Float_t *Local2Master(const Float_t *local, Float_t *master,
00065 const Char_t *localName, const Char_t *masterName=0, Int_t nVector=1);
00066 virtual Float_t *Local2Master(const Float_t *local, Float_t *master,
00067 const TVolumeView *localNode,
00068 const TVolumeView *masterNode=0, Int_t nVector=1);
00069 virtual TList *Nodes(){ return GetList();}
00070 virtual void Paint(Option_t *option="");
00071 virtual TString PathP() const;
00072 virtual void SetLineAttributes();
00073 virtual void SavePrimitive(ostream &out, Option_t *option="");
00074 virtual void SetVisibility(Int_t vis=1);
00075 virtual void Sizeof3D() const;
00076 ClassDef(TVolumeView,1)
00077 };
00078
00079 inline void TVolumeView::Add(TDataSet * ){ assert(0);}
00080 inline void TVolumeView::Add(TVolumeView *node){ TDataSet::Add(node);}
00081 inline Bool_t TVolumeView::IsMarked() const { return TestBit(kMark); }
00082 inline TList *TVolumeView::GetListOfShapes() const {return fListOfShapes;}
00083 inline TShape *TVolumeView::GetShape() const
00084 {return fListOfShapes ? (TShape *)fListOfShapes->First():0;}
00085 inline Int_t TVolumeView::GetVisibility() const {return GetNode() ? GetNode()->GetVisibility():0;}
00086
00087 #endif
00088