32 QList<PvlGroup *> *fitsImageLabels =
new QList< PvlGroup * >;
33 QList<PvlGroup *> *extraFitsLabels =
new QList< PvlGroup * >;
34 QList<int> *headerSizes =
new QList < int >;
35 QList<int> *dataStarts =
new QList < int >;
43 fileStream.seekg(0, std::ios_base::beg);
46 while (fileStream.read(readBuf, 80) && fileStream.gcount() == 80) {
56 while (line.substr(0, 3) !=
"END") {
59 if (line.substr(0, 1) !=
" " && line.substr(0, 1) !=
"/") {
62 if (QString::compare(label.
name(),
"OBJECT", Qt::CaseInsensitive) == 0) {
64 label.
addComment(
"NOTE: This keyword name was changed from 'OBJECT' in the original "
70 if (label.
name() ==
"COMMENT" || label.
name() ==
"HISTORY") {
75 if (line.substr(0,1) ==
"'") {
84 label += value.
ToQt();
88 if (line.size() > 0) {
91 if (line != line.
Token(
"[")) {
96 fitsLabel->addKeyword(label);
99 fileStream.read(readBuf, 80);
104 fitsPvl.addGroup(*fitsLabel);
107 jump = headerSizes->last() * 2880 - place;
108 fileStream.seekg(jump, std::ios_base::cur);
110 dataStarts->append(fileStream.tellg());
112 if (fitsLabel->hasKeyword(
"BITPIX") && fitsLabel->hasKeyword(
"NAXIS")) {
114 if((
int)fitsLabel->findKeyword(
"NAXIS") > 0) {
115 int bytesPerPixel = 0;
116 bytesPerPixel = (int)((*fitsLabel)[
"BITPIX"]);
117 bytesPerPixel = std::abs(bytesPerPixel);
120 unsigned int axis1 = 1;
121 axis1 =
toInt((*fitsLabel)[
"NAXIS1"]);
123 unsigned int axis2 = 1;
124 if (fitsLabel->hasKeyword(
"NAXIS2")) {
125 axis2 =
toInt((*fitsLabel)[
"NAXIS2"]);
128 unsigned int axis3 = 1;
129 if (fitsLabel->hasKeyword(
"NAXIS3")) {
130 axis3 =
toInt((*fitsLabel)[
"NAXIS3"]);
133 jump = (int)(ceil(bytesPerPixel * axis1 * axis2 * axis3 / 2880.0) * 2880.0);
134 fileStream.seekg(jump, std::ios_base::cur);
142 PvlGroup *extraLabelGroup = fitsImageLabels->last();
143 extraLabelGroup->
setName(
"FitsExtras");
144 extraFitsLabels->append(extraLabelGroup);
146 fitsImageLabels->removeLast();
147 headerSizes->removeLast();
148 dataStarts->removeLast();
150 fitsPvl.addGroup(*extraLabelGroup);
153 else if (fitsImageLabels->size() > 1) {
154 fitsImageLabels->removeLast();
155 headerSizes->removeLast();
156 dataStarts->removeLast();
161 QString msg = QObject::tr(
"The FITS file does not contain a section header that appears "
162 "to describe an image.");