|
QGIS API Documentation
master-59fd5e0
|
00001 /* ************************************************************************** 00002 qgscontrastenhancement.h - description 00003 ------------------- 00004 begin : Mon Oct 22 2007 00005 copyright : (C) 2007 by Peter J. Ersts 00006 email : ersts@amnh.org 00007 00008 This class contains code that was originally part of the larger QgsRasterLayer 00009 class originally created circa 2004 by T.Sutton, Gary E.Sherman, Steve Halasz 00010 ****************************************************************************/ 00011 00012 /* ************************************************************************** 00013 * * 00014 * This program is free software; you can redistribute it and/or modify * 00015 * it under the terms of the GNU General Public License as published by * 00016 * the Free Software Foundation; either version 2 of the License, or * 00017 * (at your option) any later version. * 00018 * * 00019 ***************************************************************************/ 00020 00021 #ifndef QGSCONTRASTENHANCEMENT_H 00022 #define QGSCONTRASTENHANCEMENT_H 00023 00024 #include <limits> 00025 00026 #include "qgis.h" 00027 00028 class QgsContrastEnhancementFunction; 00029 class QDomDocument; 00030 class QDomElement; 00031 class QString; 00032 00038 class CORE_EXPORT QgsContrastEnhancement 00039 { 00040 00041 public: 00042 00044 enum ContrastEnhancementAlgorithm 00045 { 00046 NoEnhancement, //this should be the default color scaling algorithm 00047 StretchToMinimumMaximum, //linear histogram enhanceContrast 00048 StretchAndClipToMinimumMaximum, 00049 ClipToMinimumMaximum, 00050 UserDefinedEnhancement 00051 }; 00052 00053 QgsContrastEnhancement( QGis::DataType theDatatype = QGis::Byte ); 00054 QgsContrastEnhancement( const QgsContrastEnhancement& ce ); 00055 ~QgsContrastEnhancement(); 00056 00057 /* 00058 * 00059 * Static methods 00060 * 00061 */ 00063 static double maximumValuePossible( QGis::DataType ); 00064 00066 static double minimumValuePossible( QGis::DataType ); 00067 00068 /* 00069 * 00070 * Non-Static Inline methods 00071 * 00072 */ 00074 double maximumValue() const { return mMaximumValue; } 00075 00077 double minimumValue() const { return mMinimumValue; } 00078 00079 ContrastEnhancementAlgorithm contrastEnhancementAlgorithm() const { return mContrastEnhancementAlgorithm; } 00080 00081 static QString contrastEnhancementAlgorithmString( ContrastEnhancementAlgorithm algorithm ); 00082 00083 static ContrastEnhancementAlgorithm contrastEnhancementAlgorithmFromString( const QString& contrastEnhancementString ); 00084 00085 /* 00086 * 00087 * Non-Static methods 00088 * 00089 */ 00091 int enhanceContrast( double ); 00092 00094 bool isValueInDisplayableRange( double ); 00095 00097 void setContrastEnhancementAlgorithm( ContrastEnhancementAlgorithm, bool generateTable = true ); 00098 00100 void setContrastEnhancementFunction( QgsContrastEnhancementFunction* ); 00101 00103 void setMaximumValue( double, bool generateTable = true ); 00104 00106 void setMinimumValue( double, bool generateTable = true ); 00107 00108 void writeXML( QDomDocument& doc, QDomElement& parentElem ) const; 00109 00110 void readXML( const QDomElement& elem ); 00111 00112 private: 00114 ContrastEnhancementAlgorithm mContrastEnhancementAlgorithm; 00115 00117 QgsContrastEnhancementFunction* mContrastEnhancementFunction; 00118 00120 bool mEnhancementDirty; 00121 00123 double mLookupTableOffset; 00124 00126 int *mLookupTable; 00127 00129 double mMinimumValue; 00130 00132 double mMaximumValue; 00133 00135 QGis::DataType mRasterDataType; 00136 00138 double mRasterDataTypeRange; 00139 00140 00141 00143 bool generateLookupTable(); 00144 00146 int calculateContrastEnhancementValue( double ); 00147 }; 00148 00149 #endif