(#697) Added line, symbol and line_symbol as curve style

This commit is contained in:
Magne Sjaastad 2015-12-08 20:39:06 +01:00
parent cbe728c9af
commit 2a53054f2d
4 changed files with 53 additions and 1 deletions

View File

@ -30,9 +30,23 @@
#include "cvfAssert.h"
#include "qwt_symbol.h"
// NB! Special macro for pure virtual class
CAF_PDM_XML_ABSTRACT_SOURCE_INIT(RimWellLogCurve, "WellLogPlotCurve");
namespace caf
{
template<>
void caf::AppEnum< RimWellLogCurve::CurvePlotTypeEnum >::setUp()
{
addItem(RimWellLogCurve::LINE, "LINE", "Line");
addItem(RimWellLogCurve::SYMBOL, "SYMBOL", "Symbol");
addItem(RimWellLogCurve::LINE_AND_SYMBOL, "LINE_AND_SYMBOL", "Line and Symbol");
setDefault(RimWellLogCurve::LINE);
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -54,6 +68,9 @@ RimWellLogCurve::RimWellLogCurve()
CAF_PDM_InitField(&m_curveThickness, "Thickness", 1.0f, "Thickness", "", "", "");
m_curveThickness.uiCapability()->setUiEditorTypeName(caf::PdmUiComboBoxEditor::uiEditorTypeName());
caf::AppEnum< RimWellLogCurve::CurvePlotTypeEnum > curvePlotType = LINE;
CAF_PDM_InitField(&m_curvePlotStyle, "CurvePlotStyle", curvePlotType, "Curve style", "", "", "");
m_qwtPlotCurve = new RiuLineSegmentQwtPlotCurve;
m_qwtPlotCurve->setXAxis(QwtPlot::xTop);
m_qwtPlotCurve->setYAxis(QwtPlot::yLeft);
@ -90,7 +107,8 @@ void RimWellLogCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
updatePlotTitle();
}
else if (&m_curveColor == changedField
|| &m_curveThickness == changedField)
|| &m_curveThickness == changedField
|| &m_curvePlotStyle == changedField)
{
updateCurvePen();
}
@ -326,6 +344,24 @@ void RimWellLogCurve::updateCurvePen()
{
CVF_ASSERT(m_qwtPlotCurve);
m_qwtPlotCurve->setPen(QColor(m_curveColor.value().rByte(), m_curveColor.value().gByte(), m_curveColor.value().bByte()), m_curveThickness);
QwtSymbol* symbol = NULL;
if (m_curvePlotStyle == LINE_AND_SYMBOL || m_curvePlotStyle == SYMBOL)
{
// QwtPlotCurve will take ownership of the symbol
symbol = new QwtSymbol(QwtSymbol::XCross);
symbol->setSize(6, 6);
}
QwtPlotCurve::CurveStyle curveStyle = QwtPlotCurve::Lines;
if (m_curvePlotStyle == SYMBOL)
{
curveStyle = QwtPlotCurve::NoCurve;
}
m_qwtPlotCurve->setStyle(curveStyle);
m_qwtPlotCurve->setSymbol(symbol);
}
//--------------------------------------------------------------------------------------------------

View File

@ -24,13 +24,17 @@
#include "cafPdmObject.h"
#include "RigWellLogCurveData.h"
#include <QPointer>
#include <vector>
class RigWellLogCurveData;
class RiuWellLogTrack;
class RiuLineSegmentQwtPlotCurve;
class QwtPlotCurve;
class QString;
//==================================================================================================
@ -40,6 +44,14 @@ class QString;
class RimWellLogCurve : public caf::PdmObject
{
CAF_PDM_HEADER_INIT;
public:
enum CurvePlotTypeEnum
{
LINE,
SYMBOL,
LINE_AND_SYMBOL
};
public:
RimWellLogCurve();
virtual ~RimWellLogCurve();
@ -94,4 +106,6 @@ protected:
caf::PdmField<bool> m_autoName;
caf::PdmField<cvf::Color3f> m_curveColor;
caf::PdmField<float> m_curveThickness;
caf::PdmField< caf::AppEnum< CurvePlotTypeEnum > > m_curvePlotStyle;
};

View File

@ -383,6 +383,7 @@ void RimWellLogExtractionCurve::defineUiOrdering(QString uiConfigName, caf::PdmU
caf::PdmUiGroup* appearanceGroup = uiOrdering.addNewGroup("Appearance");
appearanceGroup->add(&m_curveColor);
appearanceGroup->add(&m_curveThickness);
appearanceGroup->add(&m_curvePlotStyle);
appearanceGroup->add(&m_curveName);
appearanceGroup->add(&m_autoName);
if (m_autoName)

View File

@ -176,6 +176,7 @@ void RimWellLogFileCurve::defineUiOrdering(QString uiConfigName, caf::PdmUiOrder
caf::PdmUiGroup* appearanceGroup = uiOrdering.addNewGroup("Appearance");
appearanceGroup->add(&m_curveColor);
appearanceGroup->add(&m_curveThickness);
appearanceGroup->add(&m_curvePlotStyle);
appearanceGroup->add(&m_curveName);
appearanceGroup->add(&m_autoName);
}