#4207 Allow changing color of plot symbol edges and update cross plots

* Cross plots have same color as the symbol itself.
This commit is contained in:
Gaute Lindkvist
2019-03-20 13:30:27 +01:00
parent f14cd3f1f7
commit ba7830e53c
3 changed files with 31 additions and 3 deletions

View File

@@ -466,6 +466,7 @@ void RimGridCrossPlotCurveSet::createCurves(const RigEclipseCrossPlotResult& res
int colorIndex = indexInPlot(); int colorIndex = indexInPlot();
curve->setColor(colors.cycledColor3f(colorIndex)); curve->setColor(colors.cycledColor3f(colorIndex));
} }
curve->setSymbolEdgeColor(curve->color());
curve->setGroupingInformation(indexInPlot(), 0); curve->setGroupingInformation(indexInPlot(), 0);
curve->setSamples(result.xValues, result.yValues); curve->setSamples(result.xValues, result.yValues);
curve->updateCurveAppearance(); curve->updateCurveAppearance();
@@ -522,6 +523,7 @@ void RimGridCrossPlotCurveSet::createCurves(const RigEclipseCrossPlotResult& res
{ {
curve->setColor(cvf::Color3f(legendConfig()->scalarMapper()->mapToColor(tickValues[it->first]))); curve->setColor(cvf::Color3f(legendConfig()->scalarMapper()->mapToColor(tickValues[it->first])));
} }
curve->setSymbolEdgeColor(curve->color());
curve->setSamples(it->second.xValues, it->second.yValues); curve->setSamples(it->second.xValues, it->second.yValues);
curve->showLegend(m_crossPlotCurves.empty()); curve->showLegend(m_crossPlotCurves.empty());
curve->setLegendEntryText(createAutoName()); curve->setLegendEntryText(createAutoName());

View File

@@ -109,6 +109,7 @@ RimPlotCurve::RimPlotCurve()
CAF_PDM_InitFieldNoDefault(&m_curveInterpolation, "CurveInterpolation", "Interpolation", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_curveInterpolation, "CurveInterpolation", "Interpolation", "", "", "");
CAF_PDM_InitFieldNoDefault(&m_lineStyle, "LineStyle", "Line Style", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_lineStyle, "LineStyle", "Line Style", "", "", "");
CAF_PDM_InitFieldNoDefault(&m_pointSymbol, "PointSymbol", "Symbol", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_pointSymbol, "PointSymbol", "Symbol", "", "", "");
CAF_PDM_InitField(&m_symbolEdgeColor, "SymbolEdgeColor", cvf::Color3f(cvf::Color3::BLACK), "Symbol Edge Color", "", "", "");
CAF_PDM_InitField(&m_symbolSkipPixelDistance, "SymbolSkipPxDist", 0.0f, "Symbol Skip Distance", "", "Minimum pixel distance between symbols", ""); CAF_PDM_InitField(&m_symbolSkipPixelDistance, "SymbolSkipPxDist", 0.0f, "Symbol Skip Distance", "", "Minimum pixel distance between symbols", "");
@@ -162,7 +163,8 @@ void RimPlotCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField, con
|| &m_lineStyle == changedField || &m_lineStyle == changedField
|| &m_symbolSkipPixelDistance == changedField || &m_symbolSkipPixelDistance == changedField
|| &m_curveInterpolation == changedField || &m_curveInterpolation == changedField
|| &m_symbolSize == changedField) || &m_symbolSize == changedField
|| &m_symbolEdgeColor == changedField)
{ {
updateCurveAppearance(); updateCurveAppearance();
@@ -467,6 +469,7 @@ void RimPlotCurve::appearanceUiOrdering(caf::PdmUiOrdering& uiOrdering)
{ {
uiOrdering.add(&m_curveColor); uiOrdering.add(&m_curveColor);
uiOrdering.add(&m_pointSymbol); uiOrdering.add(&m_pointSymbol);
uiOrdering.add(&m_symbolEdgeColor);
uiOrdering.add(&m_symbolSize); uiOrdering.add(&m_symbolSize);
uiOrdering.add(&m_symbolSkipPixelDistance); uiOrdering.add(&m_symbolSkipPixelDistance);
uiOrdering.add(&m_lineStyle); uiOrdering.add(&m_lineStyle);
@@ -537,8 +540,7 @@ void RimPlotCurve::updateCurveAppearance()
{ {
CVF_ASSERT(m_qwtPlotCurve); CVF_ASSERT(m_qwtPlotCurve);
QColor curveColor(m_curveColor.value().rByte(), m_curveColor.value().gByte(), m_curveColor.value().bByte()); QColor curveColor(m_curveColor.value().rByte(), m_curveColor.value().gByte(), m_curveColor.value().bByte());
QwtSymbol* symbol = nullptr; QwtSymbol* symbol = nullptr;
if (m_pointSymbol() != RiuQwtSymbol::SYMBOL_NONE) if (m_pointSymbol() != RiuQwtSymbol::SYMBOL_NONE)
@@ -547,6 +549,10 @@ void RimPlotCurve::updateCurveAppearance()
symbol = new RiuQwtSymbol(m_pointSymbol(), m_symbolLabel, m_symbolLabelPosition); symbol = new RiuQwtSymbol(m_pointSymbol(), m_symbolLabel, m_symbolLabelPosition);
symbol->setSize(m_symbolSize, m_symbolSize); symbol->setSize(m_symbolSize, m_symbolSize);
symbol->setColor(curveColor); symbol->setColor(curveColor);
QColor symbolEdgeColor(m_symbolEdgeColor.value().rByte(), m_symbolEdgeColor.value().gByte(), m_symbolEdgeColor.value().bByte());
symbol->setPen(symbolEdgeColor);
} }
m_qwtPlotCurve->setAppearance(m_lineStyle(), m_curveInterpolation(), m_curveThickness(), curveColor); m_qwtPlotCurve->setAppearance(m_lineStyle(), m_curveInterpolation(), m_curveThickness(), curveColor);
@@ -675,6 +681,22 @@ RiuQwtSymbol::PointSymbolEnum RimPlotCurve::symbol()
return m_pointSymbol(); return m_pointSymbol();
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
cvf::Color3f RimPlotCurve::symbolEdgeColor() const
{
return m_symbolEdgeColor;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimPlotCurve::setSymbolEdgeColor(const cvf::Color3f& edgeColor)
{
m_symbolEdgeColor = edgeColor;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -713,6 +735,7 @@ void RimPlotCurve::setLineThickness(int thickness)
void RimPlotCurve::resetAppearance() void RimPlotCurve::resetAppearance()
{ {
setColor(cvf::Color3f(cvf::Color3::BLACK)); setColor(cvf::Color3f(cvf::Color3::BLACK));
setSymbolEdgeColor(cvf::Color3f(cvf::Color3::BLACK));
setLineThickness(2); setLineThickness(2);
setLineStyle(RiuQwtPlotCurve::STYLE_SOLID); setLineStyle(RiuQwtPlotCurve::STYLE_SOLID);
setSymbol(RiuQwtSymbol::SYMBOL_NONE); setSymbol(RiuQwtSymbol::SYMBOL_NONE);

View File

@@ -62,6 +62,8 @@ public:
void setLineStyle(RiuQwtPlotCurve::LineStyleEnum lineStyle); void setLineStyle(RiuQwtPlotCurve::LineStyleEnum lineStyle);
void setSymbol(RiuQwtSymbol::PointSymbolEnum symbolStyle); void setSymbol(RiuQwtSymbol::PointSymbolEnum symbolStyle);
RiuQwtSymbol::PointSymbolEnum symbol(); RiuQwtSymbol::PointSymbolEnum symbol();
cvf::Color3f symbolEdgeColor() const;
void setSymbolEdgeColor(const cvf::Color3f& edgeColor);
void setSymbolSkipDistance(float distance); void setSymbolSkipDistance(float distance);
void setSymbolLabel(const QString& label); void setSymbolLabel(const QString& label);
void setSymbolSize(int sizeInPixels); void setSymbolSize(int sizeInPixels);
@@ -140,6 +142,7 @@ protected:
caf::PdmField<LineStyle> m_lineStyle; caf::PdmField<LineStyle> m_lineStyle;
caf::PdmField<CurveInterpolation> m_curveInterpolation; caf::PdmField<CurveInterpolation> m_curveInterpolation;
RiuQwtSymbol::LabelPosition m_symbolLabelPosition; RiuQwtSymbol::LabelPosition m_symbolLabelPosition;
caf::PdmField<cvf::Color3f> m_symbolEdgeColor;
}; };