Isis 3.0 Object Programmers' Reference
Home
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
Pixel.cpp
Go to the documentation of this file.
1
23
#include "
Pixel.h
"
24
25
using namespace
std;
26
27
namespace
Isis {
36
unsigned
char
Pixel::To8Bit(
const
double
d) {
37
if
(d < VALID_MIN8) {
38
if
(d == NULL8)
return
NULL1;
39
else
if
(d == LOW_INSTR_SAT8)
return
LOW_INSTR_SAT1;
40
else
if
(d == LOW_REPR_SAT8)
return
LOW_REPR_SAT1;
41
else
if
(d == HIGH_INSTR_SAT8)
return
HIGH_INSTR_SAT1;
42
else
if
(d == HIGH_REPR_SAT8)
return
HIGH_REPR_SAT1;
43
else
return
LOW_REPR_SAT1;
44
}
45
else
{
46
if
(d < VALID_MIN1 - 0.5)
return
LOW_REPR_SAT1;
47
else
if
(d > VALID_MAX1 + 0.5)
return
HIGH_REPR_SAT1;
48
49
else
{
50
int
itemp = (int)(d + 0.5);
51
if
(itemp < VALID_MIN1)
return
LOW_REPR_SAT1;
52
else
if
(itemp > VALID_MAX1)
return
HIGH_REPR_SAT1;
53
else
return
(
unsigned
char
)(d + 0.5);
54
}
55
}
56
}
57
65
short
int
Pixel::To16Bit(
const
double
d) {
66
if
(d < VALID_MIN8) {
67
if
(d == NULL8)
return
NULL2;
68
else
if
(d == LOW_INSTR_SAT8)
return
LOW_INSTR_SAT2;
69
else
if
(d == LOW_REPR_SAT8)
return
LOW_REPR_SAT2;
70
else
if
(d == HIGH_INSTR_SAT8)
return
HIGH_INSTR_SAT2;
71
else
if
(d == HIGH_REPR_SAT8)
return
HIGH_REPR_SAT2;
72
else
return
LOW_REPR_SAT2;
73
}
74
else
{
75
if
(d < VALID_MIN2 - 0.5)
return
LOW_REPR_SAT2;
76
else
if
(d > VALID_MAX2 + 0.5)
return
HIGH_REPR_SAT2;
77
78
else
{
79
int
itemp;
80
if
(d < 0.0) {
81
itemp = (int)(d - 0.5);
82
}
83
else
{
84
itemp = (int)(d + 0.5);
85
}
86
87
if
(itemp < VALID_MIN2)
return
LOW_REPR_SAT2;
88
else
if
(itemp > VALID_MAX2)
return
HIGH_REPR_SAT2;
89
else
if
(d < 0.0)
return
(
short
)(d - 0.5);
90
else
return
(
short
)(d + 0.5);
91
}
92
}
93
}
94
102
float
Pixel::To32Bit(
const
double
d) {
103
if
(d < (
double
) VALID_MIN8) {
104
if
(d == NULL8)
return
(NULL4);
105
else
if
(d == LOW_REPR_SAT8)
return
(LOW_REPR_SAT4);
106
else
if
(d == LOW_INSTR_SAT8)
return
(LOW_INSTR_SAT4);
107
else
if
(d == HIGH_INSTR_SAT8)
return
(HIGH_INSTR_SAT4);
108
else
if
(d == HIGH_REPR_SAT8)
return
(HIGH_REPR_SAT4);
109
else
return
(LOW_REPR_SAT4);
110
}
111
else
if
(d > (
double
) VALID_MAX8)
return
(HIGH_REPR_SAT8);
112
else
return
((
float
) d);
113
}
114
123
double
Pixel::ToDouble(
const
unsigned
char
d) {
124
if
(d < VALID_MIN1) {
125
if
(d == NULL1)
return
(NULL8);
126
else
if
(d == LOW_REPR_SAT1)
return
(LOW_REPR_SAT8);
127
else
if
(d == LOW_INSTR_SAT1)
return
(LOW_INSTR_SAT8);
128
else
if
(d == HIGH_REPR_SAT1)
return
(HIGH_REPR_SAT8);
129
else
if
(d == HIGH_INSTR_SAT1)
return
(HIGH_INSTR_SAT8);
130
else
return
(LOW_REPR_SAT8);
131
}
132
else
if
(d > VALID_MAX1)
return
(HIGH_REPR_SAT8);
133
else
return
((
double
) d);
134
}
135
143
double
Pixel::ToDouble(
const
short
int
d) {
144
if
(d < VALID_MIN2) {
145
if
(d == NULL2)
return
(NULL8);
146
else
if
(d == LOW_REPR_SAT2)
return
(LOW_REPR_SAT8);
147
else
if
(d == LOW_INSTR_SAT2)
return
(LOW_INSTR_SAT8);
148
else
if
(d == HIGH_REPR_SAT2)
return
(HIGH_REPR_SAT8);
149
else
if
(d == HIGH_INSTR_SAT2)
return
(HIGH_INSTR_SAT8);
150
else
return
(LOW_REPR_SAT8);
151
}
152
else
return
((
double
) d);
153
}
154
162
double
Pixel::ToDouble(
const
float
d) {
163
if
(d < VALID_MIN4) {
164
if
(d == NULL4)
return
(NULL8);
165
else
if
(d == LOW_REPR_SAT4)
return
(LOW_REPR_SAT8);
166
else
if
(d == LOW_INSTR_SAT4)
return
(LOW_INSTR_SAT8);
167
else
if
(d == HIGH_REPR_SAT4)
return
(HIGH_REPR_SAT8);
168
else
if
(d == HIGH_INSTR_SAT4)
return
(HIGH_INSTR_SAT8);
169
else
return
(LOW_REPR_SAT8);
170
}
171
else
if
(d > VALID_MAX4)
return
(HIGH_REPR_SAT8);
172
else
return
((
double
) d);
173
}
174
185
float
Pixel::ToFloat(
const
unsigned
char
t) {
186
if
(t < (
double
) VALID_MIN1) {
187
if
(t == NULL1)
return
(NULL4);
188
else
if
(t == LOW_REPR_SAT1)
return
(LOW_REPR_SAT4);
189
else
if
(t == LOW_INSTR_SAT1)
return
(LOW_INSTR_SAT4);
190
else
if
(t == HIGH_INSTR_SAT1)
return
(HIGH_INSTR_SAT4);
191
else
if
(t == HIGH_REPR_SAT1)
return
(HIGH_REPR_SAT4);
192
else
return
(LOW_REPR_SAT4);
193
}
194
else
if
(t > (
double
) VALID_MAX1)
return
(HIGH_REPR_SAT8);
195
else
return
((
float
) t);
196
}
197
206
float
Pixel::ToFloat(
const
short
int
t) {
207
if
(t < (
double
) VALID_MIN2) {
208
if
(t == NULL2)
return
(NULL4);
209
else
if
(t == LOW_REPR_SAT2)
return
(LOW_REPR_SAT4);
210
else
if
(t == LOW_INSTR_SAT2)
return
(LOW_INSTR_SAT4);
211
else
if
(t == HIGH_INSTR_SAT2)
return
(HIGH_INSTR_SAT4);
212
else
if
(t == HIGH_REPR_SAT2)
return
(HIGH_REPR_SAT4);
213
else
return
(LOW_REPR_SAT4);
214
}
215
else
if
(t > (
double
) VALID_MAX2)
return
(HIGH_REPR_SAT8);
216
else
return
((
float
) t);
217
}
218
227
float
Pixel::ToFloat(
const
double
t) {
228
if
(t < (
double
) VALID_MIN8) {
229
if
(t == NULL8)
return
(NULL4);
230
else
if
(t == LOW_REPR_SAT8)
return
(LOW_REPR_SAT4);
231
else
if
(t == LOW_INSTR_SAT8)
return
(LOW_INSTR_SAT4);
232
else
if
(t == HIGH_INSTR_SAT8)
return
(HIGH_INSTR_SAT4);
233
else
if
(t == HIGH_REPR_SAT8)
return
(HIGH_REPR_SAT4);
234
else
return
(LOW_REPR_SAT4);
235
}
236
else
if
(t > (
double
) VALID_MAX8)
return
(HIGH_REPR_SAT8);
237
else
return
((
float
) t);
238
}
239
248
string
Pixel::ToString(
double
d) {
249
if
(
IsSpecial
(d)) {
250
if
(IsNull(d))
return
string(
"Null"
);
251
else
if
(IsLrs(d))
return
string(
"Lrs"
);
252
else
if
(IsHrs(d))
return
string(
"Hrs"
);
253
else
if
(IsHis(d))
return
string(
"His"
);
254
else
if
(IsLis(d))
return
string(
"Lis"
);
255
else
return
string(
"Invalid"
);
256
}
257
258
QString result;
259
return
result.setNum(d).toStdString();
260
}
261
}