Changeset 1246 in Sophya for trunk/SophyaExt
- Timestamp:
- Oct 19, 2000, 4:35:11 PM (25 years ago)
- Location:
- trunk/SophyaExt/FitsIOServer
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaExt/FitsIOServer/fitsfile.cc
r1235 r1246 104 104 void FitsIOHandler::Read(FitsInFile& is, int hdunum) 105 105 { 106 // if (hdunum == 0 ) is.moveToFollowingHeader();107 // else is.ReadFInit(hdunum);108 106 is.ReadFInit(hdunum); 109 107 ReadFromFits(is); … … 199 197 \class SOPHYA::FitsInFile 200 198 201 class for saving SOPHYA objects onFITS Format Files (uses cfitsio lib)199 class for reading SOPHYA objects from FITS Format Files (uses cfitsio lib) 202 200 */ 203 201 … … 341 339 { 342 340 // on calcule le numero de header a lire 343 if (imageOnPrimary_ == true ) hdunum_ = 1;341 if (imageOnPrimary_ == true ) hdunum_ = 1; 344 342 else hdunum_ = 2; 345 343 } … … 420 418 else 421 419 { 422 throw PException(" first header : no image, probably error in hdunum"); 420 // the object to be read is probably a bin or ascii table 421 // (on an extension) 422 hdunum_++; 423 getHeader(); 424 425 // throw PException(" first header : no image, probably error in hdunum"); 423 426 } 424 427 } … … 1193 1196 long naxis = nbdim; 1194 1197 long* naxes = new long[nbdim]; 1195 // if (hdunum_ == 1)1196 if (hdun um_ == 0)1198 bool hdunfirst= (hdunum_ == 0); 1199 if (hdunfirst) 1197 1200 { 1198 1201 if (imageOnPrimary_ == false) … … 1200 1203 hdunum_ = 1; 1201 1204 fits_create_img(fptr_,FLOAT_IMG,0,naxes,&status); 1202 writeSignatureOnFits(); } 1203 // else hdunum_--; 1205 } 1204 1206 } 1205 1207 int k; … … 1218 1220 throw PException("FitsFile:::makeHeaderImageOnFits:unprogrammed type of data "); 1219 1221 } 1220 1222 // on ajoute eventuellement un dvlist prepare et la doc SOPHYA 1221 1223 hdunum_++; 1224 if (hdunfirst) 1225 { 1226 addDVListOnPrimary(); 1227 writeSignatureOnFits(1); 1228 } 1222 1229 1223 1230 // write supplementary keywords … … 1242 1249 fits_write_img(fptr_,TDOUBLE,1,npix,map,&status); 1243 1250 if( status ) printerror( status, "erreur ecriture PutImageToFits" ); 1244 // writeSignatureOnFits();1245 1251 } 1246 1252 … … 1255 1261 fits_write_img(fptr_,TFLOAT,1,npix, map,&status); 1256 1262 if( status ) printerror( status, "erreur ecriture PutImageToFits" ); 1257 // writeSignatureOnFits();1258 1263 1259 1264 } … … 1269 1274 fits_write_img(fptr_,TINT,1,npix,map,&status); 1270 1275 if( status ) printerror( status, "erreur ecriture PutImageToFits" ); 1271 // writeSignatureOnFits();1272 1276 } 1273 1277 … … 1366 1370 NULL,extn,&status); 1367 1371 if( status ) printerror( status ); 1368 if ( hdunum_ == 0 ) hdunum_ = 2; 1372 // on ajoute eventuellement un dvlist prepare 1373 if ( hdunum_ == 0 ) 1374 { 1375 hdunum_ = 2; 1376 addDVListOnPrimary(); 1377 writeSignatureOnFits(1); 1378 } 1369 1379 else hdunum_++; 1370 1380 int ii; … … 1543 1553 Put keywords from a DVList into the primary header of the fits-file 1544 1554 */ 1545 void FitsOutFile::DVListIntoPrimaryHeader(DVList& dvl) const1555 void FitsOutFile::DVListIntoPrimaryHeader(DVList& dvl) 1546 1556 { 1547 1557 int status = 0; 1548 1558 int hdutype; 1549 fits_movabs_hdu(fptr_,1,&hdutype,&status); 1550 addKeywordsOfDVList(dvl); 1551 fits_movabs_hdu(fptr_,hdunum_,&hdutype,&status); 1552 } 1553 1554 1555 void FitsOutFile::writeSignatureOnFits() const 1556 { 1557 int status = 0; 1559 if (hdunum_ == 0) 1560 { 1561 if (dvlToPrimary_ == NULL) dvlToPrimary_ = new DVList(dvl); 1562 else dvlToPrimary_->Merge(dvl); 1563 } 1564 else 1565 { 1566 fits_movabs_hdu(fptr_,1,&hdutype,&status); 1567 addKeywordsOfDVList(dvl); 1568 fits_movabs_hdu(fptr_,hdunum_,&hdutype,&status); 1569 } 1570 } 1571 1572 1573 void FitsOutFile::writeSignatureOnFits(int hdunum) const 1574 { 1575 int status = 0; 1576 int hdutype; 1558 1577 char keyname[LEN_KEYWORD]; 1559 1578 char strval[FLEN_VALUE]; 1560 1579 char comment[FLEN_COMMENT]; 1580 if (hdunum_ == 0) 1581 { 1582 cerr << " WARNING : can't write keywords on non existing primary header" << endl; 1583 return; 1584 } 1585 fits_movabs_hdu(fptr_,1,&hdutype,&status); 1586 // 1561 1587 strncpy(keyname, "CREATOR", LEN_KEYWORD); 1562 1588 keyname[LEN_KEYWORD-1] = '\0'; … … 1572 1598 fits_write_comment(fptr_,"..............................................", &status); 1573 1599 if( status ) printerror( status, "erreur writeSignatureOnFits" ); 1574 } 1575 1576 1577 void FitsOutFile::addKeywordsOfDVList(DVList& dvl) const 1600 // 1601 fits_movabs_hdu(fptr_,hdunum_,&hdutype,&status); 1602 } 1603 1604 1605 void FitsOutFile::addKeywordsOfDVList( DVList& dvl) const 1578 1606 { 1579 1607 int status = 0; 1580 1608 fits_write_comment(fptr_,"---------- keywords from SOPHYA ---------", &status); 1581 if (hdunum_ == 1) writeSignatureOnFits();1582 1609 DVList::ValList::const_iterator it; 1583 1610 for(it = dvl.Begin(); it != dvl.End(); it++) … … 1631 1658 1632 1659 1633 1660 void FitsOutFile::addDVListOnPrimary() 1661 { 1662 int status = 0; 1663 int hdutype; 1664 if (hdunum_ == 0) 1665 { 1666 cerr << " WARNING : can't write keywords on non existing primary header" << endl; 1667 return; 1668 } 1669 if (dvlToPrimary_ != NULL) 1670 { 1671 fits_movabs_hdu(fptr_,1,&hdutype,&status); 1672 addKeywordsOfDVList(*dvlToPrimary_); 1673 delete dvlToPrimary_; 1674 dvlToPrimary_ = NULL; 1675 fits_movabs_hdu(fptr_,hdunum_,&hdutype,&status); 1676 } 1677 } 1678 -
trunk/SophyaExt/FitsIOServer/fitsfile.h
r1234 r1246 213 213 FitsOutFile(string const & flnm, WriteMode wrm = unknown ); 214 214 FitsOutFile(const char * flnm, WriteMode wrm = unknown ); 215 ~FitsOutFile() { ;};216 inline void InitNull() { ;}215 ~FitsOutFile() { if (dvlToPrimary_ != NULL) delete dvlToPrimary_;}; 216 inline void InitNull() {dvlToPrimary_ = NULL;} 217 217 218 218 ////////////////////////////////////////////////////////// … … 253 253 254 254 255 void DVListIntoPrimaryHeader(DVList& dvl) const;255 void DVListIntoPrimaryHeader(DVList& dvl) ; 256 256 257 257 … … 260 260 261 261 void openoutputfitsfile(const char * flnm, WriteMode wrm); 262 void writeSignatureOnFits() const; 263 void addKeywordsOfDVList(DVList& dvl) const; 264 265 262 void writeSignatureOnFits(int hdunum) const; 263 void addKeywordsOfDVList( DVList& dvl) const; 264 void addDVListOnPrimary(); 265 266 DVList* dvlToPrimary_; /**< for transferring keywords when creating primary header */ 266 267 }; 267 268
Note:
See TracChangeset
for help on using the changeset viewer.