emfio/qa/cppunit/emf/EmfImportTest.cxx      |   29 ++++++++++++++++++++++++----
 emfio/qa/cppunit/wmf/data/TestRoundRect.wmf |binary
 emfio/source/reader/mtftools.cxx            |    1 
 3 files changed, 25 insertions(+), 5 deletions(-)

New commits:
commit a3bf914602ecc5f49953289ca572825313864ffc
Author:     Bartosz Kosiorek <gan...@poczta.onet.pl>
AuthorDate: Sat May 22 08:04:18 2021 +0200
Commit:     Bartosz Kosiorek <gan...@poczta.onet.pl>
CommitDate: Sat May 22 13:25:33 2021 +0200

    tdf#127145 WMF Fix displaying line width in ROUNDRECT record
    
    The EDGE optimization shouldn't be used for curves,
    otherwise strange issues appearing.
    
    Change-Id: Id677fc9002f0f79913ae756f0e456af7c9f7e507
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115984
    Tested-by: Jenkins
    Reviewed-by: Bartosz Kosiorek <gan...@poczta.onet.pl>
    (cherry picked from commit b7c9ce6c86a11c6cacfa190b99052da388887c49)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115957

diff --git a/emfio/qa/cppunit/emf/EmfImportTest.cxx 
b/emfio/qa/cppunit/emf/EmfImportTest.cxx
index 24e2e295e957..e74bb9ad3725 100644
--- a/emfio/qa/cppunit/emf/EmfImportTest.cxx
+++ b/emfio/qa/cppunit/emf/EmfImportTest.cxx
@@ -57,7 +57,8 @@ class Test : public test::BootstrapFixture, public 
XmlTestTools, public unotest:
     void TestEllipseXformIntersectClipRect();
     void TestDrawPolyLine16WithClip();
     void TestFillRegion();
-    void TestPalette();
+    void TestPaletteWMF();
+    void TestRoundrectWMF();
     void TestPolylinetoCloseStroke();
     void TestPolyLineWidth();
     void TestRoundRect();
@@ -86,7 +87,8 @@ public:
     CPPUNIT_TEST(TestEllipseXformIntersectClipRect);
     CPPUNIT_TEST(TestDrawPolyLine16WithClip);
     CPPUNIT_TEST(TestFillRegion);
-    CPPUNIT_TEST(TestPalette);
+    CPPUNIT_TEST(TestPaletteWMF);
+    CPPUNIT_TEST(TestRoundrectWMF);
     CPPUNIT_TEST(TestPolylinetoCloseStroke);
     CPPUNIT_TEST(TestPolyLineWidth);
     CPPUNIT_TEST(TestRoundRect);
@@ -477,8 +479,7 @@ void Test::TestPolylinetoCloseStroke()
                 "color", "#000000");
 }
 
-
-void Test::TestPalette()
+void Test::TestPaletteWMF()
 {
     // WMF import with records: CREATEPALETTE, SELECTOBJECT, 
CREATEPENINDIRECT, CREATEBRUSHINDIRECT, ELLIPSE.
     Primitive2DSequence aSequence = 
parseEmf(u"/emfio/qa/cppunit/wmf/data/TestPalette.wmf");
@@ -514,6 +515,26 @@ void Test::TestPalette()
                 "width", "132");
 }
 
+void Test::TestRoundrectWMF()
+{
+    // WMF records: ROUNDRECT, SETBKCOLOR, CREATEBRUSHINDIRECT
+    Primitive2DSequence aSequence = 
parseEmf(u"/emfio/qa/cppunit/wmf/data/TestRoundRect.wmf");
+    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/polypolygoncolor",
+                "color", "#ffffff");
+
+    assertXPathContent(pDocument, 
"/primitive2D/metafile/transform/polygonstroke/polygon",
+                       "2865,661 2865,653 2865,645 2865,637 2865,621 2865,613 
2865,605 2857,597 2857,589 2857,582 2857,566 2857,558 2849,550 2849,542 
2849,534 2841,526 2841,518 2841,510 2833,502 2833,494 2825,486 2825,478 
2817,470 2817,462 2809,454 2809,446 2801,438 2801,430 2793,422 2793,422 
2785,414 2777,406 2777,398 2769,390 2761,390 2761,382 2753,374 2745,374 
2737,366 2737,366 2729,358 2721,350 2714,350 2714,343 2706,343 2698,343 
2690,335 2682,335 2682,335 2674,327 2666,327 2658,327 2650,327 2642,319 
2634,319 2634,319 2626,319 2618,319 2610,319 573,319 565,319 557,319 549,319 
549,319 541,319 533,327 525,327 517,327 509,327 501,335 501,335 493,335 485,343 
477,343 469,343 469,350 462,350 454,358 446,366 446,366 438,374 430,374 422,382 
422,390 414,390 406,398 406,406 398,414 390,422 390,422 382,430 382,438 374,446 
374,454 366,462 366,470 358,478 358,486 350,494 350,502 342,510 342,518 342,526 
334,534 334,542 334,550 326,558 326,566 326,582 326,589 326,597 318,605 318,613 
318,621 31
 8,637 318,645 318,653 318,661 318,1673 318,1681 318,1689 318,1697 318,1713 
318,1721 318,1729 326,1737 326,1745 326,1752 326,1768 326,1776 334,1784 
334,1792 334,1800 342,1808 342,1816 342,1824 350,1832 350,1840 358,1848 
358,1856 366,1864 366,1872 374,1880 374,1888 382,1896 382,1904 390,1912 
390,1912 398,1920 406,1928 406,1936 414,1944 422,1944 422,1952 430,1960 
438,1960 446,1968 446,1968 454,1976 462,1984 469,1984 469,1991 477,1991 
485,1991 493,1999 501,1999 501,1999 509,2007 517,2007 525,2007 533,2007 
541,2015 549,2015 549,2015 557,2015 565,2015 573,2015 2610,2015 2618,2015 
2626,2015 2634,2015 2634,2015 2642,2015 2650,2007 2658,2007 2666,2007 2674,2007 
2682,1999 2682,1999 2690,1999 2698,1991 2706,1991 2714,1991 2714,1984 2721,1984 
2729,1976 2737,1968 2737,1968 2745,1960 2753,1960 2761,1952 2761,1944 2769,1944 
2777,1936 2777,1928 2785,1920 2793,1912 2793,1912 2801,1904 2801,1896 2809,1888 
2809,1880 2817,1872 2817,1864 2825,1856 2825,1848 2833,1840 2833,1832 2841,1824 
2841,1816 2841,1
 808 2849,1800 2849,1792 2849,1784 2857,1776 2857,1768 2857,1752 2857,1745 
2857,1737 2865,1729 2865,1721 2865,1713 2865,1697 2865,1689 2865,1681 
2865,1673");
+    assertXPath(pDocument, 
"/primitive2D/metafile/transform/polygonstroke/line",
+                "color", "#000000");
+    assertXPath(pDocument, 
"/primitive2D/metafile/transform/polygonstroke/line",
+                "width", "143");
+}
+
 void Test::TestPolyLineWidth()
 {
     // EMF import with records: CREATEPEN, ROUNDRECT.
diff --git a/emfio/qa/cppunit/wmf/data/TestRoundRect.wmf 
b/emfio/qa/cppunit/wmf/data/TestRoundRect.wmf
new file mode 100644
index 000000000000..cf4dee52b858
Binary files /dev/null and b/emfio/qa/cppunit/wmf/data/TestRoundRect.wmf differ
diff --git a/emfio/source/reader/mtftools.cxx b/emfio/source/reader/mtftools.cxx
index 14c52a6327e8..0d918af72dc0 100644
--- a/emfio/source/reader/mtftools.cxx
+++ b/emfio/source/reader/mtftools.cxx
@@ -1420,7 +1420,6 @@ namespace emfio
         if ( maLineStyle.aLineInfo.GetWidth() || ( 
maLineStyle.aLineInfo.GetStyle() == LineStyle::Dash ) )
         {
             tools::Polygon aRoundRectPoly( rRect, rSize.Width(), 
rSize.Height() );
-            aRoundRectPoly.Optimize( PolyOptimizeFlags::EDGES );
             mpGDIMetaFile->AddAction( new MetaPolyLineAction( ImplMap( 
aRoundRectPoly ), maLineStyle.aLineInfo ) );
         }
     }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to