12 #ifndef ROOT_TEveGeoNode 
   13 #define ROOT_TEveGeoNode 
   27 class TEveGeoShapeExtract;
 
   31 class TEveGeoNode : 
public TEveElement,
 
   34    friend class TEveGeoNodeEditor;
 
   36    TEveGeoNode(
const TEveGeoNode&);            
 
   37    TEveGeoNode& operator=(
const TEveGeoNode&); 
 
   41    TEveGeoShapeExtract* DumpShapeTree(TEveGeoNode* geon, TEveGeoShapeExtract* parent=0, Bool_t leafs_only=kFALSE);
 
   43    static Int_t                  fgCSGExportNSeg;  
 
   44    static std::list<TGeoShape*>  fgTemporaryStore; 
 
   47    TEveGeoNode(TGeoNode* node);
 
   49    virtual TObject* GetObject(
const TEveException&)
 const 
   50    { 
const TObject* obj = 
this; 
return const_cast<TObject*
>(obj); }
 
   52    virtual const char* GetName()  
const;
 
   53    virtual const char* GetTitle() 
const;
 
   54    virtual const char* GetElementName()  
const;
 
   55    virtual const char* GetElementTitle() 
const;
 
   57    TGeoNode* GetNode()
 const { 
return fNode; }
 
   59    virtual void   ExpandIntoListTree(TGListTree* ltree, TGListTreeItem* parent);
 
   61    virtual void   ExpandIntoListTrees();
 
   62    virtual void   ExpandIntoListTreesRecursively();
 
   64    virtual Bool_t CanEditElement()
 const { 
return kFALSE; }
 
   66    virtual void   AddStamp(UChar_t bits);
 
   68    virtual Bool_t CanEditMainColor() 
const;
 
   69    virtual void   SetMainColor(Color_t color);
 
   71    virtual Bool_t  CanEditMainTransparency() 
const;
 
   72    virtual Char_t  GetMainTransparency() 
const;
 
   73    virtual void    SetMainTransparency(Char_t t);
 
   75    void UpdateNode(TGeoNode* node);
 
   76    void UpdateVolume(TGeoVolume* volume);
 
   78    void Save(
const char* file, 
const char* name=
"Extract", Bool_t leafs_only=kFALSE);
 
   79    void SaveExtract(
const char* file, 
const char* name, Bool_t leafs_only);
 
   80    void WriteExtract(
const char* name, Bool_t leafs_only);
 
   82    virtual void Draw(Option_t* option=
"");
 
   84    static Int_t GetCSGExportNSeg();
 
   85    static void  SetCSGExportNSeg(Int_t nseg);
 
   87    ClassDef(TEveGeoNode, 0); 
 
   92 class TEveGeoTopNode : 
public TEveGeoNode
 
   94    TEveGeoTopNode(
const TEveGeoTopNode&);            
 
   95    TEveGeoTopNode& operator=(
const TEveGeoTopNode&); 
 
   98    TGeoManager* fManager;
 
  104    TEveGeoTopNode(TGeoManager* manager, TGeoNode* node, Int_t visopt=1,
 
  105                   Int_t vislvl=3, Int_t maxvisnds=10000);
 
  106    virtual ~TEveGeoTopNode() {}
 
  110    TGeoManager* GetGeoManager()
 const { 
return fManager; }
 
  112    Int_t GetVisOption()
      const { 
return fVisOption; }
 
  113    void  SetVisOption(Int_t vo)    { fVisOption = vo;   }
 
  114    Int_t GetVisLevel()
       const { 
return fVisLevel;  }
 
  115    void  SetVisLevel(Int_t vl)     { fVisLevel = vl;    }
 
  116    Int_t GetMaxVisNodes()
    const { 
return fMaxVisNodes; }
 
  117    void  SetMaxVisNodes(Int_t mvn) { fMaxVisNodes = mvn;  }
 
  119    virtual Bool_t CanEditElement()
 const { 
return kTRUE; }
 
  120    virtual Bool_t SingleRnrState()
 const { 
return kTRUE; }
 
  122    virtual void   AddStamp(UChar_t bits);
 
  124    virtual void Draw(Option_t* option=
"");
 
  125    virtual void Paint(Option_t* option=
"");
 
  130    void VolumeVisChanged(TGeoVolume* volume);
 
  131    void VolumeColChanged(TGeoVolume* volume);
 
  132    void NodeVisChanged(TGeoNode* node);
 
  134    ClassDef(TEveGeoTopNode, 0);