VR-Forces 4.1.1 Class Documentation
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 "vrfobjcore/vrfObjIter.h"
19 #include <list>
20 #include <vector>
21 #include <set>
22 
31 
34 
36 {
37 public:
40 
42  virtual bool operator()(const DtVrfObject *object) = 0;
43 };
44 
46 
48 {
49 public:
51 
53  virtual void addVrfObjects(const DtManagedObjectListConstPtr& vrfObjects) = 0;
54 
58  virtual void removeVrfObject(DtVrfObject * vrfObject) = 0;
59 
63  virtual bool setResolutions(unsigned int xRes, unsigned int yRes,
64  unsigned int zRes) = 0;
65 
68  virtual void clearVrfObjects() = 0;
69 
80  virtual void reset(const DtManagedObjectListConstPtr& vrfObjects) = 0;
81 
82 
85 
96 
97  virtual bool getVrfObjects(const DtExtent& extent, std::set<DtVrfObject*>& objects) = 0;
98  virtual bool getVrfObjects(const DtExtent& extent, std::set<const DtVrfObject*>& objects) const = 0;
99 
100  virtual bool getVrfObjects(DtVrfObjectPredicate& predicate, const DtExtent& extent,
101  std::set<DtVrfObject*>& objects) = 0;
102  virtual bool getVrfObjects(DtVrfObjectPredicate& predicate, const DtExtent& extent,
103  std::set<const DtVrfObject*>& objects) const = 0;
104 
105  virtual bool getVrfObjects(DtChord& chord, std::list<DtVrfObject*>& objects) = 0;
106  virtual bool getVrfObjects(DtChord& chord, std::list<const DtVrfObject*>& objects) const = 0;
107 
108  virtual bool getVrfObjects(DtVrfObjectPredicate& predicate, DtChord& chord,
109  std::list<DtVrfObject*>& objects) = 0;
110  virtual bool getVrfObjects(DtVrfObjectPredicate& predicate, DtChord& chord,
111  std::list<const DtVrfObject*>& objects) const = 0;
113 
124 
125  virtual void visitVrfObjects(const DtExtent& extent, DtSpatialSelectionFunctor &callback) const = 0;
126  virtual void visitVrfObjects(const DtChord& chord, DtSpatialSelectionFunctor& callback) const = 0;
127 };
128 
130 
132 {
133 public:
135  typedef std::vector<DtVrfObject*> DtNonSpatialContainer;
136  typedef DtNonSpatialContainer::iterator DtNonSpatialVrfObjectIter;
137  typedef DtNonSpatialContainer::const_iterator DtNonSpatialVrfObjectConstIter;
138 
139  typedef std::set<DtVrfObject*> DtVrfObjectUniqueContainer;
140  typedef std::list<DtVrfObject*> DtVrfObjectContainer;
141 
142 
146  DtSpatialVrfObjectManager(unsigned int xRes = 1, unsigned int yRes = 1,
147  unsigned int zRes = 1);
148 
150  virtual ~DtSpatialVrfObjectManager();
151 
152 private:
155  DtSpatialVrfObjectManager& operator=(const DtSpatialVrfObjectManager& original);
156 
157 public:
158 
164  virtual bool initialize(const DtManagedObjectListConstPtr& vrfObjects,
165  unsigned int cellCountX, unsigned int cellCountY, unsigned int cellCountZ);
166 
171  virtual void addVrfObjects(const DtManagedObjectListConstPtr& vrfObjects);
172 
176  virtual void removeVrfObject(DtVrfObject * vrfObject);
177 
180  virtual void clearVrfObjects();
181 
182  virtual bool setResolutions(unsigned int xRes, unsigned int yRes,
183  unsigned int zRes);
184 
186  virtual unsigned int xResolution() const;
188  virtual unsigned int yResolution() const;
190  virtual unsigned int zResolution() const;
191 
193  virtual void resolutions(unsigned int& xRes, unsigned int& yRes,
194  unsigned int& zRes) const;
195 
206  virtual void reset(const DtManagedObjectListConstPtr& vrfObjects);
207 
208 
211 
220 
221  bool getVrfObjects(const DtExtent& extent, std::set<DtVrfObject*>& objects);
222  bool getVrfObjects(const DtExtent& extent, std::set<const DtVrfObject*>& objects) const;
223 
224  bool getVrfObjects(DtVrfObjectPredicate& predicate, const DtExtent& extent,
225  std::set<DtVrfObject*>& objects);
226  bool getVrfObjects(DtVrfObjectPredicate& predicate, const DtExtent& extent,
227  std::set<const DtVrfObject*>& objects) const;
228 
229  bool getVrfObjects(DtChord& chord, std::list<DtVrfObject*>& objects);
230  bool getVrfObjects(DtChord& chord, std::list<const DtVrfObject*>& objects) const;
231 
232  bool getVrfObjects(DtVrfObjectPredicate& predicate, DtChord& chord,
233  std::list<DtVrfObject*>& objects);
234  bool getVrfObjects(DtVrfObjectPredicate& predicate, DtChord& chord,
235  std::list<const DtVrfObject*>& objects) const;
237 
248 
249  void visitVrfObjects(const DtExtent& extent, DtSpatialSelectionFunctor &callback) const;
250  void visitVrfObjects(const DtChord& chord, DtSpatialSelectionFunctor& callback) const;
251 
253  virtual const DtSpatialContainer* spatialContainer() const;
254  virtual DtSpatialContainer* spatialContainer();
255 
257  virtual const DtNonSpatialContainer* nonSpatiallyOrganizedObjects() const;
258  virtual DtNonSpatialContainer* nonSpatiallyOrganizedObjects();
259 
260 protected:
261 
265  virtual bool createSpatialContainer(const DtExtent& extent, unsigned int cellCountX,
266  unsigned int cellCountY, unsigned int cellCountZ);
267 
277  virtual void setExtent(const DtManagedObjectListConstPtr& vrfObjects);
278 
281  virtual void expandExtent(const DtManagedObjectListConstPtr& vrfObjects,
282  DtExtent& expandedExtent) const;
283 
286  bool testInvariant() const;
287 
288 
289 protected:
290 
294 
300 };
301 
302 #endif

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)