#4857 Add support to distinguish 3D-view commands done in the main and comparison view

Support annotation and rangefilter creation in the comparison view
This commit is contained in:
Jacob Støren
2019-10-17 10:35:01 +02:00
parent caed6bfa91
commit 5a72de405d
14 changed files with 89 additions and 40 deletions

View File

@@ -974,13 +974,11 @@ void RiuViewer::setAxisLabels( const cvf::String& xLabel, const cvf::String& yLa
}
//--------------------------------------------------------------------------------------------------
///
///
//--------------------------------------------------------------------------------------------------
cvf::Vec3d RiuViewer::lastPickPositionInDomainCoords() const
RiuViewerCommands* RiuViewer::viewerCommands() const
{
CVF_ASSERT( m_viewerCommands );
return m_viewerCommands->lastPickPositionInDomainCoords();
return m_viewerCommands;
}
//--------------------------------------------------------------------------------------------------

View File

@@ -120,7 +120,7 @@ public:
void showAxisCross( bool enable );
void setAxisLabels( const cvf::String& xLabel, const cvf::String& yLabel, const cvf::String& zLabel );
cvf::Vec3d lastPickPositionInDomainCoords() const;
RiuViewerCommands* viewerCommands() const;
cvf::OverlayItem* pickFixedPositionedLegend( int winPosX, int winPosY );

View File

@@ -165,9 +165,9 @@ void RiuViewerCommands::displayContextMenu( QMouseEvent* event )
}
}
bool isComparisonViewPick = m_viewer->isMousePosWithinComparisonView( event->x(), event->y() );
Rim3dView* mainOrComparisonView = isComparisonViewPick ? m_reservoirView->activeComparisonView()
: m_reservoirView.p();
m_isCurrentPickInComparisonView = m_viewer->isMousePosWithinComparisonView( event->x(), event->y() );
Rim3dView* mainOrComparisonView = m_isCurrentPickInComparisonView ? m_reservoirView->activeComparisonView()
: m_reservoirView.p();
// Find the following data
@@ -320,13 +320,13 @@ void RiuViewerCommands::displayContextMenu( QMouseEvent* event )
menuBuilder.subMenuStart( "Range Filter Slice", QIcon( ":/CellFilter_Range.png" ) );
menuBuilder.addCmdFeatureWithUserData( "RicNewSliceRangeFilterFeature",
menuBuilder.addCmdFeatureWithUserData( "RicNewSliceRangeFilter3dViewFeature",
"I-slice Range Filter",
iSliceList );
menuBuilder.addCmdFeatureWithUserData( "RicNewSliceRangeFilterFeature",
menuBuilder.addCmdFeatureWithUserData( "RicNewSliceRangeFilter3dViewFeature",
"J-slice Range Filter",
jSliceList );
menuBuilder.addCmdFeatureWithUserData( "RicNewSliceRangeFilterFeature",
menuBuilder.addCmdFeatureWithUserData( "RicNewSliceRangeFilter3dViewFeature",
"K-slice Range Filter",
kSliceList );
@@ -588,9 +588,9 @@ void RiuViewerCommands::handlePickAction( int winPosX, int winPosY, Qt::Keyboard
}
}
bool isComparisonViewPick = m_viewer->isMousePosWithinComparisonView( winPosX, winPosY );
Rim3dView* mainOrComparisonView = isComparisonViewPick ? m_reservoirView->activeComparisonView()
: m_reservoirView.p();
m_isCurrentPickInComparisonView = m_viewer->isMousePosWithinComparisonView( winPosX, winPosY );
Rim3dView* mainOrComparisonView = m_isCurrentPickInComparisonView ? m_reservoirView->activeComparisonView()
: m_reservoirView.p();
// Make pickEventHandlers do their stuff
@@ -1051,6 +1051,14 @@ cvf::Vec3d RiuViewerCommands::lastPickPositionInDomainCoords() const
return m_currentPickPositionInDomainCoords;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RiuViewerCommands::isCurrentPickInComparisonView() const
{
return m_isCurrentPickInComparisonView;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -1284,12 +1292,12 @@ void RiuViewerCommands::handleTextPicking( int winPosX, int winPosY, cvf::HitIte
{
using namespace cvf;
bool isMouseWithinComparisonView = m_viewer->isMousePosWithinComparisonView( winPosX, winPosY );
m_isCurrentPickInComparisonView = m_viewer->isMousePosWithinComparisonView( winPosX, winPosY );
int translatedMousePosX = winPosX;
int translatedMousePosY = m_viewer->height() - winPosY;
Scene* scene = m_viewer->currentScene( isMouseWithinComparisonView );
Scene* scene = m_viewer->currentScene( m_isCurrentPickInComparisonView );
if ( !scene ) return;

View File

@@ -66,6 +66,7 @@ public:
static void removePickEventHandlerIfActive( Ric3dViewPickEventHandler* pickEventHandler );
cvf::Vec3d lastPickPositionInDomainCoords() const;
bool isCurrentPickInComparisonView() const;
private:
void findCellAndGridIndex( Rim3dView* mainOrComparisonView,
@@ -96,6 +97,7 @@ private:
size_t m_currentCellIndex;
cvf::StructGridInterface::FaceType m_currentFaceIndex;
cvf::Vec3d m_currentPickPositionInDomainCoords;
bool m_isCurrentPickInComparisonView;
caf::PdmPointer<Rim3dView> m_reservoirView;
QPointer<RiuViewer> m_viewer;