mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#3868 Annotations. Fix polyline visualization and property editor
This commit is contained in:
parent
a2e2907e41
commit
4873381176
@ -27,7 +27,9 @@
|
||||
#include "RimPolylinesAnnotationInView.h"
|
||||
#include "RimAnnotationInViewCollection.h"
|
||||
#include "RimAnnotationLineAppearance.h"
|
||||
#include "RimEclipseView.h"
|
||||
|
||||
#include "RigMainGrid.h"
|
||||
#include "RigPolyLinesData.h"
|
||||
|
||||
#include "RivPolylineGenerator.h"
|
||||
@ -109,20 +111,26 @@ void RivPolylineAnnotationPartMgr::buildPolylineAnnotationParts(const caf::Displ
|
||||
if(rimAnnotation->showSpheres())
|
||||
{
|
||||
auto sphereColor = rimAnnotation->appearance()->sphereColor();
|
||||
int sphereRadius = rimAnnotation->appearance()->sphereRadius();
|
||||
double sphereRadiusFactor = rimAnnotation->appearance()->sphereRadiusFactor();
|
||||
|
||||
cvf::ref<cvf::Vec3fArray> vertices = new cvf::Vec3fArray;
|
||||
cvf::ref<cvf::Vec3fArray> vecRes = new cvf::Vec3fArray;
|
||||
cvf::ref<cvf::Color3fArray> colors = new cvf::Color3fArray;
|
||||
vertices->reserve(linesInDisplay.front().size());
|
||||
vecRes->reserve(linesInDisplay.front().size());
|
||||
colors->reserve(linesInDisplay.front().size());
|
||||
|
||||
for (const auto& v : linesInDisplay.front())
|
||||
size_t pointCount = 0;
|
||||
for (const auto& line : linesInDisplay) pointCount += line.size();
|
||||
vertices->reserve(pointCount);
|
||||
vecRes->reserve(pointCount);
|
||||
colors->reserve(pointCount);
|
||||
|
||||
for (const auto& line : linesInDisplay)
|
||||
{
|
||||
vertices->add(cvf::Vec3f(v));
|
||||
vecRes->add(cvf::Vec3f::X_AXIS);
|
||||
colors->add(sphereColor);
|
||||
for (const auto& v : line)
|
||||
{
|
||||
vertices->add(cvf::Vec3f(v));
|
||||
vecRes->add(cvf::Vec3f::X_AXIS);
|
||||
colors->add(sphereColor);
|
||||
}
|
||||
}
|
||||
|
||||
cvf::ref<cvf::DrawableVectors> vectorDrawable;
|
||||
@ -141,7 +149,15 @@ void RivPolylineAnnotationPartMgr::buildPolylineAnnotationParts(const caf::Displ
|
||||
vectorDrawable->setColors(colors.p());
|
||||
|
||||
cvf::GeometryBuilderTriangles builder;
|
||||
cvf::GeometryUtils::createSphere(sphereRadius, 15, 15, &builder);
|
||||
double cellRadius = 15.0;
|
||||
auto eclipseView = dynamic_cast<RimEclipseView*>(m_rimView.p());
|
||||
if (eclipseView)
|
||||
{
|
||||
double characteristicCellSize = eclipseView->mainGrid()->characteristicIJCellSize();
|
||||
cellRadius = sphereRadiusFactor * characteristicCellSize;
|
||||
}
|
||||
|
||||
cvf::GeometryUtils::createSphere(cellRadius, 15, 15, &builder);
|
||||
vectorDrawable->setGlyph(builder.trianglesUShort().p(), builder.vertices().p());
|
||||
|
||||
cvf::ref<cvf::Part> part = new cvf::Part;
|
||||
|
@ -65,6 +65,7 @@ RimAnnotationLineAppearance::RimAnnotationLineAppearance()
|
||||
{
|
||||
CAF_PDM_InitObject("AnnotationLineAppearance", ":/WellCollection.png", "", "");
|
||||
|
||||
CAF_PDM_InitField(&m_lineFieldsHidden, "LineFieldsHidden", false, "Line Fields Hidden", "", "", "");
|
||||
CAF_PDM_InitField(&m_color, "Color", cvf::Color3f(cvf::Color3f::BLACK), "Line Color", "", "", "");
|
||||
CAF_PDM_InitField(&m_thickness, "Thickness", 2, "Line Thickness", "", "", "");
|
||||
|
||||
@ -73,6 +74,15 @@ RimAnnotationLineAppearance::RimAnnotationLineAppearance()
|
||||
m_style.uiCapability()->setUiHidden(true);
|
||||
m_style.xmlCapability()->disableIO();
|
||||
|
||||
m_lineFieldsHidden.uiCapability()->setUiHidden(true);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimAnnotationLineAppearance::setLineFieldsHidden(bool hidden)
|
||||
{
|
||||
m_lineFieldsHidden = hidden;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -112,9 +122,12 @@ int RimAnnotationLineAppearance::thickness() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimAnnotationLineAppearance::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
||||
{
|
||||
uiOrdering.add(&m_color);
|
||||
uiOrdering.add(&m_style);
|
||||
uiOrdering.add(&m_thickness);
|
||||
if (!m_lineFieldsHidden())
|
||||
{
|
||||
uiOrdering.add(&m_color);
|
||||
uiOrdering.add(&m_style);
|
||||
uiOrdering.add(&m_thickness);
|
||||
}
|
||||
|
||||
uiOrdering.skipRemainingFields(true);
|
||||
}
|
||||
@ -157,8 +170,19 @@ RimPolylineAppearance::RimPolylineAppearance()
|
||||
{
|
||||
CAF_PDM_InitObject("PolylineAppearance", ":/WellCollection.png", "", "");
|
||||
|
||||
CAF_PDM_InitField(&m_sphereFieldsHidden, "SphereFieldsHidden", false, "Sphere Fields Hidden", "", "", "");
|
||||
CAF_PDM_InitField(&m_sphereColor, "SphereColor", cvf::Color3f(cvf::Color3f::BLACK), "Sphere Color", "", "", "");
|
||||
CAF_PDM_InitField(&m_sphereRadius, "SphereRadius", 15, "Sphere Radius", "", "", "");
|
||||
CAF_PDM_InitField(&m_sphereRadiusFactor, "SphereRadiusFactor", 0.1, "Sphere Radius Factor", "", "", "");
|
||||
|
||||
m_sphereFieldsHidden.uiCapability()->setUiHidden(true);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimPolylineAppearance::setSphereFieldsHidden(bool hidden)
|
||||
{
|
||||
m_sphereFieldsHidden = hidden;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -180,17 +204,17 @@ cvf::Color3f RimPolylineAppearance::sphereColor() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimPolylineAppearance::setSphereRadius(int radius)
|
||||
void RimPolylineAppearance::setSphereRadiusFactor(double factor)
|
||||
{
|
||||
m_sphereRadius = radius;
|
||||
m_sphereRadiusFactor = factor;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
int RimPolylineAppearance::sphereRadius() const
|
||||
double RimPolylineAppearance::sphereRadiusFactor() const
|
||||
{
|
||||
return m_sphereRadius();
|
||||
return m_sphereRadiusFactor();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -200,8 +224,11 @@ void RimPolylineAppearance::defineUiOrdering(QString uiConfigName, caf::PdmUiOrd
|
||||
{
|
||||
RimAnnotationLineAppearance::defineUiOrdering(uiConfigName, uiOrdering);
|
||||
|
||||
uiOrdering.add(&m_sphereColor);
|
||||
uiOrdering.add(&m_sphereRadius);
|
||||
if (!m_sphereFieldsHidden)
|
||||
{
|
||||
uiOrdering.add(&m_sphereColor);
|
||||
uiOrdering.add(&m_sphereRadiusFactor);
|
||||
}
|
||||
|
||||
uiOrdering.skipRemainingFields(true);
|
||||
}
|
||||
|
@ -44,6 +44,9 @@ public:
|
||||
|
||||
public:
|
||||
RimAnnotationLineAppearance();
|
||||
|
||||
void setLineFieldsHidden(bool hidden);
|
||||
|
||||
void setColor(const cvf::Color3f& newColor);
|
||||
cvf::Color3f color() const;
|
||||
bool isDashed() const;
|
||||
@ -57,6 +60,7 @@ protected:
|
||||
caf::PdmUiEditorAttribute* attribute) override;
|
||||
|
||||
private:
|
||||
caf::PdmField<bool> m_lineFieldsHidden;
|
||||
caf::PdmField<cvf::Color3f> m_color;
|
||||
caf::PdmField<LineStyle> m_style;
|
||||
caf::PdmField<int> m_thickness;
|
||||
@ -85,16 +89,19 @@ class RimPolylineAppearance : public RimAnnotationLineAppearance
|
||||
public:
|
||||
RimPolylineAppearance();
|
||||
|
||||
void setSphereFieldsHidden(bool hidden);
|
||||
|
||||
void setSphereColor(const cvf::Color3f& color);
|
||||
cvf::Color3f sphereColor() const;
|
||||
void setSphereRadius(int radius);
|
||||
int sphereRadius() const;
|
||||
void setSphereRadiusFactor(double factor);
|
||||
double sphereRadiusFactor() const;
|
||||
|
||||
protected:
|
||||
void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
|
||||
void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
||||
|
||||
private:
|
||||
caf::PdmField<bool> m_sphereFieldsHidden;
|
||||
caf::PdmField<cvf::Color3f> m_sphereColor;
|
||||
caf::PdmField<int> m_sphereRadius;
|
||||
caf::PdmField<double> m_sphereRadiusFactor;
|
||||
};
|
||||
|
@ -58,9 +58,9 @@ protected:
|
||||
protected:
|
||||
caf::PdmField<bool> m_isActive;
|
||||
|
||||
caf::PdmField<bool> m_closePolyline;
|
||||
caf::PdmField<bool> m_showLines;
|
||||
caf::PdmField<bool> m_showSpheres;
|
||||
caf::PdmField<bool> m_closePolyline;
|
||||
caf::PdmField<bool> m_showLines;
|
||||
caf::PdmField<bool> m_showSpheres;
|
||||
|
||||
caf::PdmChildField<RimPolylineAppearance*> m_appearance;
|
||||
};
|
||||
|
@ -177,10 +177,16 @@ void RimPolylinesFromFileAnnotation::setDescriptionFromFileName()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimPolylinesFromFileAnnotation::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
||||
{
|
||||
uiOrdering.add(&m_polyLinesFileName);
|
||||
uiOrdering.add(&m_closePolyline);
|
||||
appearance()->setLineFieldsHidden(!m_showLines());
|
||||
appearance()->setSphereFieldsHidden(!m_showSpheres());
|
||||
|
||||
uiOrdering.add(&m_polyLinesFileName);
|
||||
|
||||
auto appearanceGroup = uiOrdering.addNewGroup("Appearance");
|
||||
appearanceGroup->add(&m_closePolyline);
|
||||
appearanceGroup->add(&m_showLines);
|
||||
appearanceGroup->add(&m_showSpheres);
|
||||
|
||||
auto appearanceGroup = uiOrdering.addNewGroup("Line Appearance");
|
||||
appearance()->uiOrdering(uiConfigName, *appearanceGroup);
|
||||
|
||||
uiOrdering.skipRemainingFields(true);
|
||||
@ -204,6 +210,14 @@ void RimPolylinesFromFileAnnotation::fieldChangedByUi(const caf::PdmFieldHandle*
|
||||
QMessageBox::warning(nullptr, "Import Polylines", totalError);
|
||||
}
|
||||
}
|
||||
else if (changedField == &m_showLines)
|
||||
{
|
||||
appearance()->setLineFieldsHidden(!m_showLines());
|
||||
}
|
||||
else if (changedField == &m_showSpheres)
|
||||
{
|
||||
appearance()->setSphereFieldsHidden(!m_showSpheres());
|
||||
}
|
||||
|
||||
RimAnnotationCollection* annColl = nullptr;
|
||||
this->firstAncestorOrThisOfTypeAsserted(annColl);
|
||||
|
@ -225,15 +225,18 @@ void RimUserDefinedPolylinesAnnotation::enablePicking(bool enable)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimUserDefinedPolylinesAnnotation::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
||||
{
|
||||
appearance()->setLineFieldsHidden(!m_showLines);
|
||||
appearance()->setSphereFieldsHidden(!m_showSpheres);
|
||||
|
||||
uiOrdering.add(&m_name);
|
||||
uiOrdering.add(&m_targets);
|
||||
uiOrdering.add(&m_enablePicking);
|
||||
uiOrdering.add(&m_closePolyline);
|
||||
|
||||
uiOrdering.add(&m_showLines);
|
||||
uiOrdering.add(&m_showSpheres);
|
||||
|
||||
auto appearanceGroup = uiOrdering.addNewGroup("Appearance");
|
||||
appearanceGroup->add(&m_closePolyline);
|
||||
appearanceGroup->add(&m_showLines);
|
||||
appearanceGroup->add(&m_showSpheres);
|
||||
|
||||
appearance()->uiOrdering(uiConfigName, *appearanceGroup);
|
||||
|
||||
uiOrdering.skipRemainingFields(true);
|
||||
@ -258,6 +261,14 @@ void RimUserDefinedPolylinesAnnotation::fieldChangedByUi(const caf::PdmFieldHand
|
||||
{
|
||||
enablePicking(m_enablePicking);
|
||||
}
|
||||
else if (changedField == &m_showLines)
|
||||
{
|
||||
appearance()->setLineFieldsHidden(!m_showLines());
|
||||
}
|
||||
else if (changedField == &m_showSpheres)
|
||||
{
|
||||
appearance()->setSphereFieldsHidden(!m_showSpheres());
|
||||
}
|
||||
|
||||
updateVisualization();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user