23   , mMaximumTileWidth( DEFAULT_MAXIMUM_TILE_WIDTH )
    24   , mMaximumTileHeight( DEFAULT_MAXIMUM_TILE_HEIGHT )
    49   removePartInfo( bandNumber );
    57   mRasterPartInfos.insert( bandNumber, pInfo );
    62   return readNextRasterPartInternal( bandNumber, columns, rows, 
nullptr, topLeftColumn, topLeftRow, &blockExtent );
    66     int &nCols, 
int &nRows,
    68     int &topLeftCol, 
int &topLeftRow )
    71   std::unique_ptr< QgsRasterBlock > nextBlock;
    72   bool result = 
readNextRasterPart( bandNumber, nCols, nRows, nextBlock, topLeftCol, topLeftRow );
    74     *block = nextBlock.release();
    80   return readNextRasterPartInternal( bandNumber, nCols, nRows, &block, topLeftCol, topLeftRow, blockExtent );
    83 bool QgsRasterIterator::readNextRasterPartInternal( 
int bandNumber, 
int &nCols, 
int &nRows, std::unique_ptr<QgsRasterBlock> *block, 
int &topLeftCol, 
int &topLeftRow, 
QgsRectangle *blockExtent )
    89   QMap<int, RasterPartInfo>::iterator partIt = mRasterPartInfos.find( bandNumber );
    90   if ( partIt == mRasterPartInfos.end() )
    95   RasterPartInfo &pInfo = partIt.value();
    98   if ( 0 == pInfo.nCols || 0 == pInfo.nRows )
   106   if ( pInfo.currentCol == pInfo.nCols && pInfo.currentRow == pInfo.nRows )
   112   nCols = 
static_cast< int >( std::min( static_cast< qgssize >( mMaximumTileWidth ), pInfo.nCols - pInfo.currentCol ) );
   113   nRows = 
static_cast< int >( std::min( static_cast< qgssize >( mMaximumTileHeight ), pInfo.nRows - pInfo.currentRow ) );
   114   QgsDebugMsgLevel( QStringLiteral( 
"nCols = %1 nRows = %2" ).arg( nCols ).arg( nRows ), 4 );
   118   double xmin = viewPortExtent.
xMinimum() + pInfo.currentCol / 
static_cast< double >( pInfo.nCols ) * viewPortExtent.
width();
   119   double xmax = pInfo.currentCol + nCols == pInfo.nCols ? viewPortExtent.
xMaximum() :  
   120                 viewPortExtent.
xMinimum() + ( pInfo.currentCol + nCols ) / static_cast< double >( pInfo.nCols ) * viewPortExtent.
width();
   121   double ymin = pInfo.currentRow + nRows == pInfo.nRows ? viewPortExtent.
yMinimum() :  
   122                 viewPortExtent.
yMaximum() - ( pInfo.currentRow + nRows ) / static_cast< double >( pInfo.nRows ) * viewPortExtent.
height();
   123   double ymax = viewPortExtent.
yMaximum() - pInfo.currentRow / 
static_cast< double >( pInfo.nRows ) * viewPortExtent.
height();
   127     *blockExtent = blockRect;
   130     block->reset( mInput->
block( bandNumber, blockRect, nCols, nRows, mFeedback ) );
   131   topLeftCol = pInfo.currentCol;
   132   topLeftRow = pInfo.currentRow;
   134   pInfo.currentCol += nCols;
   135   if ( pInfo.currentCol == pInfo.nCols && pInfo.currentRow + nRows == pInfo.nRows ) 
   137     pInfo.currentRow = pInfo.nRows;
   139   else if ( pInfo.currentCol == pInfo.nCols ) 
   141     pInfo.currentCol = 0;
   142     pInfo.currentRow += nRows;
   150   removePartInfo( bandNumber );
   153 void QgsRasterIterator::removePartInfo( 
int bandNumber )
   155   auto partIt = mRasterPartInfos.constFind( bandNumber );
   156   if ( partIt != mRasterPartInfos.constEnd() )
   158     mRasterPartInfos.remove( bandNumber );
 A rectangle specified with double values. 
 
QgsRasterIterator(QgsRasterInterface *input)
Constructor for QgsRasterIterator, iterating over the specified input raster source. 
 
virtual QgsRasterInterface * input() const
Current input. 
 
bool next(int bandNumber, int &columns, int &rows, int &topLeftColumn, int &topLeftRow, QgsRectangle &blockExtent)
Fetches details of the next part of the raster data. 
 
#define QgsDebugMsgLevel(str, level)
 
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. 
 
void startRasterRead(int bandNumber, qgssize nCols, qgssize nRows, const QgsRectangle &extent, QgsRasterBlockFeedback *feedback=nullptr)
Start reading of raster band. 
 
double width() const
Returns the width of the rectangle. 
 
bool readNextRasterPart(int bandNumber, int &nCols, int &nRows, QgsRasterBlock **block, int &topLeftCol, int &topLeftRow)
Fetches next part of raster data, caller takes ownership of the block and caller should delete the bl...
 
Base class for processing filters like renderers, reprojector, resampler etc. 
 
unsigned long long qgssize
Qgssize is used instead of size_t, because size_t is stdlib type, unknown by SIP, and it would be har...
 
void stopRasterRead(int bandNumber)
Cancels the raster iteration and resets the iterator. 
 
double yMinimum() const
Returns the y minimum value (bottom side of rectangle). 
 
double xMaximum() const
Returns the x maximum value (right side of rectangle). 
 
virtual int stepHeight() const
Step height for raster iterations. 
 
double xMinimum() const
Returns the x minimum value (left side of rectangle). 
 
virtual int stepWidth() const
Step width for raster iterations. 
 
double yMaximum() const
Returns the y maximum value (top side of rectangle). 
 
Feedback object tailored for raster block reading. 
 
double height() const
Returns the height of the rectangle. 
 
Base class for raster data providers.