blob: 818f6816b1de9fc9ddd36c69ef214dc3663527df (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
// Copyright (C) 1999-2018
// Smithsonian Astrophysical Observatory, Cambridge, MA, USA
// For conditions of distribution and use, see copyright notice in "copyright"
#ifndef __fitshdu_h__
#define __fitshdu_h__
#include <stdlib.h>
#include "column.h"
#define FTY_MAXAXES 10
class FitsHead;
class FitsHDU {
protected:
char* extname_; // EXTNAME keyword
int extver_; // EXTVER keyword
int extlevel_; // EXTLEVEL keyword
int bitpix_; // BITPIX keyword
int naxes_; // NAXIS keyword
int naxis_[FTY_MAXAXES]; // NAXIS[i] keywords
size_t realbytes_; // Number of real bytes
size_t heapbytes_; // Number of heap bytes
size_t allbytes_; // Number of real bytes + heap bytes
size_t padbytes_; // Number of pad bytes
size_t databytes_; // Number of total bytes (padded)
size_t datablocks_; // Number of total blocks
char keybuf[9];
char* keycat(const char*, int);
public:
FitsHDU(FitsHead*);
virtual ~FitsHDU();
virtual void updateCards(FitsHead*);
const char* extname() {return extname_;}
int extver() {return extver_;}
int extlevel() {return extlevel_;}
int bitpix() {return bitpix_;}
int naxes() {return naxes_;}
int naxis(int ii) {return naxis_[ii];}
size_t realbytes() {return realbytes_;}
size_t heapbytes() {return heapbytes_;}
size_t allbytes() {return allbytes_;}
size_t padbytes() {return padbytes_;}
size_t databytes() {return databytes_;}
size_t datablocks() {return datablocks_;}
};
class FitsImageHDU : public FitsHDU {
private:
size_t imgbytes_; // number of image bytes
double bscale_;
double bzero_;
int hasblank_;
int blank_;
public:
FitsImageHDU(FitsHead*);
void updateCards(FitsHead*);
size_t imgbytes() {return imgbytes_;}
void setScaling(double t,double z) {bscale_=t; bzero_=z;}
double bscale() {return bscale_;}
double bzero() {return bzero_;}
int hasscaling() {return bscale_ != 1 || bzero_ != 0;}
int hasblank() {return hasblank_;}
int blank() {return blank_;}
};
class FitsTableHDU : public FitsHDU {
protected:
int tfields_;
FitsColumn** cols_;
public:
FitsTableHDU(FitsHead*);
virtual ~FitsTableHDU();
int tfields() {return tfields_;}
int rows() {return naxis_[1];}
int cols() {return tfields_;}
int width() {return naxis_[0];}
char* list();
FitsColumn* find(const char*);
FitsColumn* find(int);
Vector dimension(const char*);
};
class FitsBinTableHDU : public FitsTableHDU {
public:
FitsBinTableHDU(FitsHead*);
};
class FitsAsciiTableHDU : public FitsTableHDU {
public:
FitsAsciiTableHDU(FitsHead*);
};
#endif
|