#3132 Increase legend sample line lengths and scale by curve thickness

* Otherwise we can't distinguish between curves in the legend.
This commit is contained in:
Gaute Lindkvist
2018-07-02 14:49:09 +02:00
parent a898f909e1
commit 3dec239c99
3 changed files with 48 additions and 6 deletions

View File

@@ -159,9 +159,21 @@ void RimPlotCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField, con
|| &m_pointSymbol == changedField
|| &m_lineStyle == changedField
|| &m_symbolSkipPixelDistance == changedField
|| &m_curveInterpolation == changedField)
|| &m_curveInterpolation == changedField
|| &m_symbolSize)
{
updateCurveAppearance();
if (&m_pointSymbol == changedField)
{
m_symbolSize.uiCapability()->setUiReadOnly(m_pointSymbol() == RimPlotCurve::SYMBOL_NONE);
m_symbolSkipPixelDistance.uiCapability()->setUiReadOnly(m_pointSymbol() == RimPlotCurve::SYMBOL_NONE);
}
else if (&m_lineStyle == changedField)
{
m_curveThickness.uiCapability()->setUiReadOnly(m_lineStyle() == RimPlotCurve::STYLE_NONE);
m_curveInterpolation.uiCapability()->setUiReadOnly(m_lineStyle() == RimPlotCurve::STYLE_NONE);
}
}
else if (changedField == &m_isUsingAutoName)
{
@@ -233,6 +245,17 @@ void RimPlotCurve::updateCurveVisibility(bool updateParentPlot)
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimPlotCurve::initAfterRead()
{
m_symbolSize.uiCapability()->setUiReadOnly(m_pointSymbol() == RimPlotCurve::SYMBOL_NONE);
m_symbolSkipPixelDistance.uiCapability()->setUiReadOnly(m_pointSymbol() == RimPlotCurve::SYMBOL_NONE);
m_curveThickness.uiCapability()->setUiReadOnly(m_lineStyle() == RimPlotCurve::STYLE_NONE);
m_curveInterpolation.uiCapability()->setUiReadOnly(m_lineStyle() == RimPlotCurve::STYLE_NONE);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -377,10 +400,12 @@ void RimPlotCurve::appearanceUiOrdering(caf::PdmUiOrdering& uiOrdering)
{
uiOrdering.add(&m_curveColor);
uiOrdering.add(&m_pointSymbol);
uiOrdering.add(&m_symbolSize);
uiOrdering.add(&m_symbolSkipPixelDistance);
uiOrdering.add(&m_curveThickness);
uiOrdering.add(&m_lineStyle);
uiOrdering.add(&m_curveThickness);
uiOrdering.add(&m_curveInterpolation);
}
//--------------------------------------------------------------------------------------------------
@@ -488,6 +513,22 @@ void RimPlotCurve::updateCurveAppearance()
m_qwtPlotCurve->setSymbolSkipPixelDistance(m_symbolSkipPixelDistance());
m_qwtPlotCurve->setErrorBarsColor(curveColor);
// Make sure the legend lines are long enough to distinguish between line types.
// Standard width in Qwt is 8 which is too short.
// Use 10 and scale this by curve thickness + add space for displaying symbol.
QSize legendIconSize = m_qwtPlotCurve->legendIconSize();
int symbolWidth = 0;
if (symbol)
{
symbolWidth = symbol->boundingRect().size().width() + 2;
}
int width = std::max(10 * m_curveThickness, (symbolWidth * 3) / 2);
legendIconSize.setWidth(width);
m_qwtPlotCurve->setLegendIconSize(legendIconSize);
}
//--------------------------------------------------------------------------------------------------