[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [labplot/gsoc2016_fits] src: cfitsio linked, fits extension names getter function implemented.
From: Fabian Kristof <f-kristof () hotmail ! com>
Date: 2016-05-02 23:51:46
Message-ID: E1axNcw-0002mz-UZ () scm ! kde ! org
[Download RAW message or body]
Git commit df3856a991b7def4dda0f51523d9979a4bd3ea14 by Fabian Kristof.
Committed on 02/05/2016 at 23:51.
Pushed by fkristof into branch 'gsoc2016_fits'.
cfitsio linked, fits extension names getter function implemented.
M +1 -1 src/CMakeLists.txt
M +70 -5 src/backend/datasources/filters/FITSFilter.cpp
M +3 -1 src/backend/datasources/filters/FITSFilter.h
M +6 -6 src/backend/datasources/filters/FITSFilterPrivate.h
M +1 -1 src/kdefrontend/spreadsheet/StatisticsDialog.h
http://commits.kde.org/labplot/df3856a991b7def4dda0f51523d9979a4bd3ea14
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 4b621e5..8ccec30 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -211,7 +211,7 @@ set(LABPLOT_SRCS ${GUI_SOURCES} ${PLOTS_SOURCES})
INCLUDE_DIRECTORIES(. ${GSL_INCLUDE_DIR} ${GSL_INCLUDEDIR}/..)
kde4_add_ui_files(LABPLOT_SRCS ${UI_SOURCES})
kde4_add_executable(labplot2 ${LABPLOT_SRCS} ${BACKEND_SOURCES} \
${DATASOURCES_SOURCES} ${COMMONFRONTEND_SOURCES} ${TOOLS_SOURCES})
-target_link_libraries(labplot2 ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS} ${GSL_LIBRARIES} \
${GSL_CBLAS_LIBRARIES} ${HDF5_LIBRARY} ${NETCDF_LIBRARY}) \
+target_link_libraries(labplot2 ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS} ${GSL_LIBRARIES} \
${GSL_CBLAS_LIBRARIES} ${HDF5_LIBRARY} ${NETCDF_LIBRARY} ${CFITSIO_LIBRARY}) # \
${OPJ_LIBRARY}
############## installation ################################
diff --git a/src/backend/datasources/filters/FITSFilter.cpp \
b/src/backend/datasources/filters/FITSFilter.cpp index 28f9ddd..8839044 100644
--- a/src/backend/datasources/filters/FITSFilter.cpp
+++ b/src/backend/datasources/filters/FITSFilter.cpp
@@ -53,8 +53,8 @@ bool FITSFilter::load(XmlStreamReader * loader) {
return false;
}
-QStringList FITSFilter::extensionNames() const {
- return d->extensionNames();
+QStringList FITSFilter::extensionNames(const QString &fileName) {
+ return d->extensionNames(fileName);
}
//#####################################################################
@@ -62,7 +62,7 @@ QStringList FITSFilter::extensionNames() const {
//#####################################################################
FITSFilterPrivate::FITSFilterPrivate(FITSFilter* owner) :
- q(owner), status(0) {
+ q(owner) {
}
void FITSFilterPrivate::readCHDU(const QString &fileName, AbstractDataSource \
*dataSource, AbstractFileFilter::ImportMode importMode) { @@ -76,8 +76,73 @@ void \
FITSFilterPrivate::writeCHDU(const QString &fileName, AbstractDataSource *d \
Q_UNUSED(dataSource) }
-QStringList FITSFilterPrivate::extensionNames() const {
- return QStringList();
+QStringList FITSFilterPrivate::extensionNames(const QString& fileName) {
+ QStringList extensionNames;
+ int status = 0;
+ if (!fits_open_file(&fitsFile, fileName.toLatin1(), READONLY, &status )) {
+ int hduCount;
+
+ if (!fits_get_num_hdus(fitsFile, &hduCount, &status)) {
+ int imageCount = 0;
+ int asciiTableCount = 0;
+ int binaryTableCount = 0;
+ for (int currentHDU = 1; currentHDU <= hduCount; ++currentHDU) {
+
+ char extensionName[80];
+ int hduType;
+
+ fits_get_hdu_type(fitsFile, &hduType, &status);
+
+ switch (hduType) {
+ case IMAGE_HDU:
+ imageCount++;
+ break;
+ case ASCII_TBL:
+ asciiTableCount++;
+ break;
+ case BINARY_TBL:
+ binaryTableCount++;
+ break;
+ }
+ QString extName;
+ if (!fits_read_keyword(fitsFile, "EXTNAME", extensionName, NULL, \
&status)){ + extName = QString(extensionName);
+ } else {
+ status = 0;
+ if (!fits_read_keyword(fitsFile, "HDUNAME", extensionName, NULL, \
&status)) { + extName = QString(extensionName);
+ } else {
+ switch (hduType) {
+ case IMAGE_HDU:
+ extName = i18n("IMAGE #%1").arg(imageCount);
+ break;
+ case ASCII_TBL:
+ extName = i18n("ASCII_TBL #%1").arg(asciiTableCount);
+ break;
+ case BINARY_TBL:
+ extName = i18n("BINARY_TBL #%1").arg(binaryTableCount);
+ break;
+ }
+ }
+ }
+ extensionNames << extName.trimmed();
+ fits_movrel_hdu(fitsFile, 1, NULL, &status);
+ }
+ } else {
+ printError(status);
+ }
+ } else {
+ printError(status);
+ }
+
+ return extensionNames;
+}
+
+void FITSFilterPrivate::printError(int status) const {
+ if (status) {
+ char errorText[80];
+ fits_get_errstatus(status, errorText );
+ }
}
diff --git a/src/backend/datasources/filters/FITSFilter.h \
b/src/backend/datasources/filters/FITSFilter.h index b9623c9..abcc14a 100644
--- a/src/backend/datasources/filters/FITSFilter.h
+++ b/src/backend/datasources/filters/FITSFilter.h
@@ -30,6 +30,8 @@ Copyright : (C) 2016 by Fabian Kristof \
(fkristofszabolcs@gmail.com)
#include "backend/datasources/filters/AbstractFileFilter.h"
#include <QStringList>
+#include <KLocale>
+
class FITSFilterPrivate;
class FITSFilter : public AbstractFileFilter{
Q_OBJECT
@@ -44,7 +46,7 @@ class FITSFilter : public AbstractFileFilter{
virtual void save(QXmlStreamWriter*) const;
virtual bool load(XmlStreamReader*);
- QStringList extensionNames() const;
+ QStringList extensionNames(const QString& fileName);
private:
FITSFilterPrivate* const d;
diff --git a/src/backend/datasources/filters/FITSFilterPrivate.h \
b/src/backend/datasources/filters/FITSFilterPrivate.h index 397d27c..4f6c662 100644
--- a/src/backend/datasources/filters/FITSFilterPrivate.h
+++ b/src/backend/datasources/filters/FITSFilterPrivate.h
@@ -27,9 +27,9 @@ Copyright : (C) 2016 by Fabian Kristof \
(fkristofszabolcs@gmail.com)
* Boston, MA 02110-1301 USA *
* *
***************************************************************************/
-#ifdef HAVE_FITS
+//#ifdef HAVE_FITS
#include "fitsio.h"
-#endif
+//#endif
class AbstractDataSource;
class FITSFilterPrivate {
@@ -41,15 +41,15 @@ class FITSFilterPrivate {
void writeCHDU(const QString & fileName, AbstractDataSource* \
dataSource);
const FITSFilter* q;
- QStringList extensionNames() const;
+ QStringList extensionNames(const QString &fileName) ;
private:
- int status;
+ void printError(int status) const;
-#ifdef HAVE_FITS
+//#ifdef HAVE_FITS
fitsfile* fitsFile;
-#endif
+//#endif
};
diff --git a/src/kdefrontend/spreadsheet/StatisticsDialog.h \
b/src/kdefrontend/spreadsheet/StatisticsDialog.h index 8609b8d..cb7427b 100644
--- a/src/kdefrontend/spreadsheet/StatisticsDialog.h
+++ b/src/kdefrontend/spreadsheet/StatisticsDialog.h
@@ -3,7 +3,7 @@
Project : LabPlot
Description : Dialog showing statistics for column values
--------------------------------------------------------------------
- Copyright : (C) 2016 by Fabian Kristof (fkristofszabolcs@gmail.com))
+ Copyright : (C) 2016 by Fabian Kristof (fkristofszabolcs@gmail.com)
Copyright : (C) 2016 by Alexander Semke (alexander.semke@web.de)
***************************************************************************/
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic