mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-11-04 00:04:25 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			188 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			188 lines
		
	
	
		
			6.5 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;
 | 
						|
 | 
						|
    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, int nColors );
 | 
						|
    ~QgsPalettedRasterRenderer();
 | 
						|
    QgsRasterInterface * clone();
 | 
						|
    static QgsRasterRenderer* create( const QDomElement& elem, QgsRasterDataProvider* provider );
 | 
						|
 | 
						|
    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;
 | 
						|
 | 
						|
    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();
 | 
						|
 | 
						|
    static QgsRasterRenderer* create( const QDomElement& elem, QgsRasterDataProvider* provider );
 | 
						|
 | 
						|
    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 );
 | 
						|
 | 
						|
    const QgsContrastEnhancement* greenContrastEnhancement() const;
 | 
						|
    /**Takes ownership*/
 | 
						|
    void setGreenContrastEnhancement( QgsContrastEnhancement* ce );
 | 
						|
 | 
						|
    const QgsContrastEnhancement* blueContrastEnhancement() const;
 | 
						|
    /**Takes ownership*/
 | 
						|
    void setBlueContrastEnhancement( QgsContrastEnhancement* ce );
 | 
						|
 | 
						|
    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();
 | 
						|
 | 
						|
    static QgsRasterRenderer* create( const QDomElement& elem, QgsRasterDataProvider* provider );
 | 
						|
 | 
						|
    void * readBlock( int bandNo, const QgsRectangle & extent, int width, int height );
 | 
						|
 | 
						|
    /**Takes ownership of the shader*/
 | 
						|
    void setShader( QgsRasterShader* shader );
 | 
						|
    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();
 | 
						|
 | 
						|
    static QgsRasterRenderer* create( const QDomElement& elem, QgsRasterDataProvider* provider );
 | 
						|
 | 
						|
    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 );
 | 
						|
 | 
						|
    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();
 | 
						|
 | 
						|
    static QgsRasterRenderer* create( const QDomElement& elem, QgsRasterDataProvider* provider );
 | 
						|
 | 
						|
    void * readBlock( int bandNo, const QgsRectangle & extent, int width, int height );
 | 
						|
 | 
						|
    void writeXML( QDomDocument& doc, QDomElement& parentElem ) const;
 | 
						|
};
 |