From 280ce5149d8344f524de8ac39cba96ec030e81af Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Sun, 25 Nov 2018 16:47:27 +0100 Subject: [PATCH] aspectRatio as parameter added, using IgnoreAspectRatio for graphics what fixes resizing the background of the automotive example --- examples/gbenchmark/Benchmark.cpp | 6 ++++-- src/graphic/QskGraphicTextureFactory.cpp | 3 ++- src/nodes/QskGraphicNode.cpp | 2 +- src/nodes/QskTextureRenderer.cpp | 12 ++++++++---- src/nodes/QskTextureRenderer.h | 4 +++- 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/examples/gbenchmark/Benchmark.cpp b/examples/gbenchmark/Benchmark.cpp index 8c228f35..5fbdc23f 100644 --- a/examples/gbenchmark/Benchmark.cpp +++ b/examples/gbenchmark/Benchmark.cpp @@ -125,7 +125,8 @@ bool Benchmark::run( const QString& dirName ) using namespace QskTextureRenderer; const auto textureId = createTextureFromGraphic( - OpenGL, targetSize, graphics[ i ], colorFilter ); + OpenGL, targetSize, graphics[ i ], colorFilter, + Qt::IgnoreAspectRatio ); if ( textureId == 0 ) { @@ -150,7 +151,8 @@ bool Benchmark::run( const QString& dirName ) using namespace QskTextureRenderer; const auto textureId = createTextureFromGraphic( - Raster, targetSize, graphics[ i ], colorFilter ); + Raster, targetSize, graphics[ i ], colorFilter, + Qt::IgnoreAspectRatio ); if ( textureId == 0 ) { diff --git a/src/graphic/QskGraphicTextureFactory.cpp b/src/graphic/QskGraphicTextureFactory.cpp index f95d65da..0a2543e3 100644 --- a/src/graphic/QskGraphicTextureFactory.cpp +++ b/src/graphic/QskGraphicTextureFactory.cpp @@ -26,7 +26,8 @@ QskGraphicTextureFactory::~QskGraphicTextureFactory() QSGTexture* QskGraphicTextureFactory::createTexture( QQuickWindow* window ) const { const uint textureId = QskTextureRenderer::createTextureFromGraphic( - QskTextureRenderer::OpenGL, m_size, m_graphic, m_colorFilter ); + QskTextureRenderer::OpenGL, m_size, m_graphic, m_colorFilter, + Qt::IgnoreAspectRatio ); const auto flags = static_cast< QQuickWindow::CreateTextureOptions >( QQuickWindow::TextureHasAlphaChannel | QQuickWindow::TextureOwnsGLTexture ); diff --git a/src/nodes/QskGraphicNode.cpp b/src/nodes/QskGraphicNode.cpp index 272ba40a..b1d11342 100644 --- a/src/nodes/QskGraphicNode.cpp +++ b/src/nodes/QskGraphicNode.cpp @@ -70,7 +70,7 @@ void QskGraphicNode::setGraphic( if ( isTextureDirty ) { const uint textureId = QskTextureRenderer::createTextureFromGraphic( - renderMode, rect.size(), graphic, colorFilter ); + renderMode, rect.size(), graphic, colorFilter, Qt::IgnoreAspectRatio ); QskTextureNode::setTextureId( textureId ); } diff --git a/src/nodes/QskTextureRenderer.cpp b/src/nodes/QskTextureRenderer.cpp index 74c38cdb..4978ec53 100644 --- a/src/nodes/QskTextureRenderer.cpp +++ b/src/nodes/QskTextureRenderer.cpp @@ -144,28 +144,32 @@ uint QskTextureRenderer::createTexture( uint QskTextureRenderer::createTextureFromGraphic( RenderMode renderMode, const QSize& size, - const QskGraphic& graphic, const QskColorFilter& colorFilter ) + const QskGraphic& graphic, const QskColorFilter& colorFilter, + Qt::AspectRatioMode aspectRatioMode ) { class PaintHelper : public QskTextureRenderer::PaintHelper { public: - PaintHelper( const QskGraphic& graphic, const QskColorFilter& filter ) + PaintHelper( const QskGraphic& graphic, + const QskColorFilter& filter, Qt::AspectRatioMode aspectRatioMode ) : m_graphic( graphic ) , m_filter( filter ) + , m_aspectRatioMode( aspectRatioMode ) { } void paint( QPainter* painter, const QSize& size ) override { const QRect rect( 0, 0, size.width(), size.height() ); - m_graphic.render( painter, rect, m_filter, Qt::KeepAspectRatio ); + m_graphic.render( painter, rect, m_filter, m_aspectRatioMode ); } private: const QskGraphic& m_graphic; const QskColorFilter& m_filter; + const Qt::AspectRatioMode m_aspectRatioMode; }; - PaintHelper helper( graphic, colorFilter ); + PaintHelper helper( graphic, colorFilter, aspectRatioMode ); return createTexture( renderMode, size, &helper ); } diff --git a/src/nodes/QskTextureRenderer.h b/src/nodes/QskTextureRenderer.h index cc885024..4bd715eb 100644 --- a/src/nodes/QskTextureRenderer.h +++ b/src/nodes/QskTextureRenderer.h @@ -7,6 +7,7 @@ #define QSK_TEXTURE_RENDERER_H #include "QskGlobal.h" +#include class QskGraphic; class QskColorFilter; @@ -43,7 +44,8 @@ namespace QskTextureRenderer RenderMode, const QSize&, PaintHelper* helper ); QSK_EXPORT uint createTextureFromGraphic( - RenderMode, const QSize&, const QskGraphic&, const QskColorFilter& ); + RenderMode, const QSize&, const QskGraphic&, + const QskColorFilter&, Qt::AspectRatioMode ); } #endif