mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-27 00:33:48 -05:00
188 lines
6.7 KiB
Plaintext
188 lines
6.7 KiB
Plaintext
class QgsRasterRenderer : QgsRasterInterface
|
|
{
|
|
%TypeHeaderCode
|
|
#include "qgsrasterrenderer.h"
|
|
#include "qgspalettedrasterrenderer.h"
|
|
#include "qgsmultibandcolorrenderer.h"
|
|
#include "qgssinglebandpseudocolorrenderer.h"
|
|
#include "qgssinglebandgrayrenderer.h"
|
|
#include "qgssinglebandcolordatarenderer.h"
|
|
#include "qgsrasterinterface.h"
|
|
%End
|
|
|
|
%ConvertToSubClassCode
|
|
if (dynamic_cast<QgsPalettedRasterRenderer*>(sipCpp) != NULL)
|
|
sipClass = sipClass_QgsPalettedRasterRenderer;
|
|
else if (dynamic_cast<QgsMultiBandColorRenderer*>(sipCpp) != NULL)
|
|
sipClass = sipClass_QgsMultiBandColorRenderer;
|
|
else if (dynamic_cast<QgsSingleBandPseudoColorRenderer*>(sipCpp) != NULL)
|
|
sipClass = sipClass_QgsSingleBandPseudoColorRenderer;
|
|
else if (dynamic_cast<QgsSingleBandGrayRenderer*>(sipCpp) != NULL)
|
|
sipClass = sipClass_QgsSingleBandGrayRenderer;
|
|
else if (dynamic_cast<QgsSingleBandGrayRenderer*>(sipCpp) != NULL)
|
|
sipClass = sipClass_QgsSingleBandGrayRenderer;
|
|
else
|
|
sipClass = 0;
|
|
%End
|
|
|
|
public:
|
|
QgsRasterRenderer( QgsRasterDataProvider* provider, const QString& type );
|
|
virtual ~QgsRasterRenderer();
|
|
virtual QgsRasterInterface * clone() const = 0 /Factory/;
|
|
|
|
virtual QString type() const;
|
|
virtual void * readBlock( int bandNo, const QgsRectangle & extent, int width, int height );
|
|
|
|
QgsRasterInterface::DataType dataType( int bandNo ) const;
|
|
|
|
bool usesTransparency() const;
|
|
|
|
void setOpacity( double opacity );
|
|
double opacity() const;
|
|
|
|
void setRasterTransparency( QgsRasterTransparency* t /Transfer/ );
|
|
const QgsRasterTransparency* rasterTransparency() const;
|
|
|
|
void setAlphaBand( int band );
|
|
int alphaBand() const;
|
|
|
|
void setInvertColor( bool invert );
|
|
bool invertColor() const;
|
|
|
|
/**Get symbology items if provided by renderer*/
|
|
virtual void legendSymbologyItems( QList< QPair< QString, QColor > >& symbolItems ) const;
|
|
|
|
virtual void writeXML( QDomDocument& doc, QDomElement& parentElem ) const = 0;
|
|
|
|
/**Sets base class members from xml. Usually called from create() methods of subclasses*/
|
|
void readXML( const QDomElement& rendererElem );
|
|
};
|
|
|
|
class QgsPalettedRasterRenderer: QgsRasterRenderer
|
|
{
|
|
%TypeHeaderCode
|
|
#include "qgspalettedrasterrenderer.h"
|
|
%End
|
|
public:
|
|
/**Renderer owns color array*/
|
|
QgsPalettedRasterRenderer( QgsRasterDataProvider* provider, int bandNumber, QColor* colorArray /Transfer,Array/, int nColors /ArraySize/ );
|
|
~QgsPalettedRasterRenderer();
|
|
QgsRasterInterface * clone() /Factory/;
|
|
static QgsRasterRenderer* create( const QDomElement& elem, QgsRasterDataProvider* provider ) /Factory/;
|
|
|
|
void * readBlock( int bandNo, const QgsRectangle & extent, int width, int height );
|
|
|
|
/**Returns number of colors*/
|
|
int nColors() const;
|
|
/**Returns copy of color array (caller takes ownership)*/
|
|
QColor* colors() const /TransferBack/;
|
|
|
|
void writeXML( QDomDocument& doc, QDomElement& parentElem ) const;
|
|
|
|
void legendSymbologyItems( QList< QPair< QString, QColor > >& symbolItems ) const;
|
|
};
|
|
|
|
class QgsMultiBandColorRenderer: QgsRasterRenderer
|
|
{
|
|
%TypeHeaderCode
|
|
#include "qgsmultibandcolorrenderer.h"
|
|
%End
|
|
public:
|
|
QgsMultiBandColorRenderer( QgsRasterDataProvider* provider, int redBand, int greenBand, int blueBand,
|
|
QgsContrastEnhancement* redEnhancement = 0, QgsContrastEnhancement* greenEnhancement = 0,
|
|
QgsContrastEnhancement* blueEnhancement = 0 );
|
|
~QgsMultiBandColorRenderer();
|
|
QgsRasterInterface * clone() /Factory/;
|
|
|
|
static QgsRasterRenderer* create( const QDomElement& elem, QgsRasterDataProvider* provider ) /Factory/;
|
|
|
|
void * readBlock( int bandNo, const QgsRectangle & extent, int width, int height );
|
|
|
|
int redBand() const;
|
|
void setRedBand( int band );
|
|
int greenBand() const;
|
|
void setGreenBand( int band );
|
|
int blueBand() const;
|
|
void setBlueBand( int band );
|
|
|
|
const QgsContrastEnhancement* redContrastEnhancement() const;
|
|
/**Takes ownership*/
|
|
void setRedContrastEnhancement( QgsContrastEnhancement* ce /Transfer/ );
|
|
|
|
const QgsContrastEnhancement* greenContrastEnhancement() const;
|
|
/**Takes ownership*/
|
|
void setGreenContrastEnhancement( QgsContrastEnhancement* ce /Transfer/ );
|
|
|
|
const QgsContrastEnhancement* blueContrastEnhancement() const;
|
|
/**Takes ownership*/
|
|
void setBlueContrastEnhancement( QgsContrastEnhancement* ce /Transfer/ );
|
|
|
|
void writeXML( QDomDocument& doc, QDomElement& parentElem ) const;
|
|
};
|
|
|
|
class QgsSingleBandPseudoColorRenderer: QgsRasterRenderer
|
|
{
|
|
%TypeHeaderCode
|
|
#include "qgssinglebandpseudocolorrenderer.h"
|
|
%End
|
|
public:
|
|
/**Note: takes ownership of QgsRasterShader*/
|
|
QgsSingleBandPseudoColorRenderer( QgsRasterDataProvider* provider, int band, QgsRasterShader* shader /Transfer/ );
|
|
~QgsSingleBandPseudoColorRenderer();
|
|
QgsRasterInterface * clone() /Factory/;
|
|
|
|
static QgsRasterRenderer* create( const QDomElement& elem, QgsRasterDataProvider* provider ) /Factory/;
|
|
|
|
void * readBlock( int bandNo, const QgsRectangle & extent, int width, int height );
|
|
|
|
/**Takes ownership of the shader*/
|
|
void setShader( QgsRasterShader* shader /Transfer/ );
|
|
QgsRasterShader* shader();
|
|
|
|
void writeXML( QDomDocument& doc, QDomElement& parentElem ) const;
|
|
|
|
void legendSymbologyItems( QList< QPair< QString, QColor > >& symbolItems ) const;
|
|
};
|
|
|
|
class QgsSingleBandGrayRenderer: QgsRasterRenderer
|
|
{
|
|
%TypeHeaderCode
|
|
#include "qgssinglebandgrayrenderer.h"
|
|
%End
|
|
public:
|
|
QgsSingleBandGrayRenderer( QgsRasterDataProvider* provider, int grayBand );
|
|
~QgsSingleBandGrayRenderer();
|
|
QgsRasterInterface * clone() /Factory/;
|
|
|
|
static QgsRasterRenderer* create( const QDomElement& elem, QgsRasterDataProvider* provider ) /Factory/;
|
|
|
|
void * readBlock( int bandNo, const QgsRectangle & extent, int width, int height );
|
|
|
|
int grayBand() const;
|
|
void setGrayBand( int band );
|
|
const QgsContrastEnhancement* contrastEnhancement() const;
|
|
/**Takes ownership*/
|
|
void setContrastEnhancement( QgsContrastEnhancement* ce /Transfer/ );
|
|
|
|
void writeXML( QDomDocument& doc, QDomElement& parentElem ) const;
|
|
|
|
void legendSymbologyItems( QList< QPair< QString, QColor > >& symbolItems ) const;
|
|
};
|
|
|
|
class QgsSingleBandColorDataRenderer: QgsRasterRenderer
|
|
{
|
|
%TypeHeaderCode
|
|
#include "qgssinglebandcolordatarenderer.h"
|
|
%End
|
|
public:
|
|
QgsSingleBandColorDataRenderer( QgsRasterDataProvider* provider, int band );
|
|
~QgsSingleBandColorDataRenderer();
|
|
QgsRasterInterface * clone() /Factory/;
|
|
|
|
static QgsRasterRenderer* create( const QDomElement& elem, QgsRasterDataProvider* provider ) /Factory/;
|
|
|
|
void * readBlock( int bandNo, const QgsRectangle & extent, int width, int height );
|
|
|
|
void writeXML( QDomDocument& doc, QDomElement& parentElem ) const;
|
|
};
|