#6663, #6673 Fix black text in Ensemble legend frame and wrong PDF-rendering

This commit is contained in:
Gaute Lindkvist
2020-10-01 10:35:57 +02:00
parent d33ddf24c7
commit 135ca97ba4
6 changed files with 43 additions and 15 deletions

View File

@@ -21,6 +21,8 @@
#include "RiaFontCache.h"
#include "RiaPreferences.h"
#include "RiuGuiTheme.h"
#include <QPaintEvent>
#include <QPainter>
#include <QTextDocument>
@@ -108,20 +110,24 @@ void RiuAbstractLegendFrame::renderTo( QPainter* painter, const QRect& targetRec
caf::FontTools::pointSizeToPixelSize( RiaApplication::instance()->preferences()->defaultPlotFontSize() ) );
this->setFont( font );
QColor textColor = RiuGuiTheme::getColorByVariableName( "textColor" );
LayoutInfo layout( QSize( targetRect.width(), targetRect.height() ) );
layoutInfo( &layout );
painter->save();
painter->setFont( this->font() );
painter->translate( targetRect.topLeft() );
QPoint titlePos( layout.margins.left(), layout.margins.top() );
{
painter->save();
painter->translate( QPoint( layout.margins.left(), layout.margins.top() ) );
painter->setPen( QPen( textColor ) );
QTextDocument td;
td.setDocumentMargin( 0.0 );
td.setDefaultFont( this->font() );
td.setPlainText( m_title );
td.setHtml( QString( "<body><font color='%1'>%2</font></body>" ).arg( textColor.name() ).arg( m_title ) );
td.drawContents( painter );
painter->restore();
}
@@ -131,10 +137,11 @@ void RiuAbstractLegendFrame::renderTo( QPainter* painter, const QRect& targetRec
{
painter->save();
painter->translate( tickLabel.first.topLeft() );
painter->setPen( QPen( textColor ) );
QTextDocument td;
td.setDocumentMargin( 0.0 );
td.setDefaultFont( this->font() );
td.setPlainText( tickLabel.second );
td.setHtml( QString( "<body><font color='%1'>%2</font></body>" ).arg( textColor.name() ).arg( tickLabel.second ) );
td.drawContents( painter );
painter->restore();
}

View File

@@ -20,7 +20,6 @@
#include "RiaApplication.h"
#include "RiaGuiApplication.h"
#include "RiaPreferences.h"
#include "RiuThemesDirectory.h"
#include "cafAppEnum.h"
@@ -47,6 +46,8 @@
#include "qwt_plot_marker.h"
#include "qwt_symbol.h"
RiaDefines::ThemeEnum RiuGuiTheme::s_currentTheme = RiaDefines::ThemeEnum::DEFAULT;
QMap<RiaDefines::ThemeEnum, QMap<QString, QString>> RiuGuiTheme::s_variableValueMap = {};
QMap<RiaDefines::ThemeEnum, QMap<QString, QString>> RiuGuiTheme::s_variableGuiTextMap = {};
QMap<QString, QMap<QString, QMap<QString, QMap<QString, QString>>>> RiuGuiTheme::s_qwtPlotItemPropertiesMap = {};
@@ -352,12 +353,22 @@ QMap<QString, CustomStyleSheetApplicator> RiuGuiTheme:
}
}}};
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiaDefines::ThemeEnum RiuGuiTheme::currentGuiTheme()
{
return s_currentTheme;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuGuiTheme::updateGuiTheme( RiaDefines::ThemeEnum theme )
{
s_currentTheme = theme;
s_qwtPlotItemPropertiesMap.clear();
applyStyleSheet( theme );
const QWidgetList allWidgets = RiaGuiApplication::instance()->allWidgets();
for ( QWidget* widget : allWidgets )
@@ -564,16 +575,13 @@ QAbstractItemModel* RiuGuiTheme::getQssCompletionModel( QCompleter* completer )
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QColor RiuGuiTheme::getColorByVariableName( const QString& variable, int theme /*= -1 */ )
QColor RiuGuiTheme::getColorByVariableName( const QString& variable, RiaDefines::ThemeEnum theme /*= UNDEFINED */ )
{
RiaDefines::ThemeEnum eTheme = RiaDefines::ThemeEnum::DEFAULT;
if ( dynamic_cast<RiaGuiApplication*>( RiaApplication::instance() ) )
RiaDefines::ThemeEnum eTheme = s_currentTheme;
if ( theme != RiaDefines::ThemeEnum::UNDEFINED )
{
eTheme = RiaGuiApplication::instance()->preferences()->guiTheme();
}
if ( theme >= 0 && theme < static_cast<int>( caf::AppEnum<RiaDefines::ThemeEnum>().size() ) )
{
eTheme = static_cast<RiaDefines::ThemeEnum>( theme );
eTheme = theme;
}
if ( s_variableValueMap.keys().contains( eTheme ) && s_variableValueMap[eTheme].keys().contains( "$" + variable ) )

View File

@@ -43,8 +43,9 @@ typedef std::function<void( QRegularExpressionMatch& )> CustomStyleSheetApplicat
class RiuGuiTheme
{
public:
static void updateGuiTheme( RiaDefines::ThemeEnum theme );
static bool applyStyleSheet( RiaDefines::ThemeEnum theme );
static RiaDefines::ThemeEnum currentGuiTheme();
static void updateGuiTheme( RiaDefines::ThemeEnum theme );
static bool applyStyleSheet( RiaDefines::ThemeEnum theme );
static void changeVariableValue( RiaDefines::ThemeEnum theme, const QString& variableName, const QString& newValue );
static QMap<QString, QString> getVariableValueMap( RiaDefines::ThemeEnum theme );
static QMap<QString, QString> getVariableGuiTextMap( RiaDefines::ThemeEnum theme );
@@ -52,7 +53,8 @@ public:
static bool writeStyleSheetToFile( RiaDefines::ThemeEnum theme, const QString& styleSheet );
static QString loadStyleSheet( RiaDefines::ThemeEnum theme );
static QAbstractItemModel* getQssCompletionModel( QCompleter* completer );
static QColor getColorByVariableName( const QString& variable, int theme = -1 );
static QColor getColorByVariableName( const QString& variable,
RiaDefines::ThemeEnum theme = RiaDefines::ThemeEnum::UNDEFINED );
static QString
getQwtStyleSheetProperty( QString plotName, const QString& itemType, QString itemName, const QString& propertyName );
static void styleQwtItem( QwtPlotItem* item );
@@ -72,6 +74,8 @@ private:
static void formatStyleSheetForWriting( QString& styleSheet );
private:
static RiaDefines::ThemeEnum s_currentTheme;
static QMap<RiaDefines::ThemeEnum, QMap<QString, QString>> s_variableValueMap;
static QMap<RiaDefines::ThemeEnum, QMap<QString, QString>> s_variableGuiTextMap;
static QMap<QString, QMap<QString, QMap<QString, QMap<QString, QString>>>> s_qwtPlotItemPropertiesMap;