source: Sophya/trunk/AddOn/TAcq/minifits.h@ 3593

Last change on this file since 3593 was 3592, checked in by ansari, 16 years ago

Amelioration programme mfits2pec.cc - Reza 06/04/2009

File size: 2.3 KB
Line 
1#ifndef MINIFITS_H_SEEN
2#define MINIFITS_H_SEEN
3
4#include <stdio.h>
5#include <string>
6
7#include "brtypes.h"
8
9/*
10 Classe d'I/O simplifie FITS pour ACQ BAO-radio
11 R. Ansari, C. Magneville - Fev 2008
12*/
13
14using namespace std;
15
16class MiniFITSException {
17 public:
18 explicit MiniFITSException(const char * m) { msg = m; }
19 explicit MiniFITSException(const string& m) { msg = m; }
20 virtual ~MiniFITSException() { }
21 virtual string const& Msg() const {return msg;}
22 private:
23 string msg;
24};
25
26
27enum MiniFITS_DT { MF_Byte, MF_Int16, MF_Float32 };
28enum MiniFITS_Mode { MF_Read, MF_Write };
29
30class MiniFITSFile {
31 public:
32 MiniFITSFile();
33 MiniFITSFile(string const & nom, MiniFITS_Mode rwm);
34 MiniFITSFile(const char* nom, MiniFITS_Mode rwm);
35
36 ~MiniFITSFile();
37
38 void Open(const char* nom, MiniFITS_Mode rwm);
39 inline void Open(string const & nom, MiniFITS_Mode rwm)
40 { return Open(nom.c_str(), rwm); }
41
42 void Close();
43
44 inline MiniFITS_DT DataType() { return dtype; }
45 string DataTypeToString();
46
47 size_t NAxis1() { return nax1; }
48 size_t NAxis2() { return nax2; }
49
50 void setDTypeNaxis(MiniFITS_DT dt, size_t na1, size_t na2);
51
52 // Lecture avec indication de la taille (nb d'elements) et offset
53 int Read(void* data, size_t sz, size_t offset=0);
54 inline int ReadB(Byte* data, size_t nel, size_t offsel=0)
55 { return ( Read((void *)data, nel, offsel) ); }
56 inline int ReadI(Int16* data, size_t nel, size_t offsel=0)
57 { return ( Read((void *)data, nel*sizeof(Int16), offsel*sizeof(Int16)) ); }
58 inline int ReadF(Float32* data, size_t nel, size_t offsel=0)
59 { return ( Read((void *)data, nel*sizeof(Float32), offsel*sizeof(Float32)) ); }
60
61 // Ecriture en mode append (fin de fichier)
62 int Write(void* data, size_t sz);
63 inline int WriteB(Byte* data, size_t nel)
64 { return ( Write((void *)data, nel) ); }
65 inline int WriteI(Int16* data, size_t nel)
66 { return ( Write((void *)data, nel*sizeof(Int16)) ); }
67 inline int WriteF(Float32* data, size_t nel)
68 { return ( Write((void *)data, nel*sizeof(Float32)) ); }
69
70 // string getKey(string& key);
71 protected:
72 void FillHeader();
73 void DecodeHeader();
74 void Init();
75
76 FILE* fip;
77 MiniFITS_Mode rwmode;
78 MiniFITS_DT dtype;
79 size_t nax1, nax2;
80 size_t totwsz; // total bytes ecrits
81 char* header; // entete FITS
82};
83
84#endif
Note: See TracBrowser for help on using the repository browser.