1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-20 10:54:14 +01:00

Enhancement: change mixercurve points from pass by value to pass by const ref;

This commit is contained in:
Mike LaBranche 2012-06-28 15:56:40 -07:00
parent 5b64393f7f
commit 604a8e06cd
4 changed files with 23 additions and 22 deletions

View File

@ -489,7 +489,7 @@ void ConfigCcpmWidget::UpdateCurveWidgets()
}
// Setup all Throttle1 curves for all types of airframes
if (Changed==1)
m_ccpm->ThrottleCurve->setCurve(curveValues);
m_ccpm->ThrottleCurve->setCurve(&curveValues);
curveValues.clear();
Changed=0;
@ -502,7 +502,7 @@ void ConfigCcpmWidget::UpdateCurveWidgets()
}
// Setup all Throttle1 curves for all types of airframes
if (Changed==1)
m_ccpm->PitchCurve->setCurve(curveValues);
m_ccpm->PitchCurve->setCurve(&curveValues);
}
void ConfigCcpmWidget::updatePitchCurveValue(QList<double> curveValues0,double Value0)

View File

@ -274,7 +274,7 @@ QStringList ConfigVehicleTypeWidget::getChannelDescriptions()
case SystemSettings::AIRFRAMETYPE_FIXEDWINGELEVON:
case SystemSettings::AIRFRAMETYPE_FIXEDWINGVTAIL:
{
ConfigFixedWingWidget* fixedwing = new ConfigFixedWingWidget();
QPointer<ConfigFixedWingWidget> fixedwing = new ConfigFixedWingWidget();
channelDesc = fixedwing->getChannelDescriptions();
}
break;
@ -282,7 +282,7 @@ QStringList ConfigVehicleTypeWidget::getChannelDescriptions()
// helicp
case SystemSettings::AIRFRAMETYPE_HELICP:
{
ConfigCcpmWidget* heli = new ConfigCcpmWidget();
QPointer<ConfigCcpmWidget> heli = new ConfigCcpmWidget();
channelDesc = heli->getChannelDescriptions();
}
break;
@ -300,7 +300,7 @@ QStringList ConfigVehicleTypeWidget::getChannelDescriptions()
case SystemSettings::AIRFRAMETYPE_HEXACOAX:
case SystemSettings::AIRFRAMETYPE_HEXA:
{
ConfigMultiRotorWidget* multi = new ConfigMultiRotorWidget();
QPointer<ConfigMultiRotorWidget> multi = new ConfigMultiRotorWidget();
channelDesc = multi->getChannelDescriptions();
}
break;
@ -310,7 +310,7 @@ QStringList ConfigVehicleTypeWidget::getChannelDescriptions()
case SystemSettings::AIRFRAMETYPE_GROUNDVEHICLEDIFFERENTIAL:
case SystemSettings::AIRFRAMETYPE_GROUNDVEHICLEMOTORCYCLE:
{
ConfigGroundVehicleWidget* ground = new ConfigGroundVehicleWidget();
QPointer<ConfigGroundVehicleWidget> ground = new ConfigGroundVehicleWidget();
channelDesc = ground->getChannelDescriptions();
}
break;
@ -643,9 +643,9 @@ void ConfigVehicleTypeWidget::refreshWidgetsValues(UAVObject * o)
// is at least one of the curve values != 0?
if (vconfig->isValidThrottleCurve(&curveValues)) {
// yes, use the curve we just read from mixersettings
m_aircraft->multiThrottleCurve->initCurve(curveValues);
m_aircraft->fixedWingThrottle->initCurve(curveValues);
m_aircraft->groundVehicleThrottle1->initCurve(curveValues);
m_aircraft->multiThrottleCurve->initCurve(&curveValues);
m_aircraft->fixedWingThrottle->initCurve(&curveValues);
m_aircraft->groundVehicleThrottle1->initCurve(&curveValues);
}
else {
// no, init a straight curve
@ -658,7 +658,7 @@ void ConfigVehicleTypeWidget::refreshWidgetsValues(UAVObject * o)
vconfig->getThrottleCurve(mixer, VehicleConfig::MIXER_THROTTLECURVE2, &curveValues);
if (vconfig->isValidThrottleCurve(&curveValues)) {
m_aircraft->groundVehicleThrottle2->initCurve(curveValues);
m_aircraft->groundVehicleThrottle2->initCurve(&curveValues);
}
else {
m_aircraft->groundVehicleThrottle2->initLinearCurve(curveValues.count(), 1.0);
@ -767,7 +767,7 @@ void ConfigVehicleTypeWidget::updateCustomAirframeUI()
// yes, use the curve we just read from mixersettings
m_aircraft->customThrottle1Curve->setMin(vconfig->getCurveMin(&curveValues));
m_aircraft->customThrottle1Curve->setMax(vconfig->getCurveMax(&curveValues));
m_aircraft->customThrottle1Curve->initCurve(curveValues);
m_aircraft->customThrottle1Curve->initCurve(&curveValues);
}
else {
// no, init a straight curve
@ -780,7 +780,7 @@ void ConfigVehicleTypeWidget::updateCustomAirframeUI()
if (vconfig->isValidThrottleCurve(&curveValues)) {
m_aircraft->customThrottle2Curve->setMin(vconfig->getCurveMin(&curveValues));
m_aircraft->customThrottle2Curve->setMax(vconfig->getCurveMax(&curveValues));
m_aircraft->customThrottle2Curve->initCurve(curveValues);
m_aircraft->customThrottle2Curve->initCurve(&curveValues);
}
else {
m_aircraft->customThrottle2Curve->initLinearCurve(curveValues.count(),(double)1);

View File

@ -123,9 +123,9 @@ Edge* MixerCurveWidget::getEdge(int index, Node* sourceNode, Node* destNode)
If a curve exists already, resets it.
Points should be between 0 and 1.
*/
void MixerCurveWidget::initCurve(QList<double> points)
void MixerCurveWidget::initCurve(const QList<double>* points)
{
if (points.length() < 2)
if (points->length() < 2)
return; // We need at least 2 points on a curve!
// finally, set node positions
@ -192,16 +192,16 @@ void MixerCurveWidget::initLinearCurve(int numPoints, double maxValue, double mi
double val = (range * ( i / (double)(numPoints-1) ) ) + minValue;
points.append(val);
}
initCurve(points);
initCurve(&points);
}
/**
Setd the current curve settings
*/
void MixerCurveWidget::setCurve(QList<double> points)
void MixerCurveWidget::setCurve(const QList<double>* points)
{
curveUpdating = true;
int ptCnt = points.count();
int ptCnt = points->count();
if (nodeList.count() != ptCnt)
initNodes(ptCnt);
@ -211,7 +211,7 @@ void MixerCurveWidget::setCurve(QList<double> points)
qreal h = plot->boundingRect().height();
for (int i=0; i<ptCnt; i++) {
double val = (points.at(i) < curveMin) ? curveMin : (points.at(i) > curveMax) ? curveMax : points.at(i);
double val = (points->at(i) < curveMin) ? curveMin : (points->at(i) > curveMax) ? curveMax : points->at(i);
val += range;
val -= (curveMin + range);
@ -248,7 +248,8 @@ void MixerCurveWidget::resizeEvent(QResizeEvent* event)
void MixerCurveWidget::itemMoved(double itemValue)
{
if (!curveUpdating) {
emit curveUpdated(getCurve(), itemValue);
QList<double> curve = getCurve();
emit curveUpdated(&curve, itemValue);
}
}

View File

@ -44,10 +44,10 @@ public:
MixerCurveWidget(QWidget *parent = 0);
~MixerCurveWidget();
void itemMoved(double itemValue); // Callback when a point is moved, to be updated
void initCurve (QList<double> points);
void initCurve (const QList<double>* points);
QList<double> getCurve();
void initLinearCurve(int numPoints, double maxValue = 1, double minValue = 0);
void setCurve(QList<double>);
void setCurve(const QList<double>* points);
void setMin(double value);
double getMin();
void setMax(double value);
@ -57,7 +57,7 @@ public:
static const int NODE_NUMELEM = 5;
signals:
void curveUpdated(QList<double>, double );
void curveUpdated(const QList<double>* points, const double value);
private slots: