Branch data Line data Source code
1 : : /* ************************************************************************** 2 : : qgscontrastenhancementfunction.cpp - 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 : : #include "qgscontrastenhancementfunction.h" 20 : : #include "qgscontrastenhancement.h" 21 : : 22 : 0 : QgsContrastEnhancementFunction::QgsContrastEnhancementFunction( Qgis::DataType dataType, double minimumValue, double maximumValue ) 23 : 0 : : mMaximumValue( maximumValue ) 24 : 0 : , mMinimumValue( minimumValue ) 25 : 0 : , mMinimumMaximumRange( mMaximumValue - mMinimumValue ) 26 : 0 : , mQgsRasterDataType( dataType ) 27 : 0 : , mMaximumValuePossible( QgsContrastEnhancement::maximumValuePossible( mQgsRasterDataType ) ) 28 : 0 : , mMinimumValuePossible( QgsContrastEnhancement::minimumValuePossible( mQgsRasterDataType ) ) 29 : 0 : { 30 : 0 : } 31 : : 32 : 0 : QgsContrastEnhancementFunction::QgsContrastEnhancementFunction( const QgsContrastEnhancementFunction &f ) 33 : 0 : : mMaximumValue( f.mMaximumValue ) 34 : 0 : , mMinimumValue( f.mMinimumValue ) 35 : 0 : , mMinimumMaximumRange( f.mMinimumMaximumRange ) 36 : 0 : , mQgsRasterDataType( f.mQgsRasterDataType ) 37 : 0 : , mMaximumValuePossible( f.mMaximumValuePossible ) 38 : 0 : , mMinimumValuePossible( f.mMinimumValuePossible ) 39 : 0 : { 40 : 0 : } 41 : : 42 : 0 : int QgsContrastEnhancementFunction::enhance( double value ) 43 : : { 44 : 0 : if ( mQgsRasterDataType == Qgis::Byte ) 45 : : { 46 : 0 : return static_cast<int>( value ); 47 : : } 48 : : else 49 : : { 50 : 0 : return static_cast<int>( ( ( ( value - mMinimumValuePossible ) / ( mMaximumValuePossible - mMinimumValuePossible ) ) * 255.0 ) ); 51 : : } 52 : 0 : } 53 : : 54 : 0 : bool QgsContrastEnhancementFunction::isValueInDisplayableRange( double value ) 55 : : { 56 : : //A default check is to see if the provided value is with the range for the data type 57 : : // Write the test as ( v >= min && v <= max ) so that v = NaN returns false 58 : 0 : return value >= mMinimumValuePossible && value <= mMaximumValuePossible; 59 : : } 60 : : 61 : 0 : void QgsContrastEnhancementFunction::setMaximumValue( double value ) 62 : : { 63 : 0 : if ( mMaximumValuePossible < value ) 64 : : { 65 : 0 : mMaximumValue = mMaximumValuePossible; 66 : 0 : } 67 : : else 68 : : { 69 : 0 : mMaximumValue = value; 70 : : } 71 : : 72 : 0 : mMinimumMaximumRange = mMaximumValue - mMinimumValue; 73 : 0 : } 74 : : 75 : 0 : void QgsContrastEnhancementFunction::setMinimumValue( double value ) 76 : : { 77 : : 78 : 0 : if ( mMinimumValuePossible > value ) 79 : : { 80 : 0 : mMinimumValue = mMinimumValuePossible; 81 : 0 : } 82 : : else 83 : : { 84 : 0 : mMinimumValue = value; 85 : : } 86 : : 87 : 0 : mMinimumMaximumRange = mMaximumValue - mMinimumValue; 88 : 0 : }