18#ifndef QGSRASTERINTERFACE_H
19#define QGSRASTERINTERFACE_H
25#include <QCoreApplication>
87 void appendError(
const QString &error ) { mErrors.append( error ); }
95 QStringList
errors()
const {
return mErrors; }
119 bool mPreviewOnly =
false;
122 bool mRenderPartialOutput =
false;
161 sipType = sipType_QgsBrightnessContrastFilter;
163 sipType = sipType_QgsHueSaturationFilter;
166 sipType = sipType_QgsRasterDataProvider;
172 sipType = sipType_QgsRasterNuller;
174 sipType = sipType_QgsRasterProjector;
178 sipType = sipType_QgsHillshadeRenderer;
180 sipType = sipType_QgsMultiBandColorRenderer;
182 sipType = sipType_QgsPalettedRasterRenderer;
184 sipType = sipType_QgsSingleBandColorDataRenderer;
186 sipType = sipType_QgsSingleBandGrayRenderer;
188 sipType = sipType_QgsSingleBandPseudoColorRenderer;
190 sipType = sipType_QgsRasterContourRenderer;
192 sipType = sipType_QgsRasterRenderer;
195 sipType = sipType_QgsRasterResampleFilter;
211 BuildPyramids = 1 << 4,
213 IdentifyValue = 1 << 6,
214 IdentifyText = 1 << 7,
215 IdentifyHtml = 1 << 8,
216 IdentifyFeature = 1 << 9,
236 QString capabilitiesString()
const;
262 virtual int xBlockSize()
const {
return mInput ? mInput->xBlockSize() : 0; }
263 virtual int yBlockSize()
const {
return mInput ? mInput->yBlockSize() : 0; }
266 virtual int xSize()
const {
return mInput ? mInput->xSize() : 0; }
267 virtual int ySize()
const {
return mInput ? mInput->ySize() : 0; }
270 virtual QString generateBandName(
int bandNumber )
const;
277 virtual QString colorInterpretationName(
int bandNumber )
const;
284 QString displayBandName(
int bandNumber )
const;
308 virtual bool on()
const {
return mOn; }
311 virtual void setOn(
bool on ) { mOn = on; }
322 return mInput ? mInput->sourceInput() :
this;
333 return mInput ? mInput->sourceInput() :
this;
353 virtual bool hasStatistics(
int bandNo,
356 int sampleSize = 0 );
375 double minimum = std::numeric_limits<double>::quiet_NaN(),
376 double maximum = std::numeric_limits<double>::quiet_NaN(),
379 bool includeOutOfRange =
false,
384 SIP_PYOBJECT minimum = Py_None,
385 SIP_PYOBJECT maximum = Py_None,
388 bool includeOutOfRange =
false,
392 double minimum = 0.0,
393 double maximum = 0.0,
396 bool includeOutOfRange =
false,
403 minimum = std::numeric_limits<double>::quiet_NaN();
407 minimum = PyFloat_AsDouble( a2 );
412 maximum = std::numeric_limits<double>::quiet_NaN();
416 maximum = PyFloat_AsDouble( a3 );
420 return sipConvertFromType( h, sipType_QgsRasterHistogram, Py_None );
430 virtual bool hasHistogram(
int bandNo,
432 double minimum = std::numeric_limits<double>::quiet_NaN(),
433 double maximum = std::numeric_limits<double>::quiet_NaN(),
436 bool includeOutOfRange =
false );
438 virtual bool hasHistogram(
int bandNo,
440 SIP_PYOBJECT minimum = Py_None,
441 SIP_PYOBJECT maximum = Py_None,
444 bool includeOutOfRange =
false )
447 double minimum = 0.0,
448 double maximum = 0.0,
451 bool includeOutOfRange =
false )];
457 minimum = std::numeric_limits<double>::quiet_NaN();
461 minimum = PyFloat_AsDouble( a2 );
466 maximum = std::numeric_limits<double>::quiet_NaN();
470 maximum = PyFloat_AsDouble( a3 );
473 sipRes = sipCpp->hasHistogram( a0, a1, minimum, maximum, *a4, a5, a6 );
488 virtual void cumulativeCut(
int bandNo,
494 int sampleSize = 0 );
497 virtual void writeXml( QDomDocument &doc, QDomElement &parentElem )
const { Q_UNUSED( doc ) Q_UNUSED( parentElem ); }
499 virtual void readXml(
const QDomElement &filterElem ) { Q_UNUSED( filterElem ) }
522 double minimum = std::numeric_limits<double>::quiet_NaN(),
523 double maximum = std::numeric_limits<double>::quiet_NaN(),
526 bool includeOutOfRange =
false );
531 SIP_PYOBJECT minimum = Py_None,
532 SIP_PYOBJECT maximum = Py_None,
535 bool includeOutOfRange =
false )
539 double minimum = 0.0,
540 double maximum = 0.0,
543 bool includeOutOfRange =
false )];
549 minimum = std::numeric_limits<double>::quiet_NaN();
553 minimum = PyFloat_AsDouble( a3 );
558 maximum = std::numeric_limits<double>::quiet_NaN();
562 maximum = PyFloat_AsDouble( a4 );
565#if defined(SIP_PROTECTED_IS_PUBLIC) || (SIP_VERSION >= 0x050000 && !defined(_MSC_VER))
566 sipCpp->initHistogram( *a0, a1, a2, minimum, maximum, *a5, a6, a7 );
568 sipCpp->sipProtect_initHistogram( *a0, a1, a2, minimum, maximum, *a5, a6, a7 );
577 int binCount = 0 )
const;
DataType
Raster data types.
@ UnknownDataType
Unknown or unspecified type.
Brightness/contrast and gamma correction filter pipe for rasters.
Base class for feedback objects to be used for cancellation of something running in a worker thread.
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) SIP_HOLDGIL
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.
The QgsRasterHistogram is a container for histogram of a single raster band.
Base class for processing filters like renderers, reprojector, resampler etc.
virtual QgsRasterInterface * clone() const =0
Clone itself, create deep copy.
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.
Capability
If you add to this, please also add to capabilitiesString()
virtual int xSize() const
Gets raster size.
virtual void setOn(bool on)
Sets whether the interface is on or off.
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.
virtual void readXml(const QDomElement &filterElem)
Sets base class members from xml. Usually called from create() methods of subclasses.
virtual int capabilities() const
Returns a bitmask containing the supported capabilities.
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 bool setInput(QgsRasterInterface *input)
Set input.
Raster pipe that deals with null values.
QgsRasterProjector implements approximate projection support for it calculates grid of points in sour...
Raster renderer pipe that applies colors to a raster.
Resample filter pipe for rasters.
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)