VR-Forces 4.6.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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>
12 #include <vrvUtil/signalslib.h>
15 
19 #include <vlutil/vlFilename.h>
20 #include <tbb/recursive_mutex.h>
21 
22 namespace makVrv
23 {
24  class DtDe;
25  class DtModelDefinitionManager;
26  class DtModelDefinition;
27  class DtVisualizerDefinitionSet;
28  class DtVisualizerDefinition;
29 }
30 
33 
34 static tbb::recursive_mutex theVisualMutexLock;
35 
36 namespace makVrf
37 {
40  {
41  public:
43  : makVrv::DtEntityTypeMapper(name)
44  , myMapperType(t)
45  {
46  }
47 
48  virtual ~DtVrfEntityTypeMapper();
49 
50  void setFilename(const DtFilename& f)
51  {
52  myFilename = f;
53  }
54 
55  const DtFilename& filename() const
56  {
57  return myFilename;
58  }
59 
60  const NameList* findMappings( const DtEntityType& type, bool exact = false ) const;
61 
63  virtual void setFromRecord(const makArchives::DtEntityTypeMappingRecord& record);
64 
66  virtual void addMapping(const DtEntityType& type,
67  const makVrv::DtUnicode& definitionName);
68 
70  virtual void removeMapping(const DtEntityType& type,
71  const makVrv::DtUnicode& value);
72 
73  virtual void mergeFromRecord(const makArchives::DtEntityTypeMappingRecord& record);
74 
75  bool isMappedDefinition(const makVrv::DtUnicode& def) const
76  {
77  return (myDefinitionsMap.find(def) != myDefinitionsMap.end());
78  }
79 
80  int mappedDefinitionCount(const makVrv::DtUnicode& def) const
81  {
82  DefinitionsMap::const_iterator iter = myDefinitionsMap.find(def);
83 
84  if (iter != myDefinitionsMap.end())
85  {
86  return iter->second;
87  }
88 
89  return 0;
90  }
91 
92  typedef std::map<makVrv::DtUnicode,int> DefinitionsMap;
93  const DefinitionsMap& definitionsMapped() const { return myDefinitionsMap; };
94 
96  virtual void mergeTypeMappingsFromPath(makVrv::DtDe&, const std::string& path);
97 
98  protected:
99  virtual void setupDefinitionsMap();
100 
101  protected:
102  DtFilename myFilename;
105  };
106 
110  {
111  public:
112  class Visuals;
113 
116 
118  virtual ~DtVrfVisualsManager();
119 
121  static DtVrfVisualsManager& instance(makVrv::DtDe&);
122  static void registerInstance(makVrv::DtDe&, DtVrfVisualsManager*);
123 
127  virtual bool loadVisuals(DtSimulationModelSet*, bool createIfMissing = false, bool editMode = false);
128 
130  virtual bool loadVisuals(const DtFilename&, const DtString& rootName = "");
131 
137  virtual bool createVisuals(const DtSimulationModelSet*, bool andLoad = true,
138  Visuals* visualsToUpgradeFrom = 0, const DtFilename& sourceDefinitionsDir = DtFilename::nullFilename());
139 
142  virtual bool getSystemVisualizerDefinitionAndElementTypeMap(const DtEntityType&, makVrv::DtUnicode&,
144 
146  virtual bool isUnknown(const std::vector<makVrv::DtUnicode>& entities) const;
147  virtual bool isUnknown(const makVrv::DtUnicode& entities) const;
148 
150  virtual makVrv::DtUnicode unknownString() const;
151 
153  virtual void updateUnknowns();
154 
155  const std::set<makVrv::DtUnicode> unknownStrings() const
156  {
157  return myUnknowns;
158  }
159 
160 
162  virtual void clear();
163 
165  virtual void clearSimulationModelSetVisuals();
166 
168  virtual void setupAdditionalVisualizers();
169 
171  virtual void upgradeSpotReportsDictionary(const DtFilename& toDirectory, Visuals&, bool force = false, bool mergeAttributes = false);
172 
176  virtual bool upgradeVisuals(const DtSimulationModelSet& oldSet, const DtSimulationModelSet& newSet);
177 
180  virtual bool loadVisuals(const DtScenarioExplorer& explorer, bool createIfMissing = false, bool force = false, bool editMode = false);
181 
183  virtual const Visuals* visualsFor(const DtSimulationModelSet&) const;
184  virtual Visuals* visualsFor(const DtSimulationModelSet&);
185  virtual Visuals* visualsFor(const std::string&);
186  virtual const Visuals* visualsFor(const std::string&) const;
187 
189  virtual makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes elementTypeFor(const DtEntityType&);
190 
192  virtual void mergeVisualsIntoSystemVisuals(const Visuals*);
193 
195  virtual void pruneFromSystemVisuals(const Visuals*);
196 
198  virtual void merge(const DtEntityType&, const Visuals*, bool toSystem = true, const DtString& newElementDefName = "");
199 
201  virtual void mergeElementDefinitionToSystem(const DtEntityType&);
202 
205  virtual bool saveSystemVisualsAsAppData(const DtFilename& directory, bool saveHierarchyData = true);
206 
209  virtual void createSpotReportDefinitionFor(const DtEntityType&);
210 
213  virtual bool updateAndAddMatchTypeVisuals(const DtEntityType& sourceType, const DtEntityType& matchType, bool andSystem = true);
214 
216  virtual void updateVisualsFor(const DtEntityType&);
217 
221  virtual void removeVisualsFor(const DtEntityType&, bool andSystem = true);
222 
224  virtual bool removeMappingsFor(const DtEntityType&, bool andSystem = true);
225 
227  virtual void removeElementDefinition(const DtEntityType&, bool andSystem = true);
228 
230  virtual Visuals* visualsFor(const DtEntityType&);
231 
233  virtual void setDefaultVisuals(const std::string&);
234  const std::string& defaultVisuals() const;
235 
237  virtual void setCoreRootName(const std::string&);
238  virtual const std::string& coreRootName() const;
239 
240  virtual void resetStartupCounts(makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes);
241 
242  Visuals* systemDefaulVisuals() const { return mySystemDefaultVisuals; };
243 
244  typedef boost::unordered_map<makVrv::DtSharedSimulationSettings::MapperType, DtVrfEntityTypeMapper*> MappersMap;
245 
247  {
248  public:
249  Visuals();
250  Visuals(makVrv::DtDe& de, bool useNewStructure, bool inAppData);
251  Visuals(const Visuals&);
252  virtual ~Visuals();
253 
254  Visuals& operator=(const Visuals&);
255  void addKeyForDefinition(const DtEntityType&, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes,
256  const makVrv::DtUnicode&);
257 
260  const makVrv::DtUnicode&) const;
261  void mergeModelDefinitions(const makVrv::DtModelDefinitionManager*);
262  void pruneModelDefinitions(const makVrv::DtModelDefinitionManager*);
263 
265  void initializeDefaults(const DtFilename& appDataDir = DtFilename::nullFilename());
266 
268  void initializeFrom(const DtFilename&, bool useNewStructure);
269 
271  void cleanup();
272 
274  void addMapper( makVrv::DtSharedSimulationSettings::MapperType mapperType, const std::string& mapperName,
275  const std::string& extension );
276 
278  void initializeMapper( makVrv::DtSharedSimulationSettings::MapperType mapperType, bool fromNewStructure = true, const DtString& definitionsDirectory = DtFilename::nullFilename() );
279 
282  bool getSystemVisualizerDefinitionAndElementTypeMap(const DtEntityType&, makVrv::DtUnicode&,
284 
285  void modelDefinitionsFromVisualizerSet(makVrv::DtModelDefinitionManager*, const makVrv::DtVisualizerDefinitionSet&) const;
286 
289 
291  bool save(const DtFilename& directory);
292 
296  bool save(const DtFilename&, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes, bool andSaveHierarchy = false,
297  bool intoManagerSubDirectory = false, const DtFilename& definitionSubDirectory = "", bool mappedOnly = true);
298 
300  makVrv::DtUnicode findValidElementDefinition(const makVrv::DtEntityTypeMapper::NameList*,
302 
304  void install();
305 
306  void setDirectory(const DtFilename&);
307  void setRootName(const DtString&);
308 
310  bool load(const DtFilename&, const DtString& rootName);
311 
313  bool load(const DtFilename&, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes, bool andLoadHierarchy = false,
314  bool useManagerSubStructure = false);
315 
317  bool installDefinitionRecordsFrom(makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes);
318 
320  void loadOrCreateSpotReports(const DtFilename&, const DtString& root, bool install = true);
321 
322  void pushMappers();
323  void popMappers();
324 
325  bool loadMapFiles();
326 
328  bool upgradeSpotReportsFromDictionary(const DtFilename&, bool force = false, bool mergeAttributes = false);
329  bool upgradeSpotReportsFromDictionary(const DtFilename&, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes,
330  const makVrv::DtUnicode& unknownName, bool force = false, bool mergeAttributes = false, const std::string& possibleMergeName = "");
331 
333  bool addElementDefinitionToSameDictionary(const DtEntityType& sourceType, const makVrv::DtUnicode& elementDefinition, const DtString& newDefinitionName,
334  bool toSystem = false);
335 
338  bool createVisualCopyOf(const DtEntityType& sourceType, const DtEntityType& destinationType, const DtString& newDefinitionName,
339  bool toSystem = false);
340 
341  void initializeSpotReportsHierarchy();
342 
346  void mergeAttributesFrom(const makVrv::DtElementDefinitionNew* source, makVrv::DtElementDefinitionNew* spotReport,
347  const std::vector<int>& supportedSets, bool mergeSymbolDecoration = false, const std::set<std::string>& ignore = std::set<std::string>());
348  bool mergeItemsFrom(const makVrv::DtElementDefinitionNew* source, makVrv::DtElementDefinitionNew* spotReport,
349  const std::vector<int>& supportedSets);
350  void copyAttributesFrom(const makVrv::DtElementDefinitionNew* source, makVrv::DtElementDefinitionNew* spotReport,
351  const std::vector<int>& supportedSets);
352 
354  bool spotReportHierarchyNeedsUpgrade(makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes) const;
355 
356  bool isUnusedVisualizer(const makVrv::DtVisualizerDefinition* visDef) const;
357 
359  bool isMappedDefinition(const makVrv::DtUnicode&);
360 
363 
366  makArchives::DtElementsRecord* recHierRet = 0);
367 
369  bool needsLoading() const;
371 
374  bool updateAndAddMatchTypeVisuals(const DtEntityType& sourceType, const DtEntityType& matchType, bool andSystem = true);
375 
377  DtFilename modelDefinitionsPath(const DtFilename& root) const;
378 
380  DtFilename mapperDirectory(const DtFilename& root, makVrv::DtSharedSimulationSettings::MapperType type) const;
381 
383  DtFilename elementDefinitionDirectory(const DtFilename& root, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes type) const;
384 
386  std::set<std::string> hierarchyElementsForVisuals();
387 
388  std::set<std::string> systemHierarchyElementsForVisuals(makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes);
389 
392  bool haveMappings = false);
393 
395  void merge(const Visuals*);
396 
398  void merge(const DtEntityType&, const Visuals*, bool toSystem = true, const DtString& newElementDefName = "");
399 
401  void mergeElementDefinitionToSystem(const DtEntityType&);
402 
405  virtual bool saveAsAppData(const DtFilename& definitionsDirectory, bool saveHierarchyData = true);
406 
408  bool installDefinitionRecordsFrom(makVrv::DtElementDefinitionManager* thisMgr,
410 
413  makArchives::DtElementsRecord& spoReportHierarchy);
414 
417  const Visuals* source);
418 
421 
424 
426  void saveMappersTo(const DtFilename&, bool useNewDirectoryStructure = false);
427 
429  void prune(const Visuals*);
430 
432  void saveVisualElementsFor(makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes type);
433 
435  void saveModelDefinitions();
436 
438  void changeMappingType(const DtEntityType& from, const DtEntityType& to, bool toSystem = true);
439 
442  void removeSymbolDecorationAttribute(makVrv::DtElementDefinitionNew*, const std::vector<int>& supportedSets);
443  void addSymbolDecorationAttribute(makVrv::DtElementDefinitionNew*, const std::vector<int>& supportedSets);
444 
446  void saveMapper(const DtFilename&, makVrv::DtSharedSimulationSettings::MapperType);
447 
450 
452  void install(const DtEntityType&);
453 
455  void createSpotReportDefinitionFor(const DtEntityType&);
456 
458  void upgradeElementsForDefinition(const makVrv::DtUnicode& defs, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes);
459 
463  void removeVisualsFor(const DtEntityType&, bool fromSystem = true);
464 
466  bool removeMappingsFor(const DtEntityType&, bool andSystem = true);
467 
469  void updateElementDefinitions(makArchives::DtElementsRecord& destination, const makArchives::DtElementsRecord& source, const std::string& prepend);
470 
472  void removeElementDefinition(const DtEntityType&, bool fromSystem = true);
473  void removeElementsForDefinition(const makVrv::DtUnicode& defs, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes,
474  bool fromSystem = true);
475 
477  bool hasType(const DtEntityType&) const;
478 
480  makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes elementTypeFor(const DtEntityType&);
481 
483  const makVrv::DtEntityTypeMapper::NameList* definitionsMapped(const DtEntityType&, makVrv::DtSharedSimulationSettings::MapperType&);
484 
485  DtFilename rootDirectoryForMapper(makVrv::DtSharedSimulationSettings::MapperType mapper) const;
486  DtFilename rootDirectoryForManager(makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes mapper) const;
487  virtual bool containsUnknown(const makVrv::DtEntityTypeMapper::NameList* names) const;
488 
489  typedef std::map<makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes, int> LastWriteTimes;
491 
492  void setLoadAllModelDefinitions(bool b) { myLoadAllModelDefinitions = b; };
493  bool loadAllModelDefinitions() const { return myLoadAllModelDefinitions; };
494 
495  DtVrfElementDefinitionTypeManager* elementDefinitionManager;
498  std::vector<MappersMap> pushedMappers;
500  DtFilename myDirectory;
505  };
506 
507 
509  virtual void initializeSystemVisuals(const DtFilename& definitionsDir = DtFilename::nullFilename(), bool andInstall = true,
510  bool setupSpotReports = true);
511 
512  boost::signal<void ()> signal_visualsLoaded;
513  boost::signal<void (const DtFilename&)> signal_visualsLoadedFrom;
514  boost::signal<void (DtSimulationModelSet*)> signal_spotReportVisualsLoadedFromSMS;
515  boost::signal<void (DtSimulationModelSet*)> signal_visualsLoadedFromSMS;
516 
517  protected:
518 
520  virtual void setupAdditionalTacticalGraphicsVisualizers();
521 
523  virtual void setupNavigationAreaVisualizer();
524 
526  virtual void setupBoundingVolumes();
527 
529  virtual void setupObjectConsoleWarngForTacticalGraphics();
530 
532  virtual void setupBoundingVolumes(const std::string& root);
533 
535  virtual void setupAdditionalSpotReportVisualizers();
536 
539  virtual void setupAdditionalSpotReportVisualizers(const makVrv::DtUnicode&);
540 
542  virtual void setupRangeRings();
543  virtual void addRangeRingsFor(int managerType);
544 
546  virtual void setupSensorContactLines();
547  virtual void addSensorContactLinesFor(int managerType);
548 
549  virtual void setupAdditionalAggregateVisualizers();
550 
551  protected:
553 
555 
557  {
559  ModelSetVisual(const DtFilename& f, const Visuals& v) : filename(f), visuals(v) {};
560  ModelSetVisual(const ModelSetVisual& orig) : filename(orig.filename), visuals(orig.visuals) {};
561  ModelSetVisual& operator=(const ModelSetVisual& orig) { filename = orig.filename; visuals = orig.visuals; return *this; };
562 
563  DtFilename filename;
565  };
566 
567  typedef std::vector<ModelSetVisual> SimulationModelSetVisuals;
570 
571  std::string myDefaultVisuals;
572  std::string myCoreRootName;
573 
574  std::set<DtFilename> mySystemVisuals;
575 
576  std::set<makVrv::DtUnicode> myUnknowns;
577  };
578 }

Document ID: Generated on Wed Jul 25 16:57:45 EDT 2018 from SVN revision 190790
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)