Changeset 16185 for trunk/psLib/src/fits/psFits.c
- Timestamp:
- Jan 22, 2008, 5:08:03 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/fits/psFits.c (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/fits/psFits.c
r15919 r16185 7 7 * @author Robert DeSonia, MHPCC 8 8 * 9 * @version $Revision: 1.7 6$ $Name: not supported by cvs2svn $10 * @date $Date: 200 7-12-25 01:29:42$9 * @version $Revision: 1.77 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2008-01-23 03:08:03 $ 11 11 * 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 78 78 fitsClose(fits); 79 79 } 80 psFree (fits->extword);80 psFree(fits->options); 81 81 } 82 82 … … 160 160 161 161 psFits* fits = psAlloc(sizeof(psFits)); 162 psMemSetDeallocator(fits, (psFreeFunc)fitsFree); 163 162 164 fits->fd = fptr; 163 165 fits->writable = (iomode == READWRITE); 164 fits->extword = NULL; 165 fits->conventions.compression = true; 166 fits->conventions.psBitpix = true; 167 fits->bitpix = 0; 168 fits->floatType = PS_FITS_FLOAT_NONE; 169 psMemSetDeallocator(fits,(psFreeFunc)fitsFree); 166 167 fits->options = NULL; 170 168 171 169 return fits; 170 } 171 172 173 static void fitsOptionsFree(psFitsOptions *options) 174 { 175 psFree(options->extword); 176 } 177 178 179 psFitsOptions *psFitsOptionsAlloc(void) 180 { 181 psFitsOptions *options = psAlloc(sizeof(psFitsOptions)); // Options, to return 182 psMemSetDeallocator(options, (psFreeFunc)fitsOptionsFree); 183 184 options->extword = NULL; 185 186 options->conventions.compression = true; 187 options->conventions.psBitpix = true; 188 189 options->floatType = PS_FITS_FLOAT_NONE; 190 191 options->bitpix = 0; 192 193 options->scaling = PS_FITS_SCALE_NONE; 194 options->fuzz = true; 195 options->bscale = 1.0; 196 options->bzero = 0.0; 197 options->mean = NAN; 198 options->stdev = NAN; 199 options->stdevBits = 4; 200 options->stdevNum = 5.0; 201 202 return options; 172 203 } 173 204 … … 227 258 } 228 259 229 bool psFitsSetExtnameWord (psFits *fits, const char *extword)260 bool psFitsSetExtnameWord(psFits *fits, const char *extword) 230 261 { 231 262 PS_ASSERT_PTR_NON_NULL(fits, false); 232 263 PS_ASSERT_PTR_NON_NULL(extword, false); 233 264 234 psFree (fits->extword); 235 fits->extword = psStringCopy (extword); 265 if (!fits->options) { 266 fits->options = psFitsOptionsAlloc(); 267 } 268 269 psFree(fits->options->extword); 270 fits->options->extword = psStringCopy(extword); 236 271 return true; 237 272 } … … 251 286 int status = 0; 252 287 253 if (!fits->conventions.compression && !fits->extword) { 288 psFitsOptions *options = fits->options; // FITS options 289 if (options && !options->conventions.compression && !options->extword) { 254 290 // User wants to use cfitsio. Good luck to them! 255 291 if (fits_movnam_hdu(fits->fd, ANY_HDU, (char*)extname, 0, &status) != 0) { … … 260 296 } 261 297 262 bool ignoreCI = ( fits->conventions.compression &&298 bool ignoreCI = (options->conventions.compression && 263 299 (strcmp(extname, "COMPRESSED_IMAGE") != 0)); // Ignore COMPRESSED_IMAGE extension name? 264 char *extword = ( fits->extword ? fits->extword : "EXTNAME"); // Word to use as extension name300 char *extword = (options->extword ? options->extword : "EXTNAME"); // Word to use as extension name 265 301 266 302 #if 0 … … 365 401 char name[MAX_STRING_LENGTH]; 366 402 367 char *extword = (fits->extword == NULL) ? defaultExtword : fits->extword; 403 psFitsOptions *options = fits->options; // FITS options 404 char *extword = (!options || !options->extword) ? defaultExtword : options->extword; 368 405 369 406 if (fits_read_key_str(fits->fd, extword, name, NULL, &status) != 0) { 370 psError(PS_ERR_BAD_PARAMETER_NULL, true, 371 _("Header keyword %s is not found"), extword); 407 psError(PS_ERR_BAD_PARAMETER_NULL, true, _("Header keyword %s is not found"), extword); 372 408 return NULL; 373 409 } … … 382 418 int status = 0; 383 419 384 char *extword = (fits->extword == NULL) ? defaultExtword : fits->extword; 420 psFitsOptions *options = fits->options; // FITS options 421 char *extword = (!options || !options->extword) ? defaultExtword : options->extword; 385 422 386 423 if (fits_update_key_str(fits->fd, extword, (char*)name, NULL, &status) != 0) { 387 424 char fitsErr[MAX_STRING_LENGTH]; 388 425 (void)fits_get_errstatus(status, fitsErr); 389 psError(PS_ERR_IO, true, 390 _("Could not write data to file. CFITSIO Error: %s"), 391 fitsErr); 426 psError(PS_ERR_IO, true, _("Could not write data to file. CFITSIO Error: %s"), fitsErr); 392 427 return false; 393 428 } … … 404 439 405 440 // move to the specified HDU 406 if (! psFitsMoveExtNum(fits,extnum,relative) ) { 407 psError(PS_ERR_BAD_PARAMETER_VALUE, false, 408 "Failed to delete HDU #%d", 409 extnum); 441 if (!psFitsMoveExtNum(fits, extnum, relative) ) { 442 psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Failed to delete HDU #%d", extnum); 410 443 return false; 411 444 } … … 417 450 char fitsErr[MAX_STRING_LENGTH]; 418 451 (void)fits_get_errstatus(status, fitsErr); 419 psError(PS_ERR_IO, true, 420 _("Could not write data to file. CFITSIO Error: %s"), 421 fitsErr); 452 psError(PS_ERR_IO, true, _("Could not write data to file. CFITSIO Error: %s"), fitsErr); 422 453 return false; 423 454 } … … 598 629 // that is the restriction; data must be 32 or 64 bit for noise bits to be valid. 599 630 if (type != PS_FITS_COMPRESS_PLIO) { 600 if (fits_set_noise_bits(fits->fd, noisebits, &status)) {601 fits_set_compression_type(fits->fd, 0x0, &status);602 char fitsErr[MAX_STRING_LENGTH];603 fits_get_errstatus(status, fitsErr);604 psError(PS_ERR_BAD_FITS, true,605 "Error while configuring compression. CFITSIO error: %s", fitsErr);606 return false;607 }631 if (fits_set_noise_bits(fits->fd, noisebits, &status)) { 632 fits_set_compression_type(fits->fd, 0x0, &status); 633 char fitsErr[MAX_STRING_LENGTH]; 634 fits_get_errstatus(status, fitsErr); 635 psError(PS_ERR_BAD_FITS, true, 636 "Error while configuring compression. CFITSIO error: %s", fitsErr); 637 return false; 638 } 608 639 } 609 640
Note:
See TracChangeset
for help on using the changeset viewer.
