#2331 Shell of 2dIntersectionView shell added. Fixed access to views on a case including the intersection views also.

This commit is contained in:
Jacob Støren
2018-01-17 08:00:36 +01:00
parent 548c065290
commit d616548cd0
9 changed files with 226 additions and 981 deletions

View File

@@ -17,194 +17,64 @@
/////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "RiuViewerToViewInterface.h"
#include "RimViewWindow.h"
#include "cafAppEnum.h"
#include "cafPdmChildArrayField.h"
#include "cafPdmChildField.h"
#include "cafPdmField.h"
#include "cafPdmFieldCvfColor.h"
#include "cafPdmFieldCvfMat4d.h"
#include "cafPdmFieldCvfVec3d.h"
#include "cafPdmObject.h"
#include "Rim3dView.h"
#include "cafPdmPtrField.h"
#include "RivCellSetEnum.h"
#include "cvfArray.h"
#include "cvfBase.h"
#include "cvfCollection.h"
#include "cvfObject.h"
#include <QPointer>
class Rim3dOverlayInfoConfig;
class RimCase;
class RimCellRangeFilter;
class RimCellRangeFilterCollection;
class RimIntersectionCollection;
class RimGridCollection;
class RimPropertyFilterCollection;
class RimViewController;
class RimViewLinker;
class RiuViewer;
class RimWellPathCollection;
class RimIntersection;
namespace cvf
{
class BoundingBox;
class ModelBasicList;
class Scene;
class String;
class Transform;
class Part;
class ModelBasicList;
}
namespace caf
{
class DisplayCoordTransform;
}
//==================================================================================================
///
///
//==================================================================================================
class Rim2dIntersectionView : public RimViewWindow, public RiuViewerToViewInterface
class Rim2dIntersectionView : public Rim3dView
{
CAF_PDM_HEADER_INIT;
public:
Rim2dIntersectionView(void);
virtual ~Rim2dIntersectionView(void);
// Public fields:
caf::PdmField<QString> name;
caf::PdmField<double> scaleZ;
caf::PdmField<int> maximumFrameRate;
caf::PdmField<bool> hasUserRequestedAnimation;
virtual bool isUsingFormationNames() const override;
virtual void scheduleGeometryRegen(RivCellSetEnum geometryType) override;
virtual RimCase* ownerCase() const override;
virtual void selectOverlayInfoConfig() override {}
// Draw style
virtual RimViewLinker* assosiatedViewLinker() const override { return nullptr; }
virtual RimViewController* viewController() const override { return nullptr; }
enum MeshModeType { FULL_MESH, FAULTS_MESH, NO_MESH };
enum SurfaceModeType { SURFACE, NO_SURFACE };
caf::PdmField< caf::AppEnum< MeshModeType > > meshMode;
caf::PdmField< caf::AppEnum< SurfaceModeType > > surfaceMode;
RiuViewer* viewer();
void setMeshOnlyDrawstyle();
void setMeshSurfDrawstyle();
void setSurfOnlyDrawstyle();
void setFaultMeshSurfDrawstyle();
void setSurfaceDrawstyle();
void disableLighting(bool disable);
bool isLightingDisabled() const;
void showGridCells(bool enableGridCells);
bool isGridVisualizationMode() const;
void setScaleZAndUpdate(double scaleZ);
virtual bool showActiveCellsOnly();
virtual bool isUsingFormationNames() const = 0;
virtual QImage snapshotWindowContent() override;
virtual void zoomAll() override;
void forceShowWindowOn();
// Animation
int currentTimeStep() const { return m_currentTimeStep;}
void setCurrentTimeStep(int frameIdx);
void setCurrentTimeStepAndUpdate(int frameIdx) override;
// Updating
void updateCurrentTimeStepAndRedraw() override;
virtual void scheduleGeometryRegen(RivCellSetEnum geometryType) = 0;
void scheduleCreateDisplayModelAndRedraw();
void createDisplayModelAndRedraw();
void createHighlightDisplayModelWithRedraw();
void updateAnnotationItems();
cvf::ref<caf::DisplayCoordTransform> displayCoordTransform() const override;
virtual RimCase* ownerCase() const = 0;
//Rim3dOverlayInfoConfig* overlayInfoConfig() const;
protected:
void setDefaultView();
caf::PdmPtrField<RimIntersection*> m_intersection;
RimWellPathCollection* wellPathCollection();
void addWellPathsToModel(cvf::ModelBasicList* wellPathModelBasicList,
const cvf::BoundingBox& wellPathClipBoundingBox);
virtual void axisLabels(cvf::String* xLabel, cvf::String* yLabel, cvf::String* zLabel) override;
virtual void createDisplayModel() override;
virtual void createPartCollectionFromSelection(cvf::Collection<cvf::Part>* parts) override;
virtual void updateDisplayModelVisibility() override;
virtual void clampCurrentTimestep() override;
virtual void updateCurrentTimeStep() override;
virtual void onTimeStepChanged() override;
virtual void updateStaticCellColors() override;
virtual void updateScaleTransform() override;
virtual cvf::Transform* scaleTransform() override;
virtual void resetLegendsInViewer() override;
virtual void onLoadDataAndUpdate() override;
void addDynamicWellPathsToModel(cvf::ModelBasicList* wellPathModelBasicList,
const cvf::BoundingBox& wellPathClipBoundingBox);
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
virtual void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly) override;
void createHighlightDisplayModel();
cvf::ref<cvf::ModelBasicList> m_intersectionVizModel;
cvf::ref<cvf::Transform> m_scaleTransform;
// Abstract methods to implement in subclasses
virtual void createDisplayModel() = 0;
virtual void createPartCollectionFromSelection(cvf::Collection<cvf::Part>* parts) = 0;
virtual void updateDisplayModelVisibility() = 0;
virtual void clampCurrentTimestep() = 0;
virtual void updateCurrentTimeStep() = 0;
virtual void updateStaticCellColors() = 0;
virtual void updateScaleTransform() = 0;
virtual cvf::Transform* scaleTransform() = 0;
virtual void resetLegendsInViewer() = 0;
// Overridden PdmObject methods:
virtual caf::PdmFieldHandle* userDescriptionField() override { return &name; }
virtual void setupBeforeSave() override;
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
// Overridden ViewWindow methods:
virtual QWidget* createViewWidget(QWidget* mainWindowParent) override;
virtual void updateViewWidgetAfterCreation() override;
virtual void updateMdiWindowTitle() override;
virtual void deleteViewWidget() override;
virtual QWidget* viewWidget() override;
protected: // Fields
caf::PdmField<int> m_currentTimeStep;
//caf::PdmChildField<Rim3dOverlayInfoConfig*> m_overlayInfoConfig;
protected:
QPointer<RiuViewer> m_viewer;
cvf::ref<cvf::ModelBasicList> m_wellPathPipeVizModel;
cvf::ref<cvf::ModelBasicList> m_crossSectionVizModel;
cvf::ref<cvf::ModelBasicList> m_highlightVizModel;
private:
// Implementation of RiuViewerToViewInterface
virtual cvf::Color3f backgroundColor() const override { return m_backgroundColor();}
virtual void setCameraPosition(const cvf::Mat4d& cameraPosition) override { m_cameraPosition = cameraPosition; }
virtual void setCameraPointOfInterest(const cvf::Vec3d& cameraPointOfInterest) override { m_cameraPointOfInterest = cameraPointOfInterest;}
virtual QString timeStepName(int frameIdx) const override;
virtual void endAnimation() override;
virtual caf::PdmObjectHandle* implementingPdmObject() override { return this; }
virtual void handleMdiWindowClosed() override;
virtual void setMdiWindowGeometry(const RimMdiWindowGeometry& windowGeometry) override;
virtual void selectOverlayInfoConfig() override;
private:
bool m_previousGridModeMeshLinesWasFaults;
caf::PdmField<bool> m_disableLighting;
caf::PdmField<cvf::Mat4d> m_cameraPosition;
caf::PdmField<cvf::Vec3d> m_cameraPointOfInterest;
caf::PdmField< cvf::Color3f > m_backgroundColor;
};