Branch data Line data Source code
1 : : /* ************************************************************************** 2 : : qgscontrastenhancementfunction.h - description 3 : : ------------------- 4 : : begin : Fri Nov 16 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 : : #ifndef QGSCONTRASTENHANCEMENTFUNCTION_H 20 : : #define QGSCONTRASTENHANCEMENTFUNCTION_H 21 : : 22 : : #include "qgis_core.h" 23 : : #include "qgis.h" 24 : : 25 : : /** 26 : : * \ingroup core 27 : : * \brief A contrast enhancement function is the base class for all raster contrast enhancements. 28 : : * 29 : : * The purpose of a contrast enhancement is to enhanceContrast or clip a pixel value into 30 : : * a specified bounding range. 31 : : */ 32 : : class CORE_EXPORT QgsContrastEnhancementFunction 33 : : { 34 : : 35 : : public: 36 : : QgsContrastEnhancementFunction( Qgis::DataType, double, double ); 37 : : QgsContrastEnhancementFunction( const QgsContrastEnhancementFunction &f ); 38 : : QgsContrastEnhancementFunction &operator=( const QgsContrastEnhancementFunction & ) = delete; 39 : 0 : virtual ~QgsContrastEnhancementFunction() = default; 40 : : 41 : : /** 42 : : * A customizable method that takes in a double \a value and returns a int between 0 and 255. 43 : : */ 44 : : virtual int enhance( double value ); 45 : : 46 : : /** 47 : : * A customizable method to indicate if a pixel's value is within the displayable range. 48 : : */ 49 : : virtual bool isValueInDisplayableRange( double value ); 50 : : 51 : : /** 52 : : * Sets the maximum \a value. 53 : : * \see maximumValue() 54 : : * \see setMinimumValue() 55 : : */ 56 : : void setMaximumValue( double value ); 57 : : 58 : : /** 59 : : * Sets the minimum \a value. 60 : : * \see minimumValue() 61 : : * \see setMaximumValue() 62 : : */ 63 : : void setMinimumValue( double value ); 64 : : 65 : : /** 66 : : * Returns the maximum value. 67 : : * \see setMaximumValue() 68 : : * \see minimumValue() 69 : : * \since QGIS 3.2 70 : : */ 71 : : double maximumValue() const { return mMaximumValue; } 72 : : 73 : : /** 74 : : * Returns the minimum value. 75 : : * \see setMinimumValue() 76 : : * \see maximumValue() 77 : : * \since QGIS 3.2 78 : : */ 79 : : double minimumValue() const { return mMinimumValue; } 80 : : 81 : : protected: 82 : : //! \brief User defineable maximum value for the band, used for enhanceContrasting 83 : : double mMaximumValue; 84 : : 85 : : //! \brief User defineable minimum value for the band, used for enhanceContrasting 86 : : double mMinimumValue; 87 : : 88 : : //! \brief Minimum maximum range for the band, used for enhanceContrasting 89 : : double mMinimumMaximumRange; 90 : : 91 : : //! \brief Data type of the band 92 : : Qgis::DataType mQgsRasterDataType; 93 : : 94 : : double mMaximumValuePossible = std::numeric_limits< double >::max() SIP_SKIP; 95 : : double mMinimumValuePossible = std::numeric_limits< double >::lowest() SIP_SKIP; 96 : : 97 : : private: 98 : : #ifdef SIP_RUN 99 : : QgsContrastEnhancementFunction &operator=( const QgsContrastEnhancementFunction & ); 100 : : #endif 101 : : }; 102 : : 103 : : #endif