Changeset 20652 for trunk/Ohana/src/libfits/matrix/F_convert_format.c
- Timestamp:
- Nov 10, 2008, 2:17:14 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/libfits/matrix/F_convert_format.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/libfits/matrix/F_convert_format.c
r15998 r20652 2 2 # include <gfitsio.h> 3 3 4 # define CONVERTDOWN \ 5 inMode *in; \ 6 outMode *out; \ 7 out = (outMode *) matrix[0].buffer; \ 8 in = (inMode *) matrix[0].buffer; \ 9 for (i = 0; i < Npixels; i++, out++, in++) \ 10 *out = *in*A + B; \ 4 # ifndef NAN 5 # ifndef BYTE_SWAP 6 # define __nan_bytes { 0x7f, 0xc0, 0, 0 } 7 # else 8 # define __nan_bytes { 0, 0, 0xc0, 0x7f } 9 # endif 10 static union { unsigned char __c[4]; float __d; } __nan_union 11 __attribute_used__ = { __nan_bytes }; 12 # define NAN (__nan_union.__d) 13 # endif 14 15 # define CONVERTDOWN(MY_NAN) \ 16 inMode *in; \ 17 outMode *out; \ 18 out = (outMode *) matrix[0].buffer; \ 19 in = (inMode *) matrix[0].buffer; \ 20 for (i = 0; i < Npixels; i++, out++, in++) \ 21 if (*in == inBlank) { \ 22 *out = (MY_NAN); \ 23 } else { \ 24 *out = *in*A + B; \ 25 } \ 11 26 REALLOCATE (matrix[0].buffer, char, matrix[0].size); 12 27 13 # define CONVERTSAME \ 14 inMode *in; \ 15 outMode *out; \ 16 out = (outMode *) matrix[0].buffer; \ 17 in = (inMode *) matrix[0].buffer; \ 18 for (i = 0; i < Npixels; i++, out++, in++) \ 19 *out = *in*A + B; 20 21 # define CONVERTUP \ 22 inMode *in; \ 23 outMode *out; \ 24 REALLOCATE (matrix[0].buffer, char, matrix[0].size); \ 25 out = (outMode *)matrix[0].buffer + Npixels - 1; \ 26 in = (inMode *)matrix[0].buffer + Npixels - 1; \ 27 for (i = 0; i < Npixels; i++, out--, in--) \ 28 *out = *in*A + B; 28 # define CONVERTSAME(MY_NAN) \ 29 inMode *in; \ 30 outMode *out; \ 31 out = (outMode *) matrix[0].buffer; \ 32 in = (inMode *) matrix[0].buffer; \ 33 for (i = 0; i < Npixels; i++, out++, in++) \ 34 if (*in == inBlank) { \ 35 *out = (MY_NAN); \ 36 } else { \ 37 *out = *in*A + B; \ 38 } 39 40 # define CONVERTUP(MY_NAN) \ 41 inMode *in; \ 42 outMode *out; \ 43 REALLOCATE (matrix[0].buffer, char, matrix[0].size); \ 44 out = (outMode *)matrix[0].buffer + Npixels - 1; \ 45 in = (inMode *)matrix[0].buffer + Npixels - 1; \ 46 for (i = 0; i < Npixels; i++, out--, in--) \ 47 if (*in == inBlank) { \ 48 *out = (MY_NAN); \ 49 } else { \ 50 *out = *in*A + B; \ 51 } 52 53 # define CONVERTDOWN_FF(MY_NAN) \ 54 inMode *in; \ 55 outMode *out; \ 56 out = (outMode *) matrix[0].buffer; \ 57 in = (inMode *) matrix[0].buffer; \ 58 for (i = 0; i < Npixels; i++, out++, in++) \ 59 if (isnan(*in) || isinf(*in)) { \ 60 *out = (MY_NAN); \ 61 } else { \ 62 *out = *in*A + B; \ 63 } \ 64 REALLOCATE (matrix[0].buffer, char, matrix[0].size); 65 66 # define CONVERTSAME_FF(MY_NAN) \ 67 inMode *in; \ 68 outMode *out; \ 69 out = (outMode *) matrix[0].buffer; \ 70 in = (inMode *) matrix[0].buffer; \ 71 for (i = 0; i < Npixels; i++, out++, in++) \ 72 if (isnan(*in) || isinf(*in)) { \ 73 *out = (MY_NAN); \ 74 } else { \ 75 *out = *in*A + B; \ 76 } 77 78 # define CONVERTUP_FF(MY_NAN) \ 79 inMode *in; \ 80 outMode *out; \ 81 REALLOCATE (matrix[0].buffer, char, matrix[0].size); \ 82 out = (outMode *)matrix[0].buffer + Npixels - 1; \ 83 in = (inMode *)matrix[0].buffer + Npixels - 1; \ 84 for (i = 0; i < Npixels; i++, out--, in--) \ 85 if (isnan(*in) || isinf(*in)) { \ 86 *out = (MY_NAN); \ 87 } else { \ 88 *out = *in*A + B; \ 89 } 29 90 30 91 /*********************** fits convert format ***********************************/ 31 int gfits_convert_format (Header *header, Matrix *matrix, int outBitpix, double outScale, double outZero, int outUnsign) {92 int gfits_convert_format (Header *header, Matrix *matrix, int outBitpix, double outScale, double outZero, int inBlank, int outUnsign) { 32 93 33 94 unsigned long i, nbytes, Npixels; … … 63 124 if ((!outUnsign) && (!inUnsign)) { /** BLOCK 1 **/ 64 125 switch (inBitpix) { 65 case 8:66 { typedef unsigned char inMode;126 case 8: 127 { typedef unsigned char inMode; 67 128 switch (outBitpix) { 68 case 8: { typedef unsigned char outMode; CONVERTSAME; break; }69 case 16: { typedef short outMode; CONVERTUP; break; }70 case -16: { typedef unsigned short outMode; CONVERTUP; break; }71 case 32: { typedef int outMode; CONVERTUP; break; }72 case -32: { typedef float outMode; CONVERTUP; break; }73 case -64: { typedef double outMode; CONVERTUP; break; }74 } 75 }76 break;77 case 16:78 { typedef short inMode;79 switch (outBitpix) {80 case 8: { typedef unsigned char outMode; CONVERTDOWN; break; }81 case 16: { typedef short outMode; CONVERTSAME; break; }82 case -16: { typedef unsigned short outMode; CONVERTSAME; break; }83 case 32: { typedef int outMode; CONVERTUP; break; }84 case -32: { typedef float outMode; CONVERTUP; break; }85 case -64: { typedef double outMode; CONVERTUP; break; }86 }87 }88 break;89 case -16:90 { typedef unsigned short inMode;91 switch (outBitpix) {92 case 8: { typedef unsigned char outMode; CONVERTDOWN; break; }93 case 16: { typedef short outMode; CONVERTSAME; break; }94 case -16: { typedef unsigned short outMode; CONVERTSAME; break; }95 case 32: { typedef int outMode; CONVERTUP; break; }96 case -32: { typedef float outMode; CONVERTUP; break; }97 case -64: { typedef double outMode; CONVERTUP; break; }98 }99 }100 break;101 case 32:102 { typedef int inMode;103 switch (outBitpix) {104 case 8: { typedef unsigned char outMode; CONVERTDOWN; break; }105 case 16: { typedef short outMode; CONVERTDOWN; break; }106 case -16: { typedef unsigned short outMode; CONVERTDOWN; break; }107 case 32: { typedef int outMode; CONVERTSAME; break; }108 case -32: { typedef float outMode; CONVERTSAME; break; }109 case -64: { typedef double outMode; CONVERTUP; break; }110 }111 }112 break;113 case -32:114 { typedef float inMode;115 switch (outBitpix) {116 case 8: { typedef unsigned char outMode; CONVERTDOWN; break; }117 case 16: { typedef short outMode; CONVERTDOWN; break; }118 case -16: { typedef unsigned short outMode; CONVERTDOWN; break; }119 case 32: { typedef int outMode; CONVERTSAME; break; }120 case -32: { typedef float outMode; CONVERTSAME; break; }121 case -64: { typedef double outMode; CONVERTUP; break; }122 }123 }124 break;125 case -64:126 { typedef double inMode;127 switch (outBitpix) {128 case 8: { typedef unsigned char outMode; CONVERTDOWN; break; }129 case 16: { typedef short outMode; CONVERTDOWN; break; }130 case -16: { typedef unsigned short outMode; CONVERTDOWN; break; }131 case 32: { typedef int outMode; CONVERTDOWN; break; }132 case -32: { typedef float outMode; CONVERTDOWN; break; }133 case -64: { typedef double outMode; CONVERTSAME; break; }134 }135 }129 case 8: { typedef unsigned char outMode; CONVERTSAME(0); break; } 130 case 16: { typedef short outMode; CONVERTUP(0); break; } 131 case -16: { typedef unsigned short outMode; CONVERTUP(0); break; } 132 case 32: { typedef int outMode; CONVERTUP(0); break; } 133 case -32: { typedef float outMode; CONVERTUP(NAN); break; } 134 case -64: { typedef double outMode; CONVERTUP(NAN); break; } 135 } 136 } 137 break; 138 case 16: 139 { typedef short inMode; 140 switch (outBitpix) { 141 case 8: { typedef unsigned char outMode; CONVERTDOWN(0); break; } 142 case 16: { typedef short outMode; CONVERTSAME(0); break; } 143 case -16: { typedef unsigned short outMode; CONVERTSAME(0); break; } 144 case 32: { typedef int outMode; CONVERTUP(0); break; } 145 case -32: { typedef float outMode; CONVERTUP(NAN); break; } 146 case -64: { typedef double outMode; CONVERTUP(NAN); break; } 147 } 148 } 149 break; 150 case -16: 151 { typedef unsigned short inMode; 152 switch (outBitpix) { 153 case 8: { typedef unsigned char outMode; CONVERTDOWN(0); break; } 154 case 16: { typedef short outMode; CONVERTSAME(0); break; } 155 case -16: { typedef unsigned short outMode; CONVERTSAME(0); break; } 156 case 32: { typedef int outMode; CONVERTUP(0); break; } 157 case -32: { typedef float outMode; CONVERTUP(NAN); break; } 158 case -64: { typedef double outMode; CONVERTUP(NAN); break; } 159 } 160 } 161 break; 162 case 32: 163 { typedef int inMode; 164 switch (outBitpix) { 165 case 8: { typedef unsigned char outMode; CONVERTDOWN(0); break; } 166 case 16: { typedef short outMode; CONVERTDOWN(0); break; } 167 case -16: { typedef unsigned short outMode; CONVERTDOWN(0); break; } 168 case 32: { typedef int outMode; CONVERTSAME(0); break; } 169 case -32: { typedef float outMode; CONVERTSAME(NAN); break; } 170 case -64: { typedef double outMode; CONVERTUP(NAN); break; } 171 } 172 } 173 break; 174 case -32: 175 { typedef float inMode; 176 switch (outBitpix) { 177 case 8: { typedef unsigned char outMode; CONVERTDOWN_FF(0); break; } 178 case 16: { typedef short outMode; CONVERTDOWN_FF(0); break; } 179 case -16: { typedef unsigned short outMode; CONVERTDOWN_FF(0); break; } 180 case 32: { typedef int outMode; CONVERTSAME_FF(0); break; } 181 case -32: { typedef float outMode; CONVERTSAME_FF(NAN); break; } 182 case -64: { typedef double outMode; CONVERTUP_FF(NAN); break; } 183 } 184 } 185 break; 186 case -64: 187 { typedef double inMode; 188 switch (outBitpix) { 189 case 8: { typedef unsigned char outMode; CONVERTDOWN_FF(0); break; } 190 case 16: { typedef short outMode; CONVERTDOWN_FF(0); break; } 191 case -16: { typedef unsigned short outMode; CONVERTDOWN_FF(0); break; } 192 case 32: { typedef int outMode; CONVERTDOWN_FF(0); break; } 193 case -32: { typedef float outMode; CONVERTDOWN_FF(NAN); break; } 194 case -64: { typedef double outMode; CONVERTSAME_FF(NAN); break; } 195 } 196 } 136 197 } 137 198 } 138 199 if ((outUnsign) && (!inUnsign)) { /** BLOCK 3 **/ 139 200 switch (inBitpix) { 140 case 8:141 { typedef unsigned char inMode;201 case 8: 202 { typedef unsigned char inMode; 142 203 switch (outBitpix) { 143 case 8: { typedef char outMode; CONVERTSAME; break; }144 case 16: { typedef unsigned short outMode; CONVERTUP; break; }145 case -16: { typedef unsigned short outMode; CONVERTUP; break; }146 case 32: { typedef unsigned int outMode; CONVERTUP; break; }147 case -32: { typedef float outMode; CONVERTUP; break; }148 case -64: { typedef double outMode; CONVERTUP; break; }149 } 150 }151 break;152 case 16:153 { typedef short inMode;154 switch (outBitpix) {155 case 8: { typedef char outMode; CONVERTDOWN; break; }156 case 16: { typedef unsigned short outMode; CONVERTSAME; break; }157 case -16: { typedef unsigned short outMode; CONVERTSAME; break; }158 case 32: { typedef unsigned int outMode; CONVERTUP; break; }159 case -32: { typedef float outMode; CONVERTUP; break; }160 case -64: { typedef double outMode; CONVERTUP; break; }161 }162 }163 break;164 case -16:165 { typedef unsigned short inMode;166 switch (outBitpix) {167 case 8: { typedef char outMode; CONVERTDOWN; break; }168 case 16: { typedef unsigned short outMode; CONVERTSAME; break; }169 case -16: { typedef unsigned short outMode; CONVERTSAME; break; }170 case 32: { typedef unsigned int outMode; CONVERTUP; break; }171 case -32: { typedef float outMode; CONVERTUP; break; }172 case -64: { typedef double outMode; CONVERTUP; break; }173 }174 }175 break;176 case 32:177 { typedef int inMode;178 switch (outBitpix) {179 case 8: { typedef char outMode; CONVERTDOWN; break; }180 case 16: { typedef unsigned short outMode; CONVERTDOWN; break; }181 case -16: { typedef unsigned short outMode; CONVERTDOWN; break; }182 case 32: { typedef unsigned int outMode; CONVERTSAME; break; }183 case -32: { typedef float outMode; CONVERTSAME; break; }184 case -64: { typedef double outMode; CONVERTUP; break; }185 }186 }187 break;188 case -32:189 { typedef float inMode;190 switch (outBitpix) {191 case 8: { typedef char outMode; CONVERTDOWN; break; }192 case 16: { typedef unsigned short outMode; CONVERTDOWN; break; }193 case -16: { typedef unsigned short outMode; CONVERTDOWN; break; }194 case 32: { typedef unsigned int outMode; CONVERTSAME; break; }195 case -32: { typedef float outMode; CONVERTSAME; break; }196 case -64: { typedef double outMode; CONVERTUP; break; }197 }198 }199 break;200 case -64:201 { typedef double inMode;202 switch (outBitpix) {203 case 8: { typedef char outMode; CONVERTDOWN; break; }204 case 16: { typedef unsigned short outMode; CONVERTDOWN; break; }205 case -16: { typedef unsigned short outMode; CONVERTDOWN; break; }206 case 32: { typedef unsigned int outMode; CONVERTDOWN; break; }207 case -32: { typedef float outMode; CONVERTDOWN; break; }208 case -64: { typedef double outMode; CONVERTSAME; break; }209 }210 }204 case 8: { typedef char outMode; CONVERTSAME(0); break; } 205 case 16: { typedef unsigned short outMode; CONVERTUP(0); break; } 206 case -16: { typedef unsigned short outMode; CONVERTUP(0); break; } 207 case 32: { typedef unsigned int outMode; CONVERTUP(0); break; } 208 case -32: { typedef float outMode; CONVERTUP(NAN); break; } 209 case -64: { typedef double outMode; CONVERTUP(NAN); break; } 210 } 211 } 212 break; 213 case 16: 214 { typedef short inMode; 215 switch (outBitpix) { 216 case 8: { typedef char outMode; CONVERTDOWN(0); break; } 217 case 16: { typedef unsigned short outMode; CONVERTSAME(0); break; } 218 case -16: { typedef unsigned short outMode; CONVERTSAME(0); break; } 219 case 32: { typedef unsigned int outMode; CONVERTUP(0); break; } 220 case -32: { typedef float outMode; CONVERTUP(NAN); break; } 221 case -64: { typedef double outMode; CONVERTUP(NAN); break; } 222 } 223 } 224 break; 225 case -16: 226 { typedef unsigned short inMode; 227 switch (outBitpix) { 228 case 8: { typedef char outMode; CONVERTDOWN(0); break; } 229 case 16: { typedef unsigned short outMode; CONVERTSAME(0); break; } 230 case -16: { typedef unsigned short outMode; CONVERTSAME(0); break; } 231 case 32: { typedef unsigned int outMode; CONVERTUP(0); break; } 232 case -32: { typedef float outMode; CONVERTUP(NAN); break; } 233 case -64: { typedef double outMode; CONVERTUP(NAN); break; } 234 } 235 } 236 break; 237 case 32: 238 { typedef int inMode; 239 switch (outBitpix) { 240 case 8: { typedef char outMode; CONVERTDOWN(0); break; } 241 case 16: { typedef unsigned short outMode; CONVERTDOWN(0); break; } 242 case -16: { typedef unsigned short outMode; CONVERTDOWN(0); break; } 243 case 32: { typedef unsigned int outMode; CONVERTSAME(0); break; } 244 case -32: { typedef float outMode; CONVERTSAME(NAN); break; } 245 case -64: { typedef double outMode; CONVERTUP(NAN); break; } 246 } 247 } 248 break; 249 case -32: 250 { typedef float inMode; 251 switch (outBitpix) { 252 case 8: { typedef char outMode; CONVERTDOWN_FF(0); break; } 253 case 16: { typedef unsigned short outMode; CONVERTDOWN_FF(0); break; } 254 case -16: { typedef unsigned short outMode; CONVERTDOWN_FF(0); break; } 255 case 32: { typedef unsigned int outMode; CONVERTSAME_FF(0); break; } 256 case -32: { typedef float outMode; CONVERTSAME_FF(NAN); break; } 257 case -64: { typedef double outMode; CONVERTUP_FF(NAN); break; } 258 } 259 } 260 break; 261 case -64: 262 { typedef double inMode; 263 switch (outBitpix) { 264 case 8: { typedef char outMode; CONVERTDOWN_FF(0); break; } 265 case 16: { typedef unsigned short outMode; CONVERTDOWN_FF(0); break; } 266 case -16: { typedef unsigned short outMode; CONVERTDOWN_FF(0); break; } 267 case 32: { typedef unsigned int outMode; CONVERTDOWN_FF(0); break; } 268 case -32: { typedef float outMode; CONVERTDOWN_FF(NAN); break; } 269 case -64: { typedef double outMode; CONVERTSAME_FF(NAN); break; } 270 } 271 } 211 272 } 212 273 } 213 274 if ((!outUnsign) && (inUnsign)) { /** BLOCK 2 **/ 214 275 switch (inBitpix) { 215 case 8:216 { typedef unsigned char inMode;276 case 8: 277 { typedef unsigned char inMode; 217 278 switch (outBitpix) { 218 case 8: { typedef unsigned char outMode; CONVERTSAME; break; }219 case 16: { typedef short outMode; CONVERTUP; break; }220 case -16: { typedef unsigned short outMode; CONVERTUP; break; }221 case 32: { typedef int outMode; CONVERTUP; break; }222 case -32: { typedef float outMode; CONVERTUP; break; }223 case -64: { typedef double outMode; CONVERTUP; break; }224 } 225 }226 break;227 case 16:228 { typedef unsigned short inMode;229 switch (outBitpix) {230 case 8: { typedef unsigned char outMode; CONVERTDOWN; break; }231 case 16: { typedef short outMode; CONVERTSAME; break; }232 case -16: { typedef unsigned short outMode; CONVERTSAME; break; }233 case 32: { typedef int outMode; CONVERTUP; break; }234 case -32: { typedef float outMode; CONVERTUP; break; }235 case -64: { typedef double outMode; CONVERTUP; break; }236 }237 }238 break;239 case -16:240 { typedef unsigned short inMode;241 switch (outBitpix) {242 case 8: { typedef unsigned char outMode; CONVERTDOWN; break; }243 case 16: { typedef short outMode; CONVERTSAME; break; }244 case -16: { typedef unsigned short outMode; CONVERTSAME; break; }245 case 32: { typedef int outMode; CONVERTUP; break; }246 case -32: { typedef float outMode; CONVERTUP; break; }247 case -64: { typedef double outMode; CONVERTUP; break; }248 }249 }250 break;251 case 32:252 { typedef unsigned int inMode;253 switch (outBitpix) {254 case 8: { typedef unsigned char outMode; CONVERTDOWN; break; }255 case 16: { typedef short outMode; CONVERTDOWN; break; }256 case -16: { typedef unsigned short outMode; CONVERTDOWN; break; }257 case 32: { typedef int outMode; CONVERTSAME; break; }258 case -32: { typedef float outMode; CONVERTSAME; break; }259 case -64: { typedef double outMode; CONVERTUP; break; }260 }261 }262 break;263 case -32:264 { typedef float inMode;265 switch (outBitpix) {266 case 8: { typedef unsigned char outMode; CONVERTDOWN; break; }267 case 16: { typedef short outMode; CONVERTDOWN; break; }268 case -16: { typedef unsigned short outMode; CONVERTDOWN; break; }269 case 32: { typedef int outMode; CONVERTSAME; break; }270 case -32: { typedef float outMode; CONVERTSAME; break; }271 case -64: { typedef double outMode; CONVERTUP; break; }272 }273 }274 break;275 case -64:276 { typedef double inMode;277 switch (outBitpix) {278 case 8: { typedef unsigned char outMode; CONVERTDOWN; break; }279 case 16: { typedef short outMode; CONVERTDOWN; break; }280 case -16: { typedef unsigned short outMode; CONVERTDOWN; break; }281 case 32: { typedef int outMode; CONVERTDOWN; break; }282 case -32: { typedef float outMode; CONVERTDOWN; break; }283 case -64: { typedef double outMode; CONVERTSAME; break; }284 }285 }279 case 8: { typedef unsigned char outMode; CONVERTSAME(0); break; } 280 case 16: { typedef short outMode; CONVERTUP(0); break; } 281 case -16: { typedef unsigned short outMode; CONVERTUP(0); break; } 282 case 32: { typedef int outMode; CONVERTUP(0); break; } 283 case -32: { typedef float outMode; CONVERTUP(NAN); break; } 284 case -64: { typedef double outMode; CONVERTUP(NAN); break; } 285 } 286 } 287 break; 288 case 16: 289 { typedef unsigned short inMode; 290 switch (outBitpix) { 291 case 8: { typedef unsigned char outMode; CONVERTDOWN(0); break; } 292 case 16: { typedef short outMode; CONVERTSAME(0); break; } 293 case -16: { typedef unsigned short outMode; CONVERTSAME(0); break; } 294 case 32: { typedef int outMode; CONVERTUP(0); break; } 295 case -32: { typedef float outMode; CONVERTUP(NAN); break; } 296 case -64: { typedef double outMode; CONVERTUP(NAN); break; } 297 } 298 } 299 break; 300 case -16: 301 { typedef unsigned short inMode; 302 switch (outBitpix) { 303 case 8: { typedef unsigned char outMode; CONVERTDOWN(0); break; } 304 case 16: { typedef short outMode; CONVERTSAME(0); break; } 305 case -16: { typedef unsigned short outMode; CONVERTSAME(0); break; } 306 case 32: { typedef int outMode; CONVERTUP(0); break; } 307 case -32: { typedef float outMode; CONVERTUP(NAN); break; } 308 case -64: { typedef double outMode; CONVERTUP(NAN); break; } 309 } 310 } 311 break; 312 case 32: 313 { typedef unsigned int inMode; 314 switch (outBitpix) { 315 case 8: { typedef unsigned char outMode; CONVERTDOWN(0); break; } 316 case 16: { typedef short outMode; CONVERTDOWN(0); break; } 317 case -16: { typedef unsigned short outMode; CONVERTDOWN(0); break; } 318 case 32: { typedef int outMode; CONVERTSAME(0); break; } 319 case -32: { typedef float outMode; CONVERTSAME(NAN); break; } 320 case -64: { typedef double outMode; CONVERTUP(NAN); break; } 321 } 322 } 323 break; 324 case -32: 325 { typedef float inMode; 326 switch (outBitpix) { 327 case 8: { typedef unsigned char outMode; CONVERTDOWN_FF(0); break; } 328 case 16: { typedef short outMode; CONVERTDOWN_FF(0); break; } 329 case -16: { typedef unsigned short outMode; CONVERTDOWN_FF(0); break; } 330 case 32: { typedef int outMode; CONVERTSAME_FF(0); break; } 331 case -32: { typedef float outMode; CONVERTSAME_FF(NAN); break; } 332 case -64: { typedef double outMode; CONVERTUP_FF(NAN); break; } 333 } 334 } 335 break; 336 case -64: 337 { typedef double inMode; 338 switch (outBitpix) { 339 case 8: { typedef unsigned char outMode; CONVERTDOWN_FF(0); break; } 340 case 16: { typedef short outMode; CONVERTDOWN_FF(0); break; } 341 case -16: { typedef unsigned short outMode; CONVERTDOWN_FF(0); break; } 342 case 32: { typedef int outMode; CONVERTDOWN_FF(0); break; } 343 case -32: { typedef float outMode; CONVERTDOWN_FF(NAN); break; } 344 case -64: { typedef double outMode; CONVERTSAME_FF(NAN); break; } 345 } 346 } 286 347 } 287 348 } 288 349 if ((outUnsign) && (inUnsign)) { 289 350 switch (inBitpix) { 290 case 8:291 { typedef char inMode;351 case 8: 352 { typedef char inMode; 292 353 switch (outBitpix) { 293 case 8: { typedef char outMode; CONVERTSAME; break; }294 case 16: { typedef unsigned short outMode; CONVERTUP; break; }295 case -16: { typedef unsigned short outMode; CONVERTDOWN; break; }296 case 32: { typedef unsigned int outMode; CONVERTUP; break; }297 case -32: { typedef float outMode; CONVERTUP; break; }298 case -64: { typedef double outMode; CONVERTUP; break; }299 } 300 }301 break;302 case 16:303 { typedef unsigned short inMode;304 switch (outBitpix) {305 case 8: { typedef char outMode; CONVERTDOWN; break; }306 case 16: { typedef unsigned short outMode; CONVERTSAME; break; }307 case -16: { typedef unsigned short outMode; CONVERTDOWN; break; }308 case 32: { typedef unsigned int outMode; CONVERTUP; break; }309 case -32: { typedef float outMode; CONVERTUP; break; }310 case -64: { typedef double outMode; CONVERTUP; break; }311 }312 }313 break;314 case -16:315 { typedef unsigned short inMode;316 switch (outBitpix) {317 case 8: { typedef char outMode; CONVERTDOWN; break; }318 case 16: { typedef unsigned short outMode; CONVERTSAME; break; }319 case -16: { typedef unsigned short outMode; CONVERTDOWN; break; }320 case 32: { typedef unsigned int outMode; CONVERTUP; break; }321 case -32: { typedef float outMode; CONVERTUP; break; }322 case -64: { typedef double outMode; CONVERTUP; break; }323 }324 }325 break;326 case 32:327 { typedef unsigned int inMode;328 switch (outBitpix) {329 case 8: { typedef char outMode; CONVERTDOWN; break; }330 case 16: { typedef unsigned short outMode; CONVERTDOWN; break; }331 case -16: { typedef unsigned short outMode; CONVERTDOWN; break; }332 case 32: { typedef unsigned int outMode; CONVERTSAME; break; }333 case -32: { typedef float outMode; CONVERTSAME; break; }334 case -64: { typedef double outMode; CONVERTUP; break; }335 }336 }337 break;338 case -32:339 { typedef float inMode;340 switch (outBitpix) {341 case 8: { typedef char outMode; CONVERTDOWN; break; }342 case 16: { typedef unsigned short outMode; CONVERTDOWN; break; }343 case -16: { typedef unsigned short outMode; CONVERTDOWN; break; }344 case 32: { typedef unsigned int outMode; CONVERTSAME; break; }345 case -32: { typedef float outMode; CONVERTSAME; break; }346 case -64: { typedef double outMode; CONVERTUP; break; }347 }348 }349 break;350 case -64:351 { typedef double inMode;352 switch (outBitpix) {353 case 8: { typedef char outMode; CONVERTDOWN; break; }354 case 16: { typedef unsigned short outMode; CONVERTDOWN; break; }355 case -16: { typedef unsigned short outMode; CONVERTDOWN; break; }356 case 32: { typedef unsigned int outMode; CONVERTDOWN; break; }357 case -32: { typedef float outMode; CONVERTDOWN; break; }358 case -64: { typedef double outMode; CONVERTSAME; break; }359 }360 }354 case 8: { typedef char outMode; CONVERTSAME(0); break; } 355 case 16: { typedef unsigned short outMode; CONVERTUP(0); break; } 356 case -16: { typedef unsigned short outMode; CONVERTDOWN(0); break; } 357 case 32: { typedef unsigned int outMode; CONVERTUP(0); break; } 358 case -32: { typedef float outMode; CONVERTUP(NAN); break; } 359 case -64: { typedef double outMode; CONVERTUP(NAN); break; } 360 } 361 } 362 break; 363 case 16: 364 { typedef unsigned short inMode; 365 switch (outBitpix) { 366 case 8: { typedef char outMode; CONVERTDOWN(0); break; } 367 case 16: { typedef unsigned short outMode; CONVERTSAME(0); break; } 368 case -16: { typedef unsigned short outMode; CONVERTDOWN(0); break; } 369 case 32: { typedef unsigned int outMode; CONVERTUP(0); break; } 370 case -32: { typedef float outMode; CONVERTUP(NAN); break; } 371 case -64: { typedef double outMode; CONVERTUP(NAN); break; } 372 } 373 } 374 break; 375 case -16: 376 { typedef unsigned short inMode; 377 switch (outBitpix) { 378 case 8: { typedef char outMode; CONVERTDOWN(0); break; } 379 case 16: { typedef unsigned short outMode; CONVERTSAME(0); break; } 380 case -16: { typedef unsigned short outMode; CONVERTDOWN(0); break; } 381 case 32: { typedef unsigned int outMode; CONVERTUP(0); break; } 382 case -32: { typedef float outMode; CONVERTUP(NAN); break; } 383 case -64: { typedef double outMode; CONVERTUP(NAN); break; } 384 } 385 } 386 break; 387 case 32: 388 { typedef unsigned int inMode; 389 switch (outBitpix) { 390 case 8: { typedef char outMode; CONVERTDOWN(0); break; } 391 case 16: { typedef unsigned short outMode; CONVERTDOWN(0); break; } 392 case -16: { typedef unsigned short outMode; CONVERTDOWN(0); break; } 393 case 32: { typedef unsigned int outMode; CONVERTSAME(0); break; } 394 case -32: { typedef float outMode; CONVERTSAME(NAN); break; } 395 case -64: { typedef double outMode; CONVERTUP(NAN); break; } 396 } 397 } 398 break; 399 case -32: 400 { typedef float inMode; 401 switch (outBitpix) { 402 case 8: { typedef char outMode; CONVERTDOWN_FF(0); break; } 403 case 16: { typedef unsigned short outMode; CONVERTDOWN_FF(0); break; } 404 case -16: { typedef unsigned short outMode; CONVERTDOWN_FF(0); break; } 405 case 32: { typedef unsigned int outMode; CONVERTSAME_FF(0); break; } 406 case -32: { typedef float outMode; CONVERTSAME_FF(NAN); break; } 407 case -64: { typedef double outMode; CONVERTUP_FF(NAN); break; } 408 } 409 } 410 break; 411 case -64: 412 { typedef double inMode; 413 switch (outBitpix) { 414 case 8: { typedef char outMode; CONVERTDOWN_FF(0); break; } 415 case 16: { typedef unsigned short outMode; CONVERTDOWN_FF(0); break; } 416 case -16: { typedef unsigned short outMode; CONVERTDOWN_FF(0); break; } 417 case 32: { typedef unsigned int outMode; CONVERTDOWN_FF(0); break; } 418 case -32: { typedef float outMode; CONVERTDOWN_FF(NAN); break; } 419 case -64: { typedef double outMode; CONVERTSAME_FF(NAN); break; } 420 } 421 } 361 422 } 362 423 }
Note:
See TracChangeset
for help on using the changeset viewer.
