00001 // @(#)root/eve:$Id: TEveScene.h 35074 2010-08-30 15:18:02Z matevz $ 00002 // Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007 00003 00004 /************************************************************************* 00005 * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers. * 00006 * All rights reserved. * 00007 * * 00008 * For the licensing terms see $ROOTSYS/LICENSE. * 00009 * For the list of contributors see $ROOTSYS/README/CREDITS. * 00010 *************************************************************************/ 00011 00012 #ifndef ROOT_TEveScene 00013 #define ROOT_TEveScene 00014 00015 #include "TEveElement.h" 00016 00017 class TEvePad; 00018 class TGLScenePad; 00019 00020 class TExMap; 00021 00022 /******************************************************************************/ 00023 // TEveScene 00024 /******************************************************************************/ 00025 00026 class TEveScene : public TEveElementList 00027 { 00028 private: 00029 TEveScene(const TEveScene&); // Not implemented 00030 TEveScene& operator=(const TEveScene&); // Not implemented 00031 00032 protected: 00033 TEvePad *fPad; 00034 TGLScenePad *fGLScene; 00035 00036 Bool_t fChanged; 00037 Bool_t fSmartRefresh; 00038 Bool_t fHierarchical; 00039 00040 void RetransHierarchicallyRecurse(TEveElement* el, const TEveTrans& tp); 00041 00042 public: 00043 TEveScene(const char* n="TEveScene", const char* t=""); 00044 virtual ~TEveScene(); 00045 00046 virtual void CollectSceneParents(List_t& scenes); 00047 00048 virtual Bool_t SingleRnrState() const { return kTRUE; } 00049 00050 void Changed() { fChanged = kTRUE; } 00051 Bool_t IsChanged() const { return fChanged; } 00052 00053 void SetHierarchical(Bool_t h) { fHierarchical = h; } 00054 Bool_t GetHierarchical() const { return fHierarchical; } 00055 00056 void Repaint(Bool_t dropLogicals=kFALSE); 00057 void RetransHierarchically(); 00058 00059 TGLScenePad* GetGLScene() const { return fGLScene; } 00060 void SetGLScene(TGLScenePad* s) { fGLScene = s; } 00061 00062 virtual void SetName(const char* n); 00063 virtual void Paint(Option_t* option = ""); 00064 00065 void DestroyElementRenderers(TEveElement* element); 00066 void DestroyElementRenderers(TObject* rnrObj); 00067 00068 virtual const TGPicture* GetListTreeIcon(Bool_t open=kFALSE); 00069 00070 ClassDef(TEveScene, 0); // Reve representation of TGLScene. 00071 }; 00072 00073 00074 /******************************************************************************/ 00075 // TEveSceneList 00076 /******************************************************************************/ 00077 00078 class TEveSceneList : public TEveElementList 00079 { 00080 private: 00081 TEveSceneList(const TEveSceneList&); // Not implemented 00082 TEveSceneList& operator=(const TEveSceneList&); // Not implemented 00083 00084 protected: 00085 00086 public: 00087 TEveSceneList(const char* n="TEveSceneList", const char* t=""); 00088 virtual ~TEveSceneList() {} 00089 00090 void DestroyScenes(); 00091 00092 void RepaintChangedScenes(Bool_t dropLogicals); 00093 void RepaintAllScenes(Bool_t dropLogicals); 00094 00095 void DestroyElementRenderers(TEveElement* element); 00096 00097 void ProcessSceneChanges(Bool_t dropLogicals, TExMap* stampMap); 00098 00099 ClassDef(TEveSceneList, 0); // List of Scenes providing common operations on TEveScene collections. 00100 }; 00101 00102 #endif