#include <qgsrasterlayer.h>
Public Member Functions | |
QgsRasterImageBuffer (GDALRasterBandH rasterBand, QPainter *p, QgsRasterViewPort *viewPort, const QgsMapToPixel *mapToPixel, double *mGeoTransform) | |
~QgsRasterImageBuffer () | |
void | reset (int maxPixelsInVirtualMemory=5000000) |
bool | nextScanLine (QRgb **imageScanLine, void **rasterScanLine) |
Returns a pointer to the next scan line (or 0 if end). | |
void | setWritingEnabled (bool enabled) |
Private Member Functions | |
QgsRasterImageBuffer () | |
bool | createNextPartImage () |
Creates next part image. | |
void | drawPixelRectangle () |
Peter's fix for zoomed in rasters. | |
Private Attributes | |
GDALRasterBandH | mRasterBand |
QPainter * | mPainter |
QgsRasterViewPort * | mViewPort |
const QgsMapToPixel * | mMapToPixel |
double * | mGeoTransform |
bool | mValid |
bool | mWritingEnabled |
True (default), if values are written to an image. | |
bool | mDrawPixelRect |
Draws the raster pixels as rectangles. | |
int | mCurrentRow |
int | mNumPartImages |
int | mNumRasterRowsPerPart |
int | mCurrentPartRasterMin |
int | mCurrentPartRasterMax |
int | mCurrentPartImageRow |
int | mNumCurrentImageRows |
QImage * | mCurrentImage |
void * | mCurrentGDALData |
The class allows sequential reading of the scan lines and setting the image scan line pixels. It automatically decides on how much of the band / image should stay in virtual memory at a time
Definition at line 922 of file qgsrasterlayer.h.
QgsRasterImageBuffer::QgsRasterImageBuffer | ( | GDALRasterBandH | rasterBand, | |
QPainter * | p, | |||
QgsRasterViewPort * | viewPort, | |||
const QgsMapToPixel * | mapToPixel, | |||
double * | mGeoTransform | |||
) |
Definition at line 5669 of file qgsrasterlayer.cpp.
QgsRasterImageBuffer::~QgsRasterImageBuffer | ( | ) |
QgsRasterImageBuffer::QgsRasterImageBuffer | ( | ) | [private] |
void QgsRasterImageBuffer::reset | ( | int | maxPixelsInVirtualMemory = 5000000 |
) |
Definition at line 5681 of file qgsrasterlayer.cpp.
References QgsRasterViewPort::clippedHeight, QgsRasterViewPort::clippedWidth, createNextPartImage(), QgsRasterViewPort::drawableAreaXDim, QgsRasterViewPort::drawableAreaYDim, mCurrentPartImageRow, mCurrentPartRasterMax, mCurrentPartRasterMin, mDrawPixelRect, mNumCurrentImageRows, mNumPartImages, mNumRasterRowsPerPart, mPainter, mRasterBand, mValid, and mViewPort.
Referenced by QgsRasterLayer::drawMultiBandColor(), QgsRasterLayer::drawPalettedSingleBandColor(), QgsRasterLayer::drawPalettedSingleBandGray(), QgsRasterLayer::drawPalettedSingleBandPseudoColor(), QgsRasterLayer::drawSingleBandGray(), and QgsRasterLayer::drawSingleBandPseudoColor().
bool QgsRasterImageBuffer::nextScanLine | ( | QRgb ** | imageScanLine, | |
void ** | rasterScanLine | |||
) |
Returns a pointer to the next scan line (or 0 if end).
Definition at line 5711 of file qgsrasterlayer.cpp.
References createNextPartImage(), QgsRasterViewPort::drawableAreaXDim, mCurrentGDALData, mCurrentImage, mCurrentPartImageRow, mCurrentRow, mNumCurrentImageRows, mRasterBand, mValid, mViewPort, and mWritingEnabled.
Referenced by QgsRasterLayer::drawMultiBandColor(), QgsRasterLayer::drawPalettedSingleBandColor(), QgsRasterLayer::drawPalettedSingleBandGray(), QgsRasterLayer::drawPalettedSingleBandPseudoColor(), QgsRasterLayer::drawSingleBandGray(), and QgsRasterLayer::drawSingleBandPseudoColor().
void QgsRasterImageBuffer::setWritingEnabled | ( | bool | enabled | ) | [inline] |
Definition at line 932 of file qgsrasterlayer.h.
Referenced by QgsRasterLayer::drawMultiBandColor().
bool QgsRasterImageBuffer::createNextPartImage | ( | ) | [private] |
Creates next part image.
Returns false if at end
Definition at line 5746 of file qgsrasterlayer.cpp.
References QgsRasterViewPort::clippedHeight, QgsRasterViewPort::clippedWidth, QgsRasterViewPort::drawableAreaXDim, QgsRasterViewPort::drawableAreaYDim, drawPixelRectangle(), QgsMapToPixel::mapUnitsPerPixel(), mCurrentGDALData, mCurrentImage, mCurrentPartImageRow, mCurrentPartRasterMax, mCurrentPartRasterMin, mCurrentRow, mGeoTransform, mMapToPixel, mNumCurrentImageRows, mNumRasterRowsPerPart, mPainter, mRasterBand, mViewPort, mWritingEnabled, QgsRasterViewPort::rectXOffset, QgsRasterViewPort::rectXOffsetFloat, QgsRasterViewPort::rectYOffset, QgsRasterViewPort::rectYOffsetFloat, QgsRasterViewPort::topLeftPoint, QgsPoint::x(), and QgsPoint::y().
Referenced by nextScanLine(), and reset().
void QgsRasterImageBuffer::drawPixelRectangle | ( | ) | [private] |
Peter's fix for zoomed in rasters.
Definition at line 5870 of file qgsrasterlayer.cpp.
References QgsRasterViewPort::bottomRightPoint, QgsRasterViewPort::clippedHeight, QgsRasterViewPort::clippedWidth, QgsMapToPixel::mapUnitsPerPixel(), mCurrentImage, mGeoTransform, mMapToPixel, mPainter, mViewPort, QgsRasterViewPort::rectXOffset, QgsRasterViewPort::rectXOffsetFloat, QgsRasterViewPort::rectYOffset, QgsRasterViewPort::rectYOffsetFloat, QgsRasterViewPort::topLeftPoint, QgsPoint::x(), and QgsPoint::y().
Referenced by createNextPartImage().
GDALRasterBandH QgsRasterImageBuffer::mRasterBand [private] |
Definition at line 942 of file qgsrasterlayer.h.
Referenced by createNextPartImage(), nextScanLine(), and reset().
QPainter* QgsRasterImageBuffer::mPainter [private] |
Definition at line 943 of file qgsrasterlayer.h.
Referenced by createNextPartImage(), drawPixelRectangle(), and reset().
QgsRasterViewPort* QgsRasterImageBuffer::mViewPort [private] |
Definition at line 944 of file qgsrasterlayer.h.
Referenced by createNextPartImage(), drawPixelRectangle(), nextScanLine(), and reset().
const QgsMapToPixel* QgsRasterImageBuffer::mMapToPixel [private] |
Definition at line 945 of file qgsrasterlayer.h.
Referenced by createNextPartImage(), and drawPixelRectangle().
double* QgsRasterImageBuffer::mGeoTransform [private] |
Definition at line 946 of file qgsrasterlayer.h.
Referenced by createNextPartImage(), and drawPixelRectangle().
bool QgsRasterImageBuffer::mValid [private] |
bool QgsRasterImageBuffer::mWritingEnabled [private] |
True (default), if values are written to an image.
If false, the class only reads the values, but does not create an image
Definition at line 950 of file qgsrasterlayer.h.
Referenced by createNextPartImage(), and nextScanLine().
bool QgsRasterImageBuffer::mDrawPixelRect [private] |
Draws the raster pixels as rectangles.
This is only used if the map units per pixel is very, very small
Definition at line 952 of file qgsrasterlayer.h.
Referenced by reset().
int QgsRasterImageBuffer::mCurrentRow [private] |
Definition at line 953 of file qgsrasterlayer.h.
Referenced by createNextPartImage(), and nextScanLine().
int QgsRasterImageBuffer::mNumPartImages [private] |
int QgsRasterImageBuffer::mNumRasterRowsPerPart [private] |
int QgsRasterImageBuffer::mCurrentPartRasterMin [private] |
int QgsRasterImageBuffer::mCurrentPartRasterMax [private] |
int QgsRasterImageBuffer::mCurrentPartImageRow [private] |
Definition at line 958 of file qgsrasterlayer.h.
Referenced by createNextPartImage(), nextScanLine(), and reset().
int QgsRasterImageBuffer::mNumCurrentImageRows [private] |
Definition at line 959 of file qgsrasterlayer.h.
Referenced by createNextPartImage(), nextScanLine(), and reset().
QImage* QgsRasterImageBuffer::mCurrentImage [private] |
Definition at line 962 of file qgsrasterlayer.h.
Referenced by createNextPartImage(), drawPixelRectangle(), nextScanLine(), and ~QgsRasterImageBuffer().
void* QgsRasterImageBuffer::mCurrentGDALData [private] |
Definition at line 963 of file qgsrasterlayer.h.
Referenced by createNextPartImage(), nextScanLine(), and ~QgsRasterImageBuffer().