///////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2015- Statoil ASA // Copyright (C) 2015- Ceetron Solutions AS // // ResInsight is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY // WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. // // See the GNU General Public License at // for more details. // ///////////////////////////////////////////////////////////////////////////////// #include "RimWellLogCurve.h" #include "RiaCurveDataTools.h" #include "RigWellLogCurveData.h" #include "RimWellLogPlot.h" #include "RimWellLogTrack.h" #include "RiuQwtPlotCurve.h" #include "RiuWellLogTrack.h" #include "cafPdmUiComboBoxEditor.h" #include "cvfAssert.h" #include "qwt_symbol.h" #include // NB! Special macro for pure virtual class CAF_PDM_XML_ABSTRACT_SOURCE_INIT( RimWellLogCurve, "WellLogPlotCurve" ); //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RimWellLogCurve::RimWellLogCurve() { CAF_PDM_InitObject( "WellLogCurve", ":/WellLogCurve16x16.png", "", "" ); m_qwtPlotCurve->setXAxis( QwtPlot::xTop ); m_qwtPlotCurve->setYAxis( QwtPlot::yLeft ); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RimWellLogCurve::~RimWellLogCurve() {} //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- bool RimWellLogCurve::xValueRangeInData( double* minimumValue, double* maximumValue ) const { CAF_ASSERT( minimumValue && maximumValue ); if ( !( minimumValue && maximumValue ) ) { return false; } if ( m_curveData->xValues().empty() ) { return false; } *minimumValue = std::numeric_limits::infinity(); *maximumValue = -std::numeric_limits::infinity(); for ( double xValue : m_curveData->xValues() ) { if ( RiaCurveDataTools::isValidValue( xValue, false ) ) { *minimumValue = std::min( *minimumValue, xValue ); *maximumValue = std::max( *maximumValue, xValue ); } } return true; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- const RigWellLogCurveData* RimWellLogCurve::curveData() const { return m_curveData.p(); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimWellLogCurve::updateZoomInParentPlot() { RimWellLogPlot* wellLogPlot; firstAncestorOrThisOfType( wellLogPlot ); if ( wellLogPlot ) { wellLogPlot->calculateAvailableDepthRange(); wellLogPlot->updateDepthZoom(); } RimWellLogTrack* plotTrack; firstAncestorOrThisOfType( plotTrack ); if ( plotTrack ) { plotTrack->calculateXZoomRangeAndUpdateQwt(); } } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimWellLogCurve::updateLegendsInPlot() { RimWellLogTrack* wellLogTrack; firstAncestorOrThisOfType( wellLogTrack ); if ( wellLogTrack ) { wellLogTrack->updateAllLegendItems(); } }