@@ -1008,15 +1008,16 @@ void TestQgsRasterLayer::testRefreshRendererIfNeeded()
1008
1008
QVERIFY ( dynamic_cast <QgsMultiBandColorRenderer *>( mpLandsatRasterLayer->renderer () ) );
1009
1009
mMapSettings ->setLayers ( QList<QgsMapLayer *>() << mpLandsatRasterLayer );
1010
1010
mMapSettings ->setExtent ( mpLandsatRasterLayer->extent () );
1011
- const double initMinVal = static_cast <QgsMultiBandColorRenderer *>( mpLandsatRasterLayer->renderer () )->redContrastEnhancement ()->minimumValue ();
1011
+ const double initRedMinVal = static_cast <QgsMultiBandColorRenderer *>( mpLandsatRasterLayer->renderer () )->redContrastEnhancement ()->minimumValue ();
1012
+ const double initRedMaxVal = static_cast <QgsMultiBandColorRenderer *>( mpLandsatRasterLayer->renderer () )->redContrastEnhancement ()->maximumValue ();
1013
+ const double initGreenMinVal = static_cast <QgsMultiBandColorRenderer *>( mpLandsatRasterLayer->renderer () )->greenContrastEnhancement ()->minimumValue ();
1014
+ const double initGreenMaxVal = static_cast <QgsMultiBandColorRenderer *>( mpLandsatRasterLayer->renderer () )->greenContrastEnhancement ()->maximumValue ();
1015
+ const double initBlueMinVal = static_cast <QgsMultiBandColorRenderer *>( mpLandsatRasterLayer->renderer () )->blueContrastEnhancement ()->minimumValue ();
1016
+ const double initBlueMaxVal = static_cast <QgsMultiBandColorRenderer *>( mpLandsatRasterLayer->renderer () )->blueContrastEnhancement ()->maximumValue ();
1012
1017
1013
1018
// Should do nothing
1014
1019
const QgsRectangle newExtent = QgsRectangle ( 785000 , 3340000 , 785100 , 3340100 );
1015
1020
QVERIFY ( !mpLandsatRasterLayer->renderer ()->needsRefresh ( newExtent ) );
1016
- mpLandsatRasterLayer->refreshRendererIfNeeded ( mpLandsatRasterLayer->renderer (), newExtent );
1017
- QCOMPARE ( mpLandsatRasterLayer->renderer ()->minMaxOrigin ().limits (), QgsRasterMinMaxOrigin::MinMax );
1018
- const double minVal = static_cast <QgsMultiBandColorRenderer *>( mpLandsatRasterLayer->renderer () )->redContrastEnhancement ()->minimumValue ();
1019
- QGSCOMPARENEAR ( initMinVal, minVal, 1e-5 );
1020
1021
1021
1022
// Change to UpdatedCanvas
1022
1023
QgsRasterMinMaxOrigin mmo = mpLandsatRasterLayer->renderer ()->minMaxOrigin ();
@@ -1025,9 +1026,42 @@ void TestQgsRasterLayer::testRefreshRendererIfNeeded()
1025
1026
mpLandsatRasterLayer->renderer ()->setMinMaxOrigin ( mmo );
1026
1027
QCOMPARE ( mpLandsatRasterLayer->renderer ()->minMaxOrigin ().extent (), QgsRasterMinMaxOrigin::UpdatedCanvas );
1027
1028
QVERIFY ( mpLandsatRasterLayer->renderer ()->needsRefresh ( newExtent ) );
1028
- mpLandsatRasterLayer->refreshRendererIfNeeded ( mpLandsatRasterLayer->renderer (), newExtent );
1029
- const double newMinVal = static_cast <QgsMultiBandColorRenderer *>( mpLandsatRasterLayer->renderer () )->redContrastEnhancement ()->minimumValue ();
1030
- QGSCOMPARENOTNEAR ( initMinVal, newMinVal, 1e-5 );
1029
+
1030
+ QList<double > minValues;
1031
+ QList<double > maxValues;
1032
+ for ( const int bandIdx : mpLandsatRasterLayer->renderer ()->usesBands () )
1033
+ {
1034
+ double min;
1035
+ double max;
1036
+ mpLandsatRasterLayer->computeMinMax ( bandIdx, mmo, mmo.limits (),
1037
+ newExtent, static_cast <int >( QgsRasterLayer::SAMPLE_SIZE ),
1038
+ min, max );
1039
+ minValues.append ( min );
1040
+ maxValues.append ( max );
1041
+ }
1042
+
1043
+ const bool refreshed = mpLandsatRasterLayer->renderer ()->refresh ( newExtent, minValues, maxValues );
1044
+ QVERIFY ( refreshed );
1045
+ QVERIFY ( !mpLandsatRasterLayer->renderer ()->needsRefresh ( newExtent ) );
1046
+
1047
+ const double newRedMinVal = static_cast <QgsMultiBandColorRenderer *>( mpLandsatRasterLayer->renderer () )->redContrastEnhancement ()->minimumValue ();
1048
+ const double newRedMaxVal = static_cast <QgsMultiBandColorRenderer *>( mpLandsatRasterLayer->renderer () )->redContrastEnhancement ()->maximumValue ();
1049
+ const double newGreenMinVal = static_cast <QgsMultiBandColorRenderer *>( mpLandsatRasterLayer->renderer () )->greenContrastEnhancement ()->minimumValue ();
1050
+ const double newGreenMaxVal = static_cast <QgsMultiBandColorRenderer *>( mpLandsatRasterLayer->renderer () )->greenContrastEnhancement ()->maximumValue ();
1051
+ const double newBlueMinVal = static_cast <QgsMultiBandColorRenderer *>( mpLandsatRasterLayer->renderer () )->blueContrastEnhancement ()->minimumValue ();
1052
+ const double newBlueMaxVal = static_cast <QgsMultiBandColorRenderer *>( mpLandsatRasterLayer->renderer () )->blueContrastEnhancement ()->maximumValue ();
1053
+ QGSCOMPARENOTNEAR ( initRedMinVal, newRedMinVal, 1e-5 );
1054
+ QGSCOMPARENOTNEAR ( initRedMaxVal, newRedMaxVal, 1e-5 );
1055
+ QGSCOMPARENOTNEAR ( initGreenMinVal, newGreenMinVal, 1e-5 );
1056
+ QGSCOMPARENOTNEAR ( initGreenMaxVal, newGreenMaxVal, 1e-5 );
1057
+ QGSCOMPARENOTNEAR ( initBlueMinVal, newBlueMinVal, 1e-5 );
1058
+ QGSCOMPARENOTNEAR ( initBlueMaxVal, newBlueMaxVal, 1e-5 );
1059
+ QGSCOMPARENEAR ( newRedMinVal, 208.0 , 1e-5 );
1060
+ QGSCOMPARENEAR ( newRedMaxVal, 225.0 , 1e-5 );
1061
+ QGSCOMPARENEAR ( newGreenMinVal, 162.0 , 1e-5 );
1062
+ QGSCOMPARENEAR ( newGreenMaxVal, 172.0 , 1e-5 );
1063
+ QGSCOMPARENEAR ( newBlueMinVal, 90.0 , 1e-5 );
1064
+ QGSCOMPARENEAR ( newBlueMaxVal, 94.0 , 1e-5 );
1031
1065
}
1032
1066
1033
1067
void TestQgsRasterLayer::sample ()
0 commit comments