![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2003 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: terrainReaderFactory.h,v $ $Revision: 1.11 $ $State: Exp $ 00007 *******************************************************************************/ 00008 #ifndef terrainReaderFactory_H_ 00009 #define terrainReaderFactory_H_ 00010 00011 // 00012 // \file terrainReaderFactory.h 00013 // \brief Contains the DtTerrainReaderFactory class declaration and related typedefs. 00014 // 00015 00016 #include "terrainDbFactory/terrainDbFactoryDefines.h" 00017 #include <vlutil/vlConfig.h> 00018 #include <map> 00019 #include <vlutil/vlString.h> 00020 #include <vlutil/vlFilename.h> 00021 #include <vlutil/vlList.h> 00022 00023 class DtTerrainDatabase; 00024 class DtTerrainReader; 00025 class DtMetafileRecord; 00026 class DtTdbMetafileFactory; 00027 00028 // 00029 // DtTerrainReaderFactory contains a container of DtTerrainFactoryEntry creators, 00030 // indexed by the DtString type that represents the type of file able to load. 00031 // It is used to dynamically create the type of terrain reader that is desired. 00032 class DT_DLL_terrainDbFactory DtTerrainReaderFactory 00033 { 00034 public: 00035 typedef DtTerrainReader* (*DtTerrainReaderCreatorFcn)(); 00036 typedef std::map<DtString, DtTerrainReaderCreatorFcn> DtTerrainReaderCreatorContainer; 00037 00038 00039 private: 00040 // Default constructor not available 00041 DtTerrainReaderFactory(); 00042 00043 public: 00044 // constructor 00045 DtTerrainReaderFactory(DtTdbMetafileFactory *factory); 00046 00047 // copy constructor 00048 DtTerrainReaderFactory(const DtTerrainReaderFactory& orig); 00049 00050 // assignment operator 00051 const DtTerrainReaderFactory& operator=(const DtTerrainReaderFactory& orig); 00052 00053 // Destructor: deletes factory and any entries on the factory. 00054 virtual ~DtTerrainReaderFactory(); 00055 00056 virtual void setMetafileFactory(DtTdbMetafileFactory* factory); 00057 virtual DtTdbMetafileFactory* metafileFactory(); 00058 virtual const DtTdbMetafileFactory* metafileFactory() const; 00059 00060 // Registers all the default terrain readers with the factory. 00061 virtual void init(); 00062 00063 // Registers a creator associated with the specified type with the factory. 00064 virtual void registerTerrainReaderCreator(const DtString &type, 00065 DtTerrainReaderCreatorFcn fcn); 00066 00067 // \return A DtTerrainReader of the specified type, OR 0 if the type is unknown. 00068 virtual DtTerrainReader* createTerrainReader(const DtString &type); 00069 00070 static DtTerrainReaderFactory* create(); 00071 00072 virtual bool loadTerrain(const DtFilename& fileName, DtTerrainDatabase* terrain, 00073 const DtList& searchPaths); 00074 00075 protected: 00076 00077 virtual bool loadTerrain(const DtFilename& fileName, DtTerrainDatabase* terrain); 00078 00079 DtTerrainReaderCreatorContainer myTerrainReaders; 00080 DtTdbMetafileFactory* myTdbMetafileFactory; 00081 }; 00082 00083 #endif