VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
tdbMetafile.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 1998 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: tdbMetafile.h,v $ $Revision: 1.20 $ $State: Exp $
7 *******************************************************************************/
8 #ifndef tdbMetafile_H_
9 #define tdbMetafile_H_
10 
11 // \file tdbMetafile.h
12 // \brief Contains the DtTdbMetafile class declaration.
13 
15 #include <vlutil/vlFilename.h>
16 #include <iosfwd>
17 #include <vlutil/vlConfig.h>
18 #include <list>
19 #include <vector>
20 
26 class DtMetafileRecord;
27 class DtVectorDataRecord;
28 class DtPaperMapRecord;
32 
33 //
34 // Instances of this class are accessors to Mak terrain database metafiles.
35 // Certain database formats require the use of a metafile as the top-level
36 // file. Example: gdf, dted
38 {
39 
40 public:
41  // Includes both terrain and extent metafiles
42  typedef std::list<DtMetafileRecord*> DtTerrainMfRecContainer;
43  typedef DtTerrainMfRecContainer::iterator DtTerrainMfRecIter;
44  typedef DtTerrainMfRecContainer::const_iterator DtTerrainMfRecConstIter;
45 
46  // Holds all vector records
47  typedef std::list<DtVectorDataRecord*> DtVecMfRecContainer;
48  typedef DtVecMfRecContainer::iterator DtVecMfRecIter;
49  typedef DtVecMfRecContainer::const_iterator DtVecMfRecConstIter;
50 
51  // Holds all papermap records
52  typedef std::list<DtPaperMapRecord*> DtPaperMapRecContainer;
53  typedef DtPaperMapRecContainer::iterator DtPaperMapRecIter;
54  typedef DtPaperMapRecContainer::const_iterator DtPaperMapRecConstIter;
55 
56  // Holds all additional records.
57  typedef std::list<DtAdditionalDataRecord*> DtAdditionalMetafileRecordContainer;
58 
59  // default constructor.
61 
62  // destructor
63  virtual ~DtTdbMetafile();
64 
65  // Load the metafile from the given filename.
66  virtual bool init(const DtFilename& filename);
67 
68  virtual void setFilename(const DtFilename & name);
69  virtual const DtFilename & filename() const;
70 
71  // For now the metafile factory requires a string hash look up to
72  // create the metafiles. Would be nice if this was perhaps an unsigned int
73  // but for now strings are the way it is done.
74 
75  // Creates any metafile
76  virtual DtMetafileRecord * createMetafileRecord(const DtString & recordString);
77 
78  // Creates a particular type of metafile
79  virtual DtTerrainMetafileRecord* createTerrainMetafile(const DtString& recordString);
80  virtual DtVectorDataRecord* createVectorRecord(const DtString& recordString);
81  virtual DtPaperMapRecord* createPaperMapRecord(const DtString& recordString);
82 
83  virtual DtGdbProcessingMetafileRecord* createTerrainProcessingRecord();
84 
85  // Returns a pointer to the terrain processing record.
86  virtual const DtGdbProcessingMetafileRecord* terrainProcessingRecord() const;
87  virtual DtGdbProcessingMetafileRecord* terrainProcessingRecord();
88 
89  // Sets the terrain record pointer
90  virtual void setTerrainProcessingRecord(DtGdbProcessingMetafileRecord* processMfRec);
91 
92  // Returns a pointer to the terrain intersector record.
93  virtual const DtTerrainIntersectorRecord* terrainIntersectorRecord() const;
94  virtual DtTerrainIntersectorRecord* terrainIntersectorRecord();
95 
96  // Sets the terrain intersector pointer. Note that a clone of the record coming
97  // in is created, so, delete any memory allocated for the record passed into this
98  // routine
99  virtual void setTerrainIntersectorRecord(DtTerrainIntersectorRecord* processMfRec);
100 
101  // Returns a pointer to the terrain descriptor record. This record holds the
102  // file name for the Mak Terrain Descriptor file and whether the terrain it
103  // describes has been altered since it was imported
104  virtual const DtTerrainDescriptorRecord* terrainDescriptorRecord() const;
105  virtual DtTerrainDescriptorRecord* terrainDescriptorRecord();
106 
107  // Sets the terrain record pointer
108  virtual void setTerrainDescriptorRecord(DtTerrainDescriptorRecord* terrainDescriptorMfRec);
109 
110  // Returns the list of terrain and extent Metafile Records
111  virtual const DtTerrainMfRecContainer& terrainMetafileRecordList() const;
112  virtual DtTerrainMfRecContainer& terrainMetafileRecordList();
113 
114  // Add a terrain data record
115  virtual void addTerrainMfRec(DtMetafileRecord* rec);
116 
117  // Returns the list of papermaps.
118  virtual const DtPaperMapRecContainer& paperMapMetafileRecordList() const;
119  virtual DtPaperMapRecContainer& paperMapMetafileRecordList();
120 
121  // Add a paperMap data record
122  virtual void addPaperMapMfRec(DtPaperMapRecord* paperRec);
123 
124  // Returns the list of vectorData Metafile Records
125  virtual const DtVecMfRecContainer& vectorDataMetafileRecordList() const;
126  virtual DtVecMfRecContainer& vectorDataMetafileRecordList();
127 
128  // Returns the list of terrain records that are marked as importable
129  virtual DtTerrainMfRecContainer importableTerrainMetafileRecordList();
130 
131  // Returns the type of the vector files used
132  virtual const unsigned int vectorFilesType();
133 
134  // Add a vector data record
135  virtual void addVectorDataMfRec(DtVectorDataRecord* vecRec);
136 
137  // These are records that may not be any of the above types. For use by
138  // plugins, and other arbitrary pieces of data to be stored in a metafile.
140  virtual const DtAdditionalMetafileRecordContainer& additionalMetafileRecordList() const;
141  virtual DtAdditionalMetafileRecordContainer& additionalMetafileRecordList();
142  virtual void addAdditionalMfRec(DtAdditionalDataRecord* rec);
144 
145  // Sets the key value of this record, and adds it to the appropriate
146  // list based on the recordCategory(). The DtMetafileRecord takes
147  // ownership of this record. If it cannot be places in a list,
148  // false is returned and the record is not deleted.
149  virtual bool addRecord(DtMetafileRecord* record);
150 
151  // Look up a metafile record by its key.
152  virtual DtMetafileRecord * findRecord(unsigned int key);
153 
154  // Removes a metafile record that matches the given key
155  virtual bool removeRecord(unsigned int key);
156 
157  // Write self to the given filename
158  virtual bool put(const DtFilename& filename);
159 
160  // Write self to stream.
161  virtual bool put(std::ostream& stream) const;
162 
163  // Read self from stream.
164  virtual bool get(std::istream& stream);
165 
166  // Returns a pointer to the 3DView record (if exists) or null otherwise.
167  virtual const Dt3DViewMetafileRecord* threeDViewMetafileRecord() const;
168  virtual Dt3DViewMetafileRecord* threeDViewMetafileRecord();
169 
170  // Sets the 3DView record pointer
171  virtual void setThreeDViewMetafileRecord(Dt3DViewMetafileRecord* extMfRec);
172 
173  // Deprecated--These supported a single extent or terrain record for the
174  // terrain database. We need to support multiple terrain records. There's no real
175  // reason not to. For now these will return the first on their kind.
176 
177  // Returns a pointer to the extent record.
178  virtual const DtExtentMetafileRecord* extentMetafileRecord() const;
179  virtual DtExtentMetafileRecord* extentMetafileRecord();
180 
181  // Sets the extent record pointer
182  virtual void setExtentMfRecord(DtExtentMetafileRecord* extMfRec);
183 
184  // Returns a pointer to the terrain record.
185  virtual const DtTerrainMetafileRecord* terrainMetafileRecord() const;
186  virtual DtTerrainMetafileRecord* terrainMetafileRecord();
187 
188  // Sets the terrain record pointer
189  virtual void setTerrainMfRecord(DtTerrainMetafileRecord* terrainMfRec);
190  // End functions to deprecate
191 
192  static int nextUniqueRecordKey();
193 
194  virtual void emptyAllRecords();
195 
196  // Return a list of metafile records of the specified type (as matched by recordTypeName)
197  virtual std::vector<DtMetafileRecord*> recordsOfType(const std::string& type) const;
198 
199 private:
200 
201  // copy constructor
202  DtTdbMetafile(const DtTdbMetafile& orig);
203 
204  // assignment operator
205  DtTdbMetafile& operator=(const DtTdbMetafile& rhs);
206 
207 protected:
208 
209  DtTdbMetafile();
210 
211  // Removes and deletes all entries in myVectorDataMetafileRecordList.
212  // Non-virtual because it is called from the destructor.
213  void emptyTerrainMetafileRecordList();
214 
215  // Removes and deletes all entries in myPaperMapMetafileRecordList.
216  // Non-virtual because it is called from the destructor.
217  void emptyPaperMapMetafileRecordList();
218 
219  // Removes and deletes all entries in myVectorDataMetafileRecordList.
220  // Non-virtual because it is called from the destructor.
221  void emptyVectorDataMetafileRecordList();
222 
223  // Removes and deletes all entries in myAdditionalMetafileRecordList.
224  // Non-virtual because it is called from the destructor.
225  void emptyAdditionalMetafileRecordList();
226 
227 
229 
230  DtFilename myFilename;
231 
233 
235 
237 
239 
241 
243 
245 
247 
248  // Deprecated-- These imposed a single terrain record.
249  // We need to support multiple terrain records.
252 
253  unsigned int myVectorFilesType;
254 
255  // This is the next available unique record key
256  static int myNextRecordKey;
257 };
258 
259 #endif
260 
Definition: tdbMetafile.h:37
DtTerrainMfRecContainer::const_iterator DtTerrainMfRecConstIter
Definition: tdbMetafile.h:44
Dt3DViewMetafileRecord * my3DViewMetafileRecord
Definition: tdbMetafile.h:242
std::list< DtMetafileRecord * > DtTerrainMfRecContainer
Definition: tdbMetafile.h:42
Definition: vectorDataRecord.h:24
const char * filename
Definition: ioapi.h:38
void put(DtAStarGraph::DynamicPropertyMap< T > &map, size_t index, const T &value)
template &lt;typename t&gt;=&quot;&quot;&gt; T get(const DtAStarGraph::DynamicPropertyMap&lt;T&gt;* map, size_t index) { retur...
Definition: aStarGraph.h:474
DtPaperMapRecContainer myPaperMapMetafileRecordList
Definition: tdbMetafile.h:238
DtTerrainMfRecContainer::iterator DtTerrainMfRecIter
Definition: tdbMetafile.h:43
std::list< DtPaperMapRecord * > DtPaperMapRecContainer
Definition: tdbMetafile.h:52
DtGdbProcessingMetafileRecord * myGdbOptionsRecord
Definition: tdbMetafile.h:232
DtPaperMapRecContainer::iterator DtPaperMapRecIter
Definition: tdbMetafile.h:53
Definition: terrainIntersectorRecord.h:41
Definition: additionalDataRecord.h:22
DtTerrainIntersectorRecord * myTerrainIntersectorRecord
Definition: tdbMetafile.h:244
DtFilename myFilename
Definition: tdbMetafile.h:230
Definition: gdbProcessingMetafileRecord.h:27
Definition: extentMetafileRecord.h:24
Definition: paperMapRecord.h:22
std::list< DtAdditionalDataRecord * > DtAdditionalMetafileRecordContainer
Definition: tdbMetafile.h:57
DtAdditionalMetafileRecordContainer myAdditionalMetafileRecordList
Definition: tdbMetafile.h:246
DtVecMfRecContainer::const_iterator DtVecMfRecConstIter
Definition: tdbMetafile.h:49
Definition: tdbMetafileFactory.h:26
#define DT_DLL_terrainDbFactory
Definition: terrainDbFactoryDefines.h:23
voidpf stream
Definition: ioapi.h:39
DtVecMfRecContainer myVectorDataMetafileRecordList
Definition: tdbMetafile.h:240
DtTdbMetafileFactory * myFactory
Definition: tdbMetafile.h:228
DtTerrainMfRecContainer myTerrainMetafileRecordList
Definition: tdbMetafile.h:236
Definition: metafileRecord.h:28
Definition: 3DViewMetafileRecord.h:16
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
static int myNextRecordKey
Definition: tdbMetafile.h:256
DtTerrainDescriptorRecord * myTerrainDescriptorRecord
Definition: tdbMetafile.h:234
DtVecMfRecContainer::iterator DtVecMfRecIter
Definition: tdbMetafile.h:48
Definition: terrainDescriptorRecord.h:18
This is the abstract base class for all terrain records in a metafile.
Definition: terrainMetafileRecord.h:23
DtTerrainMetafileRecord * myTerrainMetafileRecord
Definition: tdbMetafile.h:251
unsigned int myVectorFilesType
Definition: tdbMetafile.h:253
std::list< DtVectorDataRecord * > DtVecMfRecContainer
Definition: tdbMetafile.h:47
DtExtentMetafileRecord * myExtentMetafileRecord
Definition: tdbMetafile.h:250
DtPaperMapRecContainer::const_iterator DtPaperMapRecConstIter
Definition: tdbMetafile.h:54

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)