Changeset 7713
- Timestamp:
- Jun 27, 2006, 3:56:58 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/fits/psFitsHeader.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/fits/psFitsHeader.c
r7540 r7713 7 7 * @author Robert DeSonia, MHPCC 8 8 * 9 * @version $Revision: 1.2 2$ $Name: not supported by cvs2svn $10 * @date $Date: 2006-06- 13 22:28:02$9 * @version $Revision: 1.23 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2006-06-28 01:56:58 $ 11 11 * 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 40 40 // List of the start of FITS header keys not to write (handled by cfitsio); NULL-terminated 41 41 static char *noWriteFitsKeyStarts[] = {"NAXIS", "TTYPE", "TFORM", NULL}; 42 43 // List of FITS header keys to be written with fits_write_comment 42 44 43 45 psMetadata* psFitsReadHeader(psMetadata* out, … … 308 310 } 309 311 310 switch (item->type) { 311 case PS_DATA_BOOL: { 312 int value = item->data.B; 313 fits_update_key(fits->fd, TLOGICAL, item->name, &value, item->comment, &status); 314 break; 315 } 316 case PS_DATA_S8: 317 fits_update_key(fits->fd, TBYTE, item->name, &item->data.S8, item->comment, &status); 318 break; 319 case PS_DATA_S16: 320 fits_update_key(fits->fd, TSHORT, item->name, &item->data.S16, item->comment, &status); 321 break; 322 case PS_DATA_S32: 323 fits_update_key(fits->fd, TINT, item->name, &item->data.S32, item->comment, &status); 324 break; 325 case PS_DATA_U8: { 326 unsigned short int temp = item->data.U8; 327 fits_update_key(fits->fd, TUSHORT, item->name, &temp, item->comment, &status); 328 } 329 break; 330 case PS_DATA_U16: 331 fits_update_key(fits->fd, TUSHORT, item->name, &item->data.U16, item->comment, &status); 332 break; 333 case PS_DATA_U32: 334 fits_update_key(fits->fd, TUINT, item->name, &item->data.U32, item->comment, &status); 335 break; 336 case PS_DATA_F32: { 337 int infCheck = 0; // Result of isinf() 338 if (isnan(item->data.F32)) { 339 fits_update_key(fits->fd, TSTRING, item->name, "NaN", item->comment, &status); 340 } else if ((infCheck = isinf(item->data.F32)) != 0) { 341 if (infCheck == 1) { 342 fits_update_key(fits->fd, TSTRING, item->name, "Inf", item->comment, &status); 312 if (strcmp(item->name, "COMMENT") == 0) { 313 fits_write_comment(fits->fd, item->comment, &status); 314 } else if (strcmp(item->name, "HISTORY") == 0) { 315 fits_write_history(fits->fd, item->comment, &status); 316 } else { 317 // A regular FITS header 318 switch (item->type) { 319 case PS_DATA_BOOL: { 320 int value = item->data.B; 321 fits_update_key(fits->fd, TLOGICAL, item->name, &value, item->comment, &status); 322 break; 323 } 324 case PS_DATA_S8: 325 fits_update_key(fits->fd, TBYTE, item->name, &item->data.S8, item->comment, &status); 326 break; 327 case PS_DATA_S16: 328 fits_update_key(fits->fd, TSHORT, item->name, &item->data.S16, item->comment, &status); 329 break; 330 case PS_DATA_S32: 331 fits_update_key(fits->fd, TINT, item->name, &item->data.S32, item->comment, &status); 332 break; 333 case PS_DATA_U8: { 334 unsigned short int temp = item->data.U8; 335 fits_update_key(fits->fd, TUSHORT, item->name, &temp, item->comment, &status); 336 } 337 break; 338 case PS_DATA_U16: 339 fits_update_key(fits->fd, TUSHORT, item->name, &item->data.U16, item->comment, &status); 340 break; 341 case PS_DATA_U32: 342 fits_update_key(fits->fd, TUINT, item->name, &item->data.U32, item->comment, &status); 343 break; 344 case PS_DATA_F32: { 345 int infCheck = 0; // Result of isinf() 346 if (isnan(item->data.F32)) { 347 fits_update_key(fits->fd, TSTRING, item->name, "NaN", item->comment, &status); 348 } else if ((infCheck = isinf(item->data.F32)) != 0) { 349 if (infCheck == 1) { 350 fits_update_key(fits->fd, TSTRING, item->name, "Inf", item->comment, &status); 351 } else { 352 fits_update_key(fits->fd, TSTRING, item->name, "-Inf", item->comment, &status); 353 } 343 354 } else { 344 fits_update_key(fits->fd, T STRING, item->name, "-Inf", item->comment, &status);355 fits_update_key(fits->fd, TFLOAT, item->name, &item->data.F32, item->comment, &status); 345 356 } 346 } else {347 fits_update_key(fits->fd, TFLOAT, item->name, &item->data.F32, item->comment, &status);348 }349 break;350 }351 case PS_DATA_F64: {352 int infCheck = 0; // Result of isinf()353 if (isnan(item->data.F64)) {354 fits_update_key(fits->fd, TSTRING, item->name, "NaN", item->comment, &status);355 } else if ((infCheck = isinf(item->data.F64)) != 0){356 if (infCheck == 1) {357 fits_update_key(fits->fd, TSTRING, item->name, "Inf", item->comment, &status);357 break; 358 } 359 case PS_DATA_F64: { 360 int infCheck = 0; // Result of isinf() 361 if (isnan(item->data.F64)) { 362 fits_update_key(fits->fd, TSTRING, item->name, "NaN", item->comment, &status); 363 } else if ((infCheck = isinf(item->data.F64)) != 0) { 364 if (infCheck == 1) { 365 fits_update_key(fits->fd, TSTRING, item->name, "Inf", item->comment, &status); 366 } else { 367 fits_update_key(fits->fd, TSTRING, item->name, "-Inf", item->comment, &status); 368 } 358 369 } else { 359 fits_update_key(fits->fd, T STRING, item->name, "-Inf", item->comment, &status);370 fits_update_key(fits->fd, TDOUBLE, item->name, &item->data.F64, item->comment, &status); 360 371 } 361 } else { 362 fits_update_key(fits->fd, TDOUBLE, item->name, &item->data.F64, item->comment, &status); 363 } 364 break; 365 } 366 case PS_DATA_STRING: 367 fits_update_key(fits->fd, TSTRING, item->name, item->data.V, item->comment, &status); 368 break; 369 default: // all other META types are ignored 370 psLogMsg(__func__, PS_LOG_WARN, "Attempt to write metadata type %x to FITS header ignored.\n", 371 item->type); 372 break; 372 break; 373 } 374 case PS_DATA_STRING: 375 fits_update_key(fits->fd, TSTRING, item->name, item->data.V, item->comment, &status); 376 break; 377 default: // all other META types are ignored 378 psLogMsg(__func__, PS_LOG_WARN, "Attempt to write metadata type %x to FITS header ignored.\n", 379 item->type); 380 break; 381 } 373 382 } 374 383
Note:
See TracChangeset
for help on using the changeset viewer.
