![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtWindowManager.h,v $ $Revision: 1.43 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #ifndef DtWindowManager_H_ 00014 #define DtWindowManager_H_ 00015 00016 #include <vrvCore/vrvCore.h> 00017 #include <vrvUtil/DtWindowConfiguration.h> 00018 #include <vrvUtil/DtDisplayConfiguration.h> 00019 #include <vrvUtil/DtVirtualBaseClass.h> 00020 00021 #include <boost/signal.hpp> 00022 #include <list> 00023 00024 namespace makVrv 00025 { 00026 class DtChannelProctor; 00027 class DtChannelManager; 00028 class DtDe; 00029 class DtWindow; 00030 class DtAgentManager; 00031 class DtWindowProctor; 00032 class DtWindowManagerSignaler; 00033 00036 class DT_DLL_VRVCORE DtWindowManager 00037 { 00038 00039 public: 00040 00041 typedef std::list<DtWindow*> WindowList; 00042 00043 public: 00044 00045 00046 00048 virtual ~DtWindowManager(); 00049 00051 virtual void realizeConfiguration(); 00052 00056 virtual bool addWindow(const std::string& displayName, const DtWindowConfiguration& wc); 00057 00060 virtual bool destroyWindow( const std::string& displayName, const std::string& windowName ); 00061 00064 virtual bool modifyWindow( const std::string& displayName, const std::string& windowName, 00065 const DtWindowConfiguration& config ); 00066 00068 DtWindow* findWindow(const std::string& name); 00069 00071 virtual WindowList& windows(); 00072 00074 virtual const WindowList& windows() const; 00075 00078 virtual void addWindow(DtWindow* window); 00079 00081 virtual void destroyWindow(DtWindow* window); 00082 00085 virtual bool tick(); 00086 00089 virtual bool isVisibleAndCloseToCamera( 00090 float sphereRadius, 00091 float sphereCenterX, float sphereCenterY, float sphereCenterZ, 00092 float distance, float upX, float upY, float upZ) const = 0; 00093 00095 virtual int maxTextureUnits() const; 00096 00097 protected: 00098 00101 DtWindowManager(DtDe& de, DtWindowConfigurations&); 00102 00105 virtual DtWindow* realizeWindowConfiguration(DtWindowConfiguration& wc); 00106 00108 virtual void destroyWindows(); 00109 00110 protected: 00111 00113 00114 DtDe& myDe; 00115 DtWindowManagerSignaler& mySignaler; 00116 DtWindowConfigurations& myWindowConfigurations; 00117 WindowList myWindowList; 00118 DtWindowProctor* myWindowProctor; 00119 DtChannelProctor* myChannelProctor; 00120 unsigned int myExternalContextCount; 00121 }; 00122 00125 class DT_DLL_VRVCORE DtWindowManagerSignaler : public DtVirtualBaseClass 00126 { 00127 public: 00128 00130 static DtWindowManagerSignaler& instance(DtDe& de); 00131 00133 virtual ~DtWindowManagerSignaler(); 00134 00136 boost::signal<void (DtWindow*)> signal_windowCreated; 00137 00139 boost::signal<void (DtWindow*)> signal_windowToBeDestroyed; 00140 00141 protected: 00142 00143 DtWindowManagerSignaler(); 00144 00145 }; 00146 00149 class DT_DLL_VRVCORE DtWindowManagerCreator : public DtVirtualBaseClass 00150 { 00151 public: 00153 static DtWindowManagerCreator& instance(DtDe& de); 00154 00156 static void registerInstance(DtDe& de, DtWindowManagerCreator* anInstance); 00157 00159 virtual DtWindowManager* create(DtDe& de, DtWindowConfigurations& configs) = 0; 00160 }; 00161 } 00162 00163 #endif 00164