28 #include <QStringList> 92 #if ISIS_LITTLE_ENDIAN 93 # define DBL_INIT(a,b) {(b), (a)} 95 # define DBL_INIT(a,b) {(a), (b)} 100 const DBL_UNION IVALID_MIN8 = { DBL_INIT(0xFFEFFFFF, 0xFFFFFFFA) };
101 const double VALID_MIN8 = IVALID_MIN8.d;
108 const DBL_UNION INULL8 = { DBL_INIT(0xFFEFFFFF, 0xFFFFFFFB) };
109 const double NULL8 = INULL8.d;
112 const DBL_UNION ILOW_REPR_SAT8 = { DBL_INIT(0xFFEFFFFF, 0xFFFFFFFC) };
113 const double LOW_REPR_SAT8 = ILOW_REPR_SAT8.d;
114 const double Lrs = ILOW_REPR_SAT8.d;
118 const DBL_UNION ILOW_INSTR_SAT8 = { DBL_INIT(0xFFEFFFFF, 0xFFFFFFFD) };
119 const double LOW_INSTR_SAT8 = ILOW_INSTR_SAT8.d;
120 const double Lis = ILOW_INSTR_SAT8.d;
124 const DBL_UNION IHIGH_INSTR_SAT8 = { DBL_INIT(0xFFEFFFFF, 0xFFFFFFFE) };
125 const double HIGH_INSTR_SAT8 = IHIGH_INSTR_SAT8.d;
126 const double His = IHIGH_INSTR_SAT8.d;
130 const DBL_UNION IHIGH_REPR_SAT8 = { DBL_INIT(0xFFEFFFFF, 0xFFFFFFFF) };
131 const double HIGH_REPR_SAT8 = IHIGH_REPR_SAT8.d;
132 const double Hrs = IHIGH_REPR_SAT8.d;
136 const double VALID_MAX8 = DBL_MAX;
144 const int IVALID_MIN4 = 0xFF7FFFFA;
145 const float VALID_MIN4 = (*((
const float *) &IVALID_MIN4));
148 const int INULL4 = 0xFF7FFFFB;
149 const float NULL4 = (*((
const float *) &INULL4));
151 const int ILOW_REPR_SAT4 = 0xFF7FFFFC;
152 const float LOW_REPR_SAT4 = (*((
const float *) &ILOW_REPR_SAT4));
154 const int ILOW_INSTR_SAT4 = 0xFF7FFFFD;
155 const float LOW_INSTR_SAT4 = (*((
const float *) &ILOW_INSTR_SAT4));
157 const int IHIGH_INSTR_SAT4 = 0xFF7FFFFE;
158 const float HIGH_INSTR_SAT4 = (*((
const float *) &IHIGH_INSTR_SAT4));
160 const int IHIGH_REPR_SAT4 = 0xFF7FFFFF;
161 const float HIGH_REPR_SAT4 = (*((
const float *) &IHIGH_REPR_SAT4));
164 const float VALID_MAX4 = FLT_MAX;
165 const int IVALID_MAX4 = (*((
const int *) &VALID_MAX4));
168 const short VALID_MIN2 = ((short)(-32752));
169 const short NULL2 = ((short)(-32768));
170 const short LOW_REPR_SAT2 = ((short)(-32767));
171 const short LOW_INSTR_SAT2 = ((short)(-32766));
172 const short HIGH_INSTR_SAT2 = ((short)(-32765));
173 const short HIGH_REPR_SAT2 = ((short)(-32764));
174 const short VALID_MAX2 = ((short) 32767);
177 const unsigned short VALID_MINU2 = ((
unsigned short) 3);
178 const unsigned short NULLU2 = ((
unsigned short) 0);
179 const unsigned short LOW_REPR_SATU2 = ((
unsigned short) 1);
180 const unsigned short LOW_INSTR_SATU2 = ((
unsigned short) 2);
181 const unsigned short HIGH_INSTR_SATU2 = ((
unsigned short) 65534);
182 const unsigned short HIGH_REPR_SATU2 = ((
unsigned short) 65535);
183 const unsigned short VALID_MAXU2 = ((
unsigned short) 65522);
186 const unsigned int VALID_MINUI4 = ((
unsigned int) 3);
187 const unsigned int NULLUI4 = ((
unsigned int) 0);
188 const unsigned int LOW_REPR_SATUI4 = ((
unsigned int) 1);
189 const unsigned int LOW_INSTR_SATUI4 = ((
unsigned int) 2);
190 const unsigned int HIGH_INSTR_SATUI4 = ((
unsigned int) 4294967294);
191 const unsigned int HIGH_REPR_SATUI4 = ((
unsigned int) 4294967295);
192 const unsigned int VALID_MAXUI4 = ((
unsigned int) 4294967282);
196 const unsigned char VALID_MIN1 = ((
unsigned char) 1);
197 const unsigned char NULL1 = ((
unsigned char) 0);
198 const unsigned char LOW_REPR_SAT1 = ((
unsigned char) 0);
199 const unsigned char LOW_INSTR_SAT1 = ((
unsigned char) 0);
200 const unsigned char HIGH_INSTR_SAT1 = ((
unsigned char) 255);
201 const unsigned char HIGH_REPR_SAT1 = ((
unsigned char) 255);
202 const unsigned char VALID_MAX1 = ((
unsigned char) 254);
213 return (d < VALID_MIN8);
227 return (f < VALID_MIN4);
239 return (d >= VALID_MIN8);
263 return (d == HIGH_REPR_SAT8) || (d == HIGH_INSTR_SAT8);
275 return (d == LOW_REPR_SAT8) || (d == LOW_INSTR_SAT8);
287 return (d == HIGH_REPR_SAT8);
299 return (d == HIGH_INSTR_SAT8);
311 return (d == LOW_INSTR_SAT8);
323 return (d == LOW_REPR_SAT8);
336 if(t == NULL4)
return (NULL8);
337 if(t == LOW_REPR_SAT4)
return (LOW_REPR_SAT8);
338 if(t == LOW_INSTR_SAT4)
return (LOW_INSTR_SAT8);
339 if(t == HIGH_REPR_SAT4)
return (HIGH_REPR_SAT8);
340 if(t == HIGH_INSTR_SAT4)
return (HIGH_INSTR_SAT8);
341 return (LOW_REPR_SAT8);
343 else if(t > VALID_MAX4) {
344 return (HIGH_REPR_SAT8);
361 if(t < (
double) VALID_MIN4) {
362 if(t == NULL8)
return (NULL4);
363 if(t == LOW_REPR_SAT8)
return (LOW_REPR_SAT4);
364 if(t == LOW_INSTR_SAT8)
return (LOW_INSTR_SAT4);
365 if(t == HIGH_INSTR_SAT8)
return (HIGH_INSTR_SAT4);
366 if(t == HIGH_REPR_SAT8)
return (HIGH_REPR_SAT4);
367 return (LOW_REPR_SAT4);
369 else if(t > (
double) VALID_MAX4) {
370 return (HIGH_REPR_SAT8);
397 return result.setNum(d,
'g', 8);
411 QString s = str.toUpper();
414 legal.push_back(
"NULL");
415 legal.push_back(
"HRS");
416 legal.push_back(
"LRS");
417 legal.push_back(
"HIS");
418 legal.push_back(
"LIS");
420 for(
int i = 0; i < (int) legal.size(); i++) {
421 if(legal[i].mid(0, s.size()) == s) {
426 QString msg =
"Input [" + str +
"] is not a unique abbreviation. Use " + s +
"I or " + s +
"R.";
434 QString msg =
"Input [" + str +
"] does not appear to be a legal special pixel abbreviation or double value.";
438 if(s[0] ==
'N')
return Null;
439 if(s.mid(0, 2) ==
"HR")
return Hrs;
440 if(s.mid(0, 2) ==
"LR")
return Lrs;
441 if(s.mid(0, 2) ==
"HI")
return His;
bool IsLisPixel(const double d)
Returns if the input pixel is low instrument saturation.
Manipulate special pixel values.
const double Null
Value for an Isis Null pixel.
bool IsLrsPixel(const double d)
Returns if the input pixel is low representation saturation.
const double ValidMinimum
The minimum valid double value for Isis pixels.
bool IsLowPixel(const double d)
Returns if the input pixel is one of the low saturation types.
double StringToPixel(const QString &str)
Takes the name of the pixel type as a string and returns a double pixel value.
bool IsValidPixel(const double d)
Returns if the input pixel is valid.
double toDouble(const QString &string)
Global function to convert from a string to a double.
bool IsHisPixel(const double d)
Returns if the input pixel is high instrument saturation.
bool IsHrsPixel(const double d)
Returns if the input pixel is high representation saturation.
const double Lis
Value for an Isis Low Instrument Saturation pixel.
#define _FILEINFO_
Macro for the filename and line number.
double TestPixel(const float t)
Converts float pixels to double pixels with special pixel translations.
A type of error that could only have occurred due to a mistake on the user's part (e...
bool IsSpecial(const double d)
Returns if the input pixel is special.
const double ValidMaximum
The maximum valid double value for Isis pixels.
bool IsHighPixel(const double d)
Returns if the input pixel is one of the high saturation types.
QString PixelToString(double d)
Takes a double pixel value and returns the name of the pixel type as a string.
Namespace for ISIS/Bullet specific routines.
bool IsNullPixel(const double d)
Returns if the input pixel is null.
const double Lrs
Value for an Isis Low Representation Saturation pixel.
const double His
Value for an Isis High Instrument Saturation pixel.
const double Hrs
Value for an Isis High Representation Saturation pixel.