37 changes: 13 additions & 24 deletions src/core/raster/qgsrasterrendererregistry.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -154,12 +154,16 @@ QgsRasterRenderer* QgsRasterRendererRegistry::defaultRendererForDrawingStyle( co
{
int grayBand = 1;
renderer = new QgsSingleBandGrayRenderer( provider, grayBand );

QgsContrastEnhancement* ce = new QgsContrastEnhancement(( QgsContrastEnhancement::QgsRasterDataType )(
provider->dataType( grayBand ) ) );

// Default contrast enhancement is set from QgsRasterLayer, it has already setContrastEnhancementAlgorithm(). Default enhancement must only be set if default style was not loaded (to avoid stats calculation).
// TODO: reconsider moving contrast setting of enhancement somwhere down from QgsRasterLayer
#if 0
QSettings s;
QgsContrastEnhancement::ContrastEnhancementAlgorithm ceAlgorithm;
ceAlgorithm = ( QgsContrastEnhancement::ContrastEnhancementAlgorithm )QgsRasterRendererRegistry::contrastEnhancementFromString(
ceAlgorithm = QgsContrastEnhancement::contrastEnhancementAlgorithmFromString(
s.value( "/Raster/defaultContrastEnhancementAlgorithm", "NoEnhancement" ).toString() );
ce->setContrastEnhancementAlgorithm( ceAlgorithm );

Expand All @@ -171,6 +175,7 @@ QgsRasterRenderer* QgsRasterRendererRegistry::defaultRendererForDrawingStyle( co
ce->setMinimumValue( minValue );
ce->setMaximumValue( maxValue );
}
#endif
(( QgsSingleBandGrayRenderer* )renderer )->setContrastEnhancement( ce );
break;
}
Expand All @@ -179,6 +184,7 @@ QgsRasterRenderer* QgsRasterRendererRegistry::defaultRendererForDrawingStyle( co
int bandNo = 1;
double minValue = 0;
double maxValue = 0;
// TODO: avoid calculating statistics if not necessary (default style loaded)
minMaxValuesForBand( bandNo, provider, minValue, maxValue );
QgsRasterShader* shader = new QgsRasterShader( minValue, maxValue );
renderer = new QgsSingleBandPseudoColorRenderer( provider, bandNo, shader );
Expand All @@ -187,13 +193,15 @@ QgsRasterRenderer* QgsRasterRendererRegistry::defaultRendererForDrawingStyle( co
case QgsRasterLayer::MultiBandColor:
{
QSettings s;
#if 0
QgsContrastEnhancement::ContrastEnhancementAlgorithm ceAlgorithm;
ceAlgorithm = ( QgsContrastEnhancement::ContrastEnhancementAlgorithm )QgsRasterRendererRegistry::contrastEnhancementFromString(
ceAlgorithm = QgsContrastEnhancement::contrastEnhancementAlgorithmFromString(
s.value( "/Raster/defaultContrastEnhancementAlgorithm", "NoEnhancement" ).toString() );

QgsContrastEnhancement* redEnhancement = 0;
QgsContrastEnhancement* greenEnhancement = 0;
QgsContrastEnhancement* blueEnhancement = 0;
#endif

int redBand = s.value( "/Raster/defaultRedBand", 1 ).toInt();
if ( redBand < 0 || redBand > provider->bandCount() )
Expand All @@ -211,6 +219,7 @@ QgsRasterRenderer* QgsRasterRendererRegistry::defaultRendererForDrawingStyle( co
blueBand = -1;
}

#if 0
double minValue = 0;
double maxValue = 0;
if ( ceAlgorithm != QgsContrastEnhancement::NoEnhancement )
Expand Down Expand Up @@ -248,6 +257,8 @@ QgsRasterRenderer* QgsRasterRendererRegistry::defaultRendererForDrawingStyle( co

renderer = new QgsMultiBandColorRenderer( provider, redBand, greenBand, blueBand,
redEnhancement, greenEnhancement, blueEnhancement );
#endif
renderer = new QgsMultiBandColorRenderer( provider, redBand, greenBand, blueBand );
break;
}
case QgsRasterLayer::SingleBandColorDataStyle:
Expand Down Expand Up @@ -341,25 +352,3 @@ bool QgsRasterRendererRegistry::minMaxValuesForBand( int band, QgsRasterDataProv
}
return true;
}

int QgsRasterRendererRegistry::contrastEnhancementFromString( const QString& contrastEnhancementString )
{
if ( contrastEnhancementString == "StretchToMinimumMaximum" )
{
return ( int )QgsContrastEnhancement::StretchToMinimumMaximum;
}
else if ( contrastEnhancementString == "StretchAndClipToMinimumMaximum" )
{
return ( int )QgsContrastEnhancement::StretchAndClipToMinimumMaximum;
}
else if ( contrastEnhancementString == "ClipToMinimumMaximum" )
{
return ( int )QgsContrastEnhancement::ClipToMinimumMaximum;
}
else
{
return ( int )QgsContrastEnhancement::NoEnhancement;
}
}


1 change: 0 additions & 1 deletion src/core/raster/qgsrasterrendererregistry.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@ class CORE_EXPORT QgsRasterRendererRegistry

//read min/max values from
bool minMaxValuesForBand( int band, QgsRasterDataProvider* provider, double& minValue, double& maxValue ) const;
static int contrastEnhancementFromString( const QString& contrastEnhancementString );
};

#endif // QGSRASTERRENDERERREGISTRY_H
440 changes: 276 additions & 164 deletions src/ui/qgsoptionsbase.ui

Large diffs are not rendered by default.