#4226 Add polyline measurement mode

This commit is contained in:
Gaute Lindkvist
2019-03-26 14:05:05 +01:00
parent b956e6ed70
commit 009dcb5f19
12 changed files with 122 additions and 21 deletions

View File

@@ -36,7 +36,7 @@ CAF_PDM_SOURCE_INIT(RimMeasurement, "RimMeasurement");
///
//--------------------------------------------------------------------------------------------------
RimMeasurement::RimMeasurement()
: m_isInMeasurementMode(false)
: m_measurementMode(MEASURE_DISABLED)
{
CAF_PDM_InitObject("Measurement", ":/TextAnnotation16x16.png", "", "");
}
@@ -49,13 +49,14 @@ RimMeasurement::~RimMeasurement() {}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimMeasurement::setMeasurementMode(bool measurementMode)
void RimMeasurement::setMeasurementMode(MeasurementMode measurementMode)
{
m_isInMeasurementMode = measurementMode;
m_measurementMode = measurementMode;
if (m_isInMeasurementMode)
if (m_measurementMode != MEASURE_DISABLED)
{
RicMeasurementPickEventHandler::instance()->registerAsPickEventHandler();
RicMeasurementPickEventHandler::instance()->enablePolyLineMode(m_measurementMode == MEASURE_POLYLINE);
m_eventFilter = new RiuMeasurementEventFilter(this);
m_eventFilter->registerFilter();
}
@@ -78,9 +79,9 @@ void RimMeasurement::setMeasurementMode(bool measurementMode)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimMeasurement::isInMeasurementMode() const
RimMeasurement::MeasurementMode RimMeasurement::measurementMode() const
{
return m_isInMeasurementMode;
return m_measurementMode;
}
//--------------------------------------------------------------------------------------------------

View File

@@ -38,6 +38,13 @@ class RimMeasurement : public caf::PdmObject
using Vec3d = cvf::Vec3d;
public:
enum MeasurementMode
{
MEASURE_DISABLED = 0,
MEASURE_REGULAR,
MEASURE_POLYLINE
};
class Lengths
{
public:
@@ -60,8 +67,8 @@ public:
RimMeasurement();
~RimMeasurement() override;
void setMeasurementMode(bool measurementMode);
bool isInMeasurementMode() const;
void setMeasurementMode(MeasurementMode measureMode);
MeasurementMode measurementMode() const;
void addPointInDomainCoords(const Vec3d& pointInDomainCoord);
std::vector<Vec3d> pointsInDomainCoords() const;
@@ -76,7 +83,7 @@ private:
void updateView() const;
private:
bool m_isInMeasurementMode;
MeasurementMode m_measurementMode;
std::vector<Vec3d> m_pointsInDomainCoords;
caf::PdmPointer<Rim3dView> m_sourceView;

View File

@@ -67,7 +67,7 @@ bool RiuMeasurementEventFilter::eventFilter(QObject* obj, QEvent* event)
if (m_parent)
{
m_parent->setMeasurementMode(false);
m_parent->setMeasurementMode(RimMeasurement::MEASURE_DISABLED);
}
return true;