Add solver profile to script engine

This commit is contained in:
2024-12-27 23:20:51 +01:00
parent a86c100e69
commit 236f66ed2f
4 changed files with 62 additions and 0 deletions
+53
View File
@@ -3,6 +3,7 @@
#include <QFileInfo> #include <QFileInfo>
#include <QDebug> #include <QDebug>
#include <QInputDialog> #include <QInputDialog>
#include <QJsonValue>
#include "loadrunable.h" #include "loadrunable.h"
#include "rawimage.h" #include "rawimage.h"
#include "loadrunable.h" #include "loadrunable.h"
@@ -162,6 +163,58 @@ bool ScriptEngine::convert(File *file, QString &outpath, const QString &format,
} }
#ifdef PLATESOLVER #ifdef PLATESOLVER
void ScriptEngine::setSolverProfile(int index)
{
if(_solver && index >= SSolver::Parameters::DEFAULT && index < SSolver::Parameters::BIG_STARS)
{
_solver->setParameters((SSolver::Parameters::ParametersProfile)index);
}
}
void ScriptEngine::setSolverProfile(const QVariantMap &profile)
{
if(_solver)
{
SSolver::Parameters params = SSolver::Parameters::convertFromMap(profile);
_solver->setParameters(params);
}
}
QJSValue ScriptEngine::getSolverProfile() const
{
if(_solver)
{
QMap<QString, QVariant> params = SSolver::Parameters::convertToMap(_solver->getProfile());
QJSValue ret = _jsEngine->newObject();
for(auto i = params.begin(); i != params.end(); i++)
{
switch(i.value().metaType().id())
{
case QMetaType::Int:
ret.setProperty(i.key(), i.value().toInt());
break;
case QMetaType::Double:
ret.setProperty(i.key(), i.value().toDouble());
break;
case QMetaType::Bool:
ret.setProperty(i.key(), i.value().toBool());
break;
case QMetaType::QString:
ret.setProperty(i.key(), i.value().toString());
break;
default:
qWarning() << "unhandled metatype" << i.key() << i.value();
break;
}
}
return ret;
}
else
{
return QJSValue();
}
}
void ScriptEngine::setStartingSolution(const QJSValue &solution) void ScriptEngine::setStartingSolution(const QJSValue &solution)
{ {
if(solution.isObject()) if(solution.isObject())
+3
View File
@@ -49,6 +49,9 @@ public:
Q_INVOKABLE QJSValue getItem(const QStringList &items, const QString &label = "", int current = 0) const; Q_INVOKABLE QJSValue getItem(const QStringList &items, const QString &label = "", int current = 0) const;
bool convert(File *file, QString &outpath, const QString &format, const QVariantMap &params, bool async); bool convert(File *file, QString &outpath, const QString &format, const QVariantMap &params, bool async);
#ifdef PLATESOLVER #ifdef PLATESOLVER
Q_INVOKABLE void setSolverProfile(int index);
Q_INVOKABLE void setSolverProfile(const QVariantMap &profile);
Q_INVOKABLE QJSValue getSolverProfile() const;
Q_INVOKABLE void setStartingSolution(const QJSValue &solution = QJSValue()); Q_INVOKABLE void setStartingSolution(const QJSValue &solution = QJSValue());
QJSValue solveImage(File *file, bool updateHeader); QJSValue solveImage(File *file, bool updateHeader);
QJSValue extractStars(File *file, bool hfr); QJSValue extractStars(File *file, bool hfr);
+5
View File
@@ -205,6 +205,11 @@ void Solver::setParameters(const Parameters &parameters)
_solver->setParameters(profile); _solver->setParameters(profile);
} }
Parameters Solver::getProfile() const
{
return _solver->getCurrentParameters();
}
void Solver::setSearchScale(double fovLow, double fowHigh, SSolver::ScaleUnits units) void Solver::setSearchScale(double fovLow, double fowHigh, SSolver::ScaleUnits units)
{ {
_solver->setSearchScale(fovLow, fowHigh, units); _solver->setSearchScale(fovLow, fowHigh, units);
+1
View File
@@ -34,6 +34,7 @@ public:
bool updateHeader(QString &error); bool updateHeader(QString &error);
void setParameters(SSolver::Parameters::ParametersProfile profile); void setParameters(SSolver::Parameters::ParametersProfile profile);
void setParameters(const SSolver::Parameters &parameters); void setParameters(const SSolver::Parameters &parameters);
SSolver::Parameters getProfile() const;
void setSearchScale(double fovLow, double fowHigh, ScaleUnits units); void setSearchScale(double fovLow, double fowHigh, ScaleUnits units);
void setSearchPosition(double ra, double dec); void setSearchPosition(double ra, double dec);
void clearStartingPositionAndScale(); void clearStartingPositionAndScale();