Refactored general view stuff into RimView

Removing it from RimReservoirView and RimGeoMechView
This commit is contained in:
Jacob Støren committed 2015-04-29 22:19:49 +02:00
1 parent 4a21bb4a30
commit 4b7d593b3c
9 files changed
+223 -187

No files matched your search

@@ -32,6 +32,8 @@
#include "RimResultSlot.h" #include "RimResultSlot.h"
#include "RimWellCollection.h" #include "RimWellCollection.h"
#include "RiuViewer.h" #include "RiuViewer.h"
#include "RimGeoMechView.h"
#include "RimView.h"
CAF_PDM_SOURCE_INIT(Rim3dOverlayInfoConfig, "View3dOverlayInfoConfig"); CAF_PDM_SOURCE_INIT(Rim3dOverlayInfoConfig, "View3dOverlayInfoConfig");
@@ -65,9 +67,9 @@ void Rim3dOverlayInfoConfig::fieldChangedByUi(const caf::PdmFieldHandle* changed
{ {
this->update3DInfo(); this->update3DInfo();
if (m_reservoirView && m_reservoirView->viewer()) if (m_viewDef && m_viewDef->viewer())
{ {
m_reservoirView->viewer()->update(); m_viewDef->viewer()->update();
} }
} }
@@ -86,22 +88,49 @@ void Rim3dOverlayInfoConfig::update3DInfo()
{ {
this->updateUiIconFromToggleField(); this->updateUiIconFromToggleField();
if (!m_reservoirView) return; if (!m_viewDef) return;
if (!m_reservoirView->viewer()) return; if (!m_viewDef->viewer()) return;
if (!this->active()) if (!this->active())
{ {
m_reservoirView->viewer()->showInfoText(false); m_viewDef->viewer()->showInfoText(false);
m_reservoirView->viewer()->showHistogram(false); m_viewDef->viewer()->showHistogram(false);
m_reservoirView->viewer()->showAnimationProgress(false); m_viewDef->viewer()->showAnimationProgress(false);
return; return;
} }
m_reservoirView->viewer()->showInfoText(showInfoText()); m_viewDef->viewer()->showInfoText(showInfoText());
m_reservoirView->viewer()->showHistogram(false); m_viewDef->viewer()->showHistogram(false);
m_reservoirView->viewer()->showAnimationProgress(showAnimProgress()); m_viewDef->viewer()->showAnimationProgress(showAnimProgress());
RimReservoirView * reservoirView = dynamic_cast<RimReservoirView*>(m_viewDef.p());
if (reservoirView) updateReservoir3DInfo(reservoirView);
RimGeoMechView * geoMechView = dynamic_cast<RimGeoMechView*>(m_viewDef.p());
if (geoMechView) updateGeoMech3DInfo(geoMechView);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmFieldHandle* Rim3dOverlayInfoConfig::objectToggleField()
{
return &active;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void Rim3dOverlayInfoConfig::setReservoirView(RimView* ownerReservoirView)
{
m_viewDef = ownerReservoirView;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void Rim3dOverlayInfoConfig::updateReservoir3DInfo(RimReservoirView * reservoirView)
{
if (showInfoText()) if (showInfoText())
{ {
QString caseName; QString caseName;
@@ -115,24 +144,24 @@ void Rim3dOverlayInfoConfig::update3DInfo()
QString faultCellResultMapping; QString faultCellResultMapping;
if (m_reservoirView->eclipseCase() && m_reservoirView->eclipseCase()->reservoirData() && m_reservoirView->eclipseCase()->reservoirData()->mainGrid()) if (reservoirView->eclipseCase() && reservoirView->eclipseCase()->reservoirData() && reservoirView->eclipseCase()->reservoirData()->mainGrid())
{ {
caseName = m_reservoirView->eclipseCase()->caseUserDescription(); caseName = reservoirView->eclipseCase()->caseUserDescription();
totCellCount = QString::number(m_reservoirView->eclipseCase()->reservoirData()->mainGrid()->cells().size()); totCellCount = QString::number(reservoirView->eclipseCase()->reservoirData()->mainGrid()->cells().size());
size_t mxActCellCount = m_reservoirView->eclipseCase()->reservoirData()->activeCellInfo(RifReaderInterface::MATRIX_RESULTS)->reservoirActiveCellCount(); size_t mxActCellCount = reservoirView->eclipseCase()->reservoirData()->activeCellInfo(RifReaderInterface::MATRIX_RESULTS)->reservoirActiveCellCount();
size_t frActCellCount = m_reservoirView->eclipseCase()->reservoirData()->activeCellInfo(RifReaderInterface::FRACTURE_RESULTS)->reservoirActiveCellCount(); size_t frActCellCount = reservoirView->eclipseCase()->reservoirData()->activeCellInfo(RifReaderInterface::FRACTURE_RESULTS)->reservoirActiveCellCount();
if (frActCellCount > 0) activeCellCountText += "Matrix : "; if (frActCellCount > 0) activeCellCountText += "Matrix : ";
activeCellCountText += QString::number(mxActCellCount); activeCellCountText += QString::number(mxActCellCount);
if (frActCellCount > 0) activeCellCountText += " Fracture : " + QString::number(frActCellCount); if (frActCellCount > 0) activeCellCountText += " Fracture : " + QString::number(frActCellCount);
iSize = QString::number(m_reservoirView->eclipseCase()->reservoirData()->mainGrid()->cellCountI()); iSize = QString::number(reservoirView->eclipseCase()->reservoirData()->mainGrid()->cellCountI());
jSize = QString::number(m_reservoirView->eclipseCase()->reservoirData()->mainGrid()->cellCountJ()); jSize = QString::number(reservoirView->eclipseCase()->reservoirData()->mainGrid()->cellCountJ());
kSize = QString::number(m_reservoirView->eclipseCase()->reservoirData()->mainGrid()->cellCountK()); kSize = QString::number(reservoirView->eclipseCase()->reservoirData()->mainGrid()->cellCountK());
zScale = QString::number(m_reservoirView->scaleZ()); zScale = QString::number(reservoirView->scaleZ());
propName = m_reservoirView->cellResult()->resultVariable(); propName = reservoirView->cellResult()->resultVariable();
cellEdgeName = m_reservoirView->cellEdgeResult()->resultVariable(); cellEdgeName = reservoirView->cellEdgeResult()->resultVariable();
} }
QString infoText = QString( QString infoText = QString(
@@ -140,39 +169,39 @@ void Rim3dOverlayInfoConfig::update3DInfo()
"<b>Cell count. Total:</b> %2 <b>Active:</b> %3 <br>" "<b>Cell count. Total:</b> %2 <b>Active:</b> %3 <br>"
"<b>Main Grid I,J,K:</b> %4, %5, %6 <b>Z-Scale:</b> %7<br>").arg(caseName, totCellCount, activeCellCountText, iSize, jSize, kSize, zScale); "<b>Main Grid I,J,K:</b> %4, %5, %6 <b>Z-Scale:</b> %7<br>").arg(caseName, totCellCount, activeCellCountText, iSize, jSize, kSize, zScale);
if (m_reservoirView->cellResult()->isTernarySaturationSelected()) if (reservoirView->cellResult()->isTernarySaturationSelected())
{ {
infoText += QString("<b>Cell Property:</b> %1 ").arg(propName); infoText += QString("<b>Cell Property:</b> %1 ").arg(propName);
} }
if (m_reservoirView->animationMode() && m_reservoirView->cellResult()->hasResult()) if (reservoirView->animationMode() && reservoirView->cellResult()->hasResult())
{ {
infoText += QString("<b>Cell Property:</b> %1 ").arg(propName); infoText += QString("<b>Cell Property:</b> %1 ").arg(propName);
double min, max; double min, max;
double p10, p90; double p10, p90;
double mean; double mean;
size_t scalarIndex = m_reservoirView->cellResult()->scalarResultIndex(); size_t scalarIndex = reservoirView->cellResult()->scalarResultIndex();
m_reservoirView->currentGridCellResults()->cellResults()->minMaxCellScalarValues(scalarIndex, min, max); reservoirView->currentGridCellResults()->cellResults()->minMaxCellScalarValues(scalarIndex, min, max);
m_reservoirView->currentGridCellResults()->cellResults()->p10p90CellScalarValues(scalarIndex, p10, p90); reservoirView->currentGridCellResults()->cellResults()->p10p90CellScalarValues(scalarIndex, p10, p90);
m_reservoirView->currentGridCellResults()->cellResults()->meanCellScalarValues(scalarIndex, mean); reservoirView->currentGridCellResults()->cellResults()->meanCellScalarValues(scalarIndex, mean);
//infoText += QString("<blockquote><b>Min:</b> %1 <b>P10:</b> %2 <b>Mean:</b> %3 <b>P90:</b> %4 <b>Max:</b> %5 </blockquote>").arg(min).arg(p10).arg(mean).arg(p90).arg(max); //infoText += QString("<blockquote><b>Min:</b> %1 <b>P10:</b> %2 <b>Mean:</b> %3 <b>P90:</b> %4 <b>Max:</b> %5 </blockquote>").arg(min).arg(p10).arg(mean).arg(p90).arg(max);
//infoText += QString("<blockquote><pre>Min: %1 P10: %2 Mean: %3 \n P90: %4 Max: %5 </pre></blockquote>").arg(min).arg(p10).arg(mean).arg(p90).arg(max); //infoText += QString("<blockquote><pre>Min: %1 P10: %2 Mean: %3 \n P90: %4 Max: %5 </pre></blockquote>").arg(min).arg(p10).arg(mean).arg(p90).arg(max);
infoText += QString("<table border=0 cellspacing=5 ><tr><td>Min</td><td>P10</td> <td>Mean</td> <td>P90</td> <td>Max</td> </tr>" infoText += QString("<table border=0 cellspacing=5 ><tr><td>Min</td><td>P10</td> <td>Mean</td> <td>P90</td> <td>Max</td> </tr>"
"<tr><td>%1</td><td> %2</td><td> %3</td><td> %4</td><td> %5 </td></tr></table>").arg(min).arg(p10).arg(mean).arg(p90).arg(max); "<tr><td>%1</td><td> %2</td><td> %3</td><td> %4</td><td> %5 </td></tr></table>").arg(min).arg(p10).arg(mean).arg(p90).arg(max);
if (m_reservoirView->faultResultSettings()->hasValidCustomResult()) if (reservoirView->faultResultSettings()->hasValidCustomResult())
{ {
QString faultMapping; QString faultMapping;
bool isShowingGrid = m_reservoirView->faultCollection()->isGridVisualizationMode(); bool isShowingGrid = reservoirView->faultCollection()->isGridVisualizationMode();
if (!isShowingGrid) if (!isShowingGrid)
{ {
if (m_reservoirView->faultCollection()->faultResult() == RimFaultCollection::FAULT_BACK_FACE_CULLING) if (reservoirView->faultCollection()->faultResult() == RimFaultCollection::FAULT_BACK_FACE_CULLING)
{ {
faultMapping = "Cells behind fault"; faultMapping = "Cells behind fault";
} }
else if (m_reservoirView->faultCollection()->faultResult() == RimFaultCollection::FAULT_FRONT_FACE_CULLING) else if (reservoirView->faultCollection()->faultResult() == RimFaultCollection::FAULT_FRONT_FACE_CULLING)
{ {
faultMapping = "Cells in front of fault"; faultMapping = "Cells in front of fault";
} }
@@ -188,7 +217,7 @@ void Rim3dOverlayInfoConfig::update3DInfo()
infoText += QString("<b>Fault results: </b> %1<br>").arg(faultMapping); infoText += QString("<b>Fault results: </b> %1<br>").arg(faultMapping);
infoText += QString("<b>Fault Property:</b> %1 <br>").arg(m_reservoirView->faultResultSettings()->customFaultResult()->resultVariable()); infoText += QString("<b>Fault Property:</b> %1 <br>").arg(reservoirView->faultResultSettings()->customFaultResult()->resultVariable());
} }
} }
else else
@@ -197,43 +226,43 @@ void Rim3dOverlayInfoConfig::update3DInfo()
} }
if (m_reservoirView->animationMode() && m_reservoirView->cellEdgeResult()->hasResult()) if (reservoirView->animationMode() && reservoirView->cellEdgeResult()->hasResult())
{ {
double min, max; double min, max;
m_reservoirView->cellEdgeResult()->minMaxCellEdgeValues(min, max); reservoirView->cellEdgeResult()->minMaxCellEdgeValues(min, max);
infoText += QString("<b>Cell Edge Property:</b> %1 <blockquote>Min: %2 Max: %3 </blockquote>").arg(cellEdgeName).arg(min).arg(max); infoText += QString("<b>Cell Edge Property:</b> %1 <blockquote>Min: %2 Max: %3 </blockquote>").arg(cellEdgeName).arg(min).arg(max);
} }
if ( m_reservoirView->cellResult()->hasDynamicResult() if (reservoirView->cellResult()->hasDynamicResult()
|| m_reservoirView->propertyFilterCollection()->hasActiveDynamicFilters() || reservoirView->propertyFilterCollection()->hasActiveDynamicFilters()
|| m_reservoirView->wellCollection()->hasVisibleWellPipes() || reservoirView->wellCollection()->hasVisibleWellPipes()
|| m_reservoirView->cellResult()->isTernarySaturationSelected()) || reservoirView->cellResult()->isTernarySaturationSelected())
{ {
int currentTimeStep = m_reservoirView->currentTimeStep(); int currentTimeStep = reservoirView->currentTimeStep();
QDateTime date = m_reservoirView->currentGridCellResults()->cellResults()->timeStepDate(0, currentTimeStep); QDateTime date = reservoirView->currentGridCellResults()->cellResults()->timeStepDate(0, currentTimeStep);
infoText += QString("<b>Time Step:</b> %1 <b>Time:</b> %2").arg(currentTimeStep).arg(date.toString("dd.MMM yyyy")); infoText += QString("<b>Time Step:</b> %1 <b>Time:</b> %2").arg(currentTimeStep).arg(date.toString("dd.MMM yyyy"));
} }
m_reservoirView->viewer()->setInfoText(infoText); reservoirView->viewer()->setInfoText(infoText);
} }
if (showHistogram()) if (showHistogram())
{ {
if (m_reservoirView->animationMode() && m_reservoirView->cellResult()->hasResult()) if (reservoirView->animationMode() && reservoirView->cellResult()->hasResult())
{ {
double min, max; double min, max;
double p10, p90; double p10, p90;
double mean; double mean;
size_t scalarIndex = m_reservoirView->cellResult()->scalarResultIndex(); size_t scalarIndex = reservoirView->cellResult()->scalarResultIndex();
m_reservoirView->currentGridCellResults()->cellResults()->minMaxCellScalarValues(scalarIndex, min, max); reservoirView->currentGridCellResults()->cellResults()->minMaxCellScalarValues(scalarIndex, min, max);
m_reservoirView->currentGridCellResults()->cellResults()->p10p90CellScalarValues(scalarIndex, p10, p90); reservoirView->currentGridCellResults()->cellResults()->p10p90CellScalarValues(scalarIndex, p10, p90);
m_reservoirView->currentGridCellResults()->cellResults()->meanCellScalarValues(scalarIndex, mean); reservoirView->currentGridCellResults()->cellResults()->meanCellScalarValues(scalarIndex, mean);
m_reservoirView->viewer()->showHistogram(true); reservoirView->viewer()->showHistogram(true);
m_reservoirView->viewer()->setHistogram(min, max, m_reservoirView->currentGridCellResults()->cellResults()->cellScalarValuesHistogram(scalarIndex)); reservoirView->viewer()->setHistogram(min, max, reservoirView->currentGridCellResults()->cellResults()->cellScalarValuesHistogram(scalarIndex));
m_reservoirView->viewer()->setHistogramPercentiles(p10, p90, mean); reservoirView->viewer()->setHistogramPercentiles(p10, p90, mean);
} }
} }
} }
@@ -241,15 +270,16 @@ void Rim3dOverlayInfoConfig::update3DInfo()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
caf::PdmFieldHandle* Rim3dOverlayInfoConfig::objectToggleField() void Rim3dOverlayInfoConfig::updateGeoMech3DInfo(RimGeoMechView * geoMechView)
{ {
return &active; if (showInfoText())
} {
QString infoText = QString(
"<p><b><center>-- %1 --</center></b><p> ").arg("ToDo: Describe Geo Mech Case");
geoMechView->viewer()->setInfoText(infoText);
}
//-------------------------------------------------------------------------------------------------- if (showHistogram())
/// {
//-------------------------------------------------------------------------------------------------- }
void Rim3dOverlayInfoConfig::setReservoirView(RimReservoirView* ownerReservoirView)
{
m_reservoirView = ownerReservoirView;
} }
@@ -28,6 +28,9 @@
#include "cvfVector2.h" #include "cvfVector2.h"
class RimReservoirView; class RimReservoirView;
class RimGeoMechView;
class RimView;
//================================================================================================== //==================================================================================================
/// ///
/// ///
@@ -41,7 +44,7 @@ public:
void update3DInfo(); void update3DInfo();
void setReservoirView(RimReservoirView* ownerReservoirView); void setReservoirView(RimView* ownerView);
void setPosition(cvf::Vec2ui position); void setPosition(cvf::Vec2ui position);
caf::PdmField<bool> active; caf::PdmField<bool> active;
@@ -53,7 +56,13 @@ protected:
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue); virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
virtual caf::PdmFieldHandle* objectToggleField(); virtual caf::PdmFieldHandle* objectToggleField();
private: private:
caf::PdmPointer<RimReservoirView> m_reservoirView;
void updateReservoir3DInfo(RimReservoirView * reservoirView);
void updateGeoMech3DInfo(RimGeoMechView * geoMechView);
caf::PdmPointer<RimView> m_viewDef;
cvf::Vec2ui m_position; cvf::Vec2ui m_position;
}; };
@@ -82,28 +82,11 @@ RimGeoMechView::RimGeoMechView(void)
CAF_PDM_InitFieldNoDefault(&cellResult, "GridCellResult", "Color Result", ":/CellResult.png", "", ""); CAF_PDM_InitFieldNoDefault(&cellResult, "GridCellResult", "Color Result", ":/CellResult.png", "", "");
cellResult = new RimGeoMechResultSlot(); cellResult = new RimGeoMechResultSlot();
CAF_PDM_InitFieldNoDefault(&overlayInfoConfig, "OverlayInfoConfig", "Info Box", "", "", "");
overlayInfoConfig = new Rim3dOverlayInfoConfig();
CAF_PDM_InitField(&name, "UserDescription", QString("View"), "Name", "", "", "");
double defaultScaleFactor = 1.0;
if (preferences) defaultScaleFactor = preferences->defaultScaleFactorZ;
CAF_PDM_InitField(&scaleZ, "GridZScale", defaultScaleFactor, "Z Scale", "", "Scales the scene in the Z direction", "");
CAF_PDM_InitField(&showWindow, "ShowWindow", true, "Show 3D viewer", "", "", "");
showWindow.setUiHidden(true);
CAF_PDM_InitField(&cameraPosition, "CameraPosition", cvf::Mat4d::IDENTITY, "", "", "", "");
caf::AppEnum<RimGeoMechView::MeshModeType> defaultMeshType = NO_MESH; caf::AppEnum<RimGeoMechView::MeshModeType> defaultMeshType = NO_MESH;
if (preferences->defaultGridLines) defaultMeshType = FULL_MESH; if (preferences->defaultGridLines) defaultMeshType = FULL_MESH;
CAF_PDM_InitField(&meshMode, "MeshMode", defaultMeshType, "Grid lines", "", "", ""); CAF_PDM_InitField(&meshMode, "MeshMode", defaultMeshType, "Grid lines", "", "", "");
CAF_PDM_InitFieldNoDefault(&surfaceMode, "SurfaceMode", "Grid surface", "", "", ""); CAF_PDM_InitFieldNoDefault(&surfaceMode, "SurfaceMode", "Grid surface", "", "", "");
cvf::Color3f defBackgColor = preferences->defaultViewerBackgroundColor();
CAF_PDM_InitField(&backgroundColor, "ViewBackgroundColor", defBackgColor, "Background", "", "", "");
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -113,14 +96,6 @@ RimGeoMechView::~RimGeoMechView(void)
{ {
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmFieldHandle* RimGeoMechView::userDescriptionField()
{
return &name;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -27,6 +27,7 @@
#include "cafPdmFieldCvfMat4d.h" #include "cafPdmFieldCvfMat4d.h"
#include "cvfObject.h" #include "cvfObject.h"
#include "RimView.h"
class RimGeoMechResultSlot; class RimGeoMechResultSlot;
class Rim3dOverlayInfoConfig; class Rim3dOverlayInfoConfig;
@@ -40,7 +41,7 @@ class RigFemPart;
/// ///
/// ///
//================================================================================================== //==================================================================================================
class RimGeoMechView : public caf::PdmObject class RimGeoMechView : public RimView
{ {
CAF_PDM_HEADER_INIT; CAF_PDM_HEADER_INIT;
@@ -48,7 +49,6 @@ public:
RimGeoMechView(void); RimGeoMechView(void);
virtual ~RimGeoMechView(void); virtual ~RimGeoMechView(void);
enum MeshModeType enum MeshModeType
{ {
FULL_MESH, FULL_MESH,
@@ -66,31 +66,22 @@ public:
void setGeoMechCase(RimGeoMechCase* gmCase); void setGeoMechCase(RimGeoMechCase* gmCase);
void loadDataAndUpdate(); void loadDataAndUpdate();
virtual void setCurrentTimeStep(int frameIdx){}
virtual void updateCurrentTimeStepAndRedraw(){}
virtual void endAnimation() {}
caf::PdmField<RimGeoMechResultSlot*> cellResult; caf::PdmField<RimGeoMechResultSlot*> cellResult;
caf::PdmField<Rim3dOverlayInfoConfig*> overlayInfoConfig;
// Fields:
caf::PdmField<QString> name;
caf::PdmField<double> scaleZ;
caf::PdmField<bool> showWindow;
caf::PdmField<cvf::Mat4d> cameraPosition;
caf::PdmField< caf::AppEnum< MeshModeType > > meshMode; caf::PdmField< caf::AppEnum< MeshModeType > > meshMode;
caf::PdmField< caf::AppEnum< SurfaceModeType > > surfaceMode; caf::PdmField< caf::AppEnum< SurfaceModeType > > surfaceMode;
caf::PdmField< cvf::Color3f > backgroundColor;
protected:
virtual caf::PdmFieldHandle* userDescriptionField();
private: private:
void updateViewerWidget(); void updateViewerWidget();
void updateViewerWidgetWindowTitle(); void updateViewerWidgetWindowTitle();
void createDisplayModelAndRedraw(); void createDisplayModelAndRedraw();
QPointer<RiuViewer> m_viewer; caf::PdmPointer<RimGeoMechCase> m_geomechCase;
caf::PdmPointer<RimGeoMechCase> m_geomechCase; cvf::ref<RivGeoMechPartMgr> m_geoMechVizModel;
cvf::ref<RivGeoMechPartMgr> m_geoMechVizModel;
}; };
#include "cvfArray.h" #include "cvfArray.h"
@@ -39,7 +39,7 @@ namespace cvf
class ScalarMapper; class ScalarMapper;
} }
class RimReservoirView; class RimView;
//================================================================================================== //==================================================================================================
/// ///
@@ -52,7 +52,7 @@ public:
RimLegendConfig(); RimLegendConfig();
virtual ~RimLegendConfig(); virtual ~RimLegendConfig();
void setReservoirView(RimReservoirView* ownerReservoirView) {m_reservoirView = ownerReservoirView; } void setReservoirView(RimView* ownerReservoirView) {m_reservoirView = ownerReservoirView; }
caf::PdmField<QString> resultVariableName; // Used internally to describe the variable this legend setup is used for caf::PdmField<QString> resultVariableName; // Used internally to describe the variable this legend setup is used for
@@ -111,7 +111,7 @@ private:
private: private:
caf::PdmPointer<RimReservoirView> m_reservoirView; caf::PdmPointer<RimView> m_reservoirView;
cvf::ref<cvf::ScalarMapperDiscreteLinear> m_linDiscreteScalarMapper; cvf::ref<cvf::ScalarMapperDiscreteLinear> m_linDiscreteScalarMapper;
cvf::ref<cvf::ScalarMapperDiscreteLog> m_logDiscreteScalarMapper; cvf::ref<cvf::ScalarMapperDiscreteLog> m_logDiscreteScalarMapper;
@@ -109,24 +109,6 @@ RimReservoirView::RimReservoirView()
CAF_PDM_InitFieldNoDefault(&faultResultSettings, "FaultResultSettings", "Separate Fault Result", "", "", ""); CAF_PDM_InitFieldNoDefault(&faultResultSettings, "FaultResultSettings", "Separate Fault Result", "", "", "");
faultResultSettings = new RimFaultResultSlot(); faultResultSettings = new RimFaultResultSlot();
CAF_PDM_InitFieldNoDefault(&overlayInfoConfig, "OverlayInfoConfig", "Info Box", "", "", "");
overlayInfoConfig = new Rim3dOverlayInfoConfig();
overlayInfoConfig->setReservoirView(this);
CAF_PDM_InitField(&name, "UserDescription", QString(""), "Name", "", "", "");
double defaultScaleFactor = 1.0;
if (preferences) defaultScaleFactor = preferences->defaultScaleFactorZ;
CAF_PDM_InitField(&scaleZ, "GridZScale", defaultScaleFactor, "Z Scale", "", "Scales the scene in the Z direction", "");
CAF_PDM_InitField(&showWindow, "ShowWindow", true, "Show 3D viewer", "", "", "");
showWindow.setUiHidden(true);
CAF_PDM_InitField(&m_currentTimeStep, "CurrentTimeStep", 0, "Current Time Step","", "", "");
m_currentTimeStep.setUiHidden(true);
CAF_PDM_InitField(&animationMode, "AnimationMode", false, "Animation Mode","", "", "");
animationMode.setUiHidden(true);
CAF_PDM_InitFieldNoDefault(&wellCollection, "WellCollection", "Simulation Wells", "", "", ""); CAF_PDM_InitFieldNoDefault(&wellCollection, "WellCollection", "Simulation Wells", "", "", "");
wellCollection = new RimWellCollection; wellCollection = new RimWellCollection;
@@ -147,19 +129,10 @@ RimReservoirView::RimReservoirView()
CAF_PDM_InitField(&meshMode, "MeshMode", defaultMeshType, "Grid lines", "", "", ""); CAF_PDM_InitField(&meshMode, "MeshMode", defaultMeshType, "Grid lines", "", "", "");
CAF_PDM_InitFieldNoDefault(&surfaceMode, "SurfaceMode", "Grid surface", "", "", ""); CAF_PDM_InitFieldNoDefault(&surfaceMode, "SurfaceMode", "Grid surface", "", "", "");
CAF_PDM_InitField(&maximumFrameRate, "MaximumFrameRate", 10, "Maximum frame rate","", "", "");
maximumFrameRate.setUiHidden(true);
// Visualization fields // Visualization fields
CAF_PDM_InitField(&showMainGrid, "ShowMainGrid", true, "Show Main Grid", "", "", ""); CAF_PDM_InitField(&showMainGrid, "ShowMainGrid", true, "Show Main Grid", "", "", "");
CAF_PDM_InitField(&showInactiveCells, "ShowInactiveCells", false, "Show Inactive Cells", "", "", ""); CAF_PDM_InitField(&showInactiveCells, "ShowInactiveCells", false, "Show Inactive Cells", "", "", "");
CAF_PDM_InitField(&showInvalidCells, "ShowInvalidCells", false, "Show Invalid Cells", "", "", ""); CAF_PDM_InitField(&showInvalidCells, "ShowInvalidCells", false, "Show Invalid Cells", "", "", "");
cvf::Color3f defBackgColor = preferences->defaultViewerBackgroundColor();
CAF_PDM_InitField(&backgroundColor, "ViewBackgroundColor", defBackgColor, "Background", "", "", "");
CAF_PDM_InitField(&cameraPosition, "CameraPosition", cvf::Mat4d::IDENTITY, "", "", "", "");
this->cellResult()->setReservoirView(this); this->cellResult()->setReservoirView(this);
this->cellResult()->legendConfig()->setPosition(cvf::Vec2ui(10, 120)); this->cellResult()->legendConfig()->setPosition(cvf::Vec2ui(10, 120));
@@ -223,13 +196,8 @@ void RimReservoirView::updateViewerWidget()
RiuMainWindow::instance()->addViewer(m_viewer); RiuMainWindow::instance()->addViewer(m_viewer);
m_viewer->setMinNearPlaneDistance(10); m_viewer->setMinNearPlaneDistance(10);
this->cellResult()->legendConfig->recreateLegend();
this->cellResult()->ternaryLegendConfig->recreateLegend();
this->cellEdgeResult()->legendConfig->recreateLegend();
m_viewer->removeAllColorLegends(); this->resetLegendsInViewer();
m_viewer->addColorLegendToBottomLeftCorner(this->cellResult()->legendConfig->legend());
m_viewer->addColorLegendToBottomLeftCorner(this->cellEdgeResult()->legendConfig->legend());
if (RiaApplication::instance()->navigationPolicy() == RiaApplication::NAVIGATION_POLICY_CEETRON) if (RiaApplication::instance()->navigationPolicy() == RiaApplication::NAVIGATION_POLICY_CEETRON)
{ {
@@ -1024,14 +992,6 @@ void RimReservoirView::updateStaticCellColors(unsigned short geometryType)
m_reservoirGridPartManager->updateCellColor(static_cast<RivReservoirViewPartMgr::ReservoirGeometryCacheType>(geometryType), color); m_reservoirGridPartManager->updateCellColor(static_cast<RivReservoirViewPartMgr::ReservoirGeometryCacheType>(geometryType), color);
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiuViewer* RimReservoirView::viewer()
{
return m_viewer;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -1659,13 +1619,6 @@ bool RimReservoirView::isGridVisualizationMode() const
|| this->meshMode() == FULL_MESH); || this->meshMode() == FULL_MESH);
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmFieldHandle* RimReservoirView::objectToggleField()
{
return &showWindow;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
@@ -1844,3 +1797,17 @@ RimResultSlot* RimReservoirView::currentFaultResultSlot()
return faultResultSlot; return faultResultSlot;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimReservoirView::resetLegendsInViewer()
{
this->cellResult()->legendConfig->recreateLegend();
this->cellResult()->ternaryLegendConfig->recreateLegend();
this->cellEdgeResult()->legendConfig->recreateLegend();
m_viewer->removeAllColorLegends();
m_viewer->addColorLegendToBottomLeftCorner(this->cellResult()->legendConfig->legend());
m_viewer->addColorLegendToBottomLeftCorner(this->cellEdgeResult()->legendConfig->legend());
}
@@ -33,6 +33,7 @@
#include "cafPdmFieldCvfMat4d.h" #include "cafPdmFieldCvfMat4d.h"
#include "RivReservoirViewPartMgr.h" #include "RivReservoirViewPartMgr.h"
#include "RimView.h"
class RigActiveCellInfo; class RigActiveCellInfo;
class RigCaseCellResultsData; class RigCaseCellResultsData;
@@ -74,7 +75,7 @@ enum PartRenderMaskEnum
/// ///
/// ///
//================================================================================================== //==================================================================================================
class RimReservoirView : public caf::PdmObject class RimReservoirView : public RimView
{ {
CAF_PDM_HEADER_INIT; CAF_PDM_HEADER_INIT;
public: public:
@@ -108,14 +109,6 @@ public:
caf::PdmField<RimFaultCollection*> faultCollection; caf::PdmField<RimFaultCollection*> faultCollection;
caf::PdmField<Rim3dOverlayInfoConfig*> overlayInfoConfig;
// Visualization setup fields
caf::PdmField<QString> name;
caf::PdmField<double> scaleZ;
caf::PdmField<bool> showWindow;
caf::PdmField<bool> showInvalidCells; caf::PdmField<bool> showInvalidCells;
caf::PdmField<bool> showInactiveCells; caf::PdmField<bool> showInactiveCells;
caf::PdmField<bool> showMainGrid; caf::PdmField<bool> showMainGrid;
@@ -123,14 +116,6 @@ public:
caf::PdmField< caf::AppEnum< MeshModeType > > meshMode; caf::PdmField< caf::AppEnum< MeshModeType > > meshMode;
caf::PdmField< caf::AppEnum< SurfaceModeType > > surfaceMode; caf::PdmField< caf::AppEnum< SurfaceModeType > > surfaceMode;
caf::PdmField< cvf::Color3f > backgroundColor;
caf::PdmField<cvf::Mat4d> cameraPosition;
caf::PdmField<int> maximumFrameRate;
caf::PdmField<bool> animationMode;
// Access internal objects // Access internal objects
RimReservoirCellResultsStorage* currentGridCellResults(); RimReservoirCellResultsStorage* currentGridCellResults();
RigActiveCellInfo* currentActiveCellInfo(); RigActiveCellInfo* currentActiveCellInfo();
@@ -140,16 +125,18 @@ public:
void setEclipseCase(RimCase* reservoir); void setEclipseCase(RimCase* reservoir);
RimCase* eclipseCase(); RimCase* eclipseCase();
// Animation // Animation overrides from RimView
int currentTimeStep() { return m_currentTimeStep;}
void setCurrentTimeStep(int frameIdx); virtual void setCurrentTimeStep(int frameIdx);
void updateCurrentTimeStepAndRedraw(); virtual void updateCurrentTimeStepAndRedraw();
void endAnimation(); virtual void endAnimation();
// 3D Viewer
RiuViewer* viewer();
private: private:
void updateViewerWidget(); void updateViewerWidget();
void resetLegendsInViewer();
void updateViewerWidgetWindowTitle(); void updateViewerWidgetWindowTitle();
void setDefaultView(); void setDefaultView();
@@ -203,8 +190,6 @@ private:
// Overridden PDM methods: // Overridden PDM methods:
public: public:
virtual caf::PdmFieldHandle* userDescriptionField() { return &name; }
virtual caf::PdmFieldHandle* objectToggleField();
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue); virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
protected: protected:
virtual void initAfterRead(); virtual void initAfterRead();
@@ -217,8 +202,6 @@ private:
void clampCurrentTimestep(); void clampCurrentTimestep();
private: private:
caf::PdmField<int> m_currentTimeStep;
QPointer<RiuViewer> m_viewer;
caf::PdmPointer<RimCase> m_reservoir; caf::PdmPointer<RimCase> m_reservoir;
bool m_previousGridModeMeshLinesWasFaults; bool m_previousGridModeMeshLinesWasFaults;
+44 -2
View File
@@ -1,14 +1,48 @@
#include "RimView.h" #include "RimView.h"
#include "cafPdmObjectFactory.h" #include "cafPdmObjectFactory.h"
CAF_PDM_SOURCE_INIT(RimView, "GenericView"); #include "RiaApplication.h"
#include "RiaPreferences.h"
#include "Rim3dOverlayInfoConfig.h"
#include "RiuViewer.h"
CAF_PDM_ABSTRACT_SOURCE_INIT(RimView, "GenericView"); // Do not use. Abstract class
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RimView::RimView(void) RimView::RimView(void)
{ {
CAF_PDM_InitObject("Generic View", ":/ReservoirView.png", "", ""); RiaApplication* app = RiaApplication::instance();
RiaPreferences* preferences = app->preferences();
CVF_ASSERT(preferences);
CAF_PDM_InitField(&name, "UserDescription", QString(""), "Name", "", "", "");
CAF_PDM_InitField(&showWindow, "ShowWindow", true, "Show 3D viewer", "", "", "");
showWindow.setUiHidden(true);
CAF_PDM_InitField(&cameraPosition, "CameraPosition", cvf::Mat4d::IDENTITY, "", "", "", "");
double defaultScaleFactor = 1.0;
if (preferences) defaultScaleFactor = preferences->defaultScaleFactorZ;
CAF_PDM_InitField(&scaleZ, "GridZScale", defaultScaleFactor, "Z Scale", "", "Scales the scene in the Z direction", "");
cvf::Color3f defBackgColor = preferences->defaultViewerBackgroundColor();
CAF_PDM_InitField(&backgroundColor, "ViewBackgroundColor", defBackgColor, "Background", "", "", "");
CAF_PDM_InitField(&maximumFrameRate, "MaximumFrameRate", 10, "Maximum frame rate", "", "", "");
maximumFrameRate.setUiHidden(true);
CAF_PDM_InitField(&animationMode, "AnimationMode", false, "Animation Mode", "", "", "");
animationMode.setUiHidden(true);
CAF_PDM_InitField(&m_currentTimeStep, "CurrentTimeStep", 0, "Current Time Step", "", "", "");
m_currentTimeStep.setUiHidden(true);
CAF_PDM_InitFieldNoDefault(&overlayInfoConfig, "OverlayInfoConfig", "Info Box", "", "", "");
overlayInfoConfig = new Rim3dOverlayInfoConfig();
overlayInfoConfig->setReservoirView(this);
} }
@@ -20,5 +54,13 @@ RimView::~RimView(void)
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiuViewer* RimView::viewer()
{
return m_viewer;
}
@@ -20,6 +20,16 @@
#pragma once #pragma once
#include "cafPdmObject.h" #include "cafPdmObject.h"
#include "cafPdmField.h"
#include "cafPdmFieldCvfColor.h"
#include "cafPdmFieldCvfMat4d.h"
class RiuViewer;
class Rim3dOverlayInfoConfig;
#define CAF_PDM_ABSTRACT_SOURCE_INIT(ClassName, keyword) \
bool ClassName::Error_You_forgot_to_add_the_macro_CAF_PDM_HEADER_INIT_and_or_CAF_PDM_SOURCE_INIT_to_your_cpp_file_for_this_class() { return false;} \
QString ClassName::classKeywordStatic() { assert(PdmObject::isValidXmlElementName(keyword)); return keyword; }
//================================================================================================== //==================================================================================================
/// ///
@@ -32,7 +42,36 @@ public:
RimView(void); RimView(void);
virtual ~RimView(void); virtual ~RimView(void);
// 3D Viewer
RiuViewer* viewer();
caf::PdmField<QString> name;
caf::PdmField<double> scaleZ;
caf::PdmField<bool> showWindow;
caf::PdmField<cvf::Mat4d> cameraPosition;
caf::PdmField< cvf::Color3f > backgroundColor;
caf::PdmField<int> maximumFrameRate;
caf::PdmField<bool> animationMode;
caf::PdmField<Rim3dOverlayInfoConfig*> overlayInfoConfig;
// Animation
int currentTimeStep() { return m_currentTimeStep;}
virtual void setCurrentTimeStep(int frameIdx) = 0;
virtual void updateCurrentTimeStepAndRedraw() = 0;
virtual void endAnimation() = 0;
public:
virtual caf::PdmFieldHandle* objectToggleField() { return &showWindow; }
virtual caf::PdmFieldHandle* userDescriptionField() { return &name; }
protected:
//void updateViewerWidget();
//virtual void resetLegendsInViewer() = 0;
QPointer<RiuViewer> m_viewer;
caf::PdmField<int> m_currentTimeStep;
}; };