blob: 559431289006c51aec5118d4564ab5008289b128 (
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
|
// Copyright (C) 1999-2018
// Smithsonian Astrophysical Observatory, Cambridge, MA, USA
// For conditions of distribution and use, see copyright notice in "copyright"
#include "fitsimage.h"
#include "hpx.h"
void FitsImage::initHPX()
{
if (hpx_)
delete hpx_;
hpx_ = NULL;
// make sure we have rows and cols
FitsHead* head = fits_->head();
FitsTableHDU* hdu = NULL;
if (head) {
hdu = (FitsTableHDU*)(head->hdu());
if (!hdu->width() || !hdu->rows())
return;
}
// coordinate system identifier?
FitsHPX::CoordSys coord = FitsHPX::UNKNOWN;
if (fits_->pHPXSystem() >= 0)
coord = (FitsHPX::CoordSys)fits_->pHPXSystem();
else {
char* str = head->getString("COORDSYS");
if (str) {
if (str[0] == 'G')
coord = FitsHPX::GAL;
else if (str[0] == 'E')
coord = FitsHPX::ECL;
else if (str[0] == 'C')
coord = FitsHPX::EQU;
else if (str[0] == 'Q')
coord = FitsHPX::EQU;
}
}
// Nested or ring order?
FitsHPX::Order order = FitsHPX::RING;
if (fits_->pHPXOrder() >=0)
order = (FitsHPX::Order)fits_->pHPXOrder();
else {
char* str = head->getString("ORDERING");
if (str) {
if (str[0] == 'N')
order = FitsHPX::NESTED;
else if (str[0] == 'R')
order = FitsHPX::RING;
}
}
// Layout
FitsHPX::Layout layout = FitsHPX::EQUATOR;
if (fits_->pHPXLayout() >=0)
layout = (FitsHPX::Layout)fits_->pHPXLayout();
// Col
int col =0;
if (fits_->pHPXColumn() >=0)
col = fits_->pHPXColumn();
if (col<0)
col =0;
// Quad
int quad = 0;
if (fits_->pHPXQuad() >=0)
quad = fits_->pHPXQuad();
if (quad<0 || quad>3)
quad =0;
hpx_ = new FitsHPX(fits_, order, coord, layout, col, quad);
}
|