Changeset 3684 in Sophya for trunk/AddOn/TAcq
- Timestamp:
- Nov 27, 2009, 11:53:26 AM (16 years ago)
- Location:
- trunk/AddOn/TAcq
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/minifits.cc
r3671 r3684 86 86 nax1 = 1; 87 87 nax2 = 1; 88 nax3 = 1; 89 fgnax3 = false; 88 90 totwsz = 0; 89 91 header = new char[MFITSHLEN]; … … 152 154 nax1 = na1; 153 155 nax2 = na2; 154 } 156 nax3 = 1; 157 fgnax3 = false; 158 } 159 160 /* --Methode-- */ 161 void MiniFITSFile::setDTypeNaxis(MiniFITS_DT dt, size_t na1, size_t na2, size_t na3) 162 { 163 // Interdit si fichier ouvert en lecture ... 164 if ((fip!=NULL)&&(rwmode == MF_Read)) 165 throw MiniFITSException("MiniFITSFile::setDTypeNaxis()/Error ReadOnly file"); 166 167 dtype = dt; 168 nax1 = na1; 169 nax2 = na2; 170 nax3 = na3; 171 fgnax3 = true; 172 } 173 155 174 156 175 /* --Methode-- */ … … 192 211 buff[strlen(buff)] = ' '; 193 212 buff = header+160; 194 strcpy(buff, "NAXIS = 2 / number of data axes"); 213 if (fgnax3) 214 strcpy(buff, "NAXIS = 2 / number of data axes"); 215 else 216 strcpy(buff, "NAXIS = 3 / number of data axes"); 195 217 buff[strlen(buff)] = ' '; 196 218 buff = header+240; … … 200 222 sprintf(buff, "NAXIS2 = %20ld / nb of rows = NumberOfPaquets", (long)nax2); 201 223 buff[strlen(buff)] = ' '; 202 buff = header+400+nkeya_*80; 224 buff = header+400; 225 if (fgnax3) 226 sprintf(buff, "NAXIS3 = %20ld / nb of rows = NumberOfFibers", (long)nax3); 227 else 228 strcpy(buff,"COMMENT BAO-Radio / MiniFITSFile "); 229 buff[strlen(buff)] = ' '; 230 231 buff = header+480+nkeya_*80; 203 232 strcpy(buff,"COMMENT BAO-Radio / MiniFITSFile "); 204 233 buff[strlen(buff)] = ' '; 205 buff = header+ 480+nkeya_*80;234 buff = header+560+nkeya_*80; 206 235 strcpy(buff,"END"); 207 236 buff[strlen(buff)] = ' '; … … 213 242 int MiniFITSFile::AddKeyI(const char* key, long val, const char* comm) 214 243 { 215 if (nkeya_ >= 2 9) return 0;244 if (nkeya_ >= 28) return 0; 216 245 char cle[10]; 217 246 strncpy(cle,key,8); … … 220 249 if (cle[i]=='\0') cle[i]=' '; 221 250 cle[9]='\0'; 222 char* buff=header+4 00+nkeya_*80;251 char* buff=header+480+nkeya_*80; 223 252 if (comm!=NULL) { 224 253 char tcom[50]; … … 236 265 int MiniFITSFile::AddKeyD(const char* key, double val, const char* comm) 237 266 { 238 if (nkeya_ >= 2 9) return 0;267 if (nkeya_ >= 28) return 0; 239 268 char cle[10]; 240 269 strncpy(cle,key,8); … … 243 272 if (cle[i]=='\0') cle[i]=' '; 244 273 cle[9]='\0'; 245 char* buff=header+4 00+nkeya_*80;274 char* buff=header+480+nkeya_*80; 246 275 if (comm!=NULL) { 247 276 char tcom[50]; … … 259 288 int MiniFITSFile::AddKeyS(const char* key, const char* val, const char* comm) 260 289 { 261 if (nkeya_ >= 2 9) return 0;290 if (nkeya_ >= 28) return 0; 262 291 char cle[10]; 263 292 strncpy(cle,key,8); … … 274 303 if ((l<70)&&(comm!=NULL)) strncpy(tcom+l,comm,70-l); 275 304 tcom[70]='\0'; 276 char* buff=header+4 00+nkeya_*80;305 char* buff=header+480+nkeya_*80; 277 306 sprintf(buff,"%s %s", cle, tcom); 278 307 buff[strlen(buff)] = ' '; … … 291 320 bool fgok1=false; 292 321 bool fgok2=false; 322 bool fgok3=false; 293 323 for(int kh=80; kh<2800; kh+=80) { 294 324 buff = header+kh; … … 303 333 // cout << " FOUND : NAXIS2= " << nax2 << endl; 304 334 } 335 else if (strncmp(buff, "NAXIS3 =", 9) == 0) { 336 nax3 = atol(buff+10); 337 fgok3 = true; 338 // cout << " FOUND : NAXIS2= " << nax2 << endl; 339 } 305 340 else if (strncmp(buff, "BITPIX =", 9) == 0) { 306 341 int bpix = atoi(buff+10); … … 315 350 if (!(fgok1&&fgok2&&fgokt)) 316 351 throw MiniFITSException("MiniFITSFile::DecodeHeader()/Error- Missing/wrong NAXIS1/2,BITPIX"); 352 if (fgok3) fgnax3=true; 317 353 return; 318 354 } -
trunk/AddOn/TAcq/minifits.h
r3683 r3684 51 51 string DataTypeToString(); 52 52 53 size_t NAxis1() { return nax1; } 54 size_t NAxis2() { return nax2; } 53 inline size_t NAxes() { return ((fgnax3)?3:2); } 54 inline size_t NAxis1() { return nax1; } 55 inline size_t NAxis2() { return nax2; } 56 inline size_t NAxis3() { return ((fgnax3)?nax3:0); } 55 57 56 58 void setDTypeNaxis(MiniFITS_DT dt, size_t na1, size_t na2); 59 void setDTypeNaxis(MiniFITS_DT dt, size_t na1, size_t na2, size_t na3); 57 60 58 61 // Lecture avec indication de la taille (nb d'elements) et offset … … 100 103 MiniFITS_Mode rwmode; 101 104 MiniFITS_DT dtype; 102 size_t nax1, nax2; 105 size_t nax1, nax2, nax3; 106 bool fgnax3; // true -> NAXIS=3 3D file 103 107 size_t totwsz; // total bytes ecrits 104 108 char* header; // entete FITS
Note:
See TracChangeset
for help on using the changeset viewer.