aspectRatio as parameter added, using IgnoreAspectRatio for graphics

what fixes resizing the background of the automotive example
This commit is contained in:
Uwe Rathmann 2018-11-25 16:47:27 +01:00
parent 5a9a4dfa89
commit 280ce5149d
5 changed files with 18 additions and 9 deletions

View File

@ -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 )
{

View File

@ -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 );

View File

@ -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 );
}

View File

@ -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 );
}

View File

@ -7,6 +7,7 @@
#define QSK_TEXTURE_RENDERER_H
#include "QskGlobal.h"
#include <qnamespace.h>
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