Add parsing WCS info from XISF

This commit is contained in:
2022-06-16 23:44:28 +02:00
parent 5b6fead6f1
commit c346487504
3 changed files with 48 additions and 4 deletions
+43 -3
View File
@@ -62,7 +62,6 @@ WCSData::WCSData(int width, int height, char *header, int nrec) :
width(width),
height(height)
{
int stat[NWCSFIX];
int nreject = 0;
int status = wcspih(header, nrec, 1, 0, &nreject, &nwcs, &wcs);
if(status != 0)
@@ -70,8 +69,49 @@ WCSData::WCSData(int width, int height, char *header, int nrec) :
freeWCS();
return;
}
status = wcsfix(0, 0, wcs, stat);
if(status != 0 || wcs->crpix[0] == 0)
status = cdfix(wcs);
if(status > 0 || wcs->crpix[0] == 0)
freeWCS();
}
WCSData::WCSData(int width, int height, const QVector<FITSRecord> &header) :
width(width),
height(height)
{
int status = 0;
QByteArray str;
int nrec = 1;
for(const FITSRecord &record : header)
{
if(record.key.startsWith("PV"))continue;
QByteArray value = record.value.toString().toLatin1();
if(value.startsWith('\'') && value.endsWith('\''))
{
value.chop(1);
value = value.remove(0, 1);
}
QByteArray rec;
rec.append(record.key.leftJustified(8, ' '));
rec.append("= ");
rec.append(value);
rec.append(" / ");
rec.append(record.comment);
str.append(rec.leftJustified(80, ' ', true));
nrec++;
}
str.append(QByteArray("END").leftJustified(80));
int nreject = 0;
status = wcspih(str.data(), nrec, 1, 0, &nreject, &nwcs, &wcs);
if(status != 0)
{
freeWCS();
return;
}
status = cdfix(wcs);
if(status > 0 || wcs->crpix[0] == 0)
freeWCS();
}