[vlc-devel] [PATCH 2/2] qt: improve rendering of central cone for HiDpi
Pierre Lamot
pierre at videolabs.io
Wed Nov 15 10:57:35 CET 2017
My bad, devicePixelRatioF is Qt5.6 and not Qt 5.5
On mercredi 15 novembre 2017 10:34:29 CET Pierre Lamot wrote:
> ---
> modules/gui/qt/components/interface_widgets.cpp | 32
> +++++++++++-------------- 1 file changed, 14 insertions(+), 18 deletions(-)
>
> diff --git a/modules/gui/qt/components/interface_widgets.cpp
> b/modules/gui/qt/components/interface_widgets.cpp index
> 7c34d13614..e4d32ab72c 100644
> --- a/modules/gui/qt/components/interface_widgets.cpp
> +++ b/modules/gui/qt/components/interface_widgets.cpp
> @@ -434,8 +434,9 @@ void BackgroundWidget::paintEvent( QPaintEvent *e )
> int i_maxwidth, i_maxheight;
> QPixmap pixmap = QPixmap( pixmapUrl );
> QPainter painter(this);
> - QBitmap pMask;
> - float f_alpha = 1.0;
> +
> + qreal dpr = devicePixelRatioF();
> + pixmap.setDevicePixelRatio( dpr );
>
> i_maxwidth = __MIN( maximumWidth(), width() ) - MARGIN * 2;
> i_maxheight = __MIN( maximumHeight(), height() ) - MARGIN * 2;
> @@ -447,32 +448,27 @@ void BackgroundWidget::paintEvent( QPaintEvent *e )
> /* Scale down the pixmap if the widget is too small */
> if( pixmap.width() > i_maxwidth || pixmap.height() > i_maxheight )
> {
> - pixmap = pixmap.scaled( i_maxwidth, i_maxheight,
> + pixmap = pixmap.scaled( i_maxwidth * dpr, i_maxheight * dpr ,
> Qt::KeepAspectRatio, Qt::SmoothTransformation
> ); }
> else
> if ( b_expandPixmap &&
> pixmap.width() < width() && pixmap.height() < height() )
> {
> - /* Scale up the pixmap to fill widget's size */
> - f_alpha = ( (float) pixmap.height() / (float) height() );
> pixmap = pixmap.scaled(
> - width() - MARGIN * 2,
> - height() - MARGIN * 2,
> - Qt::KeepAspectRatio,
> - ( f_alpha < .2 )? /* Don't waste cpu when not visible
> */ - Qt::SmoothTransformation:
> - Qt::FastTransformation
> - );
> - /* Non agressive alpha compositing when sizing up */
> - pMask = QBitmap( pixmap.width(), pixmap.height() );
> - pMask.fill( QColor::fromRgbF( 1.0, 1.0, 1.0, f_alpha ) );
> - pixmap.setMask( pMask );
> + (width() - MARGIN * 2) * dpr,
> + (height() - MARGIN * 2) * dpr ,
> + Qt::KeepAspectRatio, Qt::SmoothTransformation);
> + }
> + else if (dpr != 1.0)
> + {
> + pixmap = pixmap.scaled( pixmap.width() * dpr, pixmap.height() *
> dpr, + Qt::KeepAspectRatio,
> Qt::SmoothTransformation ); }
>
> painter.drawPixmap(
> - MARGIN + ( i_maxwidth - pixmap.width() ) /2,
> - MARGIN + ( i_maxheight - pixmap.height() ) /2,
> + MARGIN + ( i_maxwidth * dpr - pixmap.width() ) / (2 * dpr),
> + MARGIN + ( i_maxheight * dpr - pixmap.height() ) / (2 *
> dpr), pixmap);
> }
> QWidget::paintEvent( e );
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 455 bytes
Desc: This is a digitally signed message part.
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20171115/afb9ec42/attachment.sig>
More information about the vlc-devel
mailing list