18#ifndef QGSRASTERINTERFACE_H
19#define QGSRASTERINTERFACE_H
33#include <QCoreApplication>
37using namespace Qt::StringLiterals;
90 void appendError(
const QString &error ) { mErrors.append( error ); }
98 QStringList
errors()
const {
return mErrors; }
122 bool mPreviewOnly =
false;
125 bool mRenderPartialOutput =
false;
162 sipType = sipType_QgsBrightnessContrastFilter;
164 sipType = sipType_QgsHueSaturationFilter;
167 sipType = sipType_QgsRasterDataProvider;
173 sipType = sipType_QgsRasterNuller;
175 sipType = sipType_QgsRasterProjector;
179 sipType = sipType_QgsHillshadeRenderer;
181 sipType = sipType_QgsMultiBandColorRenderer;
183 sipType = sipType_QgsPalettedRasterRenderer;
185 sipType = sipType_QgsSingleBandColorDataRenderer;
187 sipType = sipType_QgsSingleBandGrayRenderer;
189 sipType = sipType_QgsSingleBandPseudoColorRenderer;
191 sipType = sipType_QgsRasterSingleColorRenderer;
193 sipType = sipType_QgsRasterContourRenderer;
195 sipType = sipType_QgsRasterRenderer;
198 sipType = sipType_QgsRasterResampleFilter;
262 virtual QString generateBandName(
int bandNumber )
const;
270 virtual QString colorInterpretationName(
int bandNumber )
const;
277 QString displayBandName(
int bandNumber )
const;
301 virtual bool on()
const {
return mOn; }
349 Qgis::RasterBandStatistics stats =
Qgis::RasterBandStatistic::All,
366 virtual
bool hasStatistics(
int bandNo,
367 Qgis::RasterBandStatistics stats =
Qgis::RasterBandStatistic::All,
369 int sampleSize = 0 );
388 double minimum = std::numeric_limits<double>::quiet_NaN(),
389 double maximum = std::numeric_limits<double>::quiet_NaN(),
392 bool includeOutOfRange =
false,
397 SIP_PYOBJECT minimum = Py_None,
398 SIP_PYOBJECT maximum = Py_None,
401 bool includeOutOfRange =
false,
405 double minimum = 0.0,
406 double maximum = 0.0,
409 bool includeOutOfRange =
false,
416 minimum = std::numeric_limits<double>::quiet_NaN();
420 minimum = PyFloat_AsDouble( a2 );
425 maximum = std::numeric_limits<double>::quiet_NaN();
429 maximum = PyFloat_AsDouble( a3 );
432 QgsRasterHistogram *h =
new QgsRasterHistogram( sipCpp->histogram( a0, a1, minimum, maximum, *a4, a5, a6, a7 ) );
433 return sipConvertFromType( h, sipType_QgsRasterHistogram, Py_None );
443 virtual bool hasHistogram(
int bandNo,
445 double minimum = std::numeric_limits<double>::quiet_NaN(),
446 double maximum = std::numeric_limits<double>::quiet_NaN(),
447 const QgsRectangle &extent = QgsRectangle(),
449 bool includeOutOfRange =
false );
451 virtual bool hasHistogram(
int bandNo,
453 SIP_PYOBJECT minimum = Py_None,
454 SIP_PYOBJECT maximum = Py_None,
455 const QgsRectangle &extent = QgsRectangle(),
457 bool includeOutOfRange =
false )
460 double minimum = 0.0,
461 double maximum = 0.0,
462 const QgsRectangle &extent = QgsRectangle(),
464 bool includeOutOfRange =
false )];
470 minimum = std::numeric_limits<double>::quiet_NaN();
474 minimum = PyFloat_AsDouble( a2 );
479 maximum = std::numeric_limits<double>::quiet_NaN();
483 maximum = PyFloat_AsDouble( a3 );
486 sipRes = sipCpp->hasHistogram( a0, a1, minimum, maximum, *a4, a5, a6 );
501 virtual void cumulativeCut(
int bandNo,
506 const QgsRectangle &extent = QgsRectangle(),
507 int sampleSize = 0 );
510 virtual void writeXml( QDomDocument &doc, QDomElement &parentElem )
const { Q_UNUSED( doc ) Q_UNUSED( parentElem ); }
512 virtual void readXml(
const QDomElement &filterElem ) { Q_UNUSED( filterElem ) }
535 double minimum = std::numeric_limits<double>::quiet_NaN(),
536 double maximum = std::numeric_limits<double>::quiet_NaN(),
539 bool includeOutOfRange =
false );
544 SIP_PYOBJECT minimum = Py_None,
545 SIP_PYOBJECT maximum = Py_None,
548 bool includeOutOfRange =
false )
552 double minimum = 0.0,
553 double maximum = 0.0,
556 bool includeOutOfRange =
false )];
562 minimum = std::numeric_limits<double>::quiet_NaN();
566 minimum = PyFloat_AsDouble( a3 );
571 maximum = std::numeric_limits<double>::quiet_NaN();
575 maximum = PyFloat_AsDouble( a4 );
578#if defined(SIP_PROTECTED_IS_PUBLIC) || (SIP_VERSION >= 0x050000 && !defined(_MSC_VER))
579 sipCpp->initHistogram( *a0, a1, a2, minimum, maximum, *a5, a6, a7 );
581 sipCpp->sipProtect_initHistogram( *a0, a1, a2, minimum, maximum, *a5, a6, a7 );
590 Q_DECL_DEPRECATED
void initStatistics( QgsRasterBandStats &statistics,
int bandNo,
int stats,
const QgsRectangle &boundingBox = QgsRectangle(),
int binCount = 0 ) const
SIP_DEPRECATED;
593 void initStatistics( QgsRasterBandStats &statistics,
int bandNo,
594 Qgis::RasterBandStatistics stats = Qgis::RasterBandStatistic::All,
595 const QgsRectangle &boundingBox = QgsRectangle(),
596 int binCount = 0 ) const;
600 QgsRasterInterface(
const QgsRasterInterface & );
601 QgsRasterInterface &operator=(
const QgsRasterInterface & );
604 Q_DISABLE_COPY( QgsRasterInterface )
Provides global constants and enumerations for use throughout the application.
QFlags< RasterInterfaceCapability > RasterInterfaceCapabilities
Raster interface capabilities.
@ UnknownDataType
Unknown or unspecified type.
Brightness/contrast and gamma correction filter pipe for rasters.
QgsFeedback(QObject *parent=nullptr)
Construct a feedback object.
A renderer for generating live hillshade models.
Color and saturation filter pipe for rasters.
Renderer for multiband images with the color components.
Renderer for paletted raster images.
The RasterBandStats struct is a container for statistics about a single raster band.
Feedback object tailored for raster block reading.
bool isPreviewOnly() const
Whether the raster provider should return only data that are already available without waiting for fu...
QStringList errors() const
Returns a list of any errors encountered while retrieving the raster block.
virtual void onNewData()
May be emitted by raster data provider to indicate that some partial data are available and a new pre...
QgsRasterBlockFeedback(QObject *parent=nullptr)
Construct a new raster block feedback object.
void setPreviewOnly(bool preview)
set flag whether the block request is for preview purposes only
bool renderPartialOutput() const
Whether our painter is drawing to a temporary image used just by this layer.
void appendError(const QString &error)
Appends an error message to the stored list of errors.
void setRenderPartialOutput(bool enable)
Set whether our painter is drawing to a temporary image used just by this layer.
static int typeSize(Qgis::DataType dataType)
Returns the size in bytes for the specified dataType.
Raster renderer that generates contours on the fly for a source raster band.
Base class for raster data providers.
A container for a histogram of a single raster band.
virtual QgsRasterInterface * clone() const =0
Clone itself, create deep copy.
virtual Qgis::RasterInterfaceCapabilities capabilities() const
Returns the capabilities supported by the interface.
virtual int yBlockSize() const
virtual QgsRasterBlock * block(int bandNo, const QgsRectangle &extent, int width, int height, QgsRasterBlockFeedback *feedback=nullptr)=0
Read block of data using given extent and size.
virtual Qgis::DataType dataType(int bandNo) const =0
Returns data type for the band specified by number.
QList< QgsRasterBandStats > mStatistics
List of cached statistics, all bands mixed.
Q_DECL_DEPRECATED QString capabilitiesString() const
Returns the raster interface capabilities in friendly format.
void initHistogram(QgsRasterHistogram &histogram, int bandNo, int binCount, double minimum=std::numeric_limits< double >::quiet_NaN(), double maximum=std::numeric_limits< double >::quiet_NaN(), const QgsRectangle &boundingBox=QgsRectangle(), int sampleSize=0, bool includeOutOfRange=false)
Fill in histogram defaults if not specified.
virtual int xSize() const
Gets raster size.
virtual void setOn(bool on)
Sets whether the interface is on or off.
QgsRasterInterface(QgsRasterInterface *input=nullptr)
virtual Qgis::DataType sourceDataType(int bandNo) const
Returns source data type for the band specified by number, source data type may be shorter than dataT...
virtual int xBlockSize() const
Gets block size.
virtual int bandCount() const =0
Gets number of bands.
virtual bool on() const
Returns whether the interface is on or off.
virtual QgsRasterInterface * sourceInput()
Gets source / raw input, the first in pipe, usually provider.
virtual ~QgsRasterInterface()=default
int dataTypeSize(int bandNo) const
Returns the size (in bytes) for the data type for the specified band.
QgsRasterInterface * mInput
virtual void readXml(const QDomElement &filterElem)
Sets base class members from xml. Usually called from create() methods of subclasses.
virtual int ySize() const
virtual QgsRectangle extent() const
Gets the extent of the interface.
QList< QgsRasterHistogram > mHistograms
List of cached histograms, all bands mixed.
virtual void writeXml(QDomDocument &doc, QDomElement &parentElem) const
Write base class members to xml.
virtual QgsRasterInterface * input() const
Current input.
virtual const QgsRasterInterface * sourceInput() const
Gets source / raw input, the first in pipe, usually provider.
virtual QgsRasterHistogram histogram(int bandNo, int binCount=0, double minimum=std::numeric_limits< double >::quiet_NaN(), double maximum=std::numeric_limits< double >::quiet_NaN(), const QgsRectangle &extent=QgsRectangle(), int sampleSize=0, bool includeOutOfRange=false, QgsRasterBlockFeedback *feedback=nullptr)
Returns a band histogram.
virtual bool setInput(QgsRasterInterface *input)
Set input.
Raster pipe that deals with null values.
Implements approximate projection support for optimised raster transformation.
Raster renderer pipe that applies colors to a raster.
Resample filter pipe for rasters.
Raster renderer which renders all data pixels using a single color.
A rectangle specified with double values.
Contains information about the context of a rendering operation.
Raster renderer pipe for single band color.
Raster renderer pipe for single band gray.
Raster renderer pipe for single band pseudocolor.
#define SIP_CONVERT_TO_SUBCLASS_CODE(code)
#define QgsDebugMsgLevel(str, level)