VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
vrfVisualsManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
9 #pragma once
10 
11 #include <vrfGuiCore/vrfGuiCore.h>
14 
18 #include <vlutil/vlFilename.h>
19 
20 namespace makVrv
21 {
22  class DtDe;
23  class DtModelDefinitionManager;
24  class DtModelDefinition;
25  class DtVisualizerDefinitionSet;
26  class DtVisualizerDefinition;
27 }
28 
30 class DtScenarioExplorer;
31 
32 namespace makVrf
33 {
36  {
37  public:
39  : makVrv::DtEntityTypeMapper(name)
40  , myMapperType(t)
41  {
42  }
43 
44  virtual ~DtVrfEntityTypeMapper();
45 
46  void setFilename(const DtFilename& f)
47  {
48  myFilename = f;
49  }
50 
51  const DtFilename& filename() const
52  {
53  return myFilename;
54  }
55 
56  const NameList* findMappings( const DtEntityType& type, bool exact = false ) const;
57 
59  virtual void setFromRecord(const makArchives::DtEntityTypeMappingRecord& record);
60 
62  virtual void addMapping(const DtEntityType& type,
63  const makVrv::DtUnicode& definitionName);
64 
66  virtual void removeMapping(const DtEntityType& type,
67  const makVrv::DtUnicode& value);
68 
69  virtual void mergeFromRecord(const makArchives::DtEntityTypeMappingRecord& record);
70 
71  bool isMappedDefinition(const makVrv::DtUnicode& def) const
72  {
73  return (myDefinitionsMap.find(def) != myDefinitionsMap.end());
74  }
75 
76  int mappedDefinitionCount(const makVrv::DtUnicode& def) const
77  {
78  DefinitionsMap::const_iterator iter = myDefinitionsMap.find(def);
79 
80  if (iter != myDefinitionsMap.end())
81  {
82  return iter->second;
83  }
84 
85  return 0;
86  }
87 
88  typedef std::map<makVrv::DtUnicode,int> DefinitionsMap;
89  const DefinitionsMap& definitionsMapped() const { return myDefinitionsMap; };
90 
92  virtual void mergeTypeMappingsFromPath(makVrv::DtDe&, const std::string& path);
93 
94  protected:
95  virtual void setupDefinitionsMap();
96 
97  protected:
98  DtFilename myFilename;
101  };
102 
106  {
107  public:
108  class Visuals;
109 
112 
114  virtual ~DtVrfVisualsManager();
115 
117  static DtVrfVisualsManager& instance(makVrv::DtDe&);
118  static void registerInstance(makVrv::DtDe&, DtVrfVisualsManager*);
119 
123  virtual bool loadVisuals(DtSimulationModelSet*, bool createIfMissing = false, bool editMode = false);
124 
126  virtual bool loadVisuals(const DtFilename&, const DtString& rootName = "");
127 
133  virtual bool createVisuals(const DtSimulationModelSet*, bool andLoad = true,
134  Visuals* visualsToUpgradeFrom = 0, const DtFilename& sourceDefinitionsDir = DtFilename::nullFilename());
135 
138  virtual bool getSystemVisualizerDefinitionAndElementTypeMap(const DtEntityType&, makVrv::DtUnicode&,
140 
142  virtual bool isUnknown(const std::vector<makVrv::DtUnicode>& entities) const;
143 
145  virtual makVrv::DtUnicode unknownString() const;
146 
148  virtual void updateUnknowns();
149 
150  const std::set<makVrv::DtUnicode> unknownStrings() const
151  {
152  return myUnknowns;
153  }
154 
155 
157  virtual void clear();
158 
160  virtual void clearSimulationModelSetVisuals();
161 
163  virtual void setupAdditionalVisualizers();
164 
166  virtual void upgradeSpotReportsDictionary(const DtFilename& toDirectory, Visuals&, bool force = false, bool mergeAttributes = false);
167 
171  virtual bool upgradeVisuals(const DtSimulationModelSet& oldSet, const DtSimulationModelSet& newSet);
172 
175  virtual bool loadVisuals(const DtScenarioExplorer& explorer, bool createIfMissing = false, bool force = false, bool editMode = false);
176 
178  virtual const Visuals* visualsFor(const DtSimulationModelSet&) const;
179  virtual Visuals* visualsFor(const DtSimulationModelSet&);
180  virtual Visuals* visualsFor(const std::string&);
181  virtual const Visuals* visualsFor(const std::string&) const;
182 
184  virtual makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes elementTypeFor(const DtEntityType&);
185 
187  virtual void mergeVisualsIntoSystemVisuals(const Visuals*);
188 
190  virtual void pruneFromSystemVisuals(const Visuals*);
191 
193  virtual void merge(const DtEntityType&, const Visuals*, bool toSystem = true);
194 
197  virtual bool saveSystemVisualsAsAppData(const DtFilename& directory, bool saveHierarchyData = true);
198 
201  virtual void createSpotReportDefinitionFor(const DtEntityType&);
202 
205  virtual bool updateAndAddMatchTypeVisuals(const DtEntityType& sourceType, const DtEntityType& matchType, bool andSystem = true);
206 
208  virtual void updateVisualsFor(const DtEntityType&);
209 
213  virtual void removeVisualsFor(const DtEntityType&, bool andSystem = true);
214 
216  virtual bool removeMappingsFor(const DtEntityType&, bool andSystem = true);
217 
219  virtual void removeElementDefinition(const DtEntityType&, bool andSystem = true);
220 
222  virtual Visuals* visualsFor(const DtEntityType&);
223 
225  virtual void setDefaultVisuals(const std::string&);
226  const std::string& defaultVisuals() const;
227 
229  virtual void setCoreRootName(const std::string&);
230  virtual const std::string& coreRootName() const;
231 
232  virtual void resetStartupCounts(makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes);
233 
234  Visuals* systemDefaulVisuals() const { return mySystemDefaultVisuals; };
235 
236  typedef boost::unordered_map<makVrv::DtSharedSimulationSettings::MapperType, DtVrfEntityTypeMapper*> MappersMap;
237 
239  {
240  public:
241  Visuals();
242  Visuals(makVrv::DtDe& de, bool useNewStructure, bool inAppData);
243  Visuals(const Visuals&);
244  virtual ~Visuals();
245 
246  Visuals& operator=(const Visuals&);
247  void addKeyForDefinition(const DtEntityType&, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes,
248  const makVrv::DtUnicode&);
249 
252  const makVrv::DtUnicode&) const;
253  void mergeModelDefinitions(const makVrv::DtModelDefinitionManager*);
254  void pruneModelDefinitions(const makVrv::DtModelDefinitionManager*);
255 
257  void initializeDefaults(const DtFilename& appDataDir = DtFilename::nullFilename());
258 
260  void initializeFrom(const DtFilename&, bool useNewStructure);
261 
263  void cleanup();
264 
266  void addMapper( makVrv::DtSharedSimulationSettings::MapperType mapperType, const std::string& mapperName,
267  const std::string& extension );
268 
270  void initializeMapper( makVrv::DtSharedSimulationSettings::MapperType mapperType, bool fromNewStructure = true, const DtString& definitionsDirectory = DtFilename::nullFilename() );
271 
274  bool getSystemVisualizerDefinitionAndElementTypeMap(const DtEntityType&, makVrv::DtUnicode&,
276 
277  void modelDefinitionsFromVisualizerSet(makVrv::DtModelDefinitionManager*, const makVrv::DtVisualizerDefinitionSet&) const;
278 
281 
283  bool save(const DtFilename& directory);
284 
288  bool save(const DtFilename&, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes, bool andSaveHierarchy = false,
289  bool intoManagerSubDirectory = false, const DtFilename& definitionSubDirectory = "", bool mappedOnly = true);
290 
292  makVrv::DtUnicode findValidElementDefinition(const makVrv::DtEntityTypeMapper::NameList*,
294 
296  void install();
297 
298  void setDirectory(const DtFilename&);
299  void setRootName(const DtString&);
300 
302  bool load(const DtFilename&, const DtString& rootName);
303 
305  bool load(const DtFilename&, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes, bool andLoadHierarchy = false,
306  bool useManagerSubStructure = false);
307 
309  bool installDefinitionRecordsFrom(makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes);
310 
312  void loadOrCreateSpotReports(const DtFilename&, const DtString& root, bool install = true);
313 
314  void pushMappers();
315  void popMappers();
316 
317  bool loadMapFiles();
318 
320  bool upgradeSpotReportsFromDictionary(const DtFilename&, bool force = false, bool mergeAttributes = false);
321  bool upgradeSpotReportsFromDictionary(const DtFilename&, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes,
322  const makVrv::DtUnicode& unknownName, bool force = false, bool mergeAttributes = false, const std::string& possibleMergeName = "");
323 
325  bool addElementDefinitionToSameDictionary(const DtEntityType& sourceType, const makVrv::DtUnicode& elementDefinition, const DtString& newDefinitionName,
326  bool toSystem = false);
327 
330  bool createVisualCopyOf(const DtEntityType& sourceType, const DtEntityType& destinationType, const DtString& newDefinitionName,
331  bool toSystem = false);
332 
333  void initializeSpotReportsHierarchy();
334 
338  void mergeAttributesFrom(const makVrv::DtElementDefinitionNew* source, makVrv::DtElementDefinitionNew* spotReport,
339  const std::vector<int>& supportedSets, bool mergeSymbolDecoration = false);
340  bool mergeItemsFrom(const makVrv::DtElementDefinitionNew* source, makVrv::DtElementDefinitionNew* spotReport,
341  const std::vector<int>& supportedSets);
342  void copyAttributesFrom(const makVrv::DtElementDefinitionNew* source, makVrv::DtElementDefinitionNew* spotReport,
343  const std::vector<int>& supportedSets);
344 
346  bool spotReportHierarchyNeedsUpgrade(makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes) const;
347 
348  bool isUnusedVisualizer(const makVrv::DtVisualizerDefinition* visDef) const;
349 
352 
355  makArchives::DtElementsRecord* recHierRet = 0);
356 
358  bool needsLoading() const;
360 
363  bool updateAndAddMatchTypeVisuals(const DtEntityType& sourceType, const DtEntityType& matchType, bool andSystem = true);
364 
366  DtFilename modelDefinitionsPath(const DtFilename& root) const;
367 
369  DtFilename mapperDirectory(const DtFilename& root, makVrv::DtSharedSimulationSettings::MapperType type) const;
370 
372  DtFilename elementDefinitionDirectory(const DtFilename& root, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes type) const;
373 
375  std::set<std::string> hierarchyElementsForVisuals();
376 
377  std::set<std::string> systemHierarchyElementsForVisuals(makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes);
378 
381  bool haveMappings = false);
382 
384  void merge(const Visuals*);
385 
387  void merge(const DtEntityType&, const Visuals*, bool toSystem = true);
388 
391  virtual bool saveAsAppData(const DtFilename& definitionsDirectory, bool saveHierarchyData = true);
392 
394  bool installDefinitionRecordsFrom(makVrv::DtElementDefinitionManager* thisMgr,
396 
399  makArchives::DtElementsRecord& spoReportHierarchy);
400 
403  const Visuals* source);
404 
407 
410 
412  void saveMappersTo(const DtFilename&, bool useNewDirectoryStructure = false);
413 
415  void prune(const Visuals*);
416 
418  void saveVisualElementsFor(makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes type);
419 
421  void saveModelDefinitions();
422 
424  void changeMappingType(const DtEntityType& from, const DtEntityType& to);
425 
428  void removeSymbolDecorationAttribute(makVrv::DtElementDefinitionNew*, const std::vector<int>& supportedSets);
429  void addSymbolDecorationAttribute(makVrv::DtElementDefinitionNew*, const std::vector<int>& supportedSets);
430 
432  void saveMapper(const DtFilename&, makVrv::DtSharedSimulationSettings::MapperType);
433 
436 
438  void install(const DtEntityType&);
439 
441  void createSpotReportDefinitionFor(const DtEntityType&);
442 
444  void upgradeElementsForDefinition(const makVrv::DtUnicode& defs, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes);
445 
449  void removeVisualsFor(const DtEntityType&, bool fromSystem = true);
450 
452  bool removeMappingsFor(const DtEntityType&, bool andSystem = true);
453 
455  void updateElementDefinitions(makArchives::DtElementsRecord& destination, const makArchives::DtElementsRecord& source, const std::string& prepend);
456 
458  void removeElementDefinition(const DtEntityType&, bool fromSystem = true);
459  void removeElementsForDefinition(const makVrv::DtUnicode& defs, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes,
460  bool fromSystem = true);
461 
463  bool hasType(const DtEntityType&) const;
464 
466  makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes elementTypeFor(const DtEntityType&);
467 
469  const makVrv::DtEntityTypeMapper::NameList* definitionsMapped(const DtEntityType&, makVrv::DtSharedSimulationSettings::MapperType&);
470 
471  DtFilename rootDirectoryForMapper(makVrv::DtSharedSimulationSettings::MapperType mapper) const;
472  DtFilename rootDirectoryForManager(makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes mapper) const;
473  virtual bool containsUnknown(const makVrv::DtEntityTypeMapper::NameList* names) const;
474 
475  typedef std::map<makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes, int> LastWriteTimes;
477 
478  void setLoadAllModelDefinitions(bool b) { myLoadAllModelDefinitions = b; };
479  bool loadAllModelDefinitions() const { return myLoadAllModelDefinitions; };
480 
481  DtVrfElementDefinitionTypeManager* elementDefinitionManager;
484  std::vector<MappersMap> pushedMappers;
486  DtFilename myDirectory;
491  };
492 
493 
495  virtual void initializeSystemVisuals(const DtFilename& definitionsDir = DtFilename::nullFilename(), bool andInstall = true,
496  bool setupSpotReports = true);
497 
498  protected:
499 
501  virtual void setupAdditionalTacticalGraphicsVisualizers();
502 
504  virtual void setupNavigationAreaVisualizer();
505 
507  virtual void setupBoundingVolumes();
508 
510  virtual void setupObjectConsoleWarngForTacticalGraphics();
511 
513  virtual void setupBoundingVolumes(const std::string& root);
514 
516  virtual void setupRangeRings();
517  virtual void addRangeRingsFor(int managerType);
518 
520  virtual void setupSensorContactLines();
521  virtual void addSensorContactLinesFor(int managerType);
522 
523  virtual void setupAdditionalAggregateVisualizers();
524 
525  protected:
527 
529 
531  {
533  ModelSetVisual(const DtFilename& f, const Visuals& v) : filename(f), visuals(v) {};
534  ModelSetVisual(const ModelSetVisual& orig) : filename(orig.filename), visuals(orig.visuals) {};
535  ModelSetVisual& operator=(const ModelSetVisual& orig) { filename = orig.filename; visuals = orig.visuals; return *this; };
536 
537  DtFilename filename;
539  };
540 
541  typedef std::vector<ModelSetVisual> SimulationModelSetVisuals;
544 
545  std::string myDefaultVisuals;
546  std::string myCoreRootName;
547 
548  std::set<DtFilename> mySystemVisuals;
549 
550  std::set<makVrv::DtUnicode> myUnknowns;
551  };
552 }

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)