Skip to content

Commit 9d372b6

Browse files
ptitjanonyalldawson
authored andcommitted
qgsrasterlayer: Remove refresh logic
This is not used anymore.
1 parent e123726 commit 9d372b6

File tree

5 files changed

+42
-131
lines changed

5 files changed

+42
-131
lines changed

python/PyQt6/core/auto_generated/raster/qgsrasterlayer.sip.in

-1
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,6 @@ Set contrast enhancement algorithm
354354
%End
355355

356356

357-
358357
virtual QString subsetString() const;
359358
%Docstring
360359
Returns the string (typically sql) used to define a subset of the layer.

python/core/auto_generated/raster/qgsrasterlayer.sip.in

-1
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,6 @@ Set contrast enhancement algorithm
354354
%End
355355

356356

357-
358357
virtual QString subsetString() const;
359358
%Docstring
360359
Returns the string (typically sql) used to define a subset of the layer.

src/core/raster/qgsrasterlayer.cpp

-109
Original file line numberDiff line numberDiff line change
@@ -1543,115 +1543,6 @@ void QgsRasterLayer::refreshContrastEnhancement( const QgsRectangle &extent )
15431543
}
15441544
}
15451545

1546-
void QgsRasterLayer::refreshRendererIfNeeded( QgsRasterRenderer *rasterRenderer,
1547-
const QgsRectangle &extent )
1548-
{
1549-
QGIS_PROTECT_QOBJECT_THREAD_ACCESS
1550-
1551-
if ( mDataProvider &&
1552-
mLastRectangleUsedByRefreshContrastEnhancementIfNeeded != extent &&
1553-
rasterRenderer->minMaxOrigin().limits() != QgsRasterMinMaxOrigin::None &&
1554-
rasterRenderer->minMaxOrigin().extent() == QgsRasterMinMaxOrigin::UpdatedCanvas )
1555-
{
1556-
refreshRenderer( rasterRenderer, extent );
1557-
}
1558-
}
1559-
1560-
void QgsRasterLayer::refreshRenderer( QgsRasterRenderer *rasterRenderer, const QgsRectangle &extent )
1561-
{
1562-
QGIS_PROTECT_QOBJECT_THREAD_ACCESS
1563-
1564-
if ( mDataProvider )
1565-
{
1566-
QgsSingleBandGrayRenderer *singleBandRenderer = nullptr;
1567-
QgsMultiBandColorRenderer *multiBandRenderer = nullptr;
1568-
QgsSingleBandPseudoColorRenderer *sbpcr = nullptr;
1569-
const QgsContrastEnhancement *ce = nullptr;
1570-
if ( ( singleBandRenderer = dynamic_cast<QgsSingleBandGrayRenderer *>( rasterRenderer ) ) )
1571-
{
1572-
ce = singleBandRenderer->contrastEnhancement();
1573-
}
1574-
else if ( ( multiBandRenderer = dynamic_cast<QgsMultiBandColorRenderer *>( rasterRenderer ) ) )
1575-
{
1576-
ce = multiBandRenderer->redContrastEnhancement();
1577-
}
1578-
else if ( ( sbpcr = dynamic_cast<QgsSingleBandPseudoColorRenderer *>( rasterRenderer ) ) )
1579-
{
1580-
mLastRectangleUsedByRefreshContrastEnhancementIfNeeded = extent;
1581-
double min;
1582-
double max;
1583-
computeMinMax( sbpcr->inputBand(),
1584-
rasterRenderer->minMaxOrigin(),
1585-
rasterRenderer->minMaxOrigin().limits(), extent,
1586-
static_cast<int>( SAMPLE_SIZE ), min, max );
1587-
sbpcr->setClassificationMin( min );
1588-
sbpcr->setClassificationMax( max );
1589-
1590-
if ( sbpcr->shader() )
1591-
{
1592-
QgsColorRampShader *colorRampShader = dynamic_cast<QgsColorRampShader *>( sbpcr->shader()->rasterShaderFunction() );
1593-
if ( colorRampShader )
1594-
{
1595-
colorRampShader->classifyColorRamp( sbpcr->inputBand(), extent, rasterRenderer->input() );
1596-
}
1597-
}
1598-
1599-
QgsSingleBandPseudoColorRenderer *r = dynamic_cast<QgsSingleBandPseudoColorRenderer *>( renderer() );
1600-
r->setClassificationMin( min );
1601-
r->setClassificationMax( max );
1602-
1603-
if ( r->shader() )
1604-
{
1605-
QgsColorRampShader *colorRampShader = dynamic_cast<QgsColorRampShader *>( r->shader()->rasterShaderFunction() );
1606-
if ( colorRampShader )
1607-
{
1608-
colorRampShader->classifyColorRamp( sbpcr->inputBand(), extent, rasterRenderer->input() );
1609-
}
1610-
}
1611-
1612-
emit repaintRequested();
1613-
emitStyleChanged();
1614-
emit rendererChanged();
1615-
return;
1616-
}
1617-
1618-
if ( ce &&
1619-
ce->contrastEnhancementAlgorithm() != QgsContrastEnhancement::NoEnhancement )
1620-
{
1621-
mLastRectangleUsedByRefreshContrastEnhancementIfNeeded = extent;
1622-
1623-
setContrastEnhancement( ce->contrastEnhancementAlgorithm(),
1624-
rasterRenderer->minMaxOrigin().limits(),
1625-
extent,
1626-
static_cast<int>( SAMPLE_SIZE ),
1627-
true,
1628-
rasterRenderer );
1629-
1630-
// Update main renderer so that the legends get updated
1631-
if ( singleBandRenderer )
1632-
static_cast<QgsSingleBandGrayRenderer *>( renderer() )->setContrastEnhancement( new QgsContrastEnhancement( * singleBandRenderer->contrastEnhancement() ) );
1633-
else if ( multiBandRenderer )
1634-
{
1635-
if ( multiBandRenderer->redContrastEnhancement() )
1636-
{
1637-
static_cast<QgsMultiBandColorRenderer *>( renderer() )->setRedContrastEnhancement( new QgsContrastEnhancement( *multiBandRenderer->redContrastEnhancement() ) );
1638-
}
1639-
if ( multiBandRenderer->greenContrastEnhancement() )
1640-
{
1641-
static_cast<QgsMultiBandColorRenderer *>( renderer() )->setGreenContrastEnhancement( new QgsContrastEnhancement( *multiBandRenderer->greenContrastEnhancement() ) );
1642-
}
1643-
if ( multiBandRenderer->blueContrastEnhancement() )
1644-
{
1645-
static_cast<QgsMultiBandColorRenderer *>( renderer() )->setBlueContrastEnhancement( new QgsContrastEnhancement( *multiBandRenderer->blueContrastEnhancement() ) );
1646-
}
1647-
}
1648-
1649-
emitStyleChanged();
1650-
emit rendererChanged();
1651-
}
1652-
}
1653-
}
1654-
16551546
QString QgsRasterLayer::subsetString() const
16561547
{
16571548
QGIS_PROTECT_QOBJECT_THREAD_ACCESS

src/core/raster/qgsrasterlayer.h

-12
Original file line numberDiff line numberDiff line change
@@ -403,12 +403,6 @@ class CORE_EXPORT QgsRasterLayer : public QgsMapLayer, public QgsAbstractProfile
403403
*/
404404
void refreshContrastEnhancement( const QgsRectangle &extent ) SIP_SKIP;
405405

406-
/**
407-
* \brief Refresh renderer with new extent, if needed
408-
* \note not available in Python bindings
409-
*/
410-
void refreshRendererIfNeeded( QgsRasterRenderer *rasterRenderer, const QgsRectangle &extent ) SIP_SKIP;
411-
412406
/**
413407
* Returns the string (typically sql) used to define a subset of the layer.
414408
* \returns The subset string or null QString if not implemented by the provider
@@ -538,9 +532,6 @@ class CORE_EXPORT QgsRasterLayer : public QgsMapLayer, public QgsAbstractProfile
538532
bool generateLookupTableFlag,
539533
QgsRasterRenderer *rasterRenderer );
540534

541-
//! Refresh renderer
542-
void refreshRenderer( QgsRasterRenderer *rasterRenderer, const QgsRectangle &extent );
543-
544535
/**
545536
* Updates the data source of the layer. The layer's renderer and legend will be preserved only
546537
* if the geometry type of the new data source matches the current geometry type of the layer.
@@ -592,9 +583,6 @@ class CORE_EXPORT QgsRasterLayer : public QgsMapLayer, public QgsAbstractProfile
592583

593584
std::unique_ptr< QgsRasterPipe > mPipe;
594585

595-
//! To save computations and possible infinite cycle of notifications
596-
QgsRectangle mLastRectangleUsedByRefreshContrastEnhancementIfNeeded;
597-
598586
QDomDocument mOriginalStyleDocument;
599587
QDomElement mOriginalStyleElement;
600588

tests/src/core/testqgsrasterlayer.cpp

+42-8
Original file line numberDiff line numberDiff line change
@@ -1008,15 +1008,16 @@ void TestQgsRasterLayer::testRefreshRendererIfNeeded()
10081008
QVERIFY( dynamic_cast<QgsMultiBandColorRenderer *>( mpLandsatRasterLayer->renderer() ) );
10091009
mMapSettings->setLayers( QList<QgsMapLayer *>() << mpLandsatRasterLayer );
10101010
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();
10121017

10131018
// Should do nothing
10141019
const QgsRectangle newExtent = QgsRectangle( 785000, 3340000, 785100, 3340100 );
10151020
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 );
10201021

10211022
// Change to UpdatedCanvas
10221023
QgsRasterMinMaxOrigin mmo = mpLandsatRasterLayer->renderer()->minMaxOrigin();
@@ -1025,9 +1026,42 @@ void TestQgsRasterLayer::testRefreshRendererIfNeeded()
10251026
mpLandsatRasterLayer->renderer()->setMinMaxOrigin( mmo );
10261027
QCOMPARE( mpLandsatRasterLayer->renderer()->minMaxOrigin().extent(), QgsRasterMinMaxOrigin::UpdatedCanvas );
10271028
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 );
10311065
}
10321066

10331067
void TestQgsRasterLayer::sample()

0 commit comments

Comments
 (0)