QGIS API Documentation  3.20.0-Odense (decaadbb31)
qgscontrastenhancementfunction.cpp
Go to the documentation of this file.
1 /* **************************************************************************
2  qgscontrastenhancementfunction.cpp - description
3  -------------------
4 begin : Fri Nov 16 2007
5 copyright : (C) 2007 by Peter J. Ersts
6 email : [email protected]
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 
20 #include "qgscontrastenhancement.h"
21 
22 QgsContrastEnhancementFunction::QgsContrastEnhancementFunction( Qgis::DataType dataType, double minimumValue, double maximumValue )
23  : mMaximumValue( maximumValue )
24  , mMinimumValue( minimumValue )
25  , mMinimumMaximumRange( mMaximumValue - mMinimumValue )
26  , mQgsRasterDataType( dataType )
27  , mMaximumValuePossible( QgsContrastEnhancement::maximumValuePossible( mQgsRasterDataType ) )
28  , mMinimumValuePossible( QgsContrastEnhancement::minimumValuePossible( mQgsRasterDataType ) )
29 {
30 }
31 
33  : mMaximumValue( f.mMaximumValue )
34  , mMinimumValue( f.mMinimumValue )
35  , mMinimumMaximumRange( f.mMinimumMaximumRange )
36  , mQgsRasterDataType( f.mQgsRasterDataType )
37  , mMaximumValuePossible( f.mMaximumValuePossible )
38  , mMinimumValuePossible( f.mMinimumValuePossible )
39 {
40 }
41 
43 {
45  {
46  return static_cast<int>( value );
47  }
48  else
49  {
50  return static_cast<int>( ( ( ( value - mMinimumValuePossible ) / ( mMaximumValuePossible - mMinimumValuePossible ) ) * 255.0 ) );
51  }
52 }
53 
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  return value >= mMinimumValuePossible && value <= mMaximumValuePossible;
59 }
60 
62 {
63  if ( mMaximumValuePossible < value )
64  {
66  }
67  else
68  {
69  mMaximumValue = value;
70  }
71 
73 }
74 
76 {
77 
78  if ( mMinimumValuePossible > value )
79  {
81  }
82  else
83  {
84  mMinimumValue = value;
85  }
86 
88 }
DataType
Raster data types.
Definition: qgis.h:119
@ Byte
Eight bit unsigned integer (quint8)
A contrast enhancement function is the base class for all raster contrast enhancements.
QgsContrastEnhancementFunction(Qgis::DataType, double, double)
double mMaximumValue
User defineable maximum value for the band, used for enhanceContrasting.
double mMinimumMaximumRange
Minimum maximum range for the band, used for enhanceContrasting.
void setMinimumValue(double value)
Sets the minimum value.
virtual bool isValueInDisplayableRange(double value)
A customizable method to indicate if a pixel's value is within the displayable range.
Qgis::DataType mQgsRasterDataType
Data type of the band.
virtual int enhance(double value)
A customizable method that takes in a double value and returns a int between 0 and 255.
double mMinimumValue
User defineable minimum value for the band, used for enhanceContrasting.
void setMaximumValue(double value)
Sets the maximum value.
Manipulates raster or point cloud pixel values so that they enhanceContrast or clip into a specified ...