Branch data Line data Source code
1 : : /* ************************************************************************** 2 : : qgsrastershader.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 QGSRASTERSHADER_H 21 : : #define QGSRASTERSHADER_H 22 : : 23 : : #include "qgis_core.h" 24 : : #include "qgis_sip.h" 25 : : #include "qgsreadwritecontext.h" 26 : : 27 : : class QDomDocument; 28 : : class QDomElement; 29 : : class QgsRasterShaderFunction; 30 : : 31 : : /** 32 : : * \ingroup core 33 : : * \brief Interface for all raster shaders. 34 : : */ 35 : 0 : class CORE_EXPORT QgsRasterShader 36 : : { 37 : : 38 : : public: 39 : : QgsRasterShader( double minimumValue = 0.0, double maximumValue = 255.0 ); 40 : : 41 : : //! QgsRasterShader cannot be copied 42 : : QgsRasterShader( const QgsRasterShader &rh ) = delete; 43 : : //! QgsRasterShader cannot be copied 44 : : QgsRasterShader &operator=( const QgsRasterShader &rh ) = delete; 45 : : 46 : : /* 47 : : * 48 : : * Non-Static Inline methods 49 : : * 50 : : */ 51 : : 52 : : /** 53 : : * Returns the maximum value for the raster shader. 54 : : * \see setMaximumValue() 55 : : * \see minimumValue() 56 : : */ 57 : 0 : double maximumValue() const { return mMaximumValue; } 58 : : 59 : : /** 60 : : * Returns the minimum value for the raster shader. 61 : : * \see setMinimumValue() 62 : : * \see maximumValue() 63 : : */ 64 : 0 : double minimumValue() const { return mMinimumValue; } 65 : : 66 : 0 : QgsRasterShaderFunction *rasterShaderFunction() { return mRasterShaderFunction.get(); } 67 : : const QgsRasterShaderFunction *rasterShaderFunction() const { return mRasterShaderFunction.get(); } SIP_SKIP 68 : : 69 : : /* 70 : : * 71 : : * Non-Static methods 72 : : * 73 : : */ 74 : : 75 : : /** 76 : : * Generates a new RGBA value based on one input \a value. 77 : : * 78 : : * \param value The original value to base a new RGBA value on 79 : : * \param returnRedValue The red component of the new RGBA value 80 : : * \param returnGreenValue The green component of the new RGBA value 81 : : * \param returnBlueValue The blue component of the new RGBA value 82 : : * \param returnAlpha The alpha component of the new RGBA value 83 : : * \return TRUE if the return values are valid otherwise FALSE 84 : : */ 85 : : bool shade( double value, 86 : : int *returnRedValue SIP_OUT, 87 : : int *returnGreenValue SIP_OUT, 88 : : int *returnBlueValue SIP_OUT, 89 : : int *returnAlpha SIP_OUT ); 90 : : 91 : : /** 92 : : * Generates a new RGBA value based on an original RGBA value. 93 : : * \param redValue The red component of the original value to base a new RGBA value on 94 : : * \param greenValue The green component of the original value to base a new RGBA value on 95 : : * \param blueValue The blue component of the original value to base a new RGBA value on 96 : : * \param alphaValue The alpha component of the original value to base a new RGBA value on 97 : : * \param returnRedValue The red component of the new RGBA value 98 : : * \param returnGreenValue The green component of the new RGBA value 99 : : * \param returnBlueValue The blue component of the new RGBA value 100 : : * \param returnAlpha The alpha component of the new RGBA value 101 : : * \return TRUE if the return values are valid otherwise FALSE 102 : : */ 103 : : bool shade( double redValue, 104 : : double greenValue, 105 : : double blueValue, 106 : : double alphaValue, 107 : : int *returnRedValue SIP_OUT, 108 : : int *returnGreenValue SIP_OUT, 109 : : int *returnBlueValue SIP_OUT, 110 : : int *returnAlpha SIP_OUT ); 111 : : 112 : : /** 113 : : * \brief A public method that allows the user to set their own shader \a function. 114 : : * \note Raster shader takes ownership of the shader function instance 115 : : */ 116 : : void setRasterShaderFunction( QgsRasterShaderFunction *function SIP_TRANSFER ); 117 : : 118 : : /** 119 : : * Sets the maximum \a value for the raster shader. 120 : : * \see setMinimumValue() 121 : : * \see maximumValue() 122 : : */ 123 : : void setMaximumValue( double value ); 124 : : 125 : : /** 126 : : * Sets the minimum \a value for the raster shader. 127 : : * \see setMaximumValue() 128 : : * \see minimumValue() 129 : : */ 130 : : void setMinimumValue( double value ); 131 : : 132 : : /** 133 : : * Writes shader state to an XML element. 134 : : */ 135 : : void writeXml( QDomDocument &doc, QDomElement &parent, const QgsReadWriteContext &context = QgsReadWriteContext() ) const; 136 : : 137 : : /** 138 : : * Reads shader state from an XML element. 139 : : */ 140 : : void readXml( const QDomElement &elem, const QgsReadWriteContext &context = QgsReadWriteContext() ); 141 : : 142 : : private: 143 : : #ifdef SIP_RUN 144 : : QgsRasterShader( const QgsRasterShader &rh ); 145 : : #endif 146 : : 147 : : //! \brief User defineable minimum value for the raster shader 148 : : double mMinimumValue; 149 : : 150 : : //! \brief user defineable maximum value for the raster shader 151 : : double mMaximumValue; 152 : : 153 : : //! \brief Pointer to the shader function 154 : : std::unique_ptr< QgsRasterShaderFunction > mRasterShaderFunction; 155 : : 156 : : }; 157 : : #endif