mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#860 Added Center /At End option for axis titles
This commit is contained in:
parent
4ed6076750
commit
3d1bad978f
@ -97,7 +97,7 @@ public:
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryCurvesCalculator::RimSummaryCurvesCalculator(RimSummaryYAxisProperties* axisProperties,
|
||||
RimSummaryPlotYAxisFormater::RimSummaryPlotYAxisFormater(RimSummaryYAxisProperties* axisProperties,
|
||||
const std::vector<RimSummaryCurve*>& curves,
|
||||
const std::vector<RimSummaryCurveFilter*>& curveFilters)
|
||||
: m_axisProperties(axisProperties),
|
||||
@ -106,27 +106,19 @@ RimSummaryCurvesCalculator::RimSummaryCurvesCalculator(RimSummaryYAxisProperties
|
||||
{
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryCurvesCalculator::RimSummaryCurvesCalculator(RimSummaryYAxisProperties* axisProperties, const std::vector<RimSummaryCurve*>& curves)
|
||||
: m_axisProperties(axisProperties),
|
||||
m_singleCurves(curves)
|
||||
{
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCurvesCalculator::applyPropertiesToPlot(RiuSummaryQwtPlot* m_qwtPlot)
|
||||
void RimSummaryPlotYAxisFormater::applyYAxisPropertiesToPlot(RiuSummaryQwtPlot* qwtPlot)
|
||||
{
|
||||
if (!m_qwtPlot) return;
|
||||
if (!qwtPlot) return;
|
||||
|
||||
{
|
||||
QString axisTitle = m_axisProperties->customTitle;
|
||||
if (m_axisProperties->isAutoTitle) axisTitle = autoAxisTitle();
|
||||
|
||||
QwtText axisTitleY = m_qwtPlot->axisTitle(m_axisProperties->axis());
|
||||
QwtText axisTitleY = qwtPlot->axisTitle(m_axisProperties->axis());
|
||||
|
||||
QFont axisTitleYFont = axisTitleY.font();
|
||||
axisTitleYFont.setBold(true);
|
||||
@ -134,28 +126,39 @@ void RimSummaryCurvesCalculator::applyPropertiesToPlot(RiuSummaryQwtPlot* m_qwtP
|
||||
axisTitleY.setFont(axisTitleYFont);
|
||||
|
||||
axisTitleY.setText(axisTitle);
|
||||
m_qwtPlot->setAxisTitle(m_axisProperties->axis(), axisTitleY);
|
||||
|
||||
switch (m_axisProperties->titlePositionEnum())
|
||||
{
|
||||
case RimSummaryYAxisProperties::AXIS_TITLE_CENTER:
|
||||
axisTitleY.setRenderFlags(Qt::AlignCenter);
|
||||
break;
|
||||
case RimSummaryYAxisProperties::AXIS_TITLE_END:
|
||||
axisTitleY.setRenderFlags(Qt::AlignRight);
|
||||
break;
|
||||
}
|
||||
|
||||
qwtPlot->setAxisTitle(m_axisProperties->axis(), axisTitleY);
|
||||
}
|
||||
|
||||
{
|
||||
QFont yAxisFont = m_qwtPlot->axisFont(m_axisProperties->axis());
|
||||
QFont yAxisFont = qwtPlot->axisFont(m_axisProperties->axis());
|
||||
yAxisFont.setBold(false);
|
||||
yAxisFont.setPixelSize(m_axisProperties->fontSize);
|
||||
m_qwtPlot->setAxisFont(m_axisProperties->axis(), yAxisFont);
|
||||
qwtPlot->setAxisFont(m_axisProperties->axis(), yAxisFont);
|
||||
}
|
||||
|
||||
{
|
||||
if (m_axisProperties->numberFormat == RimSummaryYAxisProperties::NUMBER_FORMAT_AUTO)
|
||||
{
|
||||
m_qwtPlot->setAxisScaleDraw(m_axisProperties->axis(), new QwtScaleDraw);
|
||||
qwtPlot->setAxisScaleDraw(m_axisProperties->axis(), new QwtScaleDraw);
|
||||
}
|
||||
else if (m_axisProperties->numberFormat == RimSummaryYAxisProperties::NUMBER_FORMAT_DECIMAL)
|
||||
{
|
||||
m_qwtPlot->setAxisScaleDraw(m_axisProperties->axis(), new DecimalScaleDraw);
|
||||
qwtPlot->setAxisScaleDraw(m_axisProperties->axis(), new DecimalScaleDraw);
|
||||
}
|
||||
else if (m_axisProperties->numberFormat == RimSummaryYAxisProperties::NUMBER_FORMAT_SCIENTIFIC)
|
||||
{
|
||||
m_qwtPlot->setAxisScaleDraw(m_axisProperties->axis(), new ScientificScaleDraw());
|
||||
qwtPlot->setAxisScaleDraw(m_axisProperties->axis(), new ScientificScaleDraw());
|
||||
}
|
||||
|
||||
}
|
||||
@ -163,21 +166,21 @@ void RimSummaryCurvesCalculator::applyPropertiesToPlot(RiuSummaryQwtPlot* m_qwtP
|
||||
{
|
||||
if (m_axisProperties->isLogarithmicScaleEnabled)
|
||||
{
|
||||
QwtLogScaleEngine* currentScaleEngine = dynamic_cast<QwtLogScaleEngine*>(m_qwtPlot->axisScaleEngine(m_axisProperties->axis()));
|
||||
QwtLogScaleEngine* currentScaleEngine = dynamic_cast<QwtLogScaleEngine*>(qwtPlot->axisScaleEngine(m_axisProperties->axis()));
|
||||
if (!currentScaleEngine)
|
||||
{
|
||||
m_qwtPlot->setAxisScaleEngine(m_axisProperties->axis(), new QwtLogScaleEngine);
|
||||
m_qwtPlot->setAxisMaxMinor(m_axisProperties->axis(), 5);
|
||||
qwtPlot->setAxisScaleEngine(m_axisProperties->axis(), new QwtLogScaleEngine);
|
||||
qwtPlot->setAxisMaxMinor(m_axisProperties->axis(), 5);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
QwtLinearScaleEngine* currentScaleEngine = dynamic_cast<QwtLinearScaleEngine*>(m_qwtPlot->axisScaleEngine(m_axisProperties->axis()));
|
||||
QwtLinearScaleEngine* currentScaleEngine = dynamic_cast<QwtLinearScaleEngine*>(qwtPlot->axisScaleEngine(m_axisProperties->axis()));
|
||||
if (!currentScaleEngine)
|
||||
{
|
||||
m_qwtPlot->setAxisScaleEngine(m_axisProperties->axis(), new QwtLinearScaleEngine);
|
||||
m_qwtPlot->setAxisMaxMinor(m_axisProperties->axis(), 3);
|
||||
qwtPlot->setAxisScaleEngine(m_axisProperties->axis(), new QwtLinearScaleEngine);
|
||||
qwtPlot->setAxisMaxMinor(m_axisProperties->axis(), 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -186,7 +189,7 @@ void RimSummaryCurvesCalculator::applyPropertiesToPlot(RiuSummaryQwtPlot* m_qwtP
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimSummaryCurvesCalculator::autoAxisTitle() const
|
||||
QString RimSummaryPlotYAxisFormater::autoAxisTitle() const
|
||||
{
|
||||
std::set<std::string> unitNames;
|
||||
|
||||
@ -211,10 +214,26 @@ QString RimSummaryCurvesCalculator::autoAxisTitle() const
|
||||
return assembledYAxisText;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCurvesCalculator::computeYRange(double* min, double* max) const
|
||||
RimSummaryPlotYAxisRangeCalculator::RimSummaryPlotYAxisRangeCalculator(RimSummaryYAxisProperties* axisProperties, const std::vector<RimSummaryCurve*>& curves)
|
||||
: m_axisProperties(axisProperties),
|
||||
m_singleCurves(curves)
|
||||
{
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlotYAxisRangeCalculator::computeYRange(double* min, double* max) const
|
||||
{
|
||||
double minValue = HUGE_VAL;
|
||||
double maxValue = -HUGE_VAL;
|
||||
@ -273,7 +292,7 @@ void RimSummaryCurvesCalculator::computeYRange(double* min, double* max) const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimSummaryCurvesCalculator::curveValueRangeY(const QwtPlotCurve* qwtCurve, double* min, double* max) const
|
||||
bool RimSummaryPlotYAxisRangeCalculator::curveValueRangeY(const QwtPlotCurve* qwtCurve, double* min, double* max) const
|
||||
{
|
||||
if (!qwtCurve) return false;
|
||||
|
||||
|
@ -29,22 +29,17 @@ class RiuSummaryQwtPlot;
|
||||
|
||||
class QwtPlotCurve;
|
||||
|
||||
class RimSummaryCurvesCalculator
|
||||
class RimSummaryPlotYAxisFormater
|
||||
{
|
||||
public:
|
||||
RimSummaryCurvesCalculator(RimSummaryYAxisProperties* axisProperties,
|
||||
RimSummaryPlotYAxisFormater(RimSummaryYAxisProperties* axisProperties,
|
||||
const std::vector<RimSummaryCurve*>& curves,
|
||||
const std::vector<RimSummaryCurveFilter*>& curveFilters);
|
||||
|
||||
RimSummaryCurvesCalculator(RimSummaryYAxisProperties* axisProperties,
|
||||
const std::vector<RimSummaryCurve*>& curves);
|
||||
|
||||
void applyPropertiesToPlot(RiuSummaryQwtPlot* qwtPlot);
|
||||
void computeYRange(double* min, double* max) const;
|
||||
void applyYAxisPropertiesToPlot(RiuSummaryQwtPlot* qwtPlot);
|
||||
|
||||
private:
|
||||
QString autoAxisTitle() const;
|
||||
bool curveValueRangeY(const QwtPlotCurve* qwtCurve, double* min, double* max) const;
|
||||
|
||||
private:
|
||||
RimSummaryYAxisProperties* m_axisProperties;
|
||||
@ -52,3 +47,20 @@ private:
|
||||
std::vector<RimSummaryCurveFilter*> m_curveFilters;
|
||||
};
|
||||
|
||||
|
||||
class RimSummaryPlotYAxisRangeCalculator
|
||||
{
|
||||
public:
|
||||
RimSummaryPlotYAxisRangeCalculator(RimSummaryYAxisProperties* axisProperties,
|
||||
const std::vector<RimSummaryCurve*>& curves);
|
||||
|
||||
void computeYRange(double* min, double* max) const;
|
||||
|
||||
private:
|
||||
bool curveValueRangeY(const QwtPlotCurve* qwtCurve, double* min, double* max) const;
|
||||
|
||||
private:
|
||||
RimSummaryYAxisProperties* m_axisProperties;
|
||||
std::vector<RimSummaryCurve*> m_singleCurves;
|
||||
};
|
||||
|
||||
|
@ -212,8 +212,8 @@ void RimSummaryPlot::updateAxis(RimDefines::PlotAxis plotAxis)
|
||||
{
|
||||
m_qwtPlot->enableAxis(qwtAxis, true);
|
||||
|
||||
RimSummaryCurvesCalculator calc(yAxisProperties, curves, curveFiltersForAxis);
|
||||
calc.applyPropertiesToPlot(m_qwtPlot);
|
||||
RimSummaryPlotYAxisFormater calc(yAxisProperties, curves, curveFiltersForAxis);
|
||||
calc.applyYAxisPropertiesToPlot(m_qwtPlot);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -272,6 +272,16 @@ void RimSummaryPlot::updateTimeAxis()
|
||||
|
||||
timeAxisTitle.setText(axisTitle);
|
||||
|
||||
switch ( m_timeAxisProperties->titlePositionEnum() )
|
||||
{
|
||||
case RimSummaryTimeAxisProperties::AXIS_TITLE_CENTER:
|
||||
timeAxisTitle.setRenderFlags(Qt::AlignCenter);
|
||||
break;
|
||||
case RimSummaryTimeAxisProperties::AXIS_TITLE_END:
|
||||
timeAxisTitle.setRenderFlags(Qt::AlignRight);
|
||||
break;
|
||||
}
|
||||
|
||||
m_qwtPlot->setAxisTitle(QwtPlot::xBottom, timeAxisTitle);
|
||||
}
|
||||
|
||||
@ -281,6 +291,7 @@ void RimSummaryPlot::updateTimeAxis()
|
||||
timeAxisFont.setPixelSize(m_timeAxisProperties->fontSize);
|
||||
m_qwtPlot->setAxisFont(QwtPlot::xBottom, timeAxisFont);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -350,7 +361,7 @@ void RimSummaryPlot::zoomAll()
|
||||
std::vector<RimSummaryCurve*> curves = curvesForAxis(RimDefines::PLOT_AXIS_LEFT);
|
||||
|
||||
double min, max;
|
||||
RimSummaryCurvesCalculator calc(m_leftYAxisProperties, curves);
|
||||
RimSummaryPlotYAxisRangeCalculator calc(m_leftYAxisProperties, curves);
|
||||
calc.computeYRange(&min, &max);
|
||||
|
||||
m_qwtPlot->setAxisScale(m_leftYAxisProperties->axis(), min, max);
|
||||
@ -365,7 +376,7 @@ void RimSummaryPlot::zoomAll()
|
||||
std::vector<RimSummaryCurve*> curves = curvesForAxis(RimDefines::PLOT_AXIS_RIGHT);
|
||||
|
||||
double min, max;
|
||||
RimSummaryCurvesCalculator calc(m_rightYAxisProperties, curves);
|
||||
RimSummaryPlotYAxisRangeCalculator calc(m_rightYAxisProperties, curves);
|
||||
calc.computeYRange(&min, &max);
|
||||
|
||||
m_qwtPlot->setAxisScale(m_rightYAxisProperties->axis(), min, max);
|
||||
|
@ -25,6 +25,20 @@
|
||||
#include "qwt_date.h"
|
||||
|
||||
|
||||
namespace caf
|
||||
{
|
||||
template<>
|
||||
void caf::AppEnum< RimSummaryTimeAxisProperties::AxisTitlePositionType >::setUp()
|
||||
{
|
||||
addItem(RimSummaryTimeAxisProperties::AXIS_TITLE_CENTER, "AXIS_TITLE_CENTER", "Center");
|
||||
addItem(RimSummaryTimeAxisProperties::AXIS_TITLE_END, "AXIS_TITLE_END", "At End");
|
||||
|
||||
setDefault(RimSummaryTimeAxisProperties::AXIS_TITLE_CENTER);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RimSummaryTimeAxisProperties, "SummaryTimeAxisProperties");
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -39,6 +53,8 @@ RimSummaryTimeAxisProperties::RimSummaryTimeAxisProperties()
|
||||
|
||||
CAF_PDM_InitField(&showTitle, "ShowTitle", false, "Show Title", "", "", "");
|
||||
CAF_PDM_InitField(&title, "Title", QString("Time"), "Title", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&titlePositionEnum, "TitlePosition", "Title Position", "", "", "");
|
||||
|
||||
CAF_PDM_InitField(&fontSize, "FontSize", 11, "Font Size", "", "", "");
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_visibleRangeMax, "VisibleRangeMax", "Max", "", "", "");
|
||||
|
@ -35,12 +35,21 @@ class RimSummaryTimeAxisProperties : public caf::PdmObject
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
|
||||
public:
|
||||
|
||||
enum AxisTitlePositionType
|
||||
{
|
||||
AXIS_TITLE_CENTER,
|
||||
AXIS_TITLE_END
|
||||
};
|
||||
|
||||
public:
|
||||
RimSummaryTimeAxisProperties();
|
||||
|
||||
caf::PdmField<int> fontSize;
|
||||
caf::PdmField<QString> title;
|
||||
caf::PdmField<bool> showTitle;
|
||||
caf::PdmField< caf::AppEnum< AxisTitlePositionType > > titlePositionEnum;
|
||||
|
||||
double visibleRangeMin() const;
|
||||
double visibleRangeMax() const;
|
||||
|
@ -35,6 +35,19 @@ namespace caf
|
||||
}
|
||||
}
|
||||
|
||||
namespace caf
|
||||
{
|
||||
template<>
|
||||
void caf::AppEnum< RimSummaryYAxisProperties::AxisTitlePositionType >::setUp()
|
||||
{
|
||||
addItem(RimSummaryYAxisProperties::AXIS_TITLE_CENTER, "AXIS_TITLE_CENTER", "Center");
|
||||
addItem(RimSummaryYAxisProperties::AXIS_TITLE_END, "AXIS_TITLE_END", "At End");
|
||||
|
||||
setDefault(RimSummaryYAxisProperties::AXIS_TITLE_CENTER);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RimSummaryYAxisProperties, "SummaryYAxisProperties");
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -52,6 +65,7 @@ RimSummaryYAxisProperties::RimSummaryYAxisProperties()
|
||||
|
||||
CAF_PDM_InitField(&isAutoTitle, "AutoTitle", true, "Auto Title", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&customTitle, "CustomTitle", "Title", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&titlePositionEnum, "TitlePosition", "Title Position", "", "", "");
|
||||
CAF_PDM_InitField(&fontSize, "FontSize", 11, "Font Size", "", "", "");
|
||||
|
||||
CAF_PDM_InitField(&visibleRangeMax, "VisibleRangeMax", RimDefines::maximumDefaultValuePlot(), "Max", "", "", "");
|
||||
|
@ -28,6 +28,8 @@
|
||||
|
||||
#include <QString>
|
||||
|
||||
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
///
|
||||
@ -44,6 +46,12 @@ public:
|
||||
NUMBER_FORMAT_SCIENTIFIC
|
||||
};
|
||||
|
||||
enum AxisTitlePositionType
|
||||
{
|
||||
AXIS_TITLE_CENTER,
|
||||
AXIS_TITLE_END
|
||||
};
|
||||
|
||||
public:
|
||||
RimSummaryYAxisProperties();
|
||||
|
||||
@ -53,6 +61,7 @@ public:
|
||||
caf::PdmField<bool> isAutoTitle;
|
||||
caf::PdmField<QString> customTitle;
|
||||
caf::PdmField<int> fontSize;
|
||||
caf::PdmField< caf::AppEnum< AxisTitlePositionType > > titlePositionEnum;
|
||||
|
||||
caf::PdmField<double> visibleRangeMin;
|
||||
caf::PdmField<double> visibleRangeMax;
|
||||
|
Loading…
Reference in New Issue
Block a user