Skip to content

Commit 6022143

Browse files
committed
Add backward compatibility code to rasterlayer and fix render checker. Landsat basic passes now
1 parent 5b09b96 commit 6022143

File tree

2 files changed

+66
-5
lines changed

2 files changed

+66
-5
lines changed

src/core/raster/qgsrasterlayer.cpp

+64-5
Original file line numberDiff line numberDiff line change
@@ -2613,13 +2613,72 @@ void QgsRasterLayer::setColorShadingAlgorithm( QString theShaderAlgorithm )
26132613

26142614
void QgsRasterLayer::setContrastEnhancementAlgorithm( QgsContrastEnhancement::ContrastEnhancementAlgorithm theAlgorithm, bool theGenerateLookupTableFlag )
26152615
{
2616-
QList<QgsContrastEnhancement>::iterator myIterator = mContrastEnhancementList.begin();
2617-
while ( myIterator != mContrastEnhancementList.end() )
2616+
if ( !mRenderer || !mDataProvider )
26182617
{
2619-
( *myIterator ).setContrastEnhancementAlgorithm( theAlgorithm, theGenerateLookupTableFlag );
2620-
++myIterator;
2618+
return;
2619+
}
2620+
2621+
QString rendererType = mRenderer->type();
2622+
if ( rendererType == "singlebandgray" )
2623+
{
2624+
QgsSingleBandGrayRenderer* gr = dynamic_cast<QgsSingleBandGrayRenderer*>( mRenderer );
2625+
if ( gr )
2626+
{
2627+
int grayBand = gr->grayBand();
2628+
if ( grayBand == -1 )
2629+
{
2630+
return;
2631+
}
2632+
QgsRasterDataProvider::DataType dataType = ( QgsRasterDataProvider::DataType )mDataProvider->dataType( grayBand );
2633+
QgsContrastEnhancement* ce = new QgsContrastEnhancement(( QgsContrastEnhancement::QgsRasterDataType )dataType );
2634+
ce->setContrastEnhancementAlgorithm( theAlgorithm, theGenerateLookupTableFlag );
2635+
ce->setMinimumValue( mDataProvider->minimumValue( grayBand ) );
2636+
ce->setMaximumValue( mDataProvider->maximumValue( grayBand ) );
2637+
gr->setContrastEnhancement( ce );
2638+
}
2639+
}
2640+
else if ( rendererType == "multibandcolor" )
2641+
{
2642+
QgsMultiBandColorRenderer* cr = dynamic_cast<QgsMultiBandColorRenderer*>( mRenderer );
2643+
if ( cr )
2644+
{
2645+
//red enhancement
2646+
int redBand = cr->redBand();
2647+
if ( redBand != -1 )
2648+
{
2649+
QgsRasterDataProvider::DataType redType = ( QgsRasterDataProvider::DataType )mDataProvider->dataType( redBand );
2650+
QgsContrastEnhancement* redEnhancement = new QgsContrastEnhancement(( QgsContrastEnhancement::QgsRasterDataType )redType );
2651+
redEnhancement->setContrastEnhancementAlgorithm( theAlgorithm, theGenerateLookupTableFlag );
2652+
redEnhancement->setMinimumValue( mDataProvider->minimumValue( redBand ) );
2653+
redEnhancement->setMaximumValue( mDataProvider->maximumValue( redBand ) );
2654+
cr->setRedContrastEnhancement( redEnhancement );
2655+
}
2656+
2657+
//green enhancement
2658+
int greenBand = cr->greenBand();
2659+
if ( greenBand != -1 )
2660+
{
2661+
QgsRasterDataProvider::DataType greenType = ( QgsRasterDataProvider::DataType )mDataProvider->dataType( cr->greenBand() );
2662+
QgsContrastEnhancement* greenEnhancement = new QgsContrastEnhancement(( QgsContrastEnhancement::QgsRasterDataType )greenType );
2663+
greenEnhancement->setContrastEnhancementAlgorithm( theAlgorithm, theGenerateLookupTableFlag );
2664+
greenEnhancement->setMinimumValue( mDataProvider->minimumValue( greenBand ) );
2665+
greenEnhancement->setMaximumValue( mDataProvider->maximumValue( greenBand ) );
2666+
cr->setGreenContrastEnhancement( greenEnhancement );
2667+
}
2668+
2669+
//blue enhancement
2670+
int blueBand = cr->blueBand();
2671+
if ( blueBand != -1 )
2672+
{
2673+
QgsRasterDataProvider::DataType blueType = ( QgsRasterDataProvider::DataType )mDataProvider->dataType( cr->blueBand() );
2674+
QgsContrastEnhancement* blueEnhancement = new QgsContrastEnhancement(( QgsContrastEnhancement::QgsRasterDataType )blueType );
2675+
blueEnhancement->setContrastEnhancementAlgorithm( theAlgorithm, theGenerateLookupTableFlag );
2676+
blueEnhancement->setMinimumValue( mDataProvider->minimumValue( blueBand ) );
2677+
blueEnhancement->setMaximumValue( mDataProvider->maximumValue( blueBand ) );
2678+
cr->setBlueContrastEnhancement( blueEnhancement );
2679+
}
2680+
}
26212681
}
2622-
mContrastEnhancementAlgorithm = theAlgorithm;
26232682
}
26242683

26252684
void QgsRasterLayer::setContrastEnhancementAlgorithm( QString theAlgorithm, bool theGenerateLookupTableFlag )

tests/src/core/qgsrenderchecker.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,8 @@ bool QgsRenderChecker::runTest( QString theTestName,
140140
QImage myImage( myExpectedImage.width(),
141141
myExpectedImage.height(),
142142
QImage::Format_RGB32 );
143+
myImage.setDotsPerMeterX( myExpectedImage.dotsPerMeterX() );
144+
myImage.setDotsPerMeterY( myExpectedImage.dotsPerMeterY() );
143145
myImage.fill( qRgb( 152, 219, 249 ) );
144146
QPainter myPainter( &myImage );
145147
myPainter.setRenderHint( QPainter::Antialiasing );

0 commit comments

Comments
 (0)