void BufferOp::bufferReducedPrecision(int precisionDigits) { double sizeBasedScaleFactor=precisionScaleFactor(argGeom, distance, precisionDigits); #if GEOS_DEBUG std::cerr << "recomputing with precision scale factor = " << sizeBasedScaleFactor << std::endl; #endif assert(sizeBasedScaleFactor>0); PrecisionModel fixedPM(sizeBasedScaleFactor); bufferFixedPrecision(fixedPM); }
/*private*/ void BufferOp::computeGeometry() { #if GEOS_DEBUG std::cerr<<"BufferOp::computeGeometry: trying with original precision"<<std::endl; #endif bufferOriginalPrecision(); if (resultGeometry!=NULL) return; #if GEOS_DEBUG std::cerr << "bufferOriginalPrecision failed (" << saveException.what() << "), trying with reduced precision" << std::endl; #endif const PrecisionModel& argPM = *(argGeom->getFactory()->getPrecisionModel()); if ( argPM.getType() == PrecisionModel::FIXED ) bufferFixedPrecision(argPM); else bufferReducedPrecision(); }