21 #include <QDomDocument> 
   22 #include <QDomElement> 
   26   : mCumulativeCutLower( CUMULATIVE_CUT_LOWER )
 
   27   , mCumulativeCutUpper( CUMULATIVE_CUT_UPPER )
 
   28   , mStdDevFactor( DEFAULT_STDDEV_FACTOR )
 
   38   return mLimits == other.mLimits &&
 
   39          mExtent == other.mExtent &&
 
   40          mAccuracy == other.mAccuracy &&
 
   41          std::fabs( mCumulativeCutLower - other.mCumulativeCutLower ) < 1e-5 &&
 
   42          std::fabs( mCumulativeCutUpper - other.mCumulativeCutUpper ) < 1e-5 &&
 
   43          std::fabs( mStdDevFactor - other.mStdDevFactor ) < 1e-5;
 
   51       return QStringLiteral( 
"MinMax" );
 
   53       return QStringLiteral( 
"StdDev" );
 
   55       return QStringLiteral( 
"CumulativeCut" );
 
   59   return QStringLiteral( 
"None" );
 
   64   if ( 
limits == QLatin1String( 
"MinMax" ) )
 
   68   else if ( 
limits == QLatin1String( 
"StdDev" ) )
 
   72   else if ( 
limits == QLatin1String( 
"CumulativeCut" ) )
 
   81   switch ( minMaxExtent )
 
   84       return QStringLiteral( 
"WholeRaster" );
 
   86       return QStringLiteral( 
"CurrentCanvas" );
 
   88       return QStringLiteral( 
"UpdatedCanvas" );
 
   90   return QStringLiteral( 
"WholeRaster" );
 
   95   if ( 
extent == QLatin1String( 
"WholeRaster" ) )
 
   99   else if ( 
extent == QLatin1String( 
"CurrentCanvas" ) )
 
  103   else if ( 
extent == QLatin1String( 
"UpdatedCanvas" ) )
 
  115   if ( accuracy == 
Exact )
 
  116     return QStringLiteral( 
"Exact" );
 
  117   return QStringLiteral( 
"Estimated" );
 
  122   if ( accuracy == QLatin1String( 
"Exact" ) )
 
  130   QDomElement limitsElem = doc.createElement( QStringLiteral( 
"limits" ) );
 
  131   const QDomText limitsText = doc.createTextNode( 
limitsString( mLimits ) );
 
  132   limitsElem.appendChild( limitsText );
 
  133   parentElem.appendChild( limitsElem );
 
  136   QDomElement extentElem = doc.createElement( QStringLiteral( 
"extent" ) );
 
  137   const QDomText extentText = doc.createTextNode( 
extentString( mExtent ) );
 
  138   extentElem.appendChild( extentText );
 
  139   parentElem.appendChild( extentElem );
 
  142   QDomElement statAccuracyElem = doc.createElement( QStringLiteral( 
"statAccuracy" ) );
 
  143   const QDomText statAccuracyText = doc.createTextNode( 
statAccuracyString( mAccuracy ) );
 
  144   statAccuracyElem.appendChild( statAccuracyText );
 
  145   parentElem.appendChild( statAccuracyElem );
 
  148   QDomElement cumulativeCutLowerElem = doc.createElement( QStringLiteral( 
"cumulativeCutLower" ) );
 
  149   const QDomText cumulativeCutLowerText = doc.createTextNode( QString::number( mCumulativeCutLower ) );
 
  150   cumulativeCutLowerElem.appendChild( cumulativeCutLowerText );
 
  151   parentElem.appendChild( cumulativeCutLowerElem );
 
  154   QDomElement cumulativeCutUpperElem = doc.createElement( QStringLiteral( 
"cumulativeCutUpper" ) );
 
  155   const QDomText cumulativeCutUpperText = doc.createTextNode( QString::number( mCumulativeCutUpper ) );
 
  156   cumulativeCutUpperElem.appendChild( cumulativeCutUpperText );
 
  157   parentElem.appendChild( cumulativeCutUpperElem );
 
  160   QDomElement stdDevFactorElem = doc.createElement( QStringLiteral( 
"stdDevFactor" ) );
 
  161   const QDomText stdDevFactorText = doc.createTextNode( QString::number( mStdDevFactor ) );
 
  162   stdDevFactorElem.appendChild( stdDevFactorText );
 
  163   parentElem.appendChild( stdDevFactorElem );
 
  168   const QDomElement limitsElem = elem.firstChildElement( QStringLiteral( 
"limits" ) );
 
  169   if ( !limitsElem.isNull() )
 
  174   const QDomElement extentElem = elem.firstChildElement( QStringLiteral( 
"extent" ) );
 
  175   if ( !extentElem.isNull() )
 
  180   const QDomElement statAccuracyElem = elem.firstChildElement( QStringLiteral( 
"statAccuracy" ) );
 
  181   if ( !statAccuracyElem.isNull() )
 
  186   const QDomElement cumulativeCutLowerElem = elem.firstChildElement( QStringLiteral( 
"cumulativeCutLower" ) );
 
  187   if ( !cumulativeCutLowerElem.isNull() )
 
  189     mCumulativeCutLower = cumulativeCutLowerElem.text().toDouble();
 
  192   const QDomElement cumulativeCutUpperElem = elem.firstChildElement( QStringLiteral( 
"cumulativeCutUpper" ) );
 
  193   if ( !cumulativeCutUpperElem.isNull() )
 
  195     mCumulativeCutUpper = cumulativeCutUpperElem.text().toDouble();
 
  198   const QDomElement stdDevFactorElem = elem.firstChildElement( QStringLiteral( 
"stdDevFactor" ) );
 
  199   if ( !stdDevFactorElem.isNull() )
 
  201     mStdDevFactor = stdDevFactorElem.text().toDouble();