tdf#142014 Fix displaying strokes when line width is 0
Change-Id: I80e05ff2f24f5da2f5c124c0ee1b302a1c8226ea Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115570 Tested-by: Jenkins Reviewed-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
This commit is contained in:
parent
5846f376b7
commit
699295ca7c
3 changed files with 30 additions and 4 deletions
|
@ -58,6 +58,7 @@ class Test : public test::BootstrapFixture, public XmlTestTools, public unotest:
|
|||
void TestEllipseXformIntersectClipRect();
|
||||
void TestDrawPolyLine16WithClip();
|
||||
void TestFillRegion();
|
||||
void TestPolylinetoCloseStroke();
|
||||
void TestPolyLineWidth();
|
||||
void TestRoundRect();
|
||||
void TestCreatePen();
|
||||
|
@ -84,6 +85,7 @@ public:
|
|||
CPPUNIT_TEST(TestEllipseXformIntersectClipRect);
|
||||
CPPUNIT_TEST(TestDrawPolyLine16WithClip);
|
||||
CPPUNIT_TEST(TestFillRegion);
|
||||
CPPUNIT_TEST(TestPolylinetoCloseStroke);
|
||||
CPPUNIT_TEST(TestPolyLineWidth);
|
||||
CPPUNIT_TEST(TestRoundRect);
|
||||
CPPUNIT_TEST(TestCreatePen);
|
||||
|
@ -440,6 +442,26 @@ void Test::TestFillRegion()
|
|||
assertXPath(pDocument, "/primitive2D/metafile/transform/mask/polygonhairline[1]", "color", "#000000");
|
||||
}
|
||||
|
||||
void Test::TestPolylinetoCloseStroke()
|
||||
{
|
||||
// EMF import with records: BEGINPATH, ARC, ENDPATH, STROKEPATH, EXTCREATEPEN.
|
||||
Primitive2DSequence aSequence = parseEmf(u"/emfio/qa/cppunit/emf/data/TestPolylinetoCloseStroke.emf");
|
||||
CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(aSequence.getLength()));
|
||||
drawinglayer::Primitive2dXmlDump dumper;
|
||||
xmlDocUniquePtr pDocument = dumper.dumpAndParse(comphelper::sequenceToContainer<Primitive2DContainer>(aSequence));
|
||||
CPPUNIT_ASSERT (pDocument);
|
||||
|
||||
assertXPath(pDocument, "/primitive2D/metafile/transform/polygonhairline", 2);
|
||||
assertXPathContent(pDocument, "/primitive2D/metafile/transform/polygonhairline[1]/polygon",
|
||||
"1080,150 810,230 570,340 370,490 290,570 170,750 130,840 100,980 100,1080 140,1270 160,1320 210,1410 400,1620 500,1690");
|
||||
assertXPath(pDocument, "/primitive2D/metafile/transform/polygonhairline[1]",
|
||||
"color", "#000000");
|
||||
assertXPathContent(pDocument, "/primitive2D/metafile/transform/polygonhairline[2]/polygon",
|
||||
"1760,1120 1500,1180 1350,1240 1230,1310 1210,1330 1120,1440 1110,1460 1100,1510 1100,1580 1140,1670 1170,1710 1190,1730");
|
||||
assertXPath(pDocument, "/primitive2D/metafile/transform/polygonhairline[2]",
|
||||
"color", "#000000");
|
||||
}
|
||||
|
||||
void Test::TestPolyLineWidth()
|
||||
{
|
||||
// EMF import with records: CREATEPEN, ROUNDRECT.
|
||||
|
|
BIN
emfio/qa/cppunit/emf/data/TestPolylinetoCloseStroke.emf
Normal file
BIN
emfio/qa/cppunit/emf/data/TestPolylinetoCloseStroke.emf
Normal file
Binary file not shown.
|
@ -1323,11 +1323,15 @@ namespace emfio
|
|||
mpGDIMetaFile->AddAction( new MetaPopAction() );
|
||||
}
|
||||
// tdf#142014 By default the stroke is made with hairline. If width is bigger, we need to use PolyLineAction
|
||||
if ( bStroke && ( maLineStyle.aLineInfo.GetWidth() || ( maLineStyle.aLineInfo.GetStyle() == LineStyle::Dash ) ) )
|
||||
if ( bStroke )
|
||||
{
|
||||
sal_uInt16 i, nCount = maPathObj.Count();
|
||||
for ( i = 0; i < nCount; i++ )
|
||||
mpGDIMetaFile->AddAction( new MetaPolyLineAction( maPathObj[ i ], maLineStyle.aLineInfo ) );
|
||||
// bFill is drawing hairstyle line. So we need to to draw it only when the width is different than 0
|
||||
if ( !bFill || maLineStyle.aLineInfo.GetWidth() || ( maLineStyle.aLineInfo.GetStyle() == LineStyle::Dash ) )
|
||||
{
|
||||
sal_uInt16 i, nCount = maPathObj.Count();
|
||||
for ( i = 0; i < nCount; i++ )
|
||||
mpGDIMetaFile->AddAction( new MetaPolyLineAction( maPathObj[ i ], maLineStyle.aLineInfo ) );
|
||||
}
|
||||
}
|
||||
ClearPath();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue