Fix oversized pixelated preview images shown in symbol and

shape button tooltips
This commit is contained in:
Nyall Dawson 2023-06-22 08:45:47 +10:00
parent 255d7c8d1a
commit 357a546968
3 changed files with 6 additions and 6 deletions

View File

@ -207,7 +207,7 @@ void QgsLegendPatchShapeButton::prepareMenu()
{ {
if ( const QgsSymbol *symbol = QgsStyle::defaultStyle()->previewSymbolForPatchShape( shape ) ) if ( const QgsSymbol *symbol = QgsStyle::defaultStyle()->previewSymbolForPatchShape( shape ) )
{ {
QIcon icon = QgsSymbolLayerUtils::symbolPreviewPixmap( symbol, QSize( iconSize, iconSize ), 1, nullptr, false, nullptr, &shape ); QIcon icon = QgsSymbolLayerUtils::symbolPreviewPixmap( symbol, QSize( iconSize, iconSize ), 1, nullptr, false, nullptr, &shape, screen() );
QAction *action = new QAction( name, this ); QAction *action = new QAction( name, this );
action->setIcon( icon ); action->setIcon( icon );
connect( action, &QAction::triggered, this, [ = ] { loadPatchFromStyle( name ); } ); connect( action, &QAction::triggered, this, [ = ] { loadPatchFromStyle( name ); } );
@ -297,11 +297,11 @@ void QgsLegendPatchShapeButton::updatePreview()
int width = static_cast< int >( Qgis::UI_SCALE_FACTOR * fontMetrics().horizontalAdvance( 'X' ) * 23 ); int width = static_cast< int >( Qgis::UI_SCALE_FACTOR * fontMetrics().horizontalAdvance( 'X' ) * 23 );
int height = static_cast< int >( width / 1.61803398875 ); // golden ratio int height = static_cast< int >( width / 1.61803398875 ); // golden ratio
QPixmap pm = QgsSymbolLayerUtils::symbolPreviewPixmap( mPreviewSymbol.get(), QSize( width, height ), height / 20, nullptr, false, nullptr, &mShape ); QPixmap pm = QgsSymbolLayerUtils::symbolPreviewPixmap( mPreviewSymbol.get(), QSize( width, height ), height / 20, nullptr, false, nullptr, &mShape, screen() );
QByteArray data; QByteArray data;
QBuffer buffer( &data ); QBuffer buffer( &data );
pm.save( &buffer, "PNG", 100 ); pm.save( &buffer, "PNG", 100 );
setToolTip( QStringLiteral( "<img src='data:image/png;base64, %3'>" ).arg( QString( data.toBase64() ) ) ); setToolTip( QStringLiteral( "<img src='data:image/png;base64, %3' width=\"%4\">" ).arg( QString( data.toBase64() ) ).arg( width ) );
} }
void QgsLegendPatchShapeButton::setDialogTitle( const QString &title ) void QgsLegendPatchShapeButton::setDialogTitle( const QString &title )

View File

@ -712,11 +712,11 @@ void QgsSymbolButton::updatePreview( const QColor &color, QgsSymbol *tempSymbol
const int width = static_cast< int >( Qgis::UI_SCALE_FACTOR * fontMetrics().horizontalAdvance( 'X' ) * 23 ); const int width = static_cast< int >( Qgis::UI_SCALE_FACTOR * fontMetrics().horizontalAdvance( 'X' ) * 23 );
const int height = static_cast< int >( width / 1.61803398875 ); // golden ratio const int height = static_cast< int >( width / 1.61803398875 ); // golden ratio
const QPixmap pm = QgsSymbolLayerUtils::symbolPreviewPixmap( previewSymbol.get(), QSize( width, height ), height / 20 ); const QPixmap pm = QgsSymbolLayerUtils::symbolPreviewPixmap( previewSymbol.get(), QSize( width, height ), height / 20, nullptr, false, nullptr, nullptr, screen() );
QByteArray data; QByteArray data;
QBuffer buffer( &data ); QBuffer buffer( &data );
pm.save( &buffer, "PNG", 100 ); pm.save( &buffer, "PNG", 100 );
setToolTip( QStringLiteral( "<img src='data:image/png;base64, %3'>" ).arg( QString( data.toBase64() ) ) ); setToolTip( QStringLiteral( "<img src='data:image/png;base64, %3' width=\"%4\">" ).arg( QString( data.toBase64() ) ).arg( width ) );
} }
bool QgsSymbolButton::colorFromMimeData( const QMimeData *mimeData, QColor &resultColor, bool &hasAlpha ) bool QgsSymbolButton::colorFromMimeData( const QMimeData *mimeData, QColor &resultColor, bool &hasAlpha )

View File

@ -625,7 +625,7 @@ void QgsSimpleLineSymbolLayerWidget::updatePatternIcon()
QByteArray data; QByteArray data;
QBuffer buffer( &data ); QBuffer buffer( &data );
pm.save( &buffer, "PNG", 100 ); pm.save( &buffer, "PNG", 100 );
mChangePatternButton->setToolTip( QStringLiteral( "<img src='data:image/png;base64, %3'>" ).arg( QString( data.toBase64() ) ) ); mChangePatternButton->setToolTip( QStringLiteral( "<img src='data:image/png;base64, %3' width=\"%4\">" ).arg( QString( data.toBase64() ) ).arg( width ) );
} }
void QgsSimpleLineSymbolLayerWidget::resizeEvent( QResizeEvent *event ) void QgsSimpleLineSymbolLayerWidget::resizeEvent( QResizeEvent *event )