Changeset 2726
- Timestamp:
- Nov 19, 2009, 11:19:39 AM (15 years ago)
- Location:
- trunk/source
- Files:
-
- 4 edited
-
headers/geos/operation/polygonize/PolygonizeGraph.h (modified) (1 diff)
-
headers/geos/operation/polygonize/Polygonizer.h (modified) (1 diff)
-
operation/polygonize/PolygonizeGraph.cpp (modified) (3 diffs)
-
operation/polygonize/Polygonizer.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/headers/geos/operation/polygonize/PolygonizeGraph.h
r2725 r2726 97 97 * Computes the EdgeRings formed by the edges in this graph. 98 98 * 99 * @return a list of the EdgeRing found by the 100 * polygonization process. 101 */ 102 std::vector<EdgeRing*>* getEdgeRings(); 99 * @param edgeRingList : the EdgeRing found by the 100 * polygonization process will be pushed here. 101 * 102 */ 103 void getEdgeRings(std::vector<EdgeRing*>& edgeRingList); 103 104 104 105 /** -
trunk/source/headers/geos/operation/polygonize/Polygonizer.h
r2567 r2726 96 96 void polygonize(); 97 97 98 void findValidRings(std::vector<EdgeRing*> *edgeRingList, 98 /// @todo : take all args by ref 99 void findValidRings(std::vector<EdgeRing*>& edgeRingList, 99 100 std::vector<EdgeRing*> *validEdgeRingList, 100 101 std::vector<geom::LineString*> *invalidRingList); -
trunk/source/operation/polygonize/PolygonizeGraph.cpp
r2725 r2726 214 214 } 215 215 216 /** 217 * Computes the EdgeRings formed by the edges in this graph. 218 * @return a list of the EdgeRing found by the polygonization process. 219 */ 220 std::vector<EdgeRing*>* 221 PolygonizeGraph::getEdgeRings() 216 /* public */ 217 void 218 PolygonizeGraph::getEdgeRings(std::vector<EdgeRing*>& edgeRingList) 222 219 { 223 220 // maybe could optimize this, since most of these pointers should … … 233 230 234 231 // find all edgerings 235 std::vector<EdgeRing*> *edgeRingList=new std::vector<EdgeRing*>();236 232 for(unsigned int i=0; i<dirEdges.size(); ++i) 237 233 { … … 240 236 if (de->isInRing()) continue; 241 237 EdgeRing *er=findEdgeRing(de); 242 edgeRingList->push_back(er); 243 } 244 return edgeRingList; 238 edgeRingList.push_back(er); 239 } 245 240 } 246 241 -
trunk/source/operation/polygonize/Polygonizer.cpp
r2567 r2726 237 237 dangles=graph->deleteDangles(); 238 238 cutEdges=graph->deleteCutEdges(); 239 vector<EdgeRing*> *edgeRingList=graph->getEdgeRings(); 239 vector<EdgeRing*> edgeRingList; 240 graph->getEdgeRings(edgeRingList); 240 241 #if GEOS_DEBUG 241 cerr<<"Polygonizer::polygonize(): "<<edgeRingList ->size()<<" edgeRings in graph"<<endl;242 cerr<<"Polygonizer::polygonize(): "<<edgeRingList.size()<<" edgeRings in graph"<<endl; 242 243 #endif 243 244 vector<EdgeRing*> *validEdgeRingList=new vector<EdgeRing*>(); … … 248 249 cerr<<" "<<invalidRingLines->size()<<" invalid"<<endl; 249 250 #endif 250 delete edgeRingList;251 251 252 252 findShellsAndHoles(validEdgeRingList); … … 266 266 } 267 267 268 void 269 Polygonizer::findValidRings(vector<EdgeRing*> *edgeRingList, vector<EdgeRing*> *validEdgeRingList, vector<LineString*> *invalidRingList) 270 { 271 for (unsigned int i=0, n=edgeRingList->size(); i<n; ++i) 272 { 273 EdgeRing *er=(*edgeRingList)[i]; 268 /* private */ 269 void 270 Polygonizer::findValidRings(vector<EdgeRing*>& edgeRingList, 271 vector<EdgeRing*> *validEdgeRingList, 272 vector<LineString*> *invalidRingList) 273 { 274 typedef vector<EdgeRing*> EdgeRingList; 275 276 for (EdgeRingList::size_type i=0, n=edgeRingList.size(); i<n; ++i) 277 { 278 EdgeRing *er = edgeRingList[i]; 274 279 if (er->isValid()) 275 280 validEdgeRingList->push_back(er);
Note:
See TracChangeset
for help on using the changeset viewer.
