forked from ossimlabs/ossim
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'dev' of https://github.com/ossimlabs/ossim into dev
- Loading branch information
Showing
25 changed files
with
3,036 additions
and
1,624 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
//******************************************************************* | ||
// | ||
// License: MIT | ||
// | ||
// See LICENSE.txt file in the top level directory for more details. | ||
// | ||
// Description: | ||
// | ||
// Contains class declaration for ossimNormalizedU10RemapTable. Table for | ||
// normalizing unsigned 10 bit data. | ||
// | ||
//******************************************************************* | ||
// $Id$ | ||
|
||
#ifndef ossimNormalizedU10RemapTable_HEADER | ||
#define ossimNormalizedU10RemapTable_HEADER | ||
|
||
#include <ossim/imaging/ossimNormalizedRemapTable.h> | ||
#include <ossim/base/ossimCommon.h> /* for round */ | ||
|
||
/** | ||
* @class ossimNormalizedU10RemapTable | ||
* | ||
* @brief Eleven bit normalized remap table to go to/from normalized value | ||
* to pixel value. | ||
*/ | ||
class OSSIM_DLL ossimNormalizedU10RemapTable : public ossimNormalizedRemapTable | ||
{ | ||
public: | ||
|
||
/** @brief default constructor */ | ||
ossimNormalizedU10RemapTable(); | ||
/** @brief virtual destructor */ | ||
virtual ~ossimNormalizedU10RemapTable(); | ||
|
||
|
||
enum | ||
{ | ||
TABLE_ENTRIES = 1024 // 2^10 | ||
}; | ||
|
||
/** | ||
* @brief Gets the number of table entries. | ||
* @return The number of entries in a table. | ||
*/ | ||
virtual ossim_int32 getEntries() const; | ||
|
||
/** | ||
* @brief Gets a normalized value (between '0.0' and '1.0') from | ||
* a pixel value. | ||
* | ||
* @return Value between 0.0 and 1.0. | ||
*/ | ||
virtual ossim_float64 operator[](ossim_int32 pix) const; | ||
|
||
/** | ||
* @brief Gets a normalized value (between '0.0' and '1.0') from | ||
* a pixel value. | ||
* | ||
* @return Value between 0.0 and 1.0. | ||
*/ | ||
virtual ossim_float64 normFromPix(ossim_int32 pix) const; | ||
|
||
/** | ||
* @brief Returns an pixel value as an int from a normalized value. | ||
* | ||
* @return Value between scalar range of remap table. | ||
*/ | ||
virtual ossim_int32 pixFromNorm(ossim_float64 normPix) const; | ||
|
||
private: | ||
|
||
static ossim_float64 theTable[TABLE_ENTRIES]; | ||
static bool theTableIsInitialized; | ||
|
||
}; | ||
|
||
inline ossim_int32 ossimNormalizedU10RemapTable::getEntries() const | ||
{ | ||
return TABLE_ENTRIES; | ||
} | ||
|
||
inline ossim_float64 ossimNormalizedU10RemapTable::operator[]( | ||
ossim_int32 pix) const | ||
{ | ||
return ( (pix < TABLE_ENTRIES) ? (pix >= 0 ? theTable[pix] : 0.0) : 1.0); | ||
} | ||
|
||
inline ossim_float64 ossimNormalizedU10RemapTable::normFromPix( | ||
ossim_int32 pix) const | ||
{ | ||
return ( (pix < TABLE_ENTRIES) ? (pix >= 0 ? theTable[pix] : 0.0) : 1.0); | ||
} | ||
|
||
inline ossim_int32 ossimNormalizedU10RemapTable::pixFromNorm( | ||
ossim_float64 normPix) const | ||
{ | ||
if(normPix <= 0.0) return 0; | ||
|
||
// un-normalize... | ||
ossim_float64 p = normPix * getNormalizer(); | ||
|
||
// Ensure pixel is in range. | ||
p = ( (p < TABLE_ENTRIES) ? (p >= 0.0 ? p : 0.0) : getNormalizer()); | ||
|
||
// Since going from double to int round... | ||
p = ossim::round<ossim_int32>(p); | ||
|
||
if(p == 0.0) | ||
{ | ||
p = 1.0; | ||
} | ||
|
||
return static_cast<ossim_int32>(p); | ||
} | ||
|
||
#endif |
Oops, something went wrong.