refs #916, added utility functions in CInterpolatorMulti

This commit is contained in:
Klaus Basan
2017-03-16 21:38:37 +01:00
committed by Mathew Sutcliffe
parent d078aa9580
commit 28ffdd8ed9
2 changed files with 59 additions and 1 deletions

View File

@@ -30,6 +30,8 @@ namespace BlackMisc
return m_linear.getInterpolatedSituation(currentTimeSinceEpoc, setup, hints, status); return m_linear.getInterpolatedSituation(currentTimeSinceEpoc, setup, hints, status);
case ModeSpline: case ModeSpline:
return m_spline.getInterpolatedSituation(currentTimeSinceEpoc, setup, hints, status); return m_spline.getInterpolatedSituation(currentTimeSinceEpoc, setup, hints, status);
default:
break;
} }
return {}; return {};
} }
@@ -43,6 +45,8 @@ namespace BlackMisc
return m_linear.getInterpolatedParts(cutoffTime, setup, partsStatus, log); return m_linear.getInterpolatedParts(cutoffTime, setup, partsStatus, log);
case ModeSpline: case ModeSpline:
return m_spline.getInterpolatedParts(cutoffTime, setup, partsStatus, log); return m_spline.getInterpolatedParts(cutoffTime, setup, partsStatus, log);
default:
break;
} }
return {}; return {};
} }
@@ -59,6 +63,7 @@ namespace BlackMisc
{ {
case ModeLinear: return m_linear.hasAircraftSituations(); case ModeLinear: return m_linear.hasAircraftSituations();
case ModeSpline: return m_spline.hasAircraftSituations(); case ModeSpline: return m_spline.hasAircraftSituations();
default: break;
} }
return false; return false;
} }
@@ -75,6 +80,7 @@ namespace BlackMisc
{ {
case ModeLinear: return m_linear.hasAircraftParts(); case ModeLinear: return m_linear.hasAircraftParts();
case ModeSpline: return m_spline.hasAircraftParts(); case ModeSpline: return m_spline.hasAircraftParts();
default: break;
} }
return false; return false;
} }
@@ -98,5 +104,44 @@ namespace BlackMisc
#endif #endif
return false; return false;
} }
bool CInterpolatorMulti::setMode(const QString &mode)
{
Mode m = modeFromString(mode);
if (m == ModeUnkown) { return false; }
return setMode(m);
}
void CInterpolatorMulti::toggleMode()
{
switch (m_mode)
{
case ModeSpline: m_mode = ModeLinear; break;
case ModeLinear: m_mode = ModeSpline; break;
default: m_mode = ModeSpline; break;
}
}
CInterpolatorMulti::Mode CInterpolatorMulti::modeFromString(const QString &mode)
{
if (mode.contains("spli"), Qt::CaseInsensitive) { return ModeSpline; }
if (mode.contains("lin"), Qt::CaseInsensitive) { return ModeLinear; }
return ModeUnkown;
}
const QString &CInterpolatorMulti::modeToString(CInterpolatorMulti::Mode mode)
{
static const QString l("linear");
static const QString s("spline");
static const QString u("unknown");
switch (mode)
{
case ModeLinear: return l;
case ModeSpline: return s;
case ModeUnkown:
default: return u;
}
}
} }
} }

View File

@@ -56,15 +56,28 @@ namespace BlackMisc
enum Mode enum Mode
{ {
ModeSpline, //!< spline interpolation mode ModeSpline, //!< spline interpolation mode
ModeLinear //!< linear interpolation mode ModeLinear, //!< linear interpolation mode
ModeUnkown
}; };
//! Set interpolation mode. Return true if mode was changed. Mode will not be changed in release build. //! Set interpolation mode. Return true if mode was changed. Mode will not be changed in release build.
bool setMode(Mode mode); bool setMode(Mode mode);
//! Set interpolation mode. Return true if mode was changed. Mode will not be changed in release build.
bool setMode(const QString &mode);
//! Get active interpolation mode. //! Get active interpolation mode.
Mode getMode() const { return m_mode; } Mode getMode() const { return m_mode; }
//! Toogle interpolator Mode
void toggleMode();
//! Mode from string
static Mode modeFromString(const QString &mode);
//! Mode to string
static const QString &modeToString(Mode mode);
private: private:
Mode m_mode = ModeSpline; Mode m_mode = ModeSpline;
CInterpolatorSpline m_spline; CInterpolatorSpline m_spline;