Skip to content

Commit 8bc8c0b

Browse files
committedOct 15, 2018
Fix line pattern fill symbol corruption with negative angles
(cherry picked from commit 0f056b5)
1 parent 968948a commit 8bc8c0b

File tree

5 files changed

+16
-1
lines changed

5 files changed

+16
-1
lines changed
 

‎src/core/symbology-ng/qgsfillsymbollayerv2.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2630,6 +2630,9 @@ void QgsLinePatternFillSymbolLayer::applyPattern( const QgsSymbolV2RenderContext
26302630

26312631
//create image
26322632
int height, width;
2633+
lineAngle = fmod( lineAngle, 360 );
2634+
if ( lineAngle < 0 )
2635+
lineAngle += 360;
26332636
if ( qgsDoubleNear( lineAngle, 0 ) || qgsDoubleNear( lineAngle, 360 ) || qgsDoubleNear( lineAngle, 180 ) )
26342637
{
26352638
height = outputPixelDist;
@@ -2655,7 +2658,7 @@ void QgsLinePatternFillSymbolLayer::applyPattern( const QgsSymbolV2RenderContext
26552658
height = qAbs( height );
26562659
width = qAbs( width );
26572660

2658-
outputPixelDist = height * cos( lineAngle * M_PI / 180 );
2661+
outputPixelDist = qAbs( height * cos( lineAngle * M_PI / 180 ) );
26592662

26602663
// Round offset to correspond to one pixel height, otherwise lines may
26612664
// be shifted on tile border if offset falls close to pixel center

‎tests/src/core/testqgslinefillsymbol.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class TestQgsLineFillSymbol : public QObject
6262
void lineFillSymbol();
6363
void lineFillSymbolOffset();
6464
void lineFillLargeOffset();
65+
void lineFillNegativeAngle();
6566

6667
void dataDefinedSubSymbol();
6768

@@ -173,6 +174,17 @@ void TestQgsLineFillSymbol::lineFillLargeOffset()
173174
mLineFill->setOffset( 0 );
174175
}
175176

177+
void TestQgsLineFillSymbol::lineFillNegativeAngle()
178+
{
179+
mLineFill->setOffset( -8 );
180+
mLineFill->setDistance( 2.2 );
181+
mLineFill->setLineAngle( -130 );
182+
QVERIFY( imageCheck( "symbol_linefill_negangle" ) );
183+
mLineFill->setOffset( 0 );
184+
mLineFill->setLineAngle( 45 );
185+
mLineFill->setDistance( 5 );
186+
}
187+
176188
void TestQgsLineFillSymbol::dataDefinedSubSymbol()
177189
{
178190
mReport += "<h2>Line fill symbol data defined sub symbol test</h2>\n";

Error rendering embedded code

Invalid image source.

0 commit comments

Comments
 (0)
Please sign in to comment.