VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
spatialVrfObjectManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2009 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: spatialVrfObjectManager.h,v $ $Revision: 1.19 $ $State: Exp $
7 *******************************************************************************/
8 #ifndef spatialVrfObjectManager_H_
9 #define spatialVrfObjectManager_H_
10 
13 
14 #include <vlutil/vlConfig.h>
17 #include <list>
18 #include <vector>
19 #include <boost/unordered_set.hpp>
20 
29 
32 
34 {
35 public:
38 
40  virtual bool operator()(const DtVrfObject *object) = 0;
41 };
42 
44 
46 {
47 public:
49 
51  virtual void addVrfObjects(const DtManagedObjectListConstPtr& vrfObjects) = 0;
52 
56  virtual void removeVrfObject(DtVrfObject * vrfObject) = 0;
57 
61  virtual bool setResolutions(unsigned int xRes, unsigned int yRes,
62  unsigned int zRes) = 0;
63 
66  virtual void clearVrfObjects() = 0;
67 
78  virtual void reset(const DtManagedObjectListConstPtr& vrfObjects) = 0;
79 
80 
83 
94 
95  typedef boost::unordered_set<DtVrfObject*> DtVrfObjectUniqueContainer;
96  typedef boost::unordered_set<const DtVrfObject*> DtVrfConstObjectUniqueContainer;
97 
98  typedef std::list<DtVrfObject*> DtVrfObjectContainer;
99 
100  virtual bool getVrfObjects(const DtExtent& extent,
101  DtVrfObjectUniqueContainer& objects) = 0;
102  virtual bool getVrfObjects(const DtExtent& extent,
103  DtVrfConstObjectUniqueContainer& objects) const = 0;
104 
105  virtual bool getVrfObjects(DtVrfObjectPredicate& predicate, const DtExtent& extent,
106  DtVrfObjectUniqueContainer& objects) = 0;
107  virtual bool getVrfObjects(DtVrfObjectPredicate& predicate, const DtExtent& extent,
108  DtVrfConstObjectUniqueContainer& objects) const = 0;
109 
110  virtual bool getVrfObjects(DtChord& chord, std::list<DtVrfObject*>& objects) = 0;
111  virtual bool getVrfObjects(DtChord& chord, std::list<const DtVrfObject*>& objects) const = 0;
112 
113  virtual bool getVrfObjects(DtVrfObjectPredicate& predicate, DtChord& chord,
114  std::list<DtVrfObject*>& objects) = 0;
115  virtual bool getVrfObjects(DtVrfObjectPredicate& predicate, DtChord& chord,
116  std::list<const DtVrfObject*>& objects) const = 0;
118 
129 
130  virtual void visitVrfObjects(const DtExtent& extent, DtSpatialSelectionFunctor &callback) const = 0;
131  virtual void visitVrfObjects(const DtChord& chord, DtSpatialSelectionFunctor& callback) const = 0;
132 };
133 
135 
137 {
138 public:
140  typedef std::vector<DtVrfObject*> DtNonSpatialContainer;
141  typedef DtNonSpatialContainer::iterator DtNonSpatialVrfObjectIter;
142  typedef DtNonSpatialContainer::const_iterator DtNonSpatialVrfObjectConstIter;
143 
144 
148  DtSpatialVrfObjectManager(unsigned int xRes = 1, unsigned int yRes = 1,
149  unsigned int zRes = 1);
150 
152  virtual ~DtSpatialVrfObjectManager();
153 
154 private:
157  DtSpatialVrfObjectManager& operator=(const DtSpatialVrfObjectManager& original);
158 
159 public:
160 
166  virtual bool initialize(const DtManagedObjectListConstPtr& vrfObjects,
167  unsigned int cellCountX, unsigned int cellCountY, unsigned int cellCountZ);
168 
173  virtual void addVrfObjects(const DtManagedObjectListConstPtr& vrfObjects);
174 
178  virtual void removeVrfObject(DtVrfObject * vrfObject);
179 
182  virtual void clearVrfObjects();
183 
184  virtual bool setResolutions(unsigned int xRes, unsigned int yRes,
185  unsigned int zRes);
186 
188  virtual unsigned int xResolution() const;
190  virtual unsigned int yResolution() const;
192  virtual unsigned int zResolution() const;
193 
195  virtual void resolutions(unsigned int& xRes, unsigned int& yRes,
196  unsigned int& zRes) const;
197 
208  virtual void reset(const DtManagedObjectListConstPtr& vrfObjects);
209 
210 
213 
222 
223  bool getVrfObjects(const DtExtent& extent, DtVrfObjectUniqueContainer& objects);
224  bool getVrfObjects(const DtExtent& extent, DtVrfConstObjectUniqueContainer& objects) const;
225 
226  bool getVrfObjects(DtVrfObjectPredicate& predicate, const DtExtent& extent,
227  DtVrfObjectUniqueContainer& objects);
228  bool getVrfObjects(DtVrfObjectPredicate& predicate, const DtExtent& extent,
229  DtVrfConstObjectUniqueContainer& objects) const;
230 
231  bool getVrfObjects(DtChord& chord, std::list<DtVrfObject*>& objects);
232  bool getVrfObjects(DtChord& chord, std::list<const DtVrfObject*>& objects) const;
233 
234  bool getVrfObjects(DtVrfObjectPredicate& predicate, DtChord& chord,
235  std::list<DtVrfObject*>& objects);
236  bool getVrfObjects(DtVrfObjectPredicate& predicate, DtChord& chord,
237  std::list<const DtVrfObject*>& objects) const;
239 
250 
251  void visitVrfObjects(const DtExtent& extent, DtSpatialSelectionFunctor &callback) const;
252  void visitVrfObjects(const DtChord& chord, DtSpatialSelectionFunctor& callback) const;
253 
255  virtual const DtSpatialContainer* spatialContainer() const;
256  virtual DtSpatialContainer* spatialContainer();
257 
259  virtual const DtNonSpatialContainer* nonSpatiallyOrganizedObjects() const;
260  virtual DtNonSpatialContainer* nonSpatiallyOrganizedObjects();
261 
262 protected:
263 
267  virtual bool createSpatialContainer(const DtExtent& extent, unsigned int cellCountX,
268  unsigned int cellCountY, unsigned int cellCountZ);
269 
279  virtual void setExtent(const DtManagedObjectListConstPtr& vrfObjects);
280 
283  virtual void expandExtent(const DtManagedObjectListConstPtr& vrfObjects,
284  DtExtent& expandedExtent) const;
285 
288  bool testInvariant() const;
289 
290 
291 protected:
292 
296 
302 };
303 
304 #endif

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)