QGIS API Documentation  2.5.0-Master
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
QgsContrastEnhancement Class Reference

Manipulates raster pixel values so that they enhanceContrast or clip into a specified numerical range according to the specified ContrastEnhancementAlgorithm. More...

#include <qgscontrastenhancement.h>

Collaboration diagram for QgsContrastEnhancement:
Collaboration graph
[legend]

Public Types

enum  ContrastEnhancementAlgorithm {
  NoEnhancement, StretchToMinimumMaximum, StretchAndClipToMinimumMaximum, ClipToMinimumMaximum,
  UserDefinedEnhancement
}
 This enumerator describes the types of contrast enhancement algorithms that can be used. More...
 

Public Member Functions

 QgsContrastEnhancement (QGis::DataType theDatatype=QGis::Byte)
 
 QgsContrastEnhancement (const QgsContrastEnhancement &ce)
 
 ~QgsContrastEnhancement ()
 
double maximumValue () const
 Return the maximum value for the contrast enhancement range. More...
 
double minimumValue () const
 Return the minimum value for the contrast enhancement range. More...
 
ContrastEnhancementAlgorithm contrastEnhancementAlgorithm () const
 
int enhanceContrast (double)
 Apply the contrast enhancement to a value. More...
 
bool isValueInDisplayableRange (double)
 Return true if pixel is in stretable range, false if pixel is outside of range (i.e., clipped) More...
 
void setContrastEnhancementAlgorithm (ContrastEnhancementAlgorithm, bool generateTable=true)
 Set the contrast enhancement algorithm. More...
 
void setContrastEnhancementFunction (QgsContrastEnhancementFunction *)
 A public method that allows the user to set their own custom contrast enhancment function. More...
 
void setMaximumValue (double, bool generateTable=true)
 Set the maximum value for the contrast enhancement range. More...
 
void setMinimumValue (double, bool generateTable=true)
 Return the minimum value for the contrast enhancement range. More...
 
void writeXML (QDomDocument &doc, QDomElement &parentElem) const
 
void readXML (const QDomElement &elem)
 

Static Public Member Functions

static double maximumValuePossible (QGis::DataType)
 Helper function that returns the maximum possible value for a GDAL data type. More...
 
static double minimumValuePossible (QGis::DataType)
 Helper function that returns the minimum possible value for a GDAL data type. More...
 
static QString contrastEnhancementAlgorithmString (ContrastEnhancementAlgorithm algorithm)
 
static ContrastEnhancementAlgorithm contrastEnhancementAlgorithmFromString (const QString &contrastEnhancementString)
 

Private Member Functions

bool generateLookupTable ()
 Method to generate a new lookup table. More...
 
int calculateContrastEnhancementValue (double)
 Method to calculate the actual enhanceContrasted value(s) More...
 

Private Attributes

ContrastEnhancementAlgorithm mContrastEnhancementAlgorithm
 Current contrast enhancement algorithm. More...
 
QgsContrastEnhancementFunctionmContrastEnhancementFunction
 Pointer to the contrast enhancement function. More...
 
bool mEnhancementDirty
 Flag indicating if the lookup table needs to be regenerated. More...
 
double mLookupTableOffset
 Scalar so that values can be used as array indicies. More...
 
int * mLookupTable
 Pointer to the lookup table. More...
 
double mMinimumValue
 User defineable minimum value for the band, used for enhanceContrasting. More...
 
double mMaximumValue
 user defineable maximum value for the band, used for enhanceContrasting More...
 
QGis::DataType mRasterDataType
 Data type of the band. More...
 
double mRasterDataTypeRange
 Maximum range of values for a given data type. More...
 

Detailed Description

Manipulates raster pixel values so that they enhanceContrast or clip into a specified numerical range according to the specified ContrastEnhancementAlgorithm.

Definition at line 38 of file qgscontrastenhancement.h.

Constructor & Destructor Documentation

QgsContrastEnhancement::QgsContrastEnhancement ( QGis::DataType  theDatatype = QGis::Byte)
QgsContrastEnhancement::QgsContrastEnhancement ( const QgsContrastEnhancement ce)
QgsContrastEnhancement::~QgsContrastEnhancement ( )

Definition at line 78 of file qgscontrastenhancement.cpp.

References mContrastEnhancementFunction, and mLookupTable.

Member Function Documentation

int QgsContrastEnhancement::calculateContrastEnhancementValue ( double  )
private

Method to calculate the actual enhanceContrasted value(s)

ContrastEnhancementAlgorithm QgsContrastEnhancement::contrastEnhancementAlgorithm ( ) const
inline
QgsContrastEnhancement::ContrastEnhancementAlgorithm QgsContrastEnhancement::contrastEnhancementAlgorithmFromString ( const QString &  contrastEnhancementString)
static
QString QgsContrastEnhancement::contrastEnhancementAlgorithmString ( ContrastEnhancementAlgorithm  algorithm)
static
int QgsContrastEnhancement::enhanceContrast ( double  theValue)

Apply the contrast enhancement to a value.

Public function to generate the enhanced for enhanceContrasted value for a given input.

Return values are 0 - 254, -1 means the pixel was clipped and should not be displayed

Parameters
theValueThe pixel value to enhance

Definition at line 198 of file qgscontrastenhancement.cpp.

References QgsContrastEnhancementFunction::enhance(), generateLookupTable(), mContrastEnhancementAlgorithm, mContrastEnhancementFunction, mEnhancementDirty, mLookupTable, mLookupTableOffset, and NoEnhancement.

Referenced by QgsMultiBandColorRenderer::block(), and QgsSingleBandGrayRenderer::block().

bool QgsContrastEnhancement::generateLookupTable ( )
private
bool QgsContrastEnhancement::isValueInDisplayableRange ( double  theValue)

Return true if pixel is in stretable range, false if pixel is outside of range (i.e., clipped)

Determine if a pixel is within in the displayable range.

Parameters
theValueThe pixel value to examine

Definition at line 253 of file qgscontrastenhancement.cpp.

References QgsContrastEnhancementFunction::isValueInDisplayableRange(), and mContrastEnhancementFunction.

Referenced by QgsMultiBandColorRenderer::block(), and QgsSingleBandGrayRenderer::block().

double QgsContrastEnhancement::maximumValue ( ) const
inline

Return the maximum value for the contrast enhancement range.

Definition at line 74 of file qgscontrastenhancement.h.

Referenced by QgsSingleBandGrayRenderer::legendSymbologyItems(), QgsSingleBandGrayRendererWidget::setFromRenderer(), and QgsMultiBandColorRendererWidget::setMinMaxValue().

double QgsContrastEnhancement::maximumValuePossible ( QGis::DataType  theDataType)
static
double QgsContrastEnhancement::minimumValue ( ) const
inline

Return the minimum value for the contrast enhancement range.

Definition at line 77 of file qgscontrastenhancement.h.

Referenced by QgsSingleBandGrayRenderer::legendSymbologyItems(), QgsSingleBandGrayRendererWidget::setFromRenderer(), and QgsMultiBandColorRendererWidget::setMinMaxValue().

double QgsContrastEnhancement::minimumValuePossible ( QGis::DataType  theDataType)
static
void QgsContrastEnhancement::readXML ( const QDomElement &  elem)
void QgsContrastEnhancement::setContrastEnhancementAlgorithm ( ContrastEnhancementAlgorithm  theAlgorithm,
bool  generateTable = true 
)

Set the contrast enhancement algorithm.

The second parameter is optional and is for performace improvements. If you know you are immediately going to set the Minimum or Maximum value, you can elect to not generate the lookup tale. By default it will be generated.

Parameters
theAlgorithmThe new contrast enhancement algorithm
generateTableFlag to overide automatic look up table generation

Definition at line 270 of file qgscontrastenhancement.cpp.

References ClipToMinimumMaximum, generateLookupTable(), mContrastEnhancementAlgorithm, mContrastEnhancementFunction, mEnhancementDirty, mMaximumValue, mMinimumValue, mRasterDataType, QgsDebugMsg, StretchAndClipToMinimumMaximum, StretchToMinimumMaximum, and UserDefinedEnhancement.

Referenced by QgsContrastEnhancement(), readXML(), QgsSingleBandGrayRendererWidget::renderer(), QgsRasterLayer::setContrastEnhancement(), and QgsMultiBandColorRendererWidget::setCustomMinMaxValues().

void QgsContrastEnhancement::setContrastEnhancementFunction ( QgsContrastEnhancementFunction theFunction)

A public method that allows the user to set their own custom contrast enhancment function.

A public function that allows the user to set their own custom contrast enhancement function.

Parameters
theFunctionThe new contrast enhancement function

Definition at line 310 of file qgscontrastenhancement.cpp.

References generateLookupTable(), mContrastEnhancementAlgorithm, mContrastEnhancementFunction, QgsDebugMsg, and UserDefinedEnhancement.

void QgsContrastEnhancement::setMaximumValue ( double  theValue,
bool  generateTable = true 
)

Set the maximum value for the contrast enhancement range.

Set the maximum value for the contrast enhancement.

The second parameter is option an is for performace improvements. If you know you are immediately going to set the Minimum value or the contrast enhancement algorithm, you can elect to not generate the lookup tale. By default it will be generated.

Parameters
theValueThe new maximum value for the band
generateTableFlag to overide automatic look up table generation

Definition at line 328 of file qgscontrastenhancement.cpp.

References generateLookupTable(), maximumValuePossible(), mContrastEnhancementFunction, mEnhancementDirty, mMaximumValue, mRasterDataType, QgsDebugMsg, and QgsContrastEnhancementFunction::setMaximumValue().

Referenced by QgsSingleBandGrayRendererWidget::renderer(), QgsRasterLayer::setContrastEnhancement(), and QgsMultiBandColorRendererWidget::setCustomMinMaxValues().

void QgsContrastEnhancement::setMinimumValue ( double  theValue,
bool  generateTable = true 
)

Return the minimum value for the contrast enhancement range.

Set the maximum value for the contrast enhancement.

The second parameter is option an is for performace improvements. If you know you are immediately going to set the Maximum value or the contrast enhancement algorithm, you can elect to not generate the lookup tale. By default it will be generated.

Parameters
theValueThe new minimum value for the band
generateTableFlag to overide automatic look up table generation

Definition at line 360 of file qgscontrastenhancement.cpp.

References generateLookupTable(), mContrastEnhancementFunction, mEnhancementDirty, minimumValuePossible(), mMinimumValue, mRasterDataType, QgsDebugMsg, and QgsContrastEnhancementFunction::setMinimumValue().

Referenced by QgsSingleBandGrayRendererWidget::renderer(), QgsRasterLayer::setContrastEnhancement(), and QgsMultiBandColorRendererWidget::setCustomMinMaxValues().

void QgsContrastEnhancement::writeXML ( QDomDocument &  doc,
QDomElement &  parentElem 
) const

Member Data Documentation

ContrastEnhancementAlgorithm QgsContrastEnhancement::mContrastEnhancementAlgorithm
private
QgsContrastEnhancementFunction* QgsContrastEnhancement::mContrastEnhancementFunction
private
bool QgsContrastEnhancement::mEnhancementDirty
private

Flag indicating if the lookup table needs to be regenerated.

Definition at line 120 of file qgscontrastenhancement.h.

Referenced by enhanceContrast(), generateLookupTable(), QgsContrastEnhancement(), setContrastEnhancementAlgorithm(), setMaximumValue(), and setMinimumValue().

int* QgsContrastEnhancement::mLookupTable
private

Pointer to the lookup table.

Definition at line 126 of file qgscontrastenhancement.h.

Referenced by enhanceContrast(), generateLookupTable(), QgsContrastEnhancement(), and ~QgsContrastEnhancement().

double QgsContrastEnhancement::mLookupTableOffset
private

Scalar so that values can be used as array indicies.

Definition at line 123 of file qgscontrastenhancement.h.

Referenced by enhanceContrast(), generateLookupTable(), and QgsContrastEnhancement().

double QgsContrastEnhancement::mMaximumValue
private

user defineable maximum value for the band, used for enhanceContrasting

Definition at line 132 of file qgscontrastenhancement.h.

Referenced by generateLookupTable(), QgsContrastEnhancement(), readXML(), setContrastEnhancementAlgorithm(), setMaximumValue(), and writeXML().

double QgsContrastEnhancement::mMinimumValue
private

User defineable minimum value for the band, used for enhanceContrasting.

Definition at line 129 of file qgscontrastenhancement.h.

Referenced by generateLookupTable(), QgsContrastEnhancement(), readXML(), setContrastEnhancementAlgorithm(), setMinimumValue(), and writeXML().

QGis::DataType QgsContrastEnhancement::mRasterDataType
private
double QgsContrastEnhancement::mRasterDataTypeRange
private

Maximum range of values for a given data type.

Definition at line 138 of file qgscontrastenhancement.h.

Referenced by generateLookupTable(), and QgsContrastEnhancement().


The documentation for this class was generated from the following files: