Set a sensible font size for Plot symbol labels (i.e. "P10", "P90" etc)

This commit is contained in:
Gaute Lindkvist 2020-01-07 14:25:19 +01:00
parent 4829c5eba2
commit 993b98f977
3 changed files with 20 additions and 3 deletions

View File

@ -20,6 +20,7 @@
#include "RiaCurveDataTools.h" #include "RiaCurveDataTools.h"
#include "RiaGuiApplication.h" #include "RiaGuiApplication.h"
#include "RiaPreferences.h"
#include "RimEnsembleCurveSet.h" #include "RimEnsembleCurveSet.h"
#include "RimEnsembleCurveSetCollection.h" #include "RimEnsembleCurveSetCollection.h"
@ -658,7 +659,10 @@ void RimPlotCurve::updateCurveAppearance()
if ( m_pointSymbol() != RiuQwtSymbol::SYMBOL_NONE ) if ( m_pointSymbol() != RiuQwtSymbol::SYMBOL_NONE )
{ {
// QwtPlotCurve will take ownership of the symbol // QwtPlotCurve will take ownership of the symbol
symbol = new RiuQwtSymbol( m_pointSymbol(), m_symbolLabel(), m_symbolLabelPosition() ); symbol = new RiuQwtSymbol( m_pointSymbol(),
m_symbolLabel(),
m_symbolLabelPosition(),
RiaApplication::instance()->preferences()->defaultPlotFontSize() );
symbol->setSize( m_symbolSize, m_symbolSize ); symbol->setSize( m_symbolSize, m_symbolSize );
symbol->setColor( curveColor ); symbol->setColor( curveColor );

View File

@ -19,6 +19,8 @@
#include "RiuQwtSymbol.h" #include "RiuQwtSymbol.h"
#include "RiaFontCache.h"
#include "cvfAssert.h" #include "cvfAssert.h"
#include <QPainter> #include <QPainter>
@ -26,10 +28,11 @@
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// Internal class to support labels on symbols /// Internal class to support labels on symbols
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RiuQwtSymbol::RiuQwtSymbol( PointSymbolEnum riuStyle, const QString& label, LabelPosition labelPosition ) RiuQwtSymbol::RiuQwtSymbol( PointSymbolEnum riuStyle, const QString& label, LabelPosition labelPosition, int labelFontSizePt )
: QwtSymbol( QwtSymbol::NoSymbol ) : QwtSymbol( QwtSymbol::NoSymbol )
, m_globalLabel( label ) , m_globalLabel( label )
, m_labelPosition( labelPosition ) , m_labelPosition( labelPosition )
, m_labelFontSizePx( RiaFontCache::pointSizeToPixelSize( labelFontSizePt ) )
{ {
QwtSymbol::Style style = QwtSymbol::NoSymbol; QwtSymbol::Style style = QwtSymbol::NoSymbol;
@ -149,10 +152,16 @@ void RiuQwtSymbol::renderSymbols( QPainter* painter, const QPointF* points, int
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RiuQwtSymbol::renderSymbolLabel( QPainter* painter, const QPointF& position, const QString& label ) const void RiuQwtSymbol::renderSymbolLabel( QPainter* painter, const QPointF& position, const QString& label ) const
{ {
painter->save();
QFont font = painter->font();
font.setPixelSize( m_labelFontSizePx );
painter->setFont( font );
QSize symbolSize = QwtSymbol::size(); QSize symbolSize = QwtSymbol::size();
QRect symbolRect( position.x(), position.y(), symbolSize.width(), symbolSize.height() ); QRect symbolRect( position.x(), position.y(), symbolSize.width(), symbolSize.height() );
QRect labelRect = labelBoundingRect( painter, symbolRect, label ); QRect labelRect = labelBoundingRect( painter, symbolRect, label );
painter->drawText( labelRect.topLeft(), label ); painter->drawText( labelRect.topLeft(), label );
painter->restore();
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -60,7 +60,10 @@ public:
SYMBOL_RIGHT_TRIANGLE SYMBOL_RIGHT_TRIANGLE
}; };
RiuQwtSymbol( PointSymbolEnum riuStyle, const QString& label, LabelPosition labelPosition = LabelAboveSymbol ); RiuQwtSymbol( PointSymbolEnum riuStyle,
const QString& label,
LabelPosition labelPosition = LabelAboveSymbol,
int labelFontSizePt = 8 );
void renderSymbols( QPainter* painter, const QPointF* points, int numPoints ) const override; void renderSymbols( QPainter* painter, const QPointF* points, int numPoints ) const override;
void renderSymbolLabel( QPainter* painter, const QPointF& position, const QString& label ) const; void renderSymbolLabel( QPainter* painter, const QPointF& position, const QString& label ) const;
QString globalLabel() const; QString globalLabel() const;
@ -79,5 +82,6 @@ private:
private: private:
QString m_globalLabel; QString m_globalLabel;
int m_labelFontSizePx;
LabelPosition m_labelPosition; LabelPosition m_labelPosition;
}; };