Quantum GIS API Documentation  1.7.4
Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
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]

List of all members.

Public Types

enum  ContrastEnhancementAlgorithm {
  NoEnhancement, StretchToMinimumMaximum, StretchAndClipToMinimumMaximum, ClipToMinimumMaximum,
  UserDefinedEnhancement
}
 This enumerator describes the types of contrast enhancement algorithms that can be used. More...
enum  QgsRasterDataType {
  QGS_Unknown = 0, QGS_Byte = 1, QGS_UInt16 = 2, QGS_Int16 = 3,
  QGS_UInt32 = 4, QGS_Int32 = 5, QGS_Float32 = 6, QGS_Float64 = 7,
  QGS_CInt16 = 8, QGS_CInt32 = 9, QGS_CFloat32 = 10, QGS_CFloat64 = 11,
  QGS_TypeCount = 12
}
 These are exactly the same as GDAL pixel data types This was added so that the python bindings could be built, which initially was a problem because GDALDataType was passed around as an argument to numerous method, including the constructor. More...

Public Member Functions

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

Static Public Member Functions

static double maximumValuePossible (QgsRasterDataType)
 Helper function that returns the maximum possible value for a GDAL data type.
static double minimumValuePossible (QgsRasterDataType)
 Helper function that returns the minimum possible value for a GDAL data type.

Private Member Functions

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

Private Attributes

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

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 33 of file qgscontrastenhancement.h.


Member Enumeration Documentation

This enumerator describes the types of contrast enhancement algorithms that can be used.

Enumerator:
NoEnhancement 
StretchToMinimumMaximum 
StretchAndClipToMinimumMaximum 
ClipToMinimumMaximum 
UserDefinedEnhancement 

Definition at line 39 of file qgscontrastenhancement.h.

These are exactly the same as GDAL pixel data types This was added so that the python bindings could be built, which initially was a problem because GDALDataType was passed around as an argument to numerous method, including the constructor.

It seems like there should be a better way to do this...

Enumerator:
QGS_Unknown 
QGS_Byte 

Eight bit unsigned integer

QGS_UInt16 

Sixteen bit unsigned integer

QGS_Int16 

Sixteen bit signed integer

QGS_UInt32 

Thirty two bit unsigned integer

QGS_Int32 

Thirty two bit signed integer

QGS_Float32 

Thirty two bit floating point

QGS_Float64 

Sixty four bit floating point

QGS_CInt16 

Complex Int16

QGS_CInt32 

Complex Int32

QGS_CFloat32 

Complex Float32

QGS_CFloat64 

Complex Float64

QGS_TypeCount 

Definition at line 55 of file qgscontrastenhancement.h.


Constructor & Destructor Documentation

Definition at line 53 of file qgscontrastenhancement.cpp.


Member Function Documentation

Method to calculate the actual enhanceContrasted value(s)

Definition at line 97 of file qgscontrastenhancement.h.

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 169 of file qgscontrastenhancement.cpp.

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

Referenced by QgsRasterLayer::drawMultiBandColor(), and QgsRasterLayer::drawSingleBandGray().

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 220 of file qgscontrastenhancement.cpp.

References QgsContrastEnhancementFunction::isValueInDisplayableRange(), and mContrastEnhancementFunction.

Referenced by QgsRasterLayer::drawMultiBandColor(), and QgsRasterLayer::drawSingleBandGray().

double QgsContrastEnhancement::maximumValue ( ) const [inline]

Return the maximum value for the contrast enhancement range.

Definition at line 92 of file qgscontrastenhancement.h.

double QgsContrastEnhancement::minimumValue ( ) const [inline]

Return the minimum value for the contrast enhancement range.

Definition at line 95 of file qgscontrastenhancement.h.

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 237 of file qgscontrastenhancement.cpp.

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

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 277 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 295 of file qgscontrastenhancement.cpp.

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

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 327 of file qgscontrastenhancement.cpp.

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


Member Data Documentation

Flag indicating if the lookup table needs to be regenerated.

Definition at line 130 of file qgscontrastenhancement.h.

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

Pointer to the lookup table.

Definition at line 136 of file qgscontrastenhancement.h.

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

Scalar so that values can be used as array indicies.

Definition at line 133 of file qgscontrastenhancement.h.

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

user defineable maximum value for the band, used for enhanceContrasting

Definition at line 142 of file qgscontrastenhancement.h.

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

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

Definition at line 139 of file qgscontrastenhancement.h.

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

Maximum range of values for a given data type.

Definition at line 148 of file qgscontrastenhancement.h.

Referenced by generateLookupTable(), and QgsContrastEnhancement().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines