File indexing completed on 2024-06-16 03:42:45

0001 /*
0002     File                 : FITSFilterPrivate.cpp
0003     Project              : LabPlot
0004     Description          : FITS I/O-filter
0005     --------------------------------------------------------------------
0006     SPDX-FileCopyrightText: 2016 Fabian Kristof <fkristofszabolcs@gmail.com>
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #ifndef FITSFILTERPRIVATE_H
0011 #define FITSFILTERPRIVATE_H
0012 
0013 #ifdef HAVE_FITS
0014 #include "fitsio.h"
0015 #endif
0016 
0017 class AbstractDataSource;
0018 
0019 class FITSFilterPrivate {
0020 public:
0021     explicit FITSFilterPrivate(FITSFilter*);
0022     ~FITSFilterPrivate();
0023 
0024     QVector<QStringList> readCHDU(const QString& fileName,
0025                                   AbstractDataSource* = nullptr,
0026                                   AbstractFileFilter::ImportMode = AbstractFileFilter::ImportMode::Replace,
0027                                   bool* okToMatrix = nullptr,
0028                                   int lines = -1);
0029     void writeCHDU(const QString& fileName, AbstractDataSource*);
0030 
0031     static QMultiMap<QString, QString> extensionNames(const QString& fileName);
0032     void updateKeywords(const QString& fileName, const QList<FITSFilter::Keyword>& originals, const QVector<FITSFilter::Keyword>& updates);
0033     void addNewKeyword(const QString& fileName, const QList<FITSFilter::Keyword>& keywords);
0034     void addKeywordUnit(const QString& fileName, const QList<FITSFilter::Keyword>& keywords);
0035     void deleteKeyword(const QString& fileName, const QList<FITSFilter::Keyword>& keywords);
0036     void removeExtensions(const QStringList& extensions);
0037     const QString valueOf(const QString& fileName, const char* key);
0038     QList<FITSFilter::Keyword> chduKeywords(const QString& fileName);
0039     void parseHeader(const QString& fileName,
0040                      QTableWidget* headerEditTable,
0041                      bool readKeys = true,
0042                      const QList<FITSFilter::Keyword>& keys = QList<FITSFilter::Keyword>());
0043     void parseExtensions(const QString& fileName, QTreeWidget*, bool checkPrimary = false);
0044 
0045     const FITSFilter* q;
0046 
0047     int startRow{1};
0048     int endRow{-1};
0049     int startColumn{1};
0050     int endColumn{-1};
0051 
0052     bool commentsAsUnits{false};
0053     int exportTo{0};
0054 
0055 private:
0056     void printError(int status) const;
0057 
0058 #ifdef HAVE_FITS
0059     fitsfile* m_fitsFile{nullptr};
0060 #endif
0061 };
0062 
0063 #endif // FITSFILTERPRIVATE_H