Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | Related Pages

PolygonExtracter.h

00001 /**********************************************************************
00002  * $Id: PolygonExtracter.h 2556 2009-06-06 22:22:28Z strk $
00003  *
00004  * GEOS - Geometry Engine Open Source
00005  * http://geos.refractions.net
00006  *
00007  * Copyright (C) 2001-2002 Vivid Solutions Inc.
00008  * Copyright (C) 2006 Refractions Research Inc.
00009  *
00010  * This is free software; you can redistribute and/or modify it under
00011  * the terms of the GNU Lesser General Public Licence as published
00012  * by the Free Software Foundation. 
00013  * See the COPYING file for more information.
00014  *
00015  **********************************************************************/
00016 
00017 #ifndef GEOS_GEOM_UTIL_POLYGONEXTRACTER_H
00018 #define GEOS_GEOM_UTIL_POLYGONEXTRACTER_H
00019 
00020 #include <geos/export.h>
00021 #include <geos/geom/GeometryFilter.h>
00022 #include <geos/geom/Polygon.h>
00023 #include <geos/platform.h>
00024 #include <vector>
00025 
00026 namespace geos {
00027 namespace geom { // geos.geom
00028 namespace util { // geos.geom.util
00029 
00033 class GEOS_DLL PolygonExtracter: public GeometryFilter {
00034 
00035 private:
00036 
00038         std::vector<const Polygon*>& comps;
00039 
00040 public:
00041 
00049         static void getPolygons(const Geometry &geom, std::vector<const Polygon*>& ret)
00050         {
00051                 PolygonExtracter pe(ret);
00052                 geom.apply_ro(&pe);
00053         }
00054 
00059         PolygonExtracter(std::vector<const Polygon*>& newComps)
00060                 :
00061                 comps(newComps)
00062                 {}
00063 
00064         void filter_rw(Geometry *geom) {
00065                 if ( const Polygon *p=dynamic_cast<const Polygon *>(geom) )
00066                 {
00067                         comps.push_back(p);
00068                 }
00069         }
00070 
00071         void filter_ro(const Geometry *geom)
00072         {
00073                 if ( const Polygon *p=dynamic_cast<const Polygon *>(geom) )
00074                 {
00075                         comps.push_back(p);
00076                 }
00077         }
00078 
00079 };
00080 
00081 } // namespace geos.geom.util
00082 } // namespace geos.geom
00083 } // namespace geos
00084 
00085 #endif
00086 
00087 /**********************************************************************
00088  * $Log$
00089  * Revision 1.1  2006/03/09 16:46:49  strk
00090  * geos::geom namespace definition, first pass at headers split
00091  *
00092  **********************************************************************/

Generated on Thu Jun 11 06:17:01 2009 for GEOS by  doxygen 1.4.4