Changeset 9950 for trunk/psModules/src/camera/pmFPAfileFitsIO.c
- Timestamp:
- Nov 13, 2006, 12:15:55 PM (19 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/camera/pmFPAfileFitsIO.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/camera/pmFPAfileFitsIO.c
r9067 r9950 16 16 #include "pmFPAfile.h" 17 17 #include "pmFPAfileFitsIO.h" 18 19 // given an already-opened fits file, read the table corresponding to the specified view 20 bool pmFPAviewReadFitsTable(const pmFPAview *view, pmFPAfile *file, const char *name) 21 { 22 PS_ASSERT_PTR_NON_NULL(view, false); 23 PS_ASSERT_PTR_NON_NULL(file, false); 24 25 pmFPA *fpa = file->fpa; // FPA of interest 26 psFits *fits = file->fits; // FITS file 27 28 if (view->chip == -1) { 29 return pmFPAReadTable(fpa, fits, name) > 0; 30 } 31 32 if (view->cell == -1) { 33 pmChip *chip = pmFPAviewThisChip(view, fpa); // Chip of interest 34 return pmChipReadTable(chip, fits, name) > 0; 35 } 36 37 pmCell *cell = pmFPAviewThisCell(view, fpa); // Cell of interest 38 return pmCellReadTable(cell, fits, name) > 0; 39 } 40 41 // given an already-opened fits file, write the table corresponding to the specified view 42 bool pmFPAviewWriteFitsTable(const pmFPAview *view, pmFPAfile *file, const char *name) 43 { 44 PS_ASSERT_PTR_NON_NULL(view, false); 45 PS_ASSERT_PTR_NON_NULL(file, false); 46 47 pmFPA *fpa = file->fpa; // FPA of interest 48 psFits *fits = file->fits; // FITS file 49 50 if (view->chip == -1) { 51 return pmFPAWriteTable(fits, fpa, name) > 0; 52 } 53 54 if (view->cell == -1) { 55 pmChip *chip = pmFPAviewThisChip(view, fpa); // Chip of interest 56 return pmChipWriteTable(fits, chip, name) > 0; 57 } 58 59 pmCell *cell = pmFPAviewThisCell(view, fpa); // Cell of interest 60 return pmCellWriteTable(fits, cell, name) > 0; 61 } 18 62 19 63 // given an already-opened fits file, read the components corresponding … … 226 270 } 227 271 272 273 // Free the table within a cell 274 static void freeTable(pmCell *cell, // Cell of interest 275 const char *name // Name of table to free 276 ) 277 { 278 assert(cell); 279 assert(name && strlen(name) > 0); 280 281 psString headerName = NULL; // Name of header 282 psStringAppend(&headerName, "%s.HEADER", name); 283 if (psMetadataLookup(cell->analysis, headerName)) { 284 psMetadataRemoveKey(cell->analysis, headerName); 285 } 286 psFree(headerName); 287 288 if (psMetadataLookup(cell->analysis, name)) { 289 psMetadataRemoveKey(cell->analysis, name); 290 } 291 292 return; 293 } 294 295 // given a file, free the components corresponding to the specified view 296 bool pmFPAviewFreeFitsTable (const pmFPAview *view, pmFPAfile *file, const char *name) 297 { 298 PS_ASSERT_PTR_NON_NULL(view, false); 299 PS_ASSERT_PTR_NON_NULL(file, false); 300 301 pmFPA *fpa = file->fpa; 302 303 if (view->chip == -1) { 304 psArray *chips = fpa->chips; // Array of chips 305 for (int i = 0; i < chips->n; i++) { 306 pmChip *chip = chips->data[i]; // Chip of interest 307 psArray *cells = chip->cells; // Array of cells 308 for (int j = 0; j < cells->n; j++) { 309 pmCell *cell = cells->data[j]; // Cell of interest 310 freeTable(cell, name); 311 } 312 } 313 return true; 314 } 315 316 if (view->cell == -1) { 317 pmChip *chip = pmFPAviewThisChip(view, fpa); // Chip of interest 318 psArray *cells = chip->cells; // Array of cells 319 for (int i = 0; i < cells->n; i++) { 320 pmCell *cell = cells->data[i]; // Cell of interest 321 freeTable(cell, name); 322 } 323 return true; 324 } 325 326 pmCell *cell = pmFPAviewThisCell(view, fpa); // Cell of interest 327 freeTable(cell, name); 328 return true; 329 } 330
Note:
See TracChangeset
for help on using the changeset viewer.
