Branch data Line data Source code
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 : : 24 : 1 : bool QgsSurface::isValid( QString &error, int flags ) const 25 : : { 26 : 1 : if ( flags == 0 && mHasCachedValidity ) 27 : : { 28 : : // use cached validity results 29 : 0 : error = mValidityFailureReason; 30 : 0 : return error.isEmpty(); 31 : : } 32 : : 33 : 1 : QgsGeos geos( this ); 34 : 1 : bool res = geos.isValid( &error, flags & QgsGeometry::FlagAllowSelfTouchingHoles, nullptr ); 35 : 1 : if ( flags == 0 ) 36 : : { 37 : 1 : mValidityFailureReason = !res ? error : QString(); 38 : 1 : mHasCachedValidity = true; 39 : 1 : } 40 : 1 : return res; 41 : 1 : } 42 : : 43 : 5978 : void QgsSurface::clearCache() const 44 : : { 45 : 5978 : mBoundingBox = QgsRectangle(); 46 : 5978 : mHasCachedValidity = false; 47 : 5978 : mValidityFailureReason.clear(); 48 : 5978 : QgsAbstractGeometry::clearCache(); 49 : 5978 : }