mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-25 00:58:06 -05:00
-Added extra debug statements
-Updated linear contrast enhancement functions -Fix for ticket #900 git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@7951 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
parent
7e20fe5df0
commit
c7d3a8622a
@ -17,7 +17,9 @@ class originally created circa 2004 by T.Sutton, Gary E.Sherman, Steve Halasz
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#include "qgslogger.h"
|
||||
|
||||
#include "qgscontrastenhancement.h"
|
||||
#include "qgscontrastenhancementfunction.h"
|
||||
#include "qgslinearminmaxenhancement.h"
|
||||
@ -26,7 +28,9 @@ class originally created circa 2004 by T.Sutton, Gary E.Sherman, Steve Halasz
|
||||
|
||||
QgsContrastEnhancement::QgsContrastEnhancement(QgsRasterDataType theDataType)
|
||||
{
|
||||
|
||||
#ifdef QGISDEBUG
|
||||
QgsDebugMsg("QgsContrastEnhancement::QgsContrastEnhancement() called");
|
||||
#endif
|
||||
mLookupTable = 0;
|
||||
mContrastEnhancementFunction = 0;
|
||||
mEnhancementDirty = false;
|
||||
@ -166,6 +170,12 @@ bool QgsContrastEnhancement::generateLookupTable()
|
||||
if(QGS_Byte != mRasterDataType && QGS_UInt16 != mRasterDataType && QGS_Int16 != mRasterDataType) { return false; }
|
||||
if(!mLookupTable) { return false; }
|
||||
|
||||
#ifdef QGISDEBUG
|
||||
QgsDebugMsg("QgsContrastEnhancement::generateLookupTable() - building lookup table");
|
||||
QgsDebugMsg("***MinimumValue : "+ QString::number(mMinimumValue));
|
||||
QgsDebugMsg("***MaximumValue : "+ QString::number(mMaximumValue));
|
||||
QgsDebugMsg("***mLookupTableOffset : "+ QString::number(mLookupTableOffset));
|
||||
#endif
|
||||
for(int myIterator = 0; myIterator < mRasterDataTypeRange; myIterator++)
|
||||
{
|
||||
mLookupTable[myIterator] = mContrastEnhancementFunction->enhanceValue((double)myIterator - mLookupTableOffset);
|
||||
@ -198,6 +208,9 @@ bool QgsContrastEnhancement::isValueInDisplayableRange(double theValue)
|
||||
*/
|
||||
void QgsContrastEnhancement::setContrastEnhancementAlgorithm(CONTRAST_ENHANCEMENT_ALGORITHM theAlgorithm, bool generateTable)
|
||||
{
|
||||
#ifdef QGISDEBUG
|
||||
QgsDebugMsg("QgsContrastEnhancement::setContrastEnhancementAlgorithm() called algorithm: "+ QString::number((int)theAlgorithm) +" generate lookup table: "+ QString::number((int)generateTable));
|
||||
#endif
|
||||
if(theAlgorithm != mContrastEnhancementAlgorithm )
|
||||
{
|
||||
switch(theAlgorithm)
|
||||
@ -236,6 +249,9 @@ void QgsContrastEnhancement::setContrastEnhancementAlgorithm(CONTRAST_ENHANCEMEN
|
||||
*/
|
||||
void QgsContrastEnhancement::setContrastEnhancementFunction(QgsContrastEnhancementFunction* theFunction)
|
||||
{
|
||||
#ifdef QGISDEBUG
|
||||
QgsDebugMsg("QgsContrastEnhancement::setContrastEnhancementFunction() called");
|
||||
#endif
|
||||
if(0 != theFunction)
|
||||
{
|
||||
mContrastEnhancementFunction = theFunction;
|
||||
@ -252,6 +268,9 @@ void QgsContrastEnhancement::setContrastEnhancementFunction(QgsContrastEnhanceme
|
||||
*/
|
||||
void QgsContrastEnhancement::setMaximumValue(double theValue, bool generateTable)
|
||||
{
|
||||
#ifdef QGISDEBUG
|
||||
QgsDebugMsg("QgsContrastEnhancement::setMaximumValue() called value: "+ QString::number(theValue) +" generate lookup table: "+ QString::number((int)generateTable));
|
||||
#endif
|
||||
if(theValue > getMaximumPossibleValue(mRasterDataType))
|
||||
{
|
||||
mMaximumValue = getMaximumPossibleValue(mRasterDataType);
|
||||
@ -282,6 +301,9 @@ void QgsContrastEnhancement::setMaximumValue(double theValue, bool generateTable
|
||||
*/
|
||||
void QgsContrastEnhancement::setMinimumValue(double theValue, bool generateTable)
|
||||
{
|
||||
#ifdef QGISDEBUG
|
||||
QgsDebugMsg("QgsContrastEnhancement::setMinimumValue() called value: "+ QString::number(theValue) +" generate lookup table: "+ QString::number((int)generateTable));
|
||||
#endif
|
||||
if(theValue < getMinimumPossibleValue(mRasterDataType))
|
||||
{
|
||||
mMinimumValue = getMinimumPossibleValue(mRasterDataType);
|
||||
@ -318,7 +340,7 @@ int QgsContrastEnhancement::stretch(double theValue)
|
||||
|
||||
if(mLookupTable && NO_STRETCH != mContrastEnhancementAlgorithm)
|
||||
{
|
||||
return mLookupTable[static_cast <int>(theValue)];
|
||||
return mLookupTable[static_cast <int>(theValue + mLookupTableOffset)];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -25,13 +25,13 @@ QgsLinearMinMaxEnhancement::QgsLinearMinMaxEnhancement(QgsContrastEnhancement::Q
|
||||
int QgsLinearMinMaxEnhancement::enhanceValue(double theValue)
|
||||
{
|
||||
int myStretchedValue = static_cast<int>(((theValue - mMinimumValue)/(mMinimumMaximumRange))*255.0);
|
||||
if(myStretchedValue < QgsContrastEnhancement::getMinimumPossibleValue(mQgsRasterDataType))
|
||||
if(myStretchedValue < 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else if(myStretchedValue > QgsContrastEnhancement::getMaximumPossibleValue(mQgsRasterDataType))
|
||||
else if(myStretchedValue > 255)
|
||||
{
|
||||
return static_cast<int>(QgsContrastEnhancement::getMaximumPossibleValue(mQgsRasterDataType));
|
||||
return 255;
|
||||
}
|
||||
|
||||
return myStretchedValue;
|
||||
|
@ -30,14 +30,15 @@ int QgsLinearMinMaxEnhancementWithClip::enhanceValue(double theValue)
|
||||
}
|
||||
|
||||
int myStretchedValue = static_cast<int>(((theValue - mMinimumValue)/(mMinimumMaximumRange))*255.0);
|
||||
if(myStretchedValue < QgsContrastEnhancement::getMinimumPossibleValue(mQgsRasterDataType))
|
||||
if(myStretchedValue < 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else if(myStretchedValue > QgsContrastEnhancement::getMaximumPossibleValue(mQgsRasterDataType))
|
||||
else if(myStretchedValue > 255)
|
||||
{
|
||||
return static_cast<int>(QgsContrastEnhancement::getMaximumPossibleValue(mQgsRasterDataType));
|
||||
return 255;
|
||||
}
|
||||
|
||||
return myStretchedValue;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user