VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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>
18 #include <list>
19 #include <vector>
20 #include <boost/unordered_set.hpp>
21 
30 
33 
35 {
36 public:
39 
41  virtual bool operator()(const DtVrfObject *object) = 0;
42 };
43 
45 
47 {
48 public:
50 
52  virtual void addVrfObjects(const DtManagedObjectListConstPtr& vrfObjects) = 0;
53 
57  virtual void removeVrfObject(DtVrfObject * vrfObject) = 0;
58 
62  virtual bool setResolutions(unsigned int xRes, unsigned int yRes,
63  unsigned int zRes) = 0;
64 
67  virtual void clearVrfObjects() = 0;
68 
79  virtual void reset(const DtManagedObjectListConstPtr& vrfObjects) = 0;
80 
81 
84 
95 
96  typedef boost::unordered_set<DtVrfObject*> DtVrfObjectUniqueContainer;
97  typedef boost::unordered_set<const DtVrfObject*> DtVrfConstObjectUniqueContainer;
98 
99  typedef std::list<DtVrfObject*> DtVrfObjectContainer;
100 
101  virtual bool getVrfObjects(const DtExtent& extent,
102  DtVrfObjectUniqueContainer& objects) = 0;
103  virtual bool getVrfObjects(const DtExtent& extent,
104  DtVrfConstObjectUniqueContainer& objects) const = 0;
105 
106  virtual bool getVrfObjects(DtVrfObjectPredicate& predicate, const DtExtent& extent,
107  DtVrfObjectUniqueContainer& objects) = 0;
108  virtual bool getVrfObjects(DtVrfObjectPredicate& predicate, const DtExtent& extent,
109  DtVrfConstObjectUniqueContainer& objects) const = 0;
110 
111  virtual bool getVrfObjects(DtChord& chord, std::list<DtVrfObject*>& objects) = 0;
112  virtual bool getVrfObjects(DtChord& chord, std::list<const DtVrfObject*>& objects) const = 0;
113 
114  virtual bool getVrfObjects(DtVrfObjectPredicate& predicate, DtChord& chord,
115  std::list<DtVrfObject*>& objects) = 0;
116  virtual bool getVrfObjects(DtVrfObjectPredicate& predicate, DtChord& chord,
117  std::list<const DtVrfObject*>& objects) const = 0;
119 
130 
131  virtual void visitVrfObjects(const DtExtent& extent, DtSpatialSelectionFunctor &callback) const = 0;
132  virtual void visitVrfObjects(const DtChord& chord, DtSpatialSelectionFunctor& callback) const = 0;
133 };
134 
136 
138 {
139 public:
141  typedef std::vector<DtVrfObject*> DtNonSpatialContainer;
142  typedef DtNonSpatialContainer::iterator DtNonSpatialVrfObjectIter;
143  typedef DtNonSpatialContainer::const_iterator DtNonSpatialVrfObjectConstIter;
144 
145 
149  DtSpatialVrfObjectManager(unsigned int xRes = 1, unsigned int yRes = 1,
150  unsigned int zRes = 1);
151 
153  virtual ~DtSpatialVrfObjectManager();
154 
155 private:
158  DtSpatialVrfObjectManager& operator=(const DtSpatialVrfObjectManager& original);
159 
160 public:
161 
167  virtual bool initialize(const DtManagedObjectListConstPtr& vrfObjects,
168  unsigned int cellCountX, unsigned int cellCountY, unsigned int cellCountZ);
169 
174  virtual void addVrfObjects(const DtManagedObjectListConstPtr& vrfObjects);
175 
179  virtual void removeVrfObject(DtVrfObject * vrfObject);
180 
183  virtual void clearVrfObjects();
184 
185  virtual bool setResolutions(unsigned int xRes, unsigned int yRes,
186  unsigned int zRes);
187 
189  virtual unsigned int xResolution() const;
191  virtual unsigned int yResolution() const;
193  virtual unsigned int zResolution() const;
194 
196  virtual void resolutions(unsigned int& xRes, unsigned int& yRes,
197  unsigned int& zRes) const;
198 
209  virtual void reset(const DtManagedObjectListConstPtr& vrfObjects);
210 
211 
214 
223 
224  bool getVrfObjects(const DtExtent& extent, DtVrfObjectUniqueContainer& objects);
225  bool getVrfObjects(const DtExtent& extent, DtVrfConstObjectUniqueContainer& objects) const;
226 
227  bool getVrfObjects(DtVrfObjectPredicate& predicate, const DtExtent& extent,
228  DtVrfObjectUniqueContainer& objects);
229  bool getVrfObjects(DtVrfObjectPredicate& predicate, const DtExtent& extent,
230  DtVrfConstObjectUniqueContainer& objects) const;
231 
232  bool getVrfObjects(DtChord& chord, std::list<DtVrfObject*>& objects);
233  bool getVrfObjects(DtChord& chord, std::list<const DtVrfObject*>& objects) const;
234 
235  bool getVrfObjects(DtVrfObjectPredicate& predicate, DtChord& chord,
236  std::list<DtVrfObject*>& objects);
237  bool getVrfObjects(DtVrfObjectPredicate& predicate, DtChord& chord,
238  std::list<const DtVrfObject*>& objects) const;
240 
251 
252  void visitVrfObjects(const DtExtent& extent, DtSpatialSelectionFunctor &callback) const;
253  void visitVrfObjects(const DtChord& chord, DtSpatialSelectionFunctor& callback) const;
254 
256  virtual const DtSpatialContainer* spatialContainer() const;
257  virtual DtSpatialContainer* spatialContainer();
258 
260  virtual const DtNonSpatialContainer* nonSpatiallyOrganizedObjects() const;
261  virtual DtNonSpatialContainer* nonSpatiallyOrganizedObjects();
262 
263 protected:
264 
268  virtual bool createSpatialContainer(const DtExtent& extent, unsigned int cellCountX,
269  unsigned int cellCountY, unsigned int cellCountZ);
270 
280  virtual void setExtent(const DtManagedObjectListConstPtr& vrfObjects);
281 
284  virtual void expandExtent(const DtManagedObjectListConstPtr& vrfObjects,
285  DtExtent& expandedExtent) const;
286 
289  bool testInvariant() const;
290 
291 
292 protected:
293 
297 
303 };
304 
305 #endif

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)