Loading isis/src/base/objs/Blobber/Blobber.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -241,4 +241,18 @@ namespace Isis { } double Blobber::int2ToDouble(unsigned int value) const { if (value == NULLUI4) return NULL8; else if (value == LOW_REPR_SATUI4) return LOW_REPR_SAT8; else if (value == LOW_INSTR_SATUI4) return LOW_INSTR_SAT8; else if (value == HIGH_INSTR_SATUI4) return HIGH_INSTR_SAT8; else if (value == HIGH_REPR_SATUI4) return HIGH_REPR_SAT8; else return value; } } // end namespace Isis isis/src/base/objs/Blobber/Blobber.h +3 −0 Original line number Diff line number Diff line Loading @@ -108,6 +108,8 @@ namespace Isis { * coding standards. Added padding to control * statements. References #1169. * @history 2017-08-30 Summer Stapleton - Updated documentation. References #4807. * @history 2018-07-20 Tyler Wilson - Overloaded the int2Double function so it can handle * special pixel types for 4-byte unsigned integers. References #971. */ class Blobber { public: Loading Loading @@ -262,6 +264,7 @@ namespace Isis { // Low/level I/O and conversion methods void loadDouble(Table &tbl); void loadInteger(Table &tbl); double int2ToDouble(unsigned int value) const; double int2ToDouble(int value) const; }; }; Loading isis/src/base/objs/Cube/CubeIoHandler.cpp +84 −0 Original line number Diff line number Diff line Loading @@ -1508,6 +1508,40 @@ namespace Isis { ((unsigned short *)buffersRawBuf)[bufferIndex] = raw; } else if(m_pixelType == UnsignedInteger) { unsigned int raw = ((unsigned int *)chunkBuf)[chunkIndex]; if(m_byteSwapper) raw = m_byteSwapper->Uint32_t(&raw); if(raw >= VALID_MINUI4) { bufferVal = (double) raw * m_multiplier + m_base; } else if (raw > VALID_MAXUI4) { if(raw == HIGH_INSTR_SATUI4) bufferVal = HIGH_INSTR_SAT8; else if(raw == HIGH_REPR_SATUI4) bufferVal = HIGH_REPR_SAT8; else bufferVal = LOW_REPR_SAT8; } else { if(raw == NULLUI4) bufferVal = NULL8; else if(raw == LOW_INSTR_SATUI4) bufferVal = LOW_INSTR_SAT8; else if(raw == LOW_REPR_SATUI4) bufferVal = LOW_REPR_SAT8; else bufferVal = LOW_REPR_SAT8; } ((unsigned int *)buffersRawBuf)[bufferIndex] = raw; } else if(m_pixelType == UnsignedByte) { unsigned char raw = ((unsigned char *)chunkBuf)[chunkIndex]; Loading Loading @@ -1626,6 +1660,7 @@ namespace Isis { ((float *)chunkBuf)[chunkIndex] = m_byteSwapper ? m_byteSwapper->Float(&raw) : raw; } else if(m_pixelType == SignedWord) { short raw; Loading Loading @@ -1670,6 +1705,55 @@ namespace Isis { ((short *)chunkBuf)[chunkIndex] = m_byteSwapper ? m_byteSwapper->ShortInt(&raw) : raw; } else if(m_pixelType == UnsignedInteger) { unsigned int raw; if(bufferVal >= VALID_MINUI4) { double filePixelValueDbl = (bufferVal - m_base) / m_multiplier; if(filePixelValueDbl < VALID_MINUI4 - 0.5) { raw = LOW_REPR_SATUI4; } if(filePixelValueDbl > VALID_MAXUI4) { raw = HIGH_REPR_SATUI4; } else { unsigned int filePixelValue = (unsigned int)round(filePixelValueDbl); if(filePixelValue < VALID_MINUI4) { raw = LOW_REPR_SATUI4; } else if(filePixelValue > VALID_MAXUI4) { raw = HIGH_REPR_SATUI4; } else { raw = filePixelValue; } } } else { if(bufferVal == NULLUI4) raw = NULLUI4; else if(bufferVal == LOW_INSTR_SATUI4) raw = LOW_INSTR_SATUI4; else if(bufferVal == LOW_REPR_SATUI4) raw = LOW_REPR_SATUI4; else if(bufferVal == HIGH_INSTR_SATUI4) raw = HIGH_INSTR_SATUI4; else if(bufferVal == HIGH_REPR_SATUI4) raw = HIGH_REPR_SATUI4; else raw = LOW_REPR_SATUI4; } ((unsigned int *)chunkBuf)[chunkIndex] = m_byteSwapper ? m_byteSwapper->Uint32_t(&raw) : raw; } else if(m_pixelType == UnsignedWord) { unsigned short raw; Loading isis/src/base/objs/Cube/CubeIoHandler.h +3 −0 Original line number Diff line number Diff line Loading @@ -116,6 +116,9 @@ namespace Isis { * implementation causing warnings in clang. Part of OS X 10.11 porting. * QPair forward declaration now properly claims it as a struct. * @history 2017-09-22 Cole Neubauer - Fixed documentation. References #4807 * @history 2018-07-20 Tyler Wilson - Added support for unsigned integer special pixel values. * in functions writeIntoRaw(...) and writeIntoDouble(...) * References #971. */ class CubeIoHandler { public: Loading isis/src/base/objs/ProcessImport/ProcessImport.cpp +17 −2 Original line number Diff line number Diff line Loading @@ -279,7 +279,7 @@ namespace Isis { if ((type == Isis::Double) || (type == Isis::Real) || (type == Isis::SignedWord) || (type == Isis::UnsignedWord) || (type == Isis::UnsignedByte) || (type == Isis::SignedInteger)) { (type == Isis::SignedInteger) || type==Isis::UnsignedInteger) { p_pixelType = type; } else { Loading Loading @@ -1226,6 +1226,11 @@ namespace Isis { min = Isis::IVALID_MIN4; max = Isis::IVALID_MAX4; } else if (p_pixelType == Isis::UnsignedInteger) { min = Isis::VALID_MINUI4; max = Isis::VALID_MAXUI4; } else if (p_pixelType == Isis::SignedWord) { min = Isis::VALID_MIN2 * p_mult[0] + p_base[0]; max = Isis::VALID_MAX2 * p_mult[0] + p_base[0]; Loading Loading @@ -1480,6 +1485,10 @@ namespace Isis { case Isis::SignedInteger: (*out)[samp] = (double)swapper.Int((int *)in+samp); break; case Isis::UnsignedInteger: (*out)[samp] = (double)swapper.Uint32_t((unsigned int *)in+samp); break; case Isis::Real: if(p_vax_convert) { (*out)[samp]= VAXConversion( (float *)in+samp ); Loading Loading @@ -1733,6 +1742,9 @@ namespace Isis { case Isis::SignedInteger: (*out)[samp] = (double)swapper.Int((int *)in+samp); break; case Isis::UnsignedInteger: (*out)[samp] = (double)swapper.Uint32_t((unsigned int *)in+samp); break; case Isis::Real: if(p_vax_convert) { (*out)[samp]= VAXConversion( (float *)in+samp ); Loading Loading @@ -1966,6 +1978,9 @@ namespace Isis { case Isis::SignedInteger: (*out)[samp] = (double)swapper.Int(&in[bufferIndex]); break; case Isis::UnsignedInteger: (*out)[samp] = (double)swapper.Uint32_t(&in[bufferIndex]); break; case Isis::Real: if(p_vax_convert) { (*out)[osamp]= VAXConversion(&in[bufferIndex]); Loading Loading
isis/src/base/objs/Blobber/Blobber.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -241,4 +241,18 @@ namespace Isis { } double Blobber::int2ToDouble(unsigned int value) const { if (value == NULLUI4) return NULL8; else if (value == LOW_REPR_SATUI4) return LOW_REPR_SAT8; else if (value == LOW_INSTR_SATUI4) return LOW_INSTR_SAT8; else if (value == HIGH_INSTR_SATUI4) return HIGH_INSTR_SAT8; else if (value == HIGH_REPR_SATUI4) return HIGH_REPR_SAT8; else return value; } } // end namespace Isis
isis/src/base/objs/Blobber/Blobber.h +3 −0 Original line number Diff line number Diff line Loading @@ -108,6 +108,8 @@ namespace Isis { * coding standards. Added padding to control * statements. References #1169. * @history 2017-08-30 Summer Stapleton - Updated documentation. References #4807. * @history 2018-07-20 Tyler Wilson - Overloaded the int2Double function so it can handle * special pixel types for 4-byte unsigned integers. References #971. */ class Blobber { public: Loading Loading @@ -262,6 +264,7 @@ namespace Isis { // Low/level I/O and conversion methods void loadDouble(Table &tbl); void loadInteger(Table &tbl); double int2ToDouble(unsigned int value) const; double int2ToDouble(int value) const; }; }; Loading
isis/src/base/objs/Cube/CubeIoHandler.cpp +84 −0 Original line number Diff line number Diff line Loading @@ -1508,6 +1508,40 @@ namespace Isis { ((unsigned short *)buffersRawBuf)[bufferIndex] = raw; } else if(m_pixelType == UnsignedInteger) { unsigned int raw = ((unsigned int *)chunkBuf)[chunkIndex]; if(m_byteSwapper) raw = m_byteSwapper->Uint32_t(&raw); if(raw >= VALID_MINUI4) { bufferVal = (double) raw * m_multiplier + m_base; } else if (raw > VALID_MAXUI4) { if(raw == HIGH_INSTR_SATUI4) bufferVal = HIGH_INSTR_SAT8; else if(raw == HIGH_REPR_SATUI4) bufferVal = HIGH_REPR_SAT8; else bufferVal = LOW_REPR_SAT8; } else { if(raw == NULLUI4) bufferVal = NULL8; else if(raw == LOW_INSTR_SATUI4) bufferVal = LOW_INSTR_SAT8; else if(raw == LOW_REPR_SATUI4) bufferVal = LOW_REPR_SAT8; else bufferVal = LOW_REPR_SAT8; } ((unsigned int *)buffersRawBuf)[bufferIndex] = raw; } else if(m_pixelType == UnsignedByte) { unsigned char raw = ((unsigned char *)chunkBuf)[chunkIndex]; Loading Loading @@ -1626,6 +1660,7 @@ namespace Isis { ((float *)chunkBuf)[chunkIndex] = m_byteSwapper ? m_byteSwapper->Float(&raw) : raw; } else if(m_pixelType == SignedWord) { short raw; Loading Loading @@ -1670,6 +1705,55 @@ namespace Isis { ((short *)chunkBuf)[chunkIndex] = m_byteSwapper ? m_byteSwapper->ShortInt(&raw) : raw; } else if(m_pixelType == UnsignedInteger) { unsigned int raw; if(bufferVal >= VALID_MINUI4) { double filePixelValueDbl = (bufferVal - m_base) / m_multiplier; if(filePixelValueDbl < VALID_MINUI4 - 0.5) { raw = LOW_REPR_SATUI4; } if(filePixelValueDbl > VALID_MAXUI4) { raw = HIGH_REPR_SATUI4; } else { unsigned int filePixelValue = (unsigned int)round(filePixelValueDbl); if(filePixelValue < VALID_MINUI4) { raw = LOW_REPR_SATUI4; } else if(filePixelValue > VALID_MAXUI4) { raw = HIGH_REPR_SATUI4; } else { raw = filePixelValue; } } } else { if(bufferVal == NULLUI4) raw = NULLUI4; else if(bufferVal == LOW_INSTR_SATUI4) raw = LOW_INSTR_SATUI4; else if(bufferVal == LOW_REPR_SATUI4) raw = LOW_REPR_SATUI4; else if(bufferVal == HIGH_INSTR_SATUI4) raw = HIGH_INSTR_SATUI4; else if(bufferVal == HIGH_REPR_SATUI4) raw = HIGH_REPR_SATUI4; else raw = LOW_REPR_SATUI4; } ((unsigned int *)chunkBuf)[chunkIndex] = m_byteSwapper ? m_byteSwapper->Uint32_t(&raw) : raw; } else if(m_pixelType == UnsignedWord) { unsigned short raw; Loading
isis/src/base/objs/Cube/CubeIoHandler.h +3 −0 Original line number Diff line number Diff line Loading @@ -116,6 +116,9 @@ namespace Isis { * implementation causing warnings in clang. Part of OS X 10.11 porting. * QPair forward declaration now properly claims it as a struct. * @history 2017-09-22 Cole Neubauer - Fixed documentation. References #4807 * @history 2018-07-20 Tyler Wilson - Added support for unsigned integer special pixel values. * in functions writeIntoRaw(...) and writeIntoDouble(...) * References #971. */ class CubeIoHandler { public: Loading
isis/src/base/objs/ProcessImport/ProcessImport.cpp +17 −2 Original line number Diff line number Diff line Loading @@ -279,7 +279,7 @@ namespace Isis { if ((type == Isis::Double) || (type == Isis::Real) || (type == Isis::SignedWord) || (type == Isis::UnsignedWord) || (type == Isis::UnsignedByte) || (type == Isis::SignedInteger)) { (type == Isis::SignedInteger) || type==Isis::UnsignedInteger) { p_pixelType = type; } else { Loading Loading @@ -1226,6 +1226,11 @@ namespace Isis { min = Isis::IVALID_MIN4; max = Isis::IVALID_MAX4; } else if (p_pixelType == Isis::UnsignedInteger) { min = Isis::VALID_MINUI4; max = Isis::VALID_MAXUI4; } else if (p_pixelType == Isis::SignedWord) { min = Isis::VALID_MIN2 * p_mult[0] + p_base[0]; max = Isis::VALID_MAX2 * p_mult[0] + p_base[0]; Loading Loading @@ -1480,6 +1485,10 @@ namespace Isis { case Isis::SignedInteger: (*out)[samp] = (double)swapper.Int((int *)in+samp); break; case Isis::UnsignedInteger: (*out)[samp] = (double)swapper.Uint32_t((unsigned int *)in+samp); break; case Isis::Real: if(p_vax_convert) { (*out)[samp]= VAXConversion( (float *)in+samp ); Loading Loading @@ -1733,6 +1742,9 @@ namespace Isis { case Isis::SignedInteger: (*out)[samp] = (double)swapper.Int((int *)in+samp); break; case Isis::UnsignedInteger: (*out)[samp] = (double)swapper.Uint32_t((unsigned int *)in+samp); break; case Isis::Real: if(p_vax_convert) { (*out)[samp]= VAXConversion( (float *)in+samp ); Loading Loading @@ -1966,6 +1978,9 @@ namespace Isis { case Isis::SignedInteger: (*out)[samp] = (double)swapper.Int(&in[bufferIndex]); break; case Isis::UnsignedInteger: (*out)[samp] = (double)swapper.Uint32_t(&in[bufferIndex]); break; case Isis::Real: if(p_vax_convert) { (*out)[osamp]= VAXConversion(&in[bufferIndex]); Loading