00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _SO_LDM_LARGE_DATA_MANAGEMENT_
00025 #define _SO_LDM_LARGE_DATA_MANAGEMENT_
00026
00027 class SoLDMTileManager;
00028 class SoLDMTileVisitor;
00029 class SoLDMNodeFrontManager;
00030 class SoLDMTextureManager;
00031 class SoLDMGeometry;
00032 class SoLDMResourceManager;
00033 class SoLDMMediator;
00034 class SoAlgorithms;
00035 class SoAction;
00036
00037 #include <Inventor/nodes/SoSubNode.h>
00038
00039 #ifdef _MSC_VER
00040 #pragma warning( push )
00041 #pragma warning(disable:4251)
00042 #endif
00043
00044 #include <LDM/SoLDM.h>
00045 #include <Inventor/lists/SoActionMethodList.h>
00046
00062 SoEXTENDER_Documented class SoLDMLargeDataManagement
00063 {
00064
00065 public:
00066
00071 static void init();
00072
00077 static void finish();
00078
00083 static bool isInitialized();
00084
00088 SoLDMLargeDataManagement();
00089
00093 virtual ~SoLDMLargeDataManagement(){};
00094
00100 virtual void reset(){};
00101
00102
00103
00104 private:
00105
00109 void setMediator(SoLDMMediator* m);
00110 inline SoLDMMediator* getMediator() const;
00111
00115 static bool needCreatingThreads();
00116
00120 static SoAlgorithms* getAlgorithmsInterface();
00121
00123 static bool isInMainMultipipeThread(SoAction* action);
00124
00126 inline static bool lessId(const SoLDM::DataSetIdPair& p1, const SoLDM::DataSetIdPair& p2)
00127 {
00128 return p1.second < p2.second;
00129 }
00130
00136 static void addValuationActionMethod(const SoType& nodeType, SoActionMethod* method);
00137
00144 static void forceValuationActionTraversal(SoAction* action);
00145
00146 SoINTERNAL private:
00147 SoLDMTileManager* getTileManager() const;
00148 SoLDMTileVisitor* getTileVisitor() const;
00149 SoLDMGeometry *getVVizGeometry() const;
00150
00151 SoLDMNodeFrontManager* getNodeFrontManager() const;
00152 SoLDMTextureManager* getTextureManager() const;
00153 SoLDMResourceManager* getResourceManager() const;
00154
00155 private:
00156 SoLDMMediator* m_mediator;
00157 static int s_initRefCount;
00158 static const char* s_versionString;
00159
00160 static SoAlgorithms* s_algorithmsInterface;
00161 static bool s_envNeedCreateThread;
00162 };
00163
00164
00165
00166 SoLDMMediator*
00167 SoLDMLargeDataManagement::getMediator() const
00168 {
00169 return m_mediator;
00170 }
00171
00172
00173
00174 inline SoAlgorithms*
00175 SoLDMLargeDataManagement::getAlgorithmsInterface()
00176 {
00177 return s_algorithmsInterface;
00178 }
00179
00180
00181
00182
00183 #ifdef _MSC_VER
00184 #pragma warning( pop )
00185 #endif
00186
00187 #endif // _SO_LDM_LARGE_DATA_MANAGEMENT_
00188
00189
00190