Index: src/core/raster/qgsrasterlayer.cpp =================================================================== --- src/core/raster/qgsrasterlayer.cpp (revisión: 7951) +++ src/core/raster/qgsrasterlayer.cpp (revisión: 7952) @@ -392,7 +392,6 @@ { mUserDefinedRGBMinMaxFlag = false; //defaults needed to bypass stretch mUserDefinedGrayMinMaxFlag = false; - setContrastEnhancementAlgorithm(QgsContrastEnhancement::NO_STRETCH); //defaults needed to bypass stretch mRasterShader = new QgsRasterShader(); @@ -579,6 +578,8 @@ mContrastEnhancementList.append(myContrastEnhancement); } + setContrastEnhancementAlgorithm(QgsContrastEnhancement::STRETCH_TO_MINMAX); //defaults - Needs to be set after the Contrast list has been build + //decide what type of layer this is... //note that multiband images can have one or more 'undefindd' bands, //so we must do this check first! @@ -1440,6 +1441,12 @@ setMaximumValue(theBandNo, myGrayBandStats.mean + (mStandardDeviations * myGrayBandStats.stdDev)); setMinimumValue(theBandNo, myGrayBandStats.mean - (mStandardDeviations * myGrayBandStats.stdDev)); } + else if(QgsContrastEnhancement::NO_STRETCH != getContrastEnhancementAlgorithm() && !mUserDefinedGrayMinMaxFlag) + { + myGrayBandStats = getRasterBandStats(theBandNo); + setMaximumValue(theBandNo, myGrayBandStats.maxVal); + setMinimumValue(theBandNo, myGrayBandStats.minVal); + } QgsDebugMsg("Starting main render loop"); // print each point in myGdalScanData with equal parts R, G ,B o make it show as gray @@ -2069,7 +2076,20 @@ setMaximumValue(myBlueBandNo, myBlueBandStats.mean + (mStandardDeviations * myBlueBandStats.stdDev)); setMinimumValue(myBlueBandNo, myBlueBandStats.mean - (mStandardDeviations * myBlueBandStats.stdDev)); } + else if(QgsContrastEnhancement::NO_STRETCH != getContrastEnhancementAlgorithm() && !mUserDefinedRGBMinMaxFlag) + { + myRedBandStats = getRasterBandStats(myRedBandNo); + myGreenBandStats = getRasterBandStats(myGreenBandNo); + myBlueBandStats = getRasterBandStats(myBlueBandNo); + setMaximumValue(myRedBandNo, myRedBandStats.maxVal); + setMinimumValue(myRedBandNo, myRedBandStats.minVal); + setMaximumValue(myGreenBandNo, myGreenBandStats.maxVal); + setMinimumValue(myGreenBandNo, myGreenBandStats.minVal); + setMaximumValue(myBlueBandNo, myBlueBandStats.maxVal); + setMinimumValue(myBlueBandNo, myBlueBandStats.minVal); + } + //Read and display pixels double myRedValue = 0.0; double myGreenValue = 0.0;