From dde0487024a466dc697ed78559144fbac38221f7 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Thu, 24 Mar 2022 12:53:06 +0100 Subject: [PATCH] Multiaxis: add support for Qwt multiaxis plot --- .../Commands/RicGridStatisticsDialog.cpp | 8 +- .../AnalysisPlots/RimAnalysisPlot.cpp | 6 +- .../RimCorrelationMatrixPlot.cpp | 10 +- .../GridCrossPlots/RimGridCrossPlot.cpp | 4 +- .../Summary/RimSummaryPlot.cpp | 6 +- .../Summary/RimSummaryPlotAxisFormatter.cpp | 2 +- .../WellLog/RimWellLogTrack.cpp | 32 +++---- .../RiuGroupedBarChartBuilder.cpp | 8 +- .../UserInterface/RiuDockedQwtPlot.cpp | 4 +- .../RiuFlowCharacteristicsPlot.cpp | 20 ++-- .../UserInterface/RiuGridCrossQwtPlot.cpp | 4 +- .../UserInterface/RiuMohrsCirclePlot.cpp | 16 ++-- .../UserInterface/RiuMultiPlotPage.cpp | 6 +- .../UserInterface/RiuPlotAnnotationTool.cpp | 8 +- .../UserInterface/RiuPvtPlotPanel.cpp | 20 ++-- .../UserInterface/RiuQwtCurvePointTracker.cpp | 26 ++--- .../UserInterface/RiuQwtCurvePointTracker.h | 18 ++-- .../UserInterface/RiuQwtPlotCurve.cpp | 4 +- .../UserInterface/RiuQwtPlotTools.cpp | 84 +++++++++------- .../UserInterface/RiuQwtPlotTools.h | 11 ++- .../UserInterface/RiuQwtPlotWheelZoomer.cpp | 14 +-- .../UserInterface/RiuQwtPlotWheelZoomer.h | 8 +- .../UserInterface/RiuQwtPlotWidget.cpp | 96 ++++++++++--------- .../UserInterface/RiuQwtScalePicker.cpp | 2 +- .../RiuRelativePermeabilityPlotPanel.cpp | 49 +++++----- .../UserInterface/RiuResultQwtPlot.cpp | 12 +-- .../UserInterface/RiuSummaryQwtPlot.cpp | 6 +- .../RiuTofAccumulatedPhaseFractionsPlot.cpp | 36 ++++--- .../UserInterface/RiuWellLogTrack.cpp | 14 +-- .../UserInterface/RiuWellLogTrack.h | 2 +- ThirdParty/qwt | 2 +- 31 files changed, 281 insertions(+), 257 deletions(-) diff --git a/ApplicationLibCode/Commands/RicGridStatisticsDialog.cpp b/ApplicationLibCode/Commands/RicGridStatisticsDialog.cpp index b918f0eff2..f54de99c3e 100644 --- a/ApplicationLibCode/Commands/RicGridStatisticsDialog.cpp +++ b/ApplicationLibCode/Commands/RicGridStatisticsDialog.cpp @@ -195,16 +195,16 @@ void RicGridStatisticsDialog::setHistogramData( RimGridView* view ) // Axis double xAxisSize = histogramData.max - histogramData.min; double xAxisExtension = xAxisSize * 0.02; - m_historgramPlot->setAxisScale( QwtPlot::xBottom, + m_historgramPlot->setAxisScale( QwtAxis::XBottom, histogramData.min - xAxisExtension, histogramData.max + xAxisExtension ); - m_aggregatedPlot->setAxisScale( QwtPlot::xBottom, + m_aggregatedPlot->setAxisScale( QwtAxis::XBottom, histogramData.min - xAxisExtension, histogramData.max + xAxisExtension ); // Set y axis label area width - m_historgramPlot->axisScaleDraw( QwtPlot::yLeft )->setMinimumExtent( 60 ); - m_aggregatedPlot->axisScaleDraw( QwtPlot::yLeft )->setMinimumExtent( 60 ); + m_historgramPlot->axisScaleDraw( QwtAxis::YLeft )->setMinimumExtent( 60 ); + m_aggregatedPlot->axisScaleDraw( QwtAxis::YLeft )->setMinimumExtent( 60 ); // Samples hist->setSamples( histSamples ); diff --git a/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.cpp b/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.cpp index 7f9e6565ff..dee648804b 100644 --- a/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.cpp @@ -164,7 +164,7 @@ RimAnalysisPlot::RimAnalysisPlot() CAF_PDM_InitFieldNoDefault( &m_valueAxisProperties, "ValueAxisProperties", "ValueAxisProperties" ); m_valueAxisProperties.uiCapability()->setUiTreeHidden( true ); m_valueAxisProperties = new RimPlotAxisProperties; - m_valueAxisProperties->setNameAndAxis( "Value-Axis", RiuQwtPlotTools::fromQwtPlotAxis( QwtPlot::yLeft ) ); + m_valueAxisProperties->setNameAndAxis( "Value-Axis", RiuQwtPlotTools::fromQwtPlotAxis( QwtAxis::YLeft ) ); m_valueAxisProperties->enableRangeSettings( false ); CAF_PDM_InitFieldNoDefault( &m_plotDataFilterCollection, "PlotDataFilterCollection", "PlotDataFilterCollection" ); @@ -910,7 +910,7 @@ void RimAnalysisPlot::onAxisSelected( int axis, bool toggle ) RiuPlotMainWindowTools::showPlotMainWindow(); caf::PdmObject* itemToSelect = nullptr; - if ( axis == QwtPlot::yLeft ) + if ( axis == QwtAxis::YLeft ) { if ( m_barOrientation == BARS_VERTICAL ) { @@ -921,7 +921,7 @@ void RimAnalysisPlot::onAxisSelected( int axis, bool toggle ) itemToSelect = this; } } - else if ( axis == QwtPlot::xBottom ) + else if ( axis == QwtAxis::XBottom ) { if ( m_barOrientation == BARS_HORIZONTAL ) { diff --git a/ApplicationLibCode/ProjectDataModel/CorrelationPlots/RimCorrelationMatrixPlot.cpp b/ApplicationLibCode/ProjectDataModel/CorrelationPlots/RimCorrelationMatrixPlot.cpp index 3b5cdcaecc..ccfc228fdd 100644 --- a/ApplicationLibCode/ProjectDataModel/CorrelationPlots/RimCorrelationMatrixPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/CorrelationPlots/RimCorrelationMatrixPlot.cpp @@ -400,8 +400,8 @@ void RimCorrelationMatrixPlot::updateAxes() { if ( !m_plotWidget ) return; - m_plotWidget->qwtPlot()->setAxisScaleDraw( QwtPlot::yLeft, new TextScaleDraw( m_resultLabels ) ); - m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtPlot::yLeft, new RiuQwtLinearScaleEngine ); + m_plotWidget->qwtPlot()->setAxisScaleDraw( QwtAxis::YLeft, new TextScaleDraw( m_resultLabels ) ); + m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtAxis::YLeft, new RiuQwtLinearScaleEngine ); m_plotWidget->setAxisTitleText( RiuPlotAxis::defaultLeft(), "Result Vector" ); m_plotWidget->setAxisTitleEnabled( RiuPlotAxis::defaultLeft(), true ); m_plotWidget->setAxisFontsAndAlignment( RiuPlotAxis::defaultLeft(), @@ -421,8 +421,8 @@ void RimCorrelationMatrixPlot::updateAxes() auto scaleDraw = new TextScaleDraw( m_paramLabels ); scaleDraw->setLabelRotation( 30.0 ); - m_plotWidget->qwtPlot()->setAxisScaleDraw( QwtPlot::xBottom, scaleDraw ); - m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtPlot::xBottom, new RiuQwtLinearScaleEngine ); + m_plotWidget->qwtPlot()->setAxisScaleDraw( QwtAxis::XBottom, scaleDraw ); + m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtAxis::XBottom, new RiuQwtLinearScaleEngine ); m_plotWidget->setAxisTitleText( RiuPlotAxis::defaultBottom(), "Ensemble Parameter" ); m_plotWidget->setAxisTitleEnabled( RiuPlotAxis::defaultBottom(), true ); m_plotWidget->setAxisFontsAndAlignment( RiuPlotAxis::defaultBottom(), @@ -440,7 +440,7 @@ void RimCorrelationMatrixPlot::updateAxes() 0.0, (double)m_paramLabels.size() ); - m_plotWidget->qwtPlot()->setAxisLabelAlignment( QwtPlot::xBottom, Qt::AlignRight ); + m_plotWidget->qwtPlot()->setAxisLabelAlignment( QwtAxis::XBottom, Qt::AlignRight ); } template diff --git a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlot.cpp b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlot.cpp index 87821173b8..6f26414d52 100644 --- a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlot.cpp @@ -376,11 +376,11 @@ void RimGridCrossPlot::onAxisSelected( int axis, bool toggle ) { RiuPlotMainWindowTools::showPlotMainWindow(); RimPlotAxisProperties* properties = nullptr; - if ( axis == QwtPlot::yLeft ) + if ( axis == QwtAxis::YLeft ) { properties = m_yAxisProperties; } - else if ( axis == QwtPlot::xBottom ) + else if ( axis == QwtAxis::XBottom ) { properties = m_xAxisProperties; } diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.cpp index f210b1f283..f036998edd 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.cpp @@ -382,15 +382,15 @@ void RimSummaryPlot::onAxisSelected( int axis, bool toggle ) RiuPlotMainWindowTools::showPlotMainWindow(); caf::PdmObject* itemToSelect = nullptr; - if ( axis == QwtPlot::yLeft ) + if ( axis == QwtAxis::YLeft ) { itemToSelect = m_leftYAxisProperties_OBSOLETE; } - else if ( axis == QwtPlot::yRight ) + else if ( axis == QwtAxis::YRight ) { itemToSelect = m_rightYAxisProperties_OBSOLETE; } - else if ( axis == QwtPlot::xBottom ) + else if ( axis == QwtAxis::XBottom ) { if ( m_isCrossPlot ) { diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotAxisFormatter.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotAxisFormatter.cpp index e47d63d221..b410483136 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotAxisFormatter.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotAxisFormatter.cpp @@ -143,7 +143,7 @@ void RimSummaryPlotAxisFormatter::applyAxisPropertiesToPlot( RiuPlotWidget* plot auto qwtPlotWidget = dynamic_cast( plotWidget ); if ( qwtPlotWidget ) { - QwtPlot::Axis qwtAxisId = RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ); + auto qwtAxisId = RiuQwtPlotTools::toQwtPlotAxis( axis ); if ( m_axisProperties->numberFormat == RimPlotAxisProperties::NUMBER_FORMAT_AUTO && m_axisProperties->scaleFactor() == 1.0 ) diff --git a/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogTrack.cpp b/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogTrack.cpp index 914dacb13e..a82850a5d1 100644 --- a/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogTrack.cpp +++ b/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogTrack.cpp @@ -823,11 +823,11 @@ void RimWellLogTrack::updatePropertyValueAxisAndGridTickIntervals() this->firstAncestorOrThisOfTypeAsserted( wellLogPlot ); if ( wellLogPlot->depthOrientation() == RimDepthTrackPlot::DepthOrientation::VERTICAL ) { - m_plotWidget->qwtPlot()->setAxisScaleDiv( QwtPlot::xTop, div ); + m_plotWidget->qwtPlot()->setAxisScaleDiv( QwtAxis::XTop, div ); } else { - m_plotWidget->qwtPlot()->setAxisScaleDiv( QwtPlot::yLeft, div ); + m_plotWidget->qwtPlot()->setAxisScaleDiv( QwtAxis::YLeft, div ); } } else if ( m_explicitTickIntervals ) @@ -1256,13 +1256,13 @@ void RimWellLogTrack::onLoadDataAndUpdate() if ( wellLogPlot->depthOrientation() == RimDepthTrackPlot::DepthOrientation::VERTICAL ) { - m_plotWidget->setAxisEnabled( QwtPlot::xTop, true ); - m_plotWidget->setAxisEnabled( QwtPlot::xBottom, false ); + m_plotWidget->setAxisEnabled( QwtAxis::XTop, true ); + m_plotWidget->setAxisEnabled( QwtAxis::XBottom, false ); } else { - m_plotWidget->setAxisEnabled( QwtPlot::xTop, false ); - m_plotWidget->setAxisEnabled( QwtPlot::xBottom, true ); + m_plotWidget->setAxisEnabled( QwtAxis::XTop, false ); + m_plotWidget->setAxisEnabled( QwtAxis::XBottom, true ); } } @@ -2034,17 +2034,17 @@ void RimWellLogTrack::updateAxisScaleEngine() if ( m_isLogarithmicScaleEnabled ) { - m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtPlot::xTop, new QwtLogScaleEngine ); + m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtAxis::XTop, new QwtLogScaleEngine ); // NB! Must assign scale engine to bottom in order to make QwtPlotGrid work - m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtPlot::xBottom, new QwtLogScaleEngine ); + m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtAxis::XBottom, new QwtLogScaleEngine ); } else { - m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtPlot::xTop, new RiuQwtLinearScaleEngine ); + m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtAxis::XTop, new RiuQwtLinearScaleEngine ); // NB! Must assign scale engine to bottom in order to make QwtPlotGrid work - m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtPlot::xBottom, new RiuQwtLinearScaleEngine ); + m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtAxis::XBottom, new RiuQwtLinearScaleEngine ); } } else @@ -2053,17 +2053,17 @@ void RimWellLogTrack::updateAxisScaleEngine() if ( m_isLogarithmicScaleEnabled ) { - m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtPlot::yLeft, new QwtLogScaleEngine ); + m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtAxis::YLeft, new QwtLogScaleEngine ); // NB! Must assign scale engine to bottom in order to make QwtPlotGrid work - m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtPlot::yRight, new QwtLogScaleEngine ); + m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtAxis::YRight, new QwtLogScaleEngine ); } else { - m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtPlot::yLeft, new RiuQwtLinearScaleEngine ); + m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtAxis::YLeft, new RiuQwtLinearScaleEngine ); // NB! Must assign scale engine to bottom in order to make QwtPlotGrid work - m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtPlot::yRight, new RiuQwtLinearScaleEngine ); + m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtAxis::YRight, new RiuQwtLinearScaleEngine ); } } } @@ -2125,12 +2125,12 @@ void RimWellLogTrack::handleWheelEvent( QWheelEvent* wheelEvent ) if ( wellLogPlot->depthOrientation() == RimDepthTrackPlot::DepthOrientation::VERTICAL ) { - QwtScaleMap scaleMap = m_plotWidget->qwtPlot()->canvasMap( QwtPlot::yLeft ); + QwtScaleMap scaleMap = m_plotWidget->qwtPlot()->canvasMap( QwtAxis::YLeft ); zoomCenter = scaleMap.invTransform( position.y() ); } else { - QwtScaleMap scaleMap = m_plotWidget->qwtPlot()->canvasMap( QwtPlot::xTop ); + QwtScaleMap scaleMap = m_plotWidget->qwtPlot()->canvasMap( QwtAxis::XTop ); zoomCenter = scaleMap.invTransform( position.x() ); } diff --git a/ApplicationLibCode/UserInterface/AnalysisPlots/RiuGroupedBarChartBuilder.cpp b/ApplicationLibCode/UserInterface/AnalysisPlots/RiuGroupedBarChartBuilder.cpp index c7fa929834..e094201924 100644 --- a/ApplicationLibCode/UserInterface/AnalysisPlots/RiuGroupedBarChartBuilder.cpp +++ b/ApplicationLibCode/UserInterface/AnalysisPlots/RiuGroupedBarChartBuilder.cpp @@ -670,13 +670,13 @@ void RiuGroupedBarChartBuilder::addBarChartToPlot( QwtPlot* plot, Qt::Orientatio // Set up the axis to contain group texts and tick marks { - QwtPlot::Axis axis = QwtPlot::xBottom; - QwtPlot::Axis valueAxis = QwtPlot::yLeft; + QwtAxis::Position axis = QwtAxis::XBottom; + QwtAxis::Position valueAxis = QwtAxis::YLeft; if ( barOrientation == Qt::Horizontal ) { - axis = QwtPlot::yLeft; - valueAxis = QwtPlot::xBottom; + axis = QwtAxis::YLeft; + valueAxis = QwtAxis::XBottom; } QwtScaleDiv groupAxisScaleDiv( 0, currentBarPosition ); diff --git a/ApplicationLibCode/UserInterface/RiuDockedQwtPlot.cpp b/ApplicationLibCode/UserInterface/RiuDockedQwtPlot.cpp index bb2582f570..94c625a4e9 100644 --- a/ApplicationLibCode/UserInterface/RiuDockedQwtPlot.cpp +++ b/ApplicationLibCode/UserInterface/RiuDockedQwtPlot.cpp @@ -39,7 +39,7 @@ RiuDockedQwtPlot::RiuDockedQwtPlot( QWidget* parent /*= nullptr*/ ) //-------------------------------------------------------------------------------------------------- void RiuDockedQwtPlot::applyFontSizes( bool replot /*= false*/ ) { - std::set allAxes = { QwtPlot::xBottom, QwtPlot::yLeft, QwtPlot::xTop, QwtPlot::yRight }; + std::set allAxes = { QwtAxis::XBottom, QwtAxis::YLeft, QwtAxis::XTop, QwtAxis::YRight }; caf::FontTools::FontSize fontSize = RiaPreferences::current()->defaultPlotFontSize(); @@ -54,7 +54,7 @@ void RiuDockedQwtPlot::applyFontSizes( bool replot /*= false*/ ) titleText.setFont( font ); this->setTitle( titleText ); - for ( QwtPlot::Axis axis : allAxes ) + for ( QwtAxis::Position axis : allAxes ) { QwtText text = this->axisTitle( axis ); QFont axisTitleFont = text.font(); diff --git a/ApplicationLibCode/UserInterface/RiuFlowCharacteristicsPlot.cpp b/ApplicationLibCode/UserInterface/RiuFlowCharacteristicsPlot.cpp index c0dbb96896..624da965b7 100644 --- a/ApplicationLibCode/UserInterface/RiuFlowCharacteristicsPlot.cpp +++ b/ApplicationLibCode/UserInterface/RiuFlowCharacteristicsPlot.cpp @@ -99,20 +99,20 @@ RiuFlowCharacteristicsPlot::RiuFlowCharacteristicsPlot( RimFlowCharacteristicsPl caf::FontTools::RelativeSize::Small ); { - QwtText axisTitle = m_sweepEffPlot->axisTitle( QwtPlot::xBottom ); + QwtText axisTitle = m_sweepEffPlot->axisTitle( QwtAxis::XBottom ); auto font = axisTitle.font(); font.setPointSize( legendFontSize ); axisTitle.setFont( font ); axisTitle.setText( "Dimensionless Time" ); - m_sweepEffPlot->setAxisTitle( QwtPlot::xBottom, axisTitle ); + m_sweepEffPlot->setAxisTitle( QwtAxis::XBottom, axisTitle ); } { - QwtText axisTitle = m_sweepEffPlot->axisTitle( QwtPlot::yLeft ); + QwtText axisTitle = m_sweepEffPlot->axisTitle( QwtAxis::YLeft ); auto font = axisTitle.font(); font.setPointSize( legendFontSize ); axisTitle.setFont( font ); axisTitle.setText( "Sweep Efficiency" ); - m_sweepEffPlot->setAxisTitle( QwtPlot::yLeft, axisTitle ); + m_sweepEffPlot->setAxisTitle( QwtAxis::YLeft, axisTitle ); } RiuQwtPlotTools::setCommonPlotBehaviour( m_flowCapVsStorageCapPlot ); @@ -121,20 +121,20 @@ RiuFlowCharacteristicsPlot::RiuFlowCharacteristicsPlot( RimFlowCharacteristicsPl m_flowCapVsStorageCapPlot->setTitle( "Flow Capacity vs Storage Capacity" ); { - QwtText axisTitle = m_flowCapVsStorageCapPlot->axisTitle( QwtPlot::xBottom ); + QwtText axisTitle = m_flowCapVsStorageCapPlot->axisTitle( QwtAxis::XBottom ); auto font = axisTitle.font(); font.setPointSize( legendFontSize ); axisTitle.setFont( font ); axisTitle.setText( "Storage Capacity [C]" ); - m_flowCapVsStorageCapPlot->setAxisTitle( QwtPlot::xBottom, axisTitle ); + m_flowCapVsStorageCapPlot->setAxisTitle( QwtAxis::XBottom, axisTitle ); } { - QwtText axisTitle = m_flowCapVsStorageCapPlot->axisTitle( QwtPlot::yLeft ); + QwtText axisTitle = m_flowCapVsStorageCapPlot->axisTitle( QwtAxis::YLeft ); auto font = axisTitle.font(); font.setPointSize( legendFontSize ); axisTitle.setFont( font ); axisTitle.setText( "Flow Capacity [F]" ); - m_flowCapVsStorageCapPlot->setAxisTitle( QwtPlot::yLeft, axisTitle ); + m_flowCapVsStorageCapPlot->setAxisTitle( QwtAxis::YLeft, axisTitle ); } } @@ -282,8 +282,8 @@ void RiuFlowCharacteristicsPlot::removeAllCurves() //-------------------------------------------------------------------------------------------------- void zoomAllInPlot( QwtPlot* plot ) { - plot->setAxisAutoScale( QwtPlot::xBottom, true ); - plot->setAxisAutoScale( QwtPlot::yLeft, true ); + plot->setAxisAutoScale( QwtAxis::XBottom, true ); + plot->setAxisAutoScale( QwtAxis::YLeft, true ); plot->replot(); } diff --git a/ApplicationLibCode/UserInterface/RiuGridCrossQwtPlot.cpp b/ApplicationLibCode/UserInterface/RiuGridCrossQwtPlot.cpp index c3892b4e86..a28ad6e771 100644 --- a/ApplicationLibCode/UserInterface/RiuGridCrossQwtPlot.cpp +++ b/ApplicationLibCode/UserInterface/RiuGridCrossQwtPlot.cpp @@ -70,7 +70,7 @@ RiuGridCrossQwtPlot::RiuGridCrossQwtPlot( RimGridCrossPlot* plot, QWidget* paren // Attach a zoomer for the right axis m_zoomerRight = new RiuQwtPlotZoomer( qwtPlot()->canvas() ); - m_zoomerRight->setAxes( QwtPlot::xTop, QwtPlot::yRight ); + m_zoomerRight->setAxes( QwtAxis::XTop, QwtAxis::YRight ); m_zoomerRight->setTrackerMode( QwtPicker::AlwaysOff ); m_zoomerRight->initMousePattern( 1 ); @@ -200,7 +200,7 @@ void RiuGridCrossQwtPlot::onPlotItemSelected( std::shared_ptr plotI { QPointF sample = curve->sample( pointNumber ); m_selectedPointMarker->setValue( sample ); - m_selectedPointMarker->setAxes( QwtPlot::xBottom, QwtPlot::yLeft ); + m_selectedPointMarker->setAxes( QwtAxis::XBottom, QwtAxis::YLeft ); m_selectedPointMarker->attach( qwtPlot() ); QString curveName, xAxisName, yAxisName; if ( curveText( curve, &curveName, &xAxisName, &yAxisName ) ) diff --git a/ApplicationLibCode/UserInterface/RiuMohrsCirclePlot.cpp b/ApplicationLibCode/UserInterface/RiuMohrsCirclePlot.cpp index 323332e79e..478fe7d705 100644 --- a/ApplicationLibCode/UserInterface/RiuMohrsCirclePlot.cpp +++ b/ApplicationLibCode/UserInterface/RiuMohrsCirclePlot.cpp @@ -70,13 +70,11 @@ RiuMohrsCirclePlot::RiuMohrsCirclePlot( QWidget* parent ) { RiuQwtPlotTools::setCommonPlotBehaviour( this ); - enableAxis( QwtPlot::xBottom, true ); - enableAxis( QwtPlot::yLeft, true ); - enableAxis( QwtPlot::xTop, false ); - enableAxis( QwtPlot::yRight, false ); + setAxesCount( QwtAxis::XBottom, 1 ); + setAxesCount( QwtAxis::YLeft, 1 ); - setAxisTitle( QwtPlot::xBottom, "Effective Normal Stress" ); - setAxisTitle( QwtPlot::yLeft, "Shear Stress" ); + setAxisTitle( QwtAxis::XBottom, "Effective Normal Stress" ); + setAxisTitle( QwtAxis::YLeft, "Shear Stress" ); applyFontSizes( false ); @@ -459,7 +457,7 @@ void RiuMohrsCirclePlot::updateTransparentCurvesOnPrincipals() qVectorPoints.push_back( QPointF( mohrCircleInfo.principals[2], 0 ) ); transparentCurve->setSamples( qVectorPoints ); - transparentCurve->setYAxis( QwtPlot::yLeft ); + transparentCurve->setYAxis( QwtAxis::YLeft ); transparentCurve->setStyle( QwtPlotCurve::NoCurve ); transparentCurve->setLegendAttribute( QwtPlotCurve::LegendNoAttribute ); @@ -715,8 +713,8 @@ void RiuMohrsCirclePlot::setAxesScaleAndReplot() yMaxDisplayed = heightToKeepAspectRatio; } - this->setAxisScale( QwtPlot::yLeft, 0, yMaxDisplayed ); - this->setAxisScale( QwtPlot::xBottom, xMin, xMaxDisplayed ); + this->setAxisScale( QwtAxis::YLeft, 0, yMaxDisplayed ); + this->setAxisScale( QwtAxis::XBottom, xMin, xMaxDisplayed ); this->replot(); } diff --git a/ApplicationLibCode/UserInterface/RiuMultiPlotPage.cpp b/ApplicationLibCode/UserInterface/RiuMultiPlotPage.cpp index fc29eca0fc..f131a28f46 100644 --- a/ApplicationLibCode/UserInterface/RiuMultiPlotPage.cpp +++ b/ApplicationLibCode/UserInterface/RiuMultiPlotPage.cpp @@ -709,9 +709,9 @@ int RiuMultiPlotPage::alignCanvasTops() int row = visibleIndex / rowAndColumnCount.second; if ( plotWidgets[visibleIndex]->axisEnabled( RiuPlotAxis::defaultTop() ) ) { - QFont font = qwtPlotWidget->qwtPlot()->axisFont( QwtPlot::xTop ); + QFont font = qwtPlotWidget->qwtPlot()->axisFont( QwtAxis::XTop ); maxExtents[row] = std::max( maxExtents[row], - qwtPlotWidget->qwtPlot()->axisScaleDraw( QwtPlot::xTop )->extent( font ) ); + qwtPlotWidget->qwtPlot()->axisScaleDraw( QwtAxis::XTop )->extent( font ) ); } } } @@ -722,7 +722,7 @@ int RiuMultiPlotPage::alignCanvasTops() if ( qwtPlotWidget ) { int row = visibleIndex / rowAndColumnCount.second; - qwtPlotWidget->qwtPlot()->axisScaleDraw( QwtPlot::xTop )->setMinimumExtent( maxExtents[row] ); + qwtPlotWidget->qwtPlot()->axisScaleDraw( QwtAxis::XTop )->setMinimumExtent( maxExtents[row] ); if ( legends[visibleIndex] ) { legends[visibleIndex]->adjustSize(); diff --git a/ApplicationLibCode/UserInterface/RiuPlotAnnotationTool.cpp b/ApplicationLibCode/UserInterface/RiuPlotAnnotationTool.cpp index d88c025bf2..35b02f8a98 100644 --- a/ApplicationLibCode/UserInterface/RiuPlotAnnotationTool.cpp +++ b/ApplicationLibCode/UserInterface/RiuPlotAnnotationTool.cpp @@ -96,7 +96,7 @@ void RiuPlotAnnotationTool::attachNamedRegions( QwtPlot* shading->setBrush( brush ); shading->attach( m_plot ); shading->setZ( -100.0 ); - shading->setXAxis( QwtPlot::xTop ); + shading->setXAxis( QwtAxis::XTop ); m_horizontalMarkers.push_back( std::move( shading ) ); } @@ -335,7 +335,7 @@ void RiuPlotAnnotationTool::horizontalRange( const QString& nam shading->setBrush( brush ); shading->attach( m_plot ); shading->setZ( -100.0 ); - shading->setXAxis( QwtPlot::xBottom ); + shading->setXAxis( QwtAxis::XBottom ); m_horizontalMarkers.push_back( std::move( shading ) ); QwtPlotMarker* line( new QwtPlotMarker() ); @@ -370,7 +370,7 @@ void RiuPlotAnnotationTool::verticalRange( const QString& name, shading->setBrush( brush ); shading->attach( m_plot ); shading->setZ( -100.0 ); - shading->setXAxis( QwtPlot::xBottom ); + shading->setXAxis( QwtAxis::XBottom ); m_verticalMarkers.push_back( std::move( shading ) ); QStringList labels = name.split( " - " ); @@ -414,7 +414,7 @@ void RiuPlotAnnotationTool::verticalLine( QwtPlotMarker* line, curvePen.setColor( color ); curvePen.setWidth( 1 ); - line->setAxes( QwtPlot::xBottom, QwtPlot::yLeft ); + line->setAxes( QwtAxis::XBottom, QwtAxis::YLeft ); line->setLineStyle( QwtPlotMarker::VLine ); line->setLinePen( curvePen ); line->setXValue( xValue ); diff --git a/ApplicationLibCode/UserInterface/RiuPvtPlotPanel.cpp b/ApplicationLibCode/UserInterface/RiuPvtPlotPanel.cpp index cbff8e39c3..d3e19c9daa 100644 --- a/ApplicationLibCode/UserInterface/RiuPvtPlotPanel.cpp +++ b/ApplicationLibCode/UserInterface/RiuPvtPlotPanel.cpp @@ -143,22 +143,22 @@ void RiuPvtPlotWidget::setPlotDefaults( QwtPlot* plot ) // Axis number font { - QFont axisFont = plot->axisFont( QwtPlot::xBottom ); + QFont axisFont = plot->axisFont( QwtAxis::XBottom ); axisFont.setPointSize( 8 ); - plot->setAxisFont( QwtPlot::xBottom, axisFont ); - plot->setAxisFont( QwtPlot::yLeft, axisFont ); + plot->setAxisFont( QwtAxis::XBottom, axisFont ); + plot->setAxisFont( QwtAxis::YLeft, axisFont ); } // Axis title font { - QwtText axisTitle = plot->axisTitle( QwtPlot::xBottom ); + QwtText axisTitle = plot->axisTitle( QwtAxis::XBottom ); QFont axisTitleFont = axisTitle.font(); axisTitleFont.setPointSize( 8 ); axisTitleFont.setBold( false ); axisTitle.setFont( axisTitleFont ); axisTitle.setRenderFlags( Qt::AlignRight ); - plot->setAxisTitle( QwtPlot::xBottom, axisTitle ); - plot->setAxisTitle( QwtPlot::yLeft, axisTitle ); + plot->setAxisTitle( QwtAxis::XBottom, axisTitle ); + plot->setAxisTitle( QwtAxis::YLeft, axisTitle ); } // Title font @@ -170,8 +170,8 @@ void RiuPvtPlotWidget::setPlotDefaults( QwtPlot* plot ) plot->setTitle( plotTitle ); } - plot->setAxisMaxMinor( QwtPlot::xBottom, 2 ); - plot->setAxisMaxMinor( QwtPlot::yLeft, 3 ); + plot->setAxisMaxMinor( QwtAxis::XBottom, 2 ); + plot->setAxisMaxMinor( QwtAxis::YLeft, 3 ); plot->plotLayout()->setAlignCanvasToScales( true ); } @@ -310,9 +310,9 @@ void RiuPvtPlotWidget::plotCurves( RiaDefines::EclipseUnitSystem m_qwtPlot->setTitle( plotTitle ); - m_qwtPlot->setAxisTitle( QwtPlot::xBottom, + m_qwtPlot->setAxisTitle( QwtAxis::XBottom, QString( "Pressure [%1]" ).arg( RiaEclipseUnitTools::unitStringPressure( unitSystem ) ) ); - m_qwtPlot->setAxisTitle( QwtPlot::yLeft, yAxisTitle ); + m_qwtPlot->setAxisTitle( QwtAxis::YLeft, yAxisTitle ); updateTrackerPlotMarkerAndLabelFromPicker(); diff --git a/ApplicationLibCode/UserInterface/RiuQwtCurvePointTracker.cpp b/ApplicationLibCode/UserInterface/RiuQwtCurvePointTracker.cpp index 8d23423eda..0006744d65 100644 --- a/ApplicationLibCode/UserInterface/RiuQwtCurvePointTracker.cpp +++ b/ApplicationLibCode/UserInterface/RiuQwtCurvePointTracker.cpp @@ -103,8 +103,8 @@ QwtText RiuQwtCurvePointTracker::trackerText( const QPoint& pos ) const if ( m_plot ) { - QwtPlot::Axis relatedYAxis = QwtPlot::yLeft; - QwtPlot::Axis relatedXAxis = QwtPlot::xBottom; + QwtAxis::Position relatedYAxis = QwtAxis::YLeft; + QwtAxis::Position relatedXAxis = QwtAxis::XBottom; QString curveInfoText; QString mainAxisValueString; @@ -136,12 +136,12 @@ QwtText RiuQwtCurvePointTracker::trackerText( const QPoint& pos ) const //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -QPointF RiuQwtCurvePointTracker::closestCurvePoint( const QPoint& cursorPosition, - QString* curveInfoText, - QString* valueAxisValueString, - QString* mainAxisValueString, - QwtPlot::Axis* relatedXAxis, - QwtPlot::Axis* relatedYAxis ) const +QPointF RiuQwtCurvePointTracker::closestCurvePoint( const QPoint& cursorPosition, + QString* curveInfoText, + QString* valueAxisValueString, + QString* mainAxisValueString, + QwtAxis::Position* relatedXAxis, + QwtAxis::Position* relatedYAxis ) const { QPointF samplePoint; @@ -170,8 +170,8 @@ QPointF RiuQwtCurvePointTracker::closestCurvePoint( const QPoint& cursorPositio { samplePoint = closestCurve->sample( closestPointSampleIndex ); - if ( relatedXAxis ) *relatedXAxis = static_cast( closestCurve->xAxis() ); - if ( relatedYAxis ) *relatedYAxis = static_cast( closestCurve->yAxis() ); + if ( relatedXAxis ) *relatedXAxis = static_cast( closestCurve->xAxis().pos ); + if ( relatedYAxis ) *relatedYAxis = static_cast( closestCurve->yAxis().pos ); } if ( mainAxisValueString ) @@ -227,9 +227,9 @@ QPointF RiuQwtCurvePointTracker::closestCurvePoint( const QPoint& cursorPositio //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RiuQwtCurvePointTracker::updateClosestCurvePointMarker( const QPointF& closestPoint, - QwtPlot::Axis relatedXAxis, - QwtPlot::Axis relatedYAxis ) const +void RiuQwtCurvePointTracker::updateClosestCurvePointMarker( const QPointF& closestPoint, + QwtAxis::Position relatedXAxis, + QwtAxis::Position relatedYAxis ) const { bool replotRequired = false; diff --git a/ApplicationLibCode/UserInterface/RiuQwtCurvePointTracker.h b/ApplicationLibCode/UserInterface/RiuQwtCurvePointTracker.h index 6aba3e04ce..9813bf7d61 100644 --- a/ApplicationLibCode/UserInterface/RiuQwtCurvePointTracker.h +++ b/ApplicationLibCode/UserInterface/RiuQwtCurvePointTracker.h @@ -42,15 +42,15 @@ protected: void removeMarkerOnFocusLeave(); QwtText trackerText( const QPoint& pos ) const override; - QPointF closestCurvePoint( const QPoint& cursorPosition, - QString* curveInfoText, - QString* valueAxisValueString, - QString* mainAxisValueString, - QwtPlot::Axis* relatedXAxis, - QwtPlot::Axis* relatedYAxis ) const; - void updateClosestCurvePointMarker( const QPointF& closestPoint, - QwtPlot::Axis relatedXAxis, - QwtPlot::Axis relatedYAxis ) const; + QPointF closestCurvePoint( const QPoint& cursorPosition, + QString* curveInfoText, + QString* valueAxisValueString, + QString* mainAxisValueString, + QwtAxis::Position* relatedXAxis, + QwtAxis::Position* relatedYAxis ) const; + void updateClosestCurvePointMarker( const QPointF& closestPoint, + QwtAxis::Position relatedXAxis, + QwtAxis::Position relatedYAxis ) const; QPointer m_plot; QwtPlotMarker* m_plotMarker; diff --git a/ApplicationLibCode/UserInterface/RiuQwtPlotCurve.cpp b/ApplicationLibCode/UserInterface/RiuQwtPlotCurve.cpp index 3a236c85b2..2c2e11555f 100644 --- a/ApplicationLibCode/UserInterface/RiuQwtPlotCurve.cpp +++ b/ApplicationLibCode/UserInterface/RiuQwtPlotCurve.cpp @@ -479,7 +479,7 @@ void RiuQwtPlotCurve::setSamplesFromXYErrorValues( const std::vector& //-------------------------------------------------------------------------------------------------- void RiuQwtPlotCurve::setXAxis( RiuPlotAxis axis ) { - QwtPlotCurve::setXAxis( RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ) ); + QwtPlotCurve::setXAxis( RiuQwtPlotTools::toQwtPlotAxis( axis ) ); } //-------------------------------------------------------------------------------------------------- @@ -487,7 +487,7 @@ void RiuQwtPlotCurve::setXAxis( RiuPlotAxis axis ) //-------------------------------------------------------------------------------------------------- void RiuQwtPlotCurve::setYAxis( RiuPlotAxis axis ) { - QwtPlotCurve::setYAxis( RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ) ); + QwtPlotCurve::setYAxis( RiuQwtPlotTools::toQwtPlotAxis( axis ) ); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/UserInterface/RiuQwtPlotTools.cpp b/ApplicationLibCode/UserInterface/RiuQwtPlotTools.cpp index ef0d774e60..1db703a46a 100644 --- a/ApplicationLibCode/UserInterface/RiuQwtPlotTools.cpp +++ b/ApplicationLibCode/UserInterface/RiuQwtPlotTools.cpp @@ -21,6 +21,7 @@ #include "RiaColorTools.h" #include "RiaPreferences.h" #include "RiaQDateTimeTools.h" +#include "RiuPlotAxis.h" #include "RimPlotCurve.h" @@ -38,6 +39,7 @@ #include "qwt_plot_shapeitem.h" #include "qwt_scale_widget.h" +#include "qwt_axis.h" #include #include @@ -70,18 +72,18 @@ void RiuQwtPlotTools::setCommonPlotBehaviour( QwtPlot* plot ) // Axis number font int axisFontSize = caf::FontTools::absolutePointSize( RiaPreferences::current()->defaultPlotFontSize(), caf::FontTools::RelativeSize::Medium ); - QFont axisFont = plot->axisFont( QwtPlot::xBottom ); + QFont axisFont = plot->axisFont( QwtAxis::XBottom ); axisFont.setPixelSize( caf::FontTools::pointSizeToPixelSize( axisFontSize ) ); - plot->setAxisFont( QwtPlot::xBottom, axisFont ); - plot->setAxisFont( QwtPlot::xTop, axisFont ); - plot->setAxisFont( QwtPlot::yLeft, axisFont ); - plot->setAxisFont( QwtPlot::yRight, axisFont ); + plot->setAxisFont( QwtAxis::XBottom, axisFont ); + plot->setAxisFont( QwtAxis::XTop, axisFont ); + plot->setAxisFont( QwtAxis::YLeft, axisFont ); + plot->setAxisFont( QwtAxis::YRight, axisFont ); // Axis title font - std::vector axes = { QwtPlot::xBottom, QwtPlot::xTop, QwtPlot::yLeft, QwtPlot::yRight }; + std::vector axes = { QwtAxis::XBottom, QwtAxis::XTop, QwtAxis::YLeft, QwtAxis::YRight }; - for ( QwtPlot::Axis axis : axes ) + for ( QwtAxis::Position axis : axes ) { QwtText axisTitle = plot->axisTitle( axis ); QFont axisTitleFont = axisTitle.font(); @@ -118,18 +120,16 @@ void RiuQwtPlotTools::setCommonPlotBehaviour( QwtPlot* plot ) //-------------------------------------------------------------------------------------------------- void RiuQwtPlotTools::setDefaultAxes( QwtPlot* plot ) { - plot->enableAxis( QwtPlot::xBottom, true ); - plot->enableAxis( QwtPlot::yLeft, true ); - plot->enableAxis( QwtPlot::xTop, false ); - plot->enableAxis( QwtPlot::yRight, false ); + plot->setAxesCount( QwtAxis::XBottom, 1 ); + plot->setAxesCount( QwtAxis::YLeft, 1 ); - plot->axisWidget( QwtPlot::xBottom )->setMargin( 0 ); - plot->axisWidget( QwtPlot::yLeft )->setMargin( 0 ); - plot->axisWidget( QwtPlot::xTop )->setMargin( 0 ); - plot->axisWidget( QwtPlot::yRight )->setMargin( 0 ); + plot->axisWidget( QwtAxis::XBottom )->setMargin( 0 ); + plot->axisWidget( QwtAxis::YLeft )->setMargin( 0 ); + plot->axisWidget( QwtAxis::XTop )->setMargin( 0 ); + plot->axisWidget( QwtAxis::YRight )->setMargin( 0 ); - plot->setAxisMaxMinor( QwtPlot::xBottom, 2 ); - plot->setAxisMaxMinor( QwtPlot::yLeft, 3 ); + plot->setAxisMaxMinor( QwtAxis::XBottom, 2 ); + plot->setAxisMaxMinor( QwtAxis::YLeft, 3 ); } //-------------------------------------------------------------------------------------------------- @@ -159,8 +159,8 @@ void RiuQwtPlotTools::enableDateBasedBottomXAxis( QwtPlot* } QwtDateScaleEngine* scaleEngine = new QwtDateScaleEngine( Qt::UTC ); - plot->setAxisScaleEngine( QwtPlot::xBottom, scaleEngine ); - plot->setAxisScaleDraw( QwtPlot::xBottom, scaleDraw ); + plot->setAxisScaleEngine( QwtAxis::XBottom, scaleEngine ); + plot->setAxisScaleDraw( QwtAxis::XBottom, scaleDraw ); } //-------------------------------------------------------------------------------------------------- @@ -248,31 +248,45 @@ QwtPlotShapeItem* RiuQwtPlotTools::createBoxShape( const QString& label, //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -QwtPlot::Axis RiuQwtPlotTools::toQwtPlotAxis( RiaDefines::PlotAxis axis ) +QwtAxisId RiuQwtPlotTools::toQwtPlotAxis( RiuPlotAxis axis ) { - if ( axis == RiaDefines::PlotAxis::PLOT_AXIS_LEFT ) - return QwtPlot::yLeft; - else if ( axis == RiaDefines::PlotAxis::PLOT_AXIS_RIGHT ) - return QwtPlot::yRight; - else if ( axis == RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM ) - return QwtPlot::xBottom; + QwtAxis::Position qwtPosition = toQwtPlotAxisEnum( axis.axis() ); - return QwtPlot::xTop; + return { qwtPosition, axis.index() }; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RiaDefines::PlotAxis RiuQwtPlotTools::fromQwtPlotAxis( QwtPlot::Axis axis ) +QwtAxis::Position RiuQwtPlotTools::toQwtPlotAxisEnum( RiaDefines::PlotAxis riaPlotAxis ) { - if ( axis == QwtPlot::yLeft ) - return RiaDefines::PlotAxis::PLOT_AXIS_LEFT; - else if ( axis == QwtPlot::yRight ) - return RiaDefines::PlotAxis::PLOT_AXIS_RIGHT; - else if ( axis == QwtPlot::xBottom ) - return RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM; + if ( riaPlotAxis == RiaDefines::PlotAxis::PLOT_AXIS_LEFT ) + return QwtAxis::YLeft; + else if ( riaPlotAxis == RiaDefines::PlotAxis::PLOT_AXIS_RIGHT ) + return QwtAxis::YRight; + else if ( riaPlotAxis == RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM ) + return QwtAxis::XBottom; + else if ( riaPlotAxis == RiaDefines::PlotAxis::PLOT_AXIS_TOP ) + return QwtAxis::XTop; - return RiaDefines::PlotAxis::PLOT_AXIS_TOP; + return QwtAxis::YLeft; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RiaDefines::PlotAxis RiuQwtPlotTools::fromQwtPlotAxis( QwtAxis::Position axis ) +{ + if ( axis == QwtAxis::YLeft ) + return RiaDefines::PlotAxis::PLOT_AXIS_LEFT; + else if ( axis == QwtAxis::YRight ) + return RiaDefines::PlotAxis::PLOT_AXIS_RIGHT; + else if ( axis == QwtAxis::XBottom ) + return RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM; + else if ( axis == QwtAxis::XTop ) + return RiaDefines::PlotAxis::PLOT_AXIS_TOP; + + return RiaDefines::PlotAxis::PLOT_AXIS_LEFT; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/UserInterface/RiuQwtPlotTools.h b/ApplicationLibCode/UserInterface/RiuQwtPlotTools.h index 73c3ab72f5..573f336d43 100644 --- a/ApplicationLibCode/UserInterface/RiuQwtPlotTools.h +++ b/ApplicationLibCode/UserInterface/RiuQwtPlotTools.h @@ -20,6 +20,7 @@ #include "RiaDateTimeDefines.h" #include "RiaPlotDefines.h" +#include #include #include #include @@ -27,6 +28,8 @@ class RiuQwtPlotLegend; class RimPlotCurve; +class RiuPlotAxis; + class RiuQwtPlotTools { public: @@ -62,11 +65,13 @@ public: QColor color, Qt::BrushStyle brushStyle = Qt::SolidPattern ); - static QwtPlot::Axis toQwtPlotAxis( RiaDefines::PlotAxis ); - static RiaDefines::PlotAxis fromQwtPlotAxis( QwtPlot::Axis ); static void updateLegendData( RiuQwtPlotLegend* legend, const std::vector& curves ); static QList createLegendData( const std::vector& curves ); + static QwtAxisId toQwtPlotAxis( RiuPlotAxis riuPlotAxis ); + static QwtAxis::Position toQwtPlotAxisEnum( RiaDefines::PlotAxis riaPlotAxis ); + + static RiaDefines::PlotAxis fromQwtPlotAxis( QwtAxis::Position ); }; //-------------------------------------------------------------------------------------------------- @@ -90,7 +95,7 @@ PlotShapeItemType* RiuQwtPlotTools::createBoxShapeT( const QString& label, polygon.push_back( QPointF( startX, endY ) ); polygon.push_back( QPointF( startX, startY ) ); columnShape->setPolygon( polygon ); - columnShape->setXAxis( QwtPlot::xBottom ); + columnShape->setXAxis( QwtAxis::XBottom ); columnShape->setBrush( QBrush( color, brushStyle ) ); columnShape->setLegendMode( QwtPlotShapeItem::LegendShape ); columnShape->setLegendIconSize( QSize( 16, 16 ) ); diff --git a/ApplicationLibCode/UserInterface/RiuQwtPlotWheelZoomer.cpp b/ApplicationLibCode/UserInterface/RiuQwtPlotWheelZoomer.cpp index 0d0bd8a990..2265f8c9c0 100644 --- a/ApplicationLibCode/UserInterface/RiuQwtPlotWheelZoomer.cpp +++ b/ApplicationLibCode/UserInterface/RiuQwtPlotWheelZoomer.cpp @@ -47,7 +47,7 @@ RiuQwtPlotWheelZoomer::RiuQwtPlotWheelZoomer( QwtPlot* plot ) //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RiuQwtPlotWheelZoomer::zoomOnAxis( QwtPlot* plot, QwtPlot::Axis axis, double zoomFactor, int eventPos ) +void RiuQwtPlotWheelZoomer::zoomOnAxis( QwtPlot* plot, QwtAxis::Position axis, double zoomFactor, int eventPos ) { QwtScaleMap scaleMap = plot->canvasMap( axis ); double zoomCenter = scaleMap.invTransform( eventPos ); @@ -75,7 +75,7 @@ void RiuQwtPlotWheelZoomer::zoomOnAxis( QwtPlot* plot, QwtPlot::Axis axis, doubl //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -bool RiuQwtPlotWheelZoomer::axisIsLogarithmic( QwtPlot::Axis axis ) const +bool RiuQwtPlotWheelZoomer::axisIsLogarithmic( QwtAxis::Position axis ) const { auto it = m_axesAreLogarithmic.find( axis ); return it != m_axesAreLogarithmic.end() ? it->second : false; @@ -96,10 +96,10 @@ bool RiuQwtPlotWheelZoomer::eventFilter( QObject* watched, QEvent* event ) } auto position = caf::position( wheelEvent ); - zoomOnAxis( m_plot, QwtPlot::xBottom, zoomFactor, position.x() ); - zoomOnAxis( m_plot, QwtPlot::xTop, zoomFactor, position.x() ); - zoomOnAxis( m_plot, QwtPlot::yLeft, zoomFactor, position.y() ); - zoomOnAxis( m_plot, QwtPlot::yRight, zoomFactor, position.y() ); + zoomOnAxis( m_plot, QwtAxis::XBottom, zoomFactor, position.x() ); + zoomOnAxis( m_plot, QwtAxis::XTop, zoomFactor, position.x() ); + zoomOnAxis( m_plot, QwtAxis::YLeft, zoomFactor, position.y() ); + zoomOnAxis( m_plot, QwtAxis::YRight, zoomFactor, position.y() ); m_plot->replot(); emit zoomUpdated(); @@ -111,7 +111,7 @@ bool RiuQwtPlotWheelZoomer::eventFilter( QObject* watched, QEvent* event ) //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RiuQwtPlotWheelZoomer::setAxisIsLogarithmic( QwtPlot::Axis axis, bool logarithmic ) +void RiuQwtPlotWheelZoomer::setAxisIsLogarithmic( QwtAxis::Position axis, bool logarithmic ) { m_axesAreLogarithmic[axis] = logarithmic; } diff --git a/ApplicationLibCode/UserInterface/RiuQwtPlotWheelZoomer.h b/ApplicationLibCode/UserInterface/RiuQwtPlotWheelZoomer.h index e589c0aae5..1c32c646f4 100644 --- a/ApplicationLibCode/UserInterface/RiuQwtPlotWheelZoomer.h +++ b/ApplicationLibCode/UserInterface/RiuQwtPlotWheelZoomer.h @@ -33,17 +33,17 @@ public: bool eventFilter( QObject* watched, QEvent* event ) override; - void setAxisIsLogarithmic( QwtPlot::Axis axis, bool logarithmic ); + void setAxisIsLogarithmic( QwtAxis::Position axis, bool logarithmic ); signals: void zoomUpdated(); private: - void zoomOnAxis( QwtPlot* plot, QwtPlot::Axis axis, double zoomFactor, int eventPos ); - bool axisIsLogarithmic( QwtPlot::Axis axis ) const; + void zoomOnAxis( QwtPlot* plot, QwtAxis::Position axis, double zoomFactor, int eventPos ); + bool axisIsLogarithmic( QwtAxis::Position axis ) const; private: QwtPlot* m_plot; - std::map m_axesAreLogarithmic; + std::map m_axesAreLogarithmic; }; diff --git a/ApplicationLibCode/UserInterface/RiuQwtPlotWidget.cpp b/ApplicationLibCode/UserInterface/RiuQwtPlotWidget.cpp index eb87b6a852..5636ac75cf 100644 --- a/ApplicationLibCode/UserInterface/RiuQwtPlotWidget.cpp +++ b/ApplicationLibCode/UserInterface/RiuQwtPlotWidget.cpp @@ -121,7 +121,7 @@ int RiuQwtPlotWidget::axisTitleFontSize( RiuPlotAxis axis ) const { if ( axisEnabled( axis ) ) { - return m_plot->axisFont( RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ) ).pointSize(); + return m_plot->axisFont( RiuQwtPlotTools::toQwtPlotAxis( axis ) ).pointSize(); } return -1; } @@ -133,7 +133,7 @@ int RiuQwtPlotWidget::axisValueFontSize( RiuPlotAxis axis ) const { if ( axisEnabled( axis ) ) { - return m_plot->axisTitle( RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ) ).font().pointSize(); + return m_plot->axisTitle( RiuQwtPlotTools::toQwtPlotAxis( axis ) ).font().pointSize(); } return -1; } @@ -148,7 +148,7 @@ void RiuQwtPlotWidget::setAxisFontsAndAlignment( RiuPlotAxis axis, int titleFont // Axis number font - int qwtAxis = RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ); + auto qwtAxis = RiuQwtPlotTools::toQwtPlotAxis( axis ); QFont axisFont = m_plot->axisFont( qwtAxis ); axisFont.setPixelSize( valueFontPixelSize ); axisFont.setBold( false ); @@ -300,7 +300,7 @@ void RiuQwtPlotWidget::clearLegend() //-------------------------------------------------------------------------------------------------- std::pair RiuQwtPlotWidget::axisRange( RiuPlotAxis axis ) const { - QwtInterval interval = m_plot->axisScaleDiv( RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ) ).interval(); + QwtInterval interval = m_plot->axisScaleDiv( RiuQwtPlotTools::toQwtPlotAxis( axis ) ).interval(); return std::make_pair( interval.minValue(), interval.maxValue() ); } @@ -310,7 +310,7 @@ std::pair RiuQwtPlotWidget::axisRange( RiuPlotAxis axis ) const void RiuQwtPlotWidget::setAxisRange( RiuPlotAxis axis, double min, double max ) { // Note: Especially the Y-axis may be inverted - if ( m_plot->axisScaleEngine( RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ) )->testAttribute( QwtScaleEngine::Inverted ) ) + if ( m_plot->axisScaleEngine( RiuQwtPlotTools::toQwtPlotAxis( axis ) )->testAttribute( QwtScaleEngine::Inverted ) ) { setAxisScale( axis, max, min ); } @@ -325,7 +325,7 @@ void RiuQwtPlotWidget::setAxisRange( RiuPlotAxis axis, double min, double max ) //-------------------------------------------------------------------------------------------------- void RiuQwtPlotWidget::setAxisInverted( RiuPlotAxis axis, bool isInverted ) { - m_plot->axisScaleEngine( RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ) )->setAttribute( QwtScaleEngine::Inverted, isInverted ); + m_plot->axisScaleEngine( RiuQwtPlotTools::toQwtPlotAxis( axis ) )->setAttribute( QwtScaleEngine::Inverted, isInverted ); } //-------------------------------------------------------------------------------------------------- @@ -333,10 +333,8 @@ void RiuQwtPlotWidget::setAxisInverted( RiuPlotAxis axis, bool isInverted ) //-------------------------------------------------------------------------------------------------- void RiuQwtPlotWidget::setAxisLabelsAndTicksEnabled( RiuPlotAxis axis, bool enableLabels, bool enableTicks ) { - m_plot->axisScaleDraw( RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ) ) - ->enableComponent( QwtAbstractScaleDraw::Ticks, enableTicks ); - m_plot->axisScaleDraw( RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ) ) - ->enableComponent( QwtAbstractScaleDraw::Labels, enableLabels ); + m_plot->axisScaleDraw( RiuQwtPlotTools::toQwtPlotAxis( axis ) )->enableComponent( QwtAbstractScaleDraw::Ticks, enableTicks ); + m_plot->axisScaleDraw( RiuQwtPlotTools::toQwtPlotAxis( axis ) )->enableComponent( QwtAbstractScaleDraw::Labels, enableLabels ); recalculateAxisExtents( axis ); } @@ -346,11 +344,11 @@ void RiuQwtPlotWidget::setAxisLabelsAndTicksEnabled( RiuPlotAxis axis, bool enab void RiuQwtPlotWidget::enableGridLines( RiuPlotAxis axis, bool majorGridLines, bool minorGridLines ) { QwtPlotItemList plotItems = m_plot->itemList( QwtPlotItem::Rtti_PlotGrid ); - QwtPlot::Axis qwtAxis = RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ); + auto qwtAxis = RiuQwtPlotTools::toQwtPlotAxis( axis ); for ( QwtPlotItem* plotItem : plotItems ) { QwtPlotGrid* grid = static_cast( plotItem ); - if ( qwtAxis == QwtPlot::xTop || qwtAxis == QwtPlot::xBottom ) + if ( qwtAxis == QwtAxis::XTop || qwtAxis == QwtAxis::XBottom ) { grid->setXAxis( qwtAxis ); grid->enableX( majorGridLines ); @@ -376,7 +374,7 @@ void RiuQwtPlotWidget::setMajorAndMinorTickIntervals( RiuPlotAxis axis, double minValue, double maxValue ) { - QwtPlot::Axis qwtAxis = RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ); + auto qwtAxis = RiuQwtPlotTools::toQwtPlotAxis( axis ); RiuQwtLinearScaleEngine* scaleEngine = dynamic_cast( m_plot->axisScaleEngine( qwtAxis ) ); if ( scaleEngine ) { @@ -398,7 +396,7 @@ void RiuQwtPlotWidget::setMajorAndMinorTickIntervalsAndRange( RiuPlotAxis axis, double rangeMin, double rangeMax ) { - QwtPlot::Axis qwtAxis = RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ); + auto qwtAxis = RiuQwtPlotTools::toQwtPlotAxis( axis ); RiuQwtLinearScaleEngine* scaleEngine = dynamic_cast( m_plot->axisScaleEngine( qwtAxis ) ); if ( scaleEngine ) { @@ -418,10 +416,10 @@ void RiuQwtPlotWidget::setMajorAndMinorTickIntervalsAndRange( RiuPlotAxis axis, //-------------------------------------------------------------------------------------------------- void RiuQwtPlotWidget::setAutoTickIntervalCounts( RiuPlotAxis axis, int maxMajorTickIntervalCount, int maxMinorTickIntervalCount ) { - m_plot->setAxisMaxMajor( RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ), maxMajorTickIntervalCount ); - m_plot->setAxisMaxMinor( RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ), maxMinorTickIntervalCount ); + m_plot->setAxisMaxMajor( RiuQwtPlotTools::toQwtPlotAxis( axis ), maxMajorTickIntervalCount ); + m_plot->setAxisMaxMinor( RiuQwtPlotTools::toQwtPlotAxis( axis ), maxMinorTickIntervalCount ); // Reapply axis limits to force Qwt to use the tick settings. - QwtInterval currentRange = m_plot->axisInterval( RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ) ); + QwtInterval currentRange = m_plot->axisInterval( RiuQwtPlotTools::toQwtPlotAxis( axis ) ); setAxisScale( axis, currentRange.minValue(), currentRange.maxValue() ); } @@ -430,7 +428,7 @@ void RiuQwtPlotWidget::setAutoTickIntervalCounts( RiuPlotAxis axis, int maxMajor //-------------------------------------------------------------------------------------------------- double RiuQwtPlotWidget::majorTickInterval( RiuPlotAxis axis ) const { - QwtScaleDiv scaleDiv = m_plot->axisScaleDiv( RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ) ); + QwtScaleDiv scaleDiv = m_plot->axisScaleDiv( RiuQwtPlotTools::toQwtPlotAxis( axis ) ); QList majorTicks = scaleDiv.ticks( QwtScaleDiv::MajorTick ); if ( majorTicks.size() < 2 ) return 0.0; @@ -442,7 +440,7 @@ double RiuQwtPlotWidget::majorTickInterval( RiuPlotAxis axis ) const //-------------------------------------------------------------------------------------------------- double RiuQwtPlotWidget::minorTickInterval( RiuPlotAxis axis ) const { - QwtScaleDiv scaleDiv = m_plot->axisScaleDiv( QwtPlot::xTop ); + QwtScaleDiv scaleDiv = m_plot->axisScaleDiv( QwtAxis::XTop ); QList minorTicks = scaleDiv.ticks( QwtScaleDiv::MinorTick ); if ( minorTicks.size() < 2 ) return 0.0; @@ -457,8 +455,8 @@ int RiuQwtPlotWidget::axisExtent( RiuPlotAxis axis ) const auto [rangeMin, rangeMax] = axisRange( axis ); if ( std::abs( rangeMax - rangeMin ) < 1.0e-14 ) return 0; - int lineExtent = 0; - QwtPlot::Axis qwtAxis = RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ); + int lineExtent = 0; + auto qwtAxis = RiuQwtPlotTools::toQwtPlotAxis( axis ); if ( m_plot->axisScaleDraw( qwtAxis )->hasComponent( QwtAbstractScaleDraw::Ticks ) ) { @@ -467,7 +465,7 @@ int RiuQwtPlotWidget::axisExtent( RiuPlotAxis axis ) const if ( m_plot->axisScaleDraw( qwtAxis )->hasComponent( QwtAbstractScaleDraw::Labels ) ) { - QFont tickLabelFont = m_plot->axisFont( RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ) ); + QFont tickLabelFont = m_plot->axisFont( RiuQwtPlotTools::toQwtPlotAxis( axis ) ); // Make space for a fairly long value label QSize labelSize = QFontMetrics( tickLabelFont ).boundingRect( QString( "9.9e-9" ) ).size(); @@ -655,9 +653,9 @@ void RiuQwtPlotWidget::applyPlotTitleToQwt() //-------------------------------------------------------------------------------------------------- void RiuQwtPlotWidget::applyAxisTitleToQwt( RiuPlotAxis axis ) { - QString titleToApply = m_axisTitlesEnabled[axis] ? m_axisTitles[axis] : QString( "" ); - QwtPlot::Axis qwtAxis = RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ); - QwtText axisTitle = m_plot->axisTitle( qwtAxis ); + QString titleToApply = m_axisTitlesEnabled[axis] ? m_axisTitles[axis] : QString( "" ); + auto qwtAxis = RiuQwtPlotTools::toQwtPlotAxis( axis ); + QwtText axisTitle = m_plot->axisTitle( qwtAxis ); if ( titleToApply != axisTitle.text() ) { axisTitle.setText( titleToApply ); @@ -780,7 +778,7 @@ RimViewWindow* RiuQwtPlotWidget::ownerViewWindow() const void RiuQwtPlotWidget::onAxisSelected( QwtScaleWidget* scale, bool toggleItemInSelection ) { int axisId = -1; - for ( int i = 0; i < QwtPlot::axisCnt; ++i ) + for ( int i = 0; i < QwtAxis::AxisPositions; ++i ) { if ( scale == m_plot->axisWidget( i ) ) { @@ -795,8 +793,8 @@ void RiuQwtPlotWidget::onAxisSelected( QwtScaleWidget* scale, bool toggleItemInS //-------------------------------------------------------------------------------------------------- void RiuQwtPlotWidget::recalculateAxisExtents( RiuPlotAxis axis ) { - QwtPlot::Axis qwtAxis = RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ); - if ( qwtAxis == QwtPlot::yLeft || qwtAxis == QwtPlot::yRight ) + auto qwtAxis = RiuQwtPlotTools::toQwtPlotAxis( axis ); + if ( qwtAxis.pos == QwtAxis::YLeft || qwtAxis.pos == QwtAxis::YRight ) { int extent = axisExtent( axis ); m_plot->axisScaleDraw( qwtAxis )->setMinimumExtent( extent ); @@ -845,8 +843,8 @@ void RiuQwtPlotWidget::findClosestPlotItem( const QPoint& pos, else if ( ( *it )->rtti() == QwtPlotItem::Rtti_PlotShape ) { QwtPlotShapeItem* shapeItem = static_cast( *it ); - QPointF scalePos( m_plot->invTransform( QwtPlot::xBottom, pos.x() ), - m_plot->invTransform( QwtPlot::yLeft, pos.y() ) ); + QPointF scalePos( m_plot->invTransform( QwtAxis::XBottom, pos.x() ), + m_plot->invTransform( QwtAxis::YLeft, pos.y() ) ); if ( shapeItem->shape().boundingRect().contains( scalePos ) ) { *closestItem = *it; @@ -856,8 +854,8 @@ void RiuQwtPlotWidget::findClosestPlotItem( const QPoint& pos, else if ( ( *it )->rtti() == QwtPlotItem::Rtti_PlotBarChart ) { QwtPlotBarChart* barChart = static_cast( *it ); - QPointF scalePos( m_plot->invTransform( QwtPlot::xBottom, pos.x() ), - m_plot->invTransform( QwtPlot::yLeft, pos.y() ) ); + QPointF scalePos( m_plot->invTransform( QwtAxis::XBottom, pos.x() ), + m_plot->invTransform( QwtAxis::YLeft, pos.y() ) ); bool horizontal = barChart->orientation() == Qt::Horizontal; for ( size_t i = 0; i < barChart->dataSize(); ++i ) @@ -1055,6 +1053,13 @@ QwtPlot* RiuQwtPlotWidget::qwtPlot() const //-------------------------------------------------------------------------------------------------- void RiuQwtPlotWidget::ensureAxisIsCreated( RiuPlotAxis axis ) { + int requiredCount = axis.index() + 1; + + auto qwtAxisId = RiuQwtPlotTools::toQwtPlotAxis( axis ); + if ( requiredCount > m_plot->axesCount( qwtAxisId.pos ) ) + { + m_plot->setAxesCount( qwtAxisId.pos, requiredCount ); + } } //-------------------------------------------------------------------------------------------------- @@ -1062,7 +1067,9 @@ void RiuQwtPlotWidget::ensureAxisIsCreated( RiuPlotAxis axis ) //-------------------------------------------------------------------------------------------------- void RiuQwtPlotWidget::enableAxis( RiuPlotAxis axis, bool isEnabled ) { - m_plot->enableAxis( RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ), isEnabled ); + ensureAxisIsCreated( axis ); + + m_plot->setAxisVisible( RiuQwtPlotTools::toQwtPlotAxis( axis ), isEnabled ); } //-------------------------------------------------------------------------------------------------- @@ -1070,7 +1077,7 @@ void RiuQwtPlotWidget::enableAxis( RiuPlotAxis axis, bool isEnabled ) //-------------------------------------------------------------------------------------------------- bool RiuQwtPlotWidget::axisEnabled( RiuPlotAxis axis ) const { - return m_plot->axisEnabled( RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ) ); + return m_plot->isAxisVisible( RiuQwtPlotTools::toQwtPlotAxis( axis ) ); } //-------------------------------------------------------------------------------------------------- @@ -1078,7 +1085,7 @@ bool RiuQwtPlotWidget::axisEnabled( RiuPlotAxis axis ) const //-------------------------------------------------------------------------------------------------- void RiuQwtPlotWidget::setAxisMaxMinor( RiuPlotAxis axis, int maxMinor ) { - m_plot->setAxisMaxMinor( RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ), maxMinor ); + m_plot->setAxisMaxMinor( RiuQwtPlotTools::toQwtPlotAxis( axis ), maxMinor ); } //-------------------------------------------------------------------------------------------------- @@ -1086,7 +1093,7 @@ void RiuQwtPlotWidget::setAxisMaxMinor( RiuPlotAxis axis, int maxMinor ) //-------------------------------------------------------------------------------------------------- void RiuQwtPlotWidget::setAxisMaxMajor( RiuPlotAxis axis, int maxMajor ) { - m_plot->setAxisMaxMajor( RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ), maxMajor ); + m_plot->setAxisMaxMajor( RiuQwtPlotTools::toQwtPlotAxis( axis ), maxMajor ); } //-------------------------------------------------------------------------------------------------- @@ -1103,7 +1110,7 @@ void RiuQwtPlotWidget::removeEventFilter() //-------------------------------------------------------------------------------------------------- void RiuQwtPlotWidget::setAxisAutoScale( RiuPlotAxis axis, bool autoScale ) { - m_plot->setAxisAutoScale( RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ), autoScale ); + m_plot->setAxisAutoScale( RiuQwtPlotTools::toQwtPlotAxis( axis ), autoScale ); } //-------------------------------------------------------------------------------------------------- @@ -1111,7 +1118,7 @@ void RiuQwtPlotWidget::setAxisAutoScale( RiuPlotAxis axis, bool autoScale ) //-------------------------------------------------------------------------------------------------- void RiuQwtPlotWidget::setAxisScale( RiuPlotAxis axis, double min, double max ) { - m_plot->setAxisScale( RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ), min, max ); + m_plot->setAxisScale( RiuQwtPlotTools::toQwtPlotAxis( axis ), min, max ); } //-------------------------------------------------------------------------------------------------- @@ -1119,7 +1126,7 @@ void RiuQwtPlotWidget::setAxisScale( RiuPlotAxis axis, double min, double max ) //-------------------------------------------------------------------------------------------------- RiuQwtPlotWidget::AxisScaleType RiuQwtPlotWidget::axisScaleType( RiuPlotAxis axis ) const { - QwtPlot::Axis qwtAxis = RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ); + auto qwtAxis = RiuQwtPlotTools::toQwtPlotAxis( axis ); QwtLogScaleEngine* logScaleEngine = dynamic_cast( m_plot->axisScaleEngine( qwtAxis ) ); QwtDateScaleEngine* dateScaleEngine = dynamic_cast( m_plot->axisScaleEngine( qwtAxis ) ); @@ -1136,7 +1143,7 @@ RiuQwtPlotWidget::AxisScaleType RiuQwtPlotWidget::axisScaleType( RiuPlotAxis axi //-------------------------------------------------------------------------------------------------- void RiuQwtPlotWidget::setAxisScaleType( RiuPlotAxis axis, RiuQwtPlotWidget::AxisScaleType axisScaleType ) { - QwtPlot::Axis qwtAxis = RiuQwtPlotTools::toQwtPlotAxis( axis.axis() ); + auto qwtAxis = RiuQwtPlotTools::toQwtPlotAxis( axis ); if ( axisScaleType == AxisScaleType::LOGARITHMIC ) m_plot->setAxisScaleEngine( qwtAxis, new QwtLogScaleEngine ); if ( axisScaleType == AxisScaleType::LINEAR ) m_plot->setAxisScaleEngine( qwtAxis, new QwtLinearScaleEngine ); @@ -1156,8 +1163,11 @@ void RiuQwtPlotWidget::updateAxes() //-------------------------------------------------------------------------------------------------- RiuPlotAxis RiuQwtPlotWidget::createNextPlotAxis( RiaDefines::PlotAxis axis ) { - // Qwt does not support multiaxis. Just use the default on the given side. - return RiuPlotAxis( axis ); + auto qwtAxis = RiuQwtPlotTools::toQwtPlotAxisEnum( axis ); + + auto count = m_plot->axesCount( qwtAxis ); + + return RiuPlotAxis( axis, count ); } //-------------------------------------------------------------------------------------------------- @@ -1190,7 +1200,7 @@ const QColor& RiuQwtPlotWidget::backgroundColor() const //-------------------------------------------------------------------------------------------------- bool RiuQwtPlotWidget::isMultiAxisSupported() const { - return false; + return true; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/UserInterface/RiuQwtScalePicker.cpp b/ApplicationLibCode/UserInterface/RiuQwtScalePicker.cpp index 2a67545413..75e640aba2 100644 --- a/ApplicationLibCode/UserInterface/RiuQwtScalePicker.cpp +++ b/ApplicationLibCode/UserInterface/RiuQwtScalePicker.cpp @@ -15,7 +15,7 @@ RiuQwtScalePicker::RiuQwtScalePicker( QwtPlot* plot ) : QObject( plot ) { - for ( uint i = 0; i < QwtPlot::axisCnt; i++ ) + for ( uint i = 0; i < QwtAxis::AxisPositions; i++ ) { QwtScaleWidget* scaleWidget = plot->axisWidget( i ); if ( scaleWidget ) scaleWidget->installEventFilter( this ); diff --git a/ApplicationLibCode/UserInterface/RiuRelativePermeabilityPlotPanel.cpp b/ApplicationLibCode/UserInterface/RiuRelativePermeabilityPlotPanel.cpp index 4c6993fa0c..bd40c5bf8f 100644 --- a/ApplicationLibCode/UserInterface/RiuRelativePermeabilityPlotPanel.cpp +++ b/ApplicationLibCode/UserInterface/RiuRelativePermeabilityPlotPanel.cpp @@ -178,13 +178,11 @@ void RiuRelativePermeabilityPlotPanel::setPlotDefaults( QwtPlot* plot ) plot->setTitle( plotTitle ); } - plot->enableAxis( QwtPlot::xBottom, true ); - plot->enableAxis( QwtPlot::yLeft, true ); - plot->enableAxis( QwtPlot::xTop, false ); - plot->enableAxis( QwtPlot::yRight, false ); + plot->setAxesCount( QwtAxis::XBottom, 1 ); + plot->setAxesCount( QwtAxis::YLeft, 1 ); - plot->setAxisMaxMinor( QwtPlot::xBottom, 2 ); - plot->setAxisMaxMinor( QwtPlot::yLeft, 3 ); + plot->setAxisMaxMinor( QwtAxis::XBottom, 2 ); + plot->setAxisMaxMinor( QwtAxis::YLeft, 3 ); QwtLegend* legend = new QwtLegend( plot ); plot->insertLegend( legend, QwtPlot::BottomLegend ); @@ -306,8 +304,8 @@ void RiuRelativePermeabilityPlotPanel::addTransparentCurve( QwtPlot* curveLeftAxis->setSamples( pointsOnLeftAxis ); curveRightAxis->setSamples( pointsOnRightAxis ); - curveLeftAxis->setYAxis( QwtPlot::yLeft ); - curveRightAxis->setYAxis( QwtPlot::yRight ); + curveLeftAxis->setYAxis( QwtAxis::YLeft ); + curveRightAxis->setYAxis( QwtAxis::YRight ); curveLeftAxis->setStyle( QwtPlotCurve::NoCurve ); curveRightAxis->setStyle( QwtPlotCurve::NoCurve ); @@ -460,7 +458,10 @@ void RiuRelativePermeabilityPlotPanel::plotCurvesInQwt( RiaDefines::EclipseUnitS } } - plot->enableAxis( QwtPlot::yRight, shouldEnableRightYAxis ); + if ( shouldEnableRightYAxis ) + plot->setAxesCount( QwtAxis::YRight, 1 ); + else + plot->setAxesCount( QwtAxis::YRight, 0 ); addTransparentCurve( plot, points, axes, logScaleLeftAxis ); @@ -476,44 +477,44 @@ void RiuRelativePermeabilityPlotPanel::plotCurvesInQwt( RiaDefines::EclipseUnitS if ( logScaleLeftAxis ) { - if ( !dynamic_cast( plot->axisScaleEngine( QwtPlot::yLeft ) ) ) + if ( !dynamic_cast( plot->axisScaleEngine( QwtAxis::YLeft ) ) ) { - plot->setAxisScaleEngine( QwtPlot::yLeft, new QwtLogScaleEngine ); + plot->setAxisScaleEngine( QwtAxis::YLeft, new QwtLogScaleEngine ); } } else { - if ( !dynamic_cast( plot->axisScaleEngine( QwtPlot::yLeft ) ) ) + if ( !dynamic_cast( plot->axisScaleEngine( QwtAxis::YLeft ) ) ) { - plot->setAxisScaleEngine( QwtPlot::yLeft, new QwtLinearScaleEngine ); + plot->setAxisScaleEngine( QwtAxis::YLeft, new QwtLinearScaleEngine ); } } if ( fixedXAxis ) { - plot->setAxisScale( QwtPlot::xBottom, 0.0, 1.0 ); - plot->setAxisAutoScale( QwtPlot::xBottom, false ); + plot->setAxisScale( QwtAxis::XBottom, 0.0, 1.0 ); + plot->setAxisAutoScale( QwtAxis::XBottom, false ); } else { - plot->setAxisAutoScale( QwtPlot::xBottom, true ); + plot->setAxisAutoScale( QwtAxis::XBottom, true ); } if ( fixedLeftYAxis ) { if ( logScaleLeftAxis ) { - plot->setAxisScale( QwtPlot::yLeft, 1.0e-6, 1.0 ); + plot->setAxisScale( QwtAxis::YLeft, 1.0e-6, 1.0 ); } else { - plot->setAxisScale( QwtPlot::yLeft, 0.0, 1.0 ); + plot->setAxisScale( QwtAxis::YLeft, 0.0, 1.0 ); } - plot->setAxisAutoScale( QwtPlot::yLeft, false ); + plot->setAxisAutoScale( QwtAxis::YLeft, false ); } else { - plot->setAxisAutoScale( QwtPlot::yLeft, true ); + plot->setAxisAutoScale( QwtAxis::YLeft, true ); } QString titleStr = "Relative Permeability"; @@ -523,9 +524,9 @@ void RiuRelativePermeabilityPlotPanel::plotCurvesInQwt( RiaDefines::EclipseUnitS } plot->setTitle( titleStr ); - plot->setAxisTitle( QwtPlot::xBottom, determineXAxisTitleFromCurveCollection( curveArr ) ); - plot->setAxisTitle( QwtPlot::yLeft, "Kr" ); - plot->setAxisTitle( QwtPlot::yRight, QString( "Pc [%1]" ).arg( RiaEclipseUnitTools::unitStringPressure( unitSystem ) ) ); + plot->setAxisTitle( QwtAxis::XBottom, determineXAxisTitleFromCurveCollection( curveArr ) ); + plot->setAxisTitle( QwtAxis::YLeft, "Kr" ); + plot->setAxisTitle( QwtAxis::YRight, QString( "Pc [%1]" ).arg( RiaEclipseUnitTools::unitStringPressure( unitSystem ) ) ); plot->replot(); } @@ -626,7 +627,7 @@ void RiuRelativePermeabilityPlotPanel::addCurveConstSaturationIntersectionMarker if ( whichYAxis == RIGHT_YAXIS ) { - pointMarker->setYAxis( QwtPlot::yRight ); + pointMarker->setYAxis( QwtAxis::YRight ); } myPlotMarkers->push_back( pointMarker ); diff --git a/ApplicationLibCode/UserInterface/RiuResultQwtPlot.cpp b/ApplicationLibCode/UserInterface/RiuResultQwtPlot.cpp index d368d102d1..768335ec35 100644 --- a/ApplicationLibCode/UserInterface/RiuResultQwtPlot.cpp +++ b/ApplicationLibCode/UserInterface/RiuResultQwtPlot.cpp @@ -88,7 +88,7 @@ void RiuResultQwtPlot::addCurve( const RimCase* rimCase, plotCurve->attach( this ); m_plotCurves.push_back( plotCurve ); - this->setAxisScale( QwtPlot::xTop, QwtDate::toDouble( dateTimes.front() ), QwtDate::toDouble( dateTimes.back() ) ); + this->setAxisScale( QwtAxis::XTop, QwtDate::toDouble( dateTimes.front() ), QwtDate::toDouble( dateTimes.back() ) ); this->applyFontSizes( false ); this->replot(); @@ -185,18 +185,16 @@ void RiuResultQwtPlot::setDefaults() { RiuQwtPlotTools::setCommonPlotBehaviour( this ); - enableAxis( QwtPlot::xBottom, true ); - enableAxis( QwtPlot::yLeft, true ); - enableAxis( QwtPlot::xTop, false ); - enableAxis( QwtPlot::yRight, false ); + setAxesCount( QwtAxis::XBottom, 1 ); + setAxesCount( QwtAxis::YLeft, 1 ); QString dateFormat = RiaPreferences::current()->dateFormat(); QString timeFormat = RiaPreferences::current()->timeFormat(); RiuQwtPlotTools::enableDateBasedBottomXAxis( this, dateFormat, timeFormat ); - setAxisMaxMinor( QwtPlot::xBottom, 2 ); - setAxisMaxMinor( QwtPlot::yLeft, 3 ); + setAxisMaxMinor( QwtAxis::XBottom, 2 ); + setAxisMaxMinor( QwtAxis::YLeft, 3 ); applyFontSizes( false ); diff --git a/ApplicationLibCode/UserInterface/RiuSummaryQwtPlot.cpp b/ApplicationLibCode/UserInterface/RiuSummaryQwtPlot.cpp index e903f22da5..85dad5c4ec 100644 --- a/ApplicationLibCode/UserInterface/RiuSummaryQwtPlot.cpp +++ b/ApplicationLibCode/UserInterface/RiuSummaryQwtPlot.cpp @@ -87,7 +87,7 @@ RiuSummaryQwtPlot::RiuSummaryQwtPlot( RimSummaryPlot* plot, QWidget* parent /*= // Attach a zoomer for the right axis m_zoomerRight = new RiuQwtPlotZoomer( m_plotWidget->qwtPlot()->canvas() ); - m_zoomerRight->setAxes( QwtPlot::xTop, QwtPlot::yRight ); + m_zoomerRight->setAxes( QwtAxis::XTop, QwtAxis::YRight ); m_zoomerRight->setTrackerMode( QwtPicker::AlwaysOff ); m_zoomerRight->initMousePattern( 1 ); @@ -138,8 +138,8 @@ void RiuSummaryQwtPlot::useDateBasedTimeAxis( const QString& d //-------------------------------------------------------------------------------------------------- void RiuSummaryQwtPlot::useTimeBasedTimeAxis() { - m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtPlot::xBottom, new QwtLinearScaleEngine() ); - m_plotWidget->qwtPlot()->setAxisScaleDraw( QwtPlot::xBottom, new QwtScaleDraw() ); + m_plotWidget->qwtPlot()->setAxisScaleEngine( QwtAxis::XBottom, new QwtLinearScaleEngine() ); + m_plotWidget->qwtPlot()->setAxisScaleDraw( QwtAxis::XBottom, new QwtScaleDraw() ); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/UserInterface/RiuTofAccumulatedPhaseFractionsPlot.cpp b/ApplicationLibCode/UserInterface/RiuTofAccumulatedPhaseFractionsPlot.cpp index 6a36a8a9bb..e2735b7d52 100644 --- a/ApplicationLibCode/UserInterface/RiuTofAccumulatedPhaseFractionsPlot.cpp +++ b/ApplicationLibCode/UserInterface/RiuTofAccumulatedPhaseFractionsPlot.cpp @@ -192,7 +192,7 @@ void RiuTofAccumulatedPhaseFractionsPlot::setSamples( std::vector xSampl { maxVal = std::max( val, maxVal ); } - setAxisScale( QwtPlot::xBottom, 0, maxVal ); + setAxisScale( QwtAxis::XBottom, 0, maxVal ); updateAxes(); } replot(); @@ -204,16 +204,14 @@ void RiuTofAccumulatedPhaseFractionsPlot::setSamples( std::vector xSampl void RiuTofAccumulatedPhaseFractionsPlot::setDefaults() { setCommonPlotBehaviour( this ); - setAxisTitle( QwtPlot::xBottom, "Years" ); + setAxisTitle( QwtAxis::XBottom, "Years" ); - enableAxis( QwtPlot::xBottom, true ); - enableAxis( QwtPlot::yLeft, true ); - setAxisScale( QwtPlot::yLeft, 0, 1, 0.2 ); - enableAxis( QwtPlot::xTop, false ); - enableAxis( QwtPlot::yRight, false ); + setAxesCount( QwtAxis::XBottom, 1 ); + setAxesCount( QwtAxis::YLeft, 1 ); + setAxisScale( QwtAxis::YLeft, 0, 1, 0.2 ); - setAxisMaxMinor( QwtPlot::xBottom, 2 ); - setAxisMaxMinor( QwtPlot::yLeft, 3 ); + setAxisMaxMinor( QwtAxis::XBottom, 2 ); + setAxisMaxMinor( QwtAxis::YLeft, 3 ); QSizePolicy sizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred ); sizePolicy.setHeightForWidth( true ); @@ -255,26 +253,26 @@ void RiuTofAccumulatedPhaseFractionsPlot::setCommonPlotBehaviour( QwtPlot* plot grid->setPen( gridPen ); // Axis number font - QFont axisFont = plot->axisFont( QwtPlot::xBottom ); + QFont axisFont = plot->axisFont( QwtAxis::XBottom ); axisFont.setPointSize( 10 ); - plot->setAxisFont( QwtPlot::xBottom, axisFont ); - plot->setAxisFont( QwtPlot::xTop, axisFont ); - plot->setAxisFont( QwtPlot::yLeft, axisFont ); - plot->setAxisFont( QwtPlot::yRight, axisFont ); + plot->setAxisFont( QwtAxis::XBottom, axisFont ); + plot->setAxisFont( QwtAxis::XTop, axisFont ); + plot->setAxisFont( QwtAxis::YLeft, axisFont ); + plot->setAxisFont( QwtAxis::YRight, axisFont ); // Axis title font - QwtText axisTitle = plot->axisTitle( QwtPlot::xBottom ); + QwtText axisTitle = plot->axisTitle( QwtAxis::XBottom ); QFont axisTitleFont = axisTitle.font(); axisTitleFont.setPointSize( 10 ); axisTitleFont.setBold( false ); axisTitle.setFont( axisTitleFont ); axisTitle.setRenderFlags( Qt::AlignRight ); - plot->setAxisTitle( QwtPlot::xBottom, axisTitle ); - plot->setAxisTitle( QwtPlot::xTop, axisTitle ); - plot->setAxisTitle( QwtPlot::yLeft, axisTitle ); - plot->setAxisTitle( QwtPlot::yRight, axisTitle ); + plot->setAxisTitle( QwtAxis::XBottom, axisTitle ); + plot->setAxisTitle( QwtAxis::XTop, axisTitle ); + plot->setAxisTitle( QwtAxis::YLeft, axisTitle ); + plot->setAxisTitle( QwtAxis::YRight, axisTitle ); // Enable mouse tracking and event filter diff --git a/ApplicationLibCode/UserInterface/RiuWellLogTrack.cpp b/ApplicationLibCode/UserInterface/RiuWellLogTrack.cpp index 1ebdbd35f5..fabc6a9a23 100644 --- a/ApplicationLibCode/UserInterface/RiuWellLogTrack.cpp +++ b/ApplicationLibCode/UserInterface/RiuWellLogTrack.cpp @@ -58,8 +58,8 @@ protected: if ( m_plot ) { - QwtPlot::Axis relatedYAxis = QwtPlot::yLeft; - QwtPlot::Axis relatedXAxis = QwtPlot::xTop; + QwtAxis::Position relatedYAxis = QwtAxis::YLeft; + QwtAxis::Position relatedXAxis = QwtAxis::XTop; QString curveInfoText; QString depthAxisValueString; @@ -135,10 +135,10 @@ static WellLogCurveInfoTextProvider wellLogCurveInfoTextProvider; RiuWellLogTrack::RiuWellLogTrack( RimWellLogTrack* track, QWidget* parent /*= nullptr */ ) : RiuQwtPlotWidget( track, parent ) { - setAxisEnabled( QwtPlot::yLeft, true ); - setAxisEnabled( QwtPlot::yRight, false ); - setAxisEnabled( QwtPlot::xTop, true ); - setAxisEnabled( QwtPlot::xBottom, true ); + setAxisEnabled( QwtAxis::YLeft, true ); + setAxisEnabled( QwtAxis::YRight, false ); + setAxisEnabled( QwtAxis::XTop, true ); + setAxisEnabled( QwtAxis::XBottom, true ); new RiuWellLogCurvePointTracker( this->qwtPlot(), &wellLogCurveInfoTextProvider, track ); } @@ -153,7 +153,7 @@ RiuWellLogTrack::~RiuWellLogTrack() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RiuWellLogTrack::setAxisEnabled( QwtPlot::Axis axis, bool enabled ) +void RiuWellLogTrack::setAxisEnabled( QwtAxis::Position axis, bool enabled ) { RiuPlotAxis plotAxis = RiuPlotAxis( RiuQwtPlotTools::fromQwtPlotAxis( axis ) ); RiuQwtPlotWidget::enableAxis( plotAxis, enabled ); diff --git a/ApplicationLibCode/UserInterface/RiuWellLogTrack.h b/ApplicationLibCode/UserInterface/RiuWellLogTrack.h index 117a2c5ba8..60dda603c6 100644 --- a/ApplicationLibCode/UserInterface/RiuWellLogTrack.h +++ b/ApplicationLibCode/UserInterface/RiuWellLogTrack.h @@ -38,5 +38,5 @@ public: RiuWellLogTrack( RimWellLogTrack* track, QWidget* parent = nullptr ); ~RiuWellLogTrack() override; - void setAxisEnabled( QwtPlot::Axis axis, bool enabled ); + void setAxisEnabled( QwtAxis::Position axis, bool enabled ); }; diff --git a/ThirdParty/qwt b/ThirdParty/qwt index b207fdae66..d948bfa23d 160000 --- a/ThirdParty/qwt +++ b/ThirdParty/qwt @@ -1 +1 @@ -Subproject commit b207fdae66a346cb36c78acefaff1ae6d93416c9 +Subproject commit d948bfa23d4b628ccff5f5039b9e70515f8a3db9