Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
-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
  • Loading branch information
ersts committed Jan 14, 2008
1 parent 7e20fe5 commit c7d3a86
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 9 deletions.
28 changes: 25 additions & 3 deletions src/core/raster/qgscontrastenhancement.cpp
Expand Up @@ -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"
Expand All @@ -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;
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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;
Expand All @@ -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);
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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
{
Expand Down
6 changes: 3 additions & 3 deletions src/core/raster/qgslinearminmaxenhancement.cpp
Expand Up @@ -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;
Expand Down
7 changes: 4 additions & 3 deletions src/core/raster/qgslinearminmaxenhancementwithclip.cpp
Expand Up @@ -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;
}

Expand Down

0 comments on commit c7d3a86

Please sign in to comment.