#2530 Mohr circle: Fix crash when selected cell has no value

This commit is contained in:
Rebecca Cox
2018-02-27 10:32:59 +01:00
parent cbbc9c0f26
commit cfa3443cdd
2 changed files with 40 additions and 6 deletions

View File

@@ -79,12 +79,12 @@ RiuMohrsCirclePlot::~RiuMohrsCirclePlot()
//--------------------------------------------------------------------------------------------------
void RiuMohrsCirclePlot::setPrincipals(double p1, double p2, double p3)
{
CVF_ASSERT(p1 > p2);
CVF_ASSERT(p2 > p3);
m_principal1 = p1;
m_principal2 = p2;
m_principal3 = p3;
if (isValidPrincipals(p1, p2, p3))
{
m_principal1 = p1;
m_principal2 = p2;
m_principal3 = p3;
}
}
//--------------------------------------------------------------------------------------------------
@@ -92,6 +92,12 @@ void RiuMohrsCirclePlot::setPrincipals(double p1, double p2, double p3)
//--------------------------------------------------------------------------------------------------
void RiuMohrsCirclePlot::setPrincipalsAndRedrawPlot(double p1, double p2, double p3)
{
if (!isValidPrincipals(p1, p2, p3))
{
clearPlot();
return;
}
setPrincipals(p1, p2, p3);
redrawEnvelope();
@@ -475,3 +481,29 @@ void RiuMohrsCirclePlot::replotAndScaleAxis()
m_rescaler->rescale();
this->plotLayout()->setAlignCanvasToScales(true);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RiuMohrsCirclePlot::isValidPrincipals(double p1, double p2, double p3)
{
//Inf
if (p1 == HUGE_VAL || p2 == HUGE_VAL || p3 == HUGE_VAL)
{
return false;
}
//Nan
if ((p1 != p1) || (p2 != p2) || p3 != p3)
{
return false;
}
//Principal rules:
if ((p1 < p2) || (p2 < p3))
{
return false;
}
return true;
}

View File

@@ -83,6 +83,8 @@ private:
void replotAndScaleAxis();
static bool isValidPrincipals(double p1, double p2, double p3);
private:
double m_principal1;
double m_principal2;