Skip to content

Commit

Permalink
SLD Fix image size with displacement, and disable random dev
Browse files Browse the repository at this point in the history
  • Loading branch information
elpaso committed Jan 29, 2023
1 parent 1b10375 commit 0c48209
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions src/core/symbology/qgsfillsymbollayer.cpp
Expand Up @@ -4416,6 +4416,20 @@ QImage QgsPointPatternFillSymbolLayer::toTiledPatternImage() const
int distanceXPx { static_cast<int>( QgsSymbolLayerUtils::rescaleUom( mDistanceX, mDistanceXUnit, {} ) ) };
int distanceYPx { static_cast<int>( QgsSymbolLayerUtils::rescaleUom( mDistanceY, mDistanceYUnit, {} ) ) };

const int displacementXPx { static_cast<int>( QgsSymbolLayerUtils::rescaleUom( mDisplacementX, mDisplacementXUnit, {} ) ) };
const int displacementYPx { static_cast<int>( QgsSymbolLayerUtils::rescaleUom( mDisplacementY, mDisplacementYUnit, {} ) ) };

// Consider displacement, double the distance.
if ( displacementXPx != 0 )
{
distanceXPx *= 2;
}

if ( displacementYPx != 0 )
{
distanceYPx *= 2;
}

const QSize size { QgsSymbolLayerUtils::tileSize( distanceXPx, distanceYPx, angleRads ) };

QPixmap pixmap( size );
Expand All @@ -4434,6 +4448,10 @@ QImage QgsPointPatternFillSymbolLayer::toTiledPatternImage() const

layerClone->setAngle( qRadiansToDegrees( angleRads ) );

// No way we can export a random pattern, disable it.
layerClone->setMaximumRandomDeviationX( 0 );
layerClone->setMaximumRandomDeviationY( 0 );

layerClone->drawPreviewIcon( symbolContext, pixmap.size() );
painter.end();
return pixmap.toImage();
Expand Down

0 comments on commit 0c48209

Please sign in to comment.