#include #include #include "minifits.h" // #include #define MFITSHLEN 2880 MiniFITSFile::MiniFITSFile() { Init(); } MiniFITSFile::MiniFITSFile(string const & nom, MiniFITS_Mode rwm) { Init(); Open(nom, rwm); } MiniFITSFile::MiniFITSFile(const char* nom, MiniFITS_Mode rwm) { Init(); Open(nom, rwm); } MiniFITSFile::~MiniFITSFile() { Close(); delete[] header; } void MiniFITSFile::Init() { fip = NULL; rwmode = MF_Read; dtype = MF_Byte; nax1 = 1; nax2 = 1; totwsz = 0; header = new char[MFITSHLEN]; } void MiniFITSFile::Open(const char* nom, MiniFITS_Mode rwm) { if (fip != NULL) throw MiniFITSException("MiniFITSFile::Open() - fip != NULL"); if (rwm == MF_Write) { FillHeader(); fip = fopen(nom, "w"); if (fip == NULL) throw MiniFITSException("MiniFITSFile::Open()/ failed fopen() for write"); fwrite(header, 1, MFITSHLEN, fip); rwmode = MF_Write; } else { fip = fopen(nom, "r"); if (fip == NULL) throw MiniFITSException("MiniFITSFile::Open()/ failed fopen() for read"); fread(header, 1, MFITSHLEN, fip); DecodeHeader(); rwmode = MF_Read; } return; } void MiniFITSFile::Close() { if (fip) { if (rwmode == MF_Write) { // on remplit avec des zeros pour avoir une longueur multiple de 2880 size_t padsz = MFITSHLEN-(totwsz%MFITSHLEN); for(size_t k=0; k