Branch data Line data Source code
1 : : /* ************************************************************************** 2 : : qgsrastershaderfunction.h - description 3 : : ------------------- 4 : : begin : Fri Dec 28 2007 5 : : copyright : (C) 2007 by Peter J. Ersts 6 : : email : ersts@amnh.org 7 : : 8 : : ****************************************************************************/ 9 : : 10 : : /* ************************************************************************** 11 : : * * 12 : : * This program is free software; you can redistribute it and/or modify * 13 : : * it under the terms of the GNU General Public License as published by * 14 : : * the Free Software Foundation; either version 2 of the License, or * 15 : : * (at your option) any later version. * 16 : : * * 17 : : ***************************************************************************/ 18 : : 19 : : 20 : : #ifndef QGSRASTERSHADERFUNCTION_H 21 : : #define QGSRASTERSHADERFUNCTION_H 22 : : 23 : : /** 24 : : * \ingroup core 25 : : * \brief The raster shade function applies a shader to a pixel at render time - 26 : : * typically used to render grayscale images as false color. 27 : : */ 28 : : 29 : : #include "qgis_core.h" 30 : : #include "qgis_sip.h" 31 : : #include <QColor> 32 : : #include <QPair> 33 : : 34 : 0 : class CORE_EXPORT QgsRasterShaderFunction 35 : : { 36 : : #ifdef SIP_RUN 37 : : #include <qgscolorrampshader.h> 38 : : #endif 39 : : 40 : : 41 : : #ifdef SIP_RUN 42 : : SIP_CONVERT_TO_SUBCLASS_CODE 43 : : if ( dynamic_cast<QgsColorRampShader *>( sipCpp ) != NULL ) 44 : : sipType = sipType_QgsColorRampShader; 45 : : else 46 : : sipType = 0; 47 : : SIP_END 48 : : #endif 49 : : 50 : : public: 51 : : QgsRasterShaderFunction( double minimumValue = 0.0, double maximumValue = 255.0 ); 52 : 0 : virtual ~QgsRasterShaderFunction() = default; 53 : : 54 : : /** 55 : : * Sets the maximum \a value for the raster shader. 56 : : * \see setMinimumValue() 57 : : * \see maximumValue() 58 : : */ 59 : : virtual void setMaximumValue( double value ); 60 : : 61 : : /** 62 : : * Sets the minimum \a value for the raster shader. 63 : : * \see setMaximumValue() 64 : : * \see minimumValue() 65 : : */ 66 : : virtual void setMinimumValue( double value ); 67 : : 68 : : /** 69 : : * Generates an new RGBA value based on one input \a value. 70 : : * \param value The original value to base a new RGBA value on 71 : : * \param returnRedValue The red component of the new RGBA value 72 : : * \param returnGreenValue The green component of the new RGBA value 73 : : * \param returnBlueValue The blue component of the new RGBA value 74 : : * \param returnAlpha The alpha component of the new RGBA value 75 : : * \return TRUE if the return values are valid otherwise FALSE 76 : : */ 77 : : virtual bool shade( double value, 78 : : int *returnRedValue SIP_OUT, 79 : : int *returnGreenValue SIP_OUT, 80 : : int *returnBlueValue SIP_OUT, 81 : : int *returnAlpha SIP_OUT ) const; 82 : : 83 : : /** 84 : : * Generates an new RGBA value based on an original RGBA value. 85 : : * 86 : : * \param redValue The red component of the original value to base a new RGBA value on 87 : : * \param greenValue The green component of the original value to base a new RGBA value on 88 : : * \param blueValue The blue component of the original value to base a new RGBA value on 89 : : * \param alphaValue The alpha component of the original value to base a new RGBA value on 90 : : * \param returnRedValue The red component of the new RGBA value 91 : : * \param returnGreenValue The green component of the new RGBA value 92 : : * \param returnBlueValue The blue component of the new RGBA value 93 : : * \param returnAlpha The alpha component of the new RGBA value 94 : : * \return TRUE if the return values are valid otherwise FALSE 95 : : */ 96 : : virtual bool shade( double redValue, 97 : : double greenValue, 98 : : double blueValue, 99 : : double alphaValue, 100 : : int *returnRedValue SIP_OUT, 101 : : int *returnGreenValue SIP_OUT, 102 : : int *returnBlueValue SIP_OUT, 103 : : int *returnAlpha SIP_OUT ) const; 104 : : 105 : : double minimumMaximumRange() const { return mMinimumMaximumRange; } 106 : : 107 : : /** 108 : : * Returns the maximum value for the raster shader. 109 : : * \see setMaximumValue() 110 : : * \see minimumValue() 111 : : */ 112 : 0 : double minimumValue() const { return mMinimumValue; } 113 : : 114 : : /** 115 : : * Returns the minimum value for the raster shader. 116 : : * \see setMinimumValue() 117 : : * \see maximumValue() 118 : : */ 119 : 0 : double maximumValue() const { return mMaximumValue; } 120 : : 121 : : /** 122 : : * Returns legend symbology items if provided by renderer. 123 : : */ 124 : 0 : virtual void legendSymbologyItems( QList< QPair< QString, QColor > > &symbolItems SIP_OUT ) const { Q_UNUSED( symbolItems ) } 125 : : 126 : : /** 127 : : * Returns label precision 128 : : * \since QGIS 3.16 129 : : */ 130 : : int labelPrecision() const; 131 : : 132 : : /** 133 : : * Sets label precision to \a labelPrecision 134 : : * \since QGIS 3.16 135 : : */ 136 : : void setLabelPrecision( int labelPrecision ); 137 : : 138 : : protected: 139 : : //! \brief User defineable maximum value for the shading function 140 : : double mMaximumValue; 141 : : 142 : : //! \brief User defineable minimum value for the shading function 143 : : double mMinimumValue; 144 : : 145 : : //! \brief Minimum maximum range for the shading function 146 : : double mMinimumMaximumRange; 147 : : 148 : : //! \brief Label precision 149 : : int mLabelPrecision = 6; 150 : : 151 : : }; 152 : : #endif