Skip to content

Commit

Permalink
Also use ramp based legend nodes for mesh layers
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Dec 16, 2020
1 parent bffd8eb commit 7fac048
Showing 1 changed file with 22 additions and 4 deletions.
26 changes: 22 additions & 4 deletions src/core/qgsmaplayerlegend.cpp
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include "qgssymbollayerutils.h" #include "qgssymbollayerutils.h"
#include "qgspointcloudrenderer.h" #include "qgspointcloudrenderer.h"
#include "qgsrasterrenderer.h" #include "qgsrasterrenderer.h"
#include "qgscolorramplegendnode.h"


QgsMapLayerLegend::QgsMapLayerLegend( QObject *parent ) QgsMapLayerLegend::QgsMapLayerLegend( QObject *parent )
: QObject( parent ) : QObject( parent )
Expand Down Expand Up @@ -471,11 +472,28 @@ QList<QgsLayerTreeModelLegendNode *> QgsDefaultMeshLayerLegend::createLayerTreeM
if ( indexScalar > -1 ) if ( indexScalar > -1 )
{ {
QgsMeshRendererScalarSettings settings = rendererSettings.scalarSettings( indexScalar ); QgsMeshRendererScalarSettings settings = rendererSettings.scalarSettings( indexScalar );
QgsLegendColorList items; const QgsColorRampShader shader = settings.colorRampShader();
settings.colorRampShader().legendSymbologyItems( items ); switch ( shader.colorRampType() )
for ( const QPair< QString, QColor > &item : qgis::as_const( items ) )
{ {
nodes << new QgsRasterSymbolLegendNode( nodeLayer, item.second, item.first ); case QgsColorRampShader::Interpolated:
// for interpolated shaders we use a ramp legend node
nodes << new QgsColorRampLegendNode( nodeLayer, shader.sourceColorRamp()->clone(),
QString::number( shader.minimumValue() ),
QString::number( shader.maximumValue() ) );
break;

case QgsColorRampShader::Discrete:
case QgsColorRampShader::Exact:
{
// for all others we use itemised lists
QgsLegendColorList items;
settings.colorRampShader().legendSymbologyItems( items );
for ( const QPair< QString, QColor > &item : items )
{
nodes << new QgsRasterSymbolLegendNode( nodeLayer, item.second, item.first );
}
break;
}
} }
} }


Expand Down

0 comments on commit 7fac048

Please sign in to comment.