/usr/include/ossim/imaging/ossimNormalizedS16RemapTable.h is in libossim-dev 2.2.2-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | //*******************************************************************
//
// License: MIT
//
// See LICENSE.txt file in the top level directory for more details.
//
// Description:
//
// Contains class declaration for ossimNormalizedS16RemapTable. Table for
// normalizing signed 16 bit data.
//
//*******************************************************************
// $Id: ossimNormalizedS16RemapTable.h 10456 2007-02-08 14:17:50Z gpotts $
#ifndef ossimNormalizedS16RemapTable_HEADER
#define ossimNormalizedS16RemapTable_HEADER
#include <ossim/imaging/ossimNormalizedRemapTable.h>
#include <ossim/base/ossimCommon.h> /* for round */
/**
* @class ossimNormalizedS16RemapTable
*
* @brief Signed 16 bit normalized remap tables to go to/from
* normalized value to pixel value.
*/
class OSSIM_DLL ossimNormalizedS16RemapTable : public ossimNormalizedRemapTable
{
public:
/** @brief default constructor */
ossimNormalizedS16RemapTable();
/** @brief virtual destructor */
virtual ~ossimNormalizedS16RemapTable();
enum
{
TABLE_ENTRIES = 65536, // 2^16 32767-(-32768)+1
OFFSET_TO_ZERO = 32768, // Gets -32768 to zero.
NULL_PIX = -32768,
MIN_PIX = -32767
};
/**
* @brief Gets the number of table entries.
* @return The number of entries in a table.
*/
virtual ossim_int32 getEntries() const;
/**
* @brief Gets normalized value (between '0.0' and '1.0') from an
* int which should in scalar range of a signed 16 bit.
*
* @note This table is specialized to map both -32768 and -32767 to 0 since
* dted data has a null of -32767.
*
* @return Value between 0.0 and 1.0.
*/
virtual ossim_float64 operator[](ossim_int32 pix) const;
/**
* @brief Gets normalized value (between '0.0' and '1.0') from an
* int which should in scalar range of a signed 16 bit.
*
* @note This table is specialized to map both -32768 and -32767 to 0 since
* dted data has a null of -32767.
*
* @return Value between 0.0 and 1.0.
*/
virtual ossim_float64 normFromPix(ossim_int32 pix) const;
/**
* @brief Gets pixel value from normalized value.
*
* Valid returns range is signed 16 bit range or -32768 to 32767.
*
* @return Value between -32768 to 32767.
*/
virtual ossim_int32 pixFromNorm(ossim_float64 normPix) const;
private:
static ossim_float64 theTable[TABLE_ENTRIES];
static bool theTableIsInitialized;
};
inline ossim_int32 ossimNormalizedS16RemapTable::getEntries() const
{
return TABLE_ENTRIES;
}
inline ossim_float64 ossimNormalizedS16RemapTable::operator[](
ossim_int32 pix) const
{
ossim_float64 result = 0;
// Move pix into table range. This will take -32768 to 0.
ossim_int32 p = pix + OFFSET_TO_ZERO;
result = (p < TABLE_ENTRIES ? ( p >= 0 ? theTable[p] : 0.0) : 1.0);
return result;
}
inline ossim_float64 ossimNormalizedS16RemapTable::normFromPix(
ossim_int32 pix) const
{
ossim_float64 result = 0;
// Move pix into table range. This will take -32768 to 0.
ossim_int32 p = pix + OFFSET_TO_ZERO;
result = (p < TABLE_ENTRIES ? ( p >= 0 ? theTable[p] : 0.0) : 1.0);
return result;
}
inline ossim_int32 ossimNormalizedS16RemapTable::pixFromNorm(
ossim_float64 normPix) const
{
if(normPix <= 0.0) return NULL_PIX;
// Clamp between 0 and 1 on the way in.
ossim_float64 p = (normPix<1.0) ? ( (normPix>0.0) ? normPix : 0.0) : 1.0;
// Un-normalize.
p = p * getNormalizer(); // TABLE_ENTRIES - 1;
//---
// Move pixel into sign range then round it. This will take 65535 to
// 32767 which is the max pixel for this scalar type.
//---
p = ossim::round<ossim_int32>(p - OFFSET_TO_ZERO);
if (p == NULL_PIX)
{
// norm pixel came in just above zero so should be at least min.
p = MIN_PIX;
}
return static_cast<ossim_int32>(p);
}
#endif
|