00001 /********************************************************************** 00002 * $Id: PreparedPolygonPredicate.h 2771 2009-12-03 19:29:54Z mloskot $ 00003 * 00004 * GEOS - Geometry Engine Open Source 00005 * http://geos.refractions.net 00006 * 00007 * Copyright (C) 2006 Refractions Research Inc. 00008 * 00009 * This is free software; you can redistribute and/or modify it under 00010 * the terms of the GNU Lesser General Public Licence as published 00011 * by the Free Software Foundation. 00012 * See the COPYING file for more information. 00013 * 00014 * 00015 ********************************************************************** 00016 * 00017 * Last port: geom/prep/PreparedPolygonPredicate.java rev. 1.4 (JTS-1.10) 00018 * (2007-12-12) 00019 * 00020 **********************************************************************/ 00021 00022 #ifndef GEOS_GEOM_PREP_PREPAREDPOLYGONPREDICATE_H 00023 #define GEOS_GEOM_PREP_PREPAREDPOLYGONPREDICATE_H 00024 00025 #include <geos/geom/Coordinate.h> 00026 00027 // forward declarations 00028 namespace geos { 00029 namespace algorithm { 00030 namespace locate { 00031 class PointOnGeometryLocator; 00032 } 00033 } 00034 namespace geom { 00035 class Geometry; 00036 00037 namespace prep { 00038 class PreparedPolygon; 00039 } 00040 } 00041 namespace noding { 00042 class FastSegmentSetIntersectionFinder; 00043 } 00044 } 00045 00046 00047 namespace geos { 00048 namespace geom { // geos::geom 00049 namespace prep { // geos::geom::prep 00050 00058 class PreparedPolygonPredicate 00059 { 00060 private: 00061 // Declare type as noncopyable 00062 PreparedPolygonPredicate(const PreparedPolygonPredicate& other); 00063 PreparedPolygonPredicate& operator=(const PreparedPolygonPredicate& rhs); 00064 00065 protected: 00066 const PreparedPolygon * const prepPoly; 00067 00078 bool isAllTestComponentsInTarget(const geom::Geometry * testGeom) const; 00079 00090 bool isAllTestComponentsInTargetInterior( const geom::Geometry * testGeom) const; 00091 00102 bool isAnyTestComponentInTarget( const geom::Geometry * testGeom) const; 00103 00114 bool isAnyTestComponentInTargetInterior( const geom::Geometry * testGeom) const; 00115 00124 bool isAnyTargetComponentInAreaTest( const geom::Geometry * testGeom, const geom::Coordinate::ConstVect * targetRepPts) const; 00125 00126 public: 00132 PreparedPolygonPredicate( const PreparedPolygon * const prepPoly) 00133 : prepPoly( prepPoly) 00134 { } 00135 00136 virtual ~PreparedPolygonPredicate() 00137 { } 00138 00139 }; 00140 00141 } // namespace geos::geom::prep 00142 } // namespace geos::geom 00143 } // namespace geos 00144 00145 #endif // GEOS_GEOM_PREP_PREPAREDPOLYGONPREDICATE_H 00146 /********************************************************************** 00147 * $Log$ 00148 **********************************************************************/ 00149