From 3c5fef988e58dd44f1a0bfb380e6f7e50e0d36a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Poizl?= Date: Wed, 2 Oct 2024 15:25:32 +0200 Subject: [PATCH] Fix compiling without stellarsolver --- CMakeLists.txt | 9 +++++++-- scriptengine.cpp | 50 +++++++++++++++++++++++++++++------------------- scriptengine.h | 8 ++++++-- 3 files changed, 43 insertions(+), 24 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 388aa70..1a7a806 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -93,16 +93,21 @@ if(LIBRAW_STATIC) target_link_libraries(tenmon PRIVATE jasper) endif() -find_path(STELLARSOLVER_INCLUDE stellarsolver.h PATH_SUFFIXES libstellarsolver) +#find_path(STELLARSOLVER_INCLUDE stellarsolver.h PATH_SUFFIXES libstellarsolver) if(STELLARSOLVER_INCLUDE AND STELLARSOLVER_LIB) target_include_directories(tenmon PRIVATE ${STELLARSOLVER_INCLUDE}) - target_link_libraries(tenmon PRIVATE ${STELLARSOLVER_LIB}) + if(MXE) + target_link_libraries(tenmon PRIVATE ${STELLARSOLVER_LIB} ${GSL_LIB} ${GSLCBLAS_LIB} boost_regex-mt-x64) + else(MXE) + target_link_libraries(tenmon PRIVATE ${STELLARSOLVER_LIB}) + endif(MXE) target_compile_definitions(tenmon PRIVATE "PLATESOLVER") target_sources(tenmon PRIVATE solver.cpp solver.h platesolving.cpp platesolving.h platesolving.ui platesolvingsettings.cpp platesolvingsettings.h platesolvingsettings.ui ) + message(STATUS "Found stellarsolver ${STELLARSOLVER_INCLUDE} ${STELLARSOLVER_LIB}") endif(STELLARSOLVER_INCLUDE AND STELLARSOLVER_LIB) option(FLATPAK "Flatpak build" OFF) diff --git a/scriptengine.cpp b/scriptengine.cpp index bc43c9a..ae446fc 100644 --- a/scriptengine.cpp +++ b/scriptengine.cpp @@ -9,7 +9,9 @@ #include "batchprocessing.h" #include #include "libXISF/libxisf.h" +#ifdef PLATESOLVER #include "solver.h" +#endif // PLATESOLVER namespace Script { @@ -27,7 +29,9 @@ ScriptEngine::ScriptEngine(BatchProcessing *parent) _database->init(QLatin1String("scriptengine")); _semaphore.release(_pool->maxThreadCount()); +#ifdef PLATESOLVER _solver = new Solver(this); +#endif // PLATESOLVER } void ScriptEngine::setParams(const QString &scriptPath, const QList> &paths, const QString &outputDir) @@ -49,7 +53,9 @@ const QString &ScriptEngine::outputDir() const void ScriptEngine::interrupt() { - _solver->abort(); +#ifdef PLATESOLVER + if(_solver)_solver->abort(); +#endif _jsEngine->setInterrupted(true); } @@ -122,25 +128,6 @@ QJSValue ScriptEngine::getItem(const QStringList &items, const QString &label, i return ret; } -void ScriptEngine::setStartingSolution(const QJSValue &solution) -{ - if(solution.isObject()) - { - if(solution.hasProperty("ra") && solution.hasProperty("dec") && solution.property("ra").isNumber() && solution.property("dec").isNumber()) - _solver->setSearchPosition(solution.property("ra").toNumber(), solution.property("dec").toNumber()); - if(solution.hasProperty("pixscale") && solution.property("pixscale").isNumber()) - { - double scale = solution.property("pixscale").toNumber(); - _solver->setSearchScale(scale * 0.8, scale * 1.2, SSolver::ScaleUnits::ARCSEC_PER_PIX); - } - } - else - { - _solver->clearStartingPositionAndScale(); - } - -} - bool ScriptEngine::convert(File *file, QString &outpath, const QString &format, const QVariantMap ¶ms, bool async) { QString path; @@ -174,6 +161,26 @@ bool ScriptEngine::convert(File *file, QString &outpath, const QString &format, return true; } +#ifdef PLATESOLVER +void ScriptEngine::setStartingSolution(const QJSValue &solution) +{ + if(solution.isObject()) + { + if(solution.hasProperty("ra") && solution.hasProperty("dec") && solution.property("ra").isNumber() && solution.property("dec").isNumber()) + _solver->setSearchPosition(solution.property("ra").toNumber(), solution.property("dec").toNumber()); + + if(solution.hasProperty("pixscale") && solution.property("pixscale").isNumber()) + { + double scale = solution.property("pixscale").toNumber(); + _solver->setSearchScale(scale * 0.8, scale * 1.2, SSolver::ScaleUnits::ARCSEC_PER_PIX); + } + } + else + { + _solver->clearStartingPositionAndScale(); + } +} + QJSValue ScriptEngine::solveImage(File *file, bool updateHeader) { QString path = file->absoluteFilePath(); @@ -253,6 +260,7 @@ QJSValue ScriptEngine::extractStars(File *file, bool hfr) return ret; } +#endif // PLATESOLVER QJSValue ScriptEngine::newObject() { @@ -682,6 +690,7 @@ QJSValue File::stats() return _stats; } +#ifdef PLATESOLVER QJSValue File::solve(bool updateHeader) { if(_solution.isUndefined() || updateHeader) @@ -697,6 +706,7 @@ QJSValue File::extractStars(bool hfr) return _stars; } +#endif // PLATESOLVER ScriptEngineThread::ScriptEngineThread(BatchProcessing *parent) : QObject(parent) { diff --git a/scriptengine.h b/scriptengine.h index f06de48..fefbe07 100644 --- a/scriptengine.h +++ b/scriptengine.h @@ -29,7 +29,7 @@ class ScriptEngine : public QObject QString _scriptPath; QString _outputDir; QList> _paths; - Solver *_solver; + Solver *_solver = nullptr; public: explicit ScriptEngine(BatchProcessing *parent = nullptr); void setParams(const QString &scriptPath, const QList> &paths, const QString &outputDir); @@ -47,10 +47,12 @@ public: Q_INVOKABLE QJSValue getInt(const QString &label = QString(), int value = 0); Q_INVOKABLE QJSValue getFloat(const QString &label = QString(), double value = 0, int decimals = 3) const; Q_INVOKABLE QJSValue getItem(const QStringList &items, const QString &label = "", int current = 0) const; - Q_INVOKABLE void setStartingSolution(const QJSValue &solution = QJSValue()); bool convert(File *file, QString &outpath, const QString &format, const QVariantMap ¶ms, bool async); +#ifdef PLATESOLVER + Q_INVOKABLE void setStartingSolution(const QJSValue &solution = QJSValue()); QJSValue solveImage(File *file, bool updateHeader); QJSValue extractStars(File *file, bool hfr); +#endif // PLATESOLVER QJSValue newObject(); QJSValue newArray(uint size); public slots: @@ -116,8 +118,10 @@ public: Q_INVOKABLE File* convert(const QString &outpath, const QString &format, const QVariantMap ¶ms = QVariantMap()); Q_INVOKABLE File* convertAsync(const QString &outpath, const QString &format, const QVariantMap ¶ms = QVariantMap()); Q_INVOKABLE QJSValue stats(); +#ifdef PLATESOLVER Q_INVOKABLE QJSValue solve(bool updateHeader = false); Q_INVOKABLE QJSValue extractStars(bool hfr); +#endif // PLATESOLVER }; class FITSRecordModify : public QObject