37 , visibleName( visibleName )
38 , rendererCreateFunction( rendererFunction )
39 , widgetCreateFunction( widgetFunction )
66 mEntries.insert( entry.
name, entry );
67 mSortedEntries.append( entry.
name );
72 if ( !mEntries.contains( rendererName ) )
76 mEntries[rendererName].widgetCreateFunction = func;
81 QHash< QString, QgsRasterRendererRegistryEntry >::const_iterator it = mEntries.find( rendererName );
82 if ( it == mEntries.constEnd() )
92 return mSortedEntries;
97 QList< QgsRasterRendererRegistryEntry > result;
99 QHash< QString, QgsRasterRendererRegistryEntry >::const_iterator it = mEntries.constBegin();
100 for ( ; it != mEntries.constEnd(); ++it )
102 result.push_back( it.value() );
109 if ( !provider || provider->
bandCount() < 1 )
116 switch ( drawingStyle )
146 minMaxValuesForBand( bandNo, provider, minValue, maxValue );
155 int redBand = s.
value( QStringLiteral(
"/Raster/defaultRedBand" ), 1 ).toInt();
156 if ( redBand < 0 || redBand > provider->
bandCount() )
160 int greenBand = s.
value( QStringLiteral(
"/Raster/defaultGreenBand" ), 2 ).toInt();
161 if ( greenBand < 0 || greenBand > provider->
bandCount() )
165 int blueBand = s.
value( QStringLiteral(
"/Raster/defaultBlueBand" ), 3 ).toInt();
166 if ( blueBand < 0 || blueBand > provider->
bandCount() )
184 int bandCount = renderer->
usesBands().size();
185 if ( bandCount == 1 )
187 QList<QgsRasterTransparency::TransparentSingleValuePixel> transparentSingleList;
190 else if ( bandCount == 3 )
192 QList<QgsRasterTransparency::TransparentThreeValuePixel> transparentThreeValueList;
199 bool QgsRasterRendererRegistry::minMaxValuesForBand(
int band,
QgsRasterDataProvider *provider,
double &minValue,
double &maxValue )
const 210 if ( s.
value( QStringLiteral(
"/Raster/useStandardDeviation" ),
false ).toBool() )
214 double stdDevFactor = s.
value( QStringLiteral(
"/Raster/defaultStandardDeviation" ), 2.0 ).toDouble();
215 double diff = stdDevFactor * stats.
stdDev;
216 minValue = stats.
mean - diff;
217 maxValue = stats.
mean + diff;
virtual int bandCount() const =0
Get number of bands.
Interface for all raster shaders.
static QgsRasterRenderer * create(const QDomElement &elem, QgsRasterInterface *input)
static QgsRasterRenderer * create(const QDomElement &elem, QgsRasterInterface *input)
void setTransparentThreeValuePixelList(const QList< QgsRasterTransparency::TransparentThreeValuePixel > &newList)
Mutator for transparentThreeValuePixelList.
Renderer for paletted raster images.
This class is a composition of two QSettings instances:
DrawingStyle
This enumerator describes the different kinds of drawing we can do.
static QgsRasterRenderer * create(const QDomElement &elem, QgsRasterInterface *input)
virtual QList< QgsColorRampShader::ColorRampItem > colorTable(int bandNo) const
virtual QList< int > usesBands() const
Returns a list of band numbers used by the renderer.
QgsRasterRendererRegistry()
QgsRasterRenderer *(* QgsRasterRendererCreateFunc)(const QDomElement &, QgsRasterInterface *input)
DataType
Raster data types.
double maximumValue
The maximum cell value in the raster band.
static QIcon getThemeIcon(const QString &name)
Helper to get a theme icon.
QgsRasterRendererRegistryEntry()=default
Constructor for QgsRasterRendererRegistryEntry.
Raster renderer pipe for single band color.
bool rendererData(const QString &rendererName, QgsRasterRendererRegistryEntry &data) const
double stdDev
The standard deviation of the cell values.
The RasterBandStats struct is a container for statistics about a single raster band.
double mean
The mean cell value for the band. NO_DATA values are excluded.
QList< QgsPalettedRasterRenderer::Class > ClassData
Map of value to class properties.
void insert(const QgsRasterRendererRegistryEntry &entry)
QgsRasterRenderer * defaultRendererForDrawingStyle(QgsRaster::DrawingStyle drawingStyle, QgsRasterDataProvider *provider) const
Creates a default renderer for a raster drawing style (considering user options such as default contr...
Raster renderer pipe for single band pseudocolor.
Raster renderer pipe for single band gray.
QgsRasterRendererWidget *(* QgsRasterRendererWidgetCreateFunc)(QgsRasterLayer *, const QgsRectangle &extent)
static QgsRasterRenderer * create(const QDomElement &elem, QgsRasterInterface *input)
QStringList renderersList() const
void setTransparentSingleValuePixelList(const QList< QgsRasterTransparency::TransparentSingleValuePixel > &newList)
Mutator for transparentSingleValuePixelList.
Registry for raster renderer entries.
virtual QgsRasterBandStats bandStatistics(int bandNo, int stats=QgsRasterBandStats::All, const QgsRectangle &extent=QgsRectangle(), int sampleSize=0, QgsRasterBlockFeedback *feedback=nullptr)
Get band statistics.
static QgsRasterRenderer * create(const QDomElement &elem, QgsRasterInterface *input)
QVariant value(const QString &key, const QVariant &defaultValue=QVariant(), const Section section=NoSection) const
Returns the value for setting key.
double minimumValue
The minimum cell value in the raster band.
Renderer for multiband images with the color components.
Manipulates raster pixel values so that they enhanceContrast or clip into a specified numerical range...
Defines the list of pixel values to be considered as transparent or semi transparent when rendering r...
QList< QgsRasterRendererRegistryEntry > entries() const
static QgsRasterRenderer * create(const QDomElement &elem, QgsRasterInterface *input)
Factory method to create a new renderer.
void setRasterTransparency(QgsRasterTransparency *t)
static QgsPalettedRasterRenderer::ClassData colorTableToClassData(const QList< QgsColorRampShader::ColorRampItem > &table)
Converts a raster color table to paletted renderer class data.
void insertWidgetFunction(const QString &rendererName, QgsRasterRendererWidgetCreateFunc func)
Raster renderer pipe that applies colors to a raster.
Qgis::DataType dataType(int bandNo) const override=0
Returns data type for the band specified by number.
Base class for raster data providers.