1 /*************************************************************************** 2 qgscurvepolygon.cpp 3 --------------------- 4 begin : August 2017 5 copyright : (C) 2017 by Martí Angelats i Ribera 6 email : marti dot angelats at psig dot cat 7 ***************************************************************************/ 8 9 /*************************************************************************** 10 * * 11 * This program is free software; you can redistribute it and/or modify * 12 * it under the terms of the GNU General Public License as published by * 13 * the Free Software Foundation; either version 2 of the License, or * 14 * (at your option) any later version. * 15 * * 16 ***************************************************************************/ 17 18 #include "qgssurface.h" 19 #include "qgspoint.h" 20 #include "qgspolygon.h" 21 #include "qgsgeos.h" 22 #include <memory> 23 isValid(QString & error,Qgis::GeometryValidityFlags flags) const24bool QgsSurface::isValid( QString &error, Qgis::GeometryValidityFlags flags ) const 25 { 26 if ( flags == 0 && mHasCachedValidity ) 27 { 28 // use cached validity results 29 error = mValidityFailureReason; 30 return error.isEmpty(); 31 } 32 33 const QgsGeos geos( this ); 34 const bool res = geos.isValid( &error, flags & Qgis::GeometryValidityFlag::AllowSelfTouchingHoles, nullptr ); 35 if ( flags == 0 ) 36 { 37 mValidityFailureReason = !res ? error : QString(); 38 mHasCachedValidity = true; 39 } 40 return res; 41 } 42 clearCache() const43void QgsSurface::clearCache() const 44 { 45 mBoundingBox = QgsRectangle(); 46 mHasCachedValidity = false; 47 mValidityFailureReason.clear(); 48 QgsAbstractGeometry::clearCache(); 49 } 50