summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--oox/source/export/drawingml.cxx18
-rwxr-xr-xsd/qa/unit/data/odp/tdf59046.odpbin0 -> 10800 bytes
-rw-r--r--sd/qa/unit/export-tests-ooxml2.cxx12
3 files changed, 22 insertions, 8 deletions
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index deafd3477a7e..0951449950a3 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -2556,16 +2556,19 @@ void DrawingML::WritePolyPolygon( const tools::PolyPolygon& rPolyPolygon )
mpFS->startElementNS( XML_a, XML_pathLst, FSEND );
+ const Rectangle aRect( rPolyPolygon.GetBoundRect() );
+
+ // Put all polygons of rPolyPolygon in the same path elemnt
+ // to subtract the overlapped areas.
+ mpFS->startElementNS( XML_a, XML_path,
+ XML_w, I64S( aRect.GetWidth() ),
+ XML_h, I64S( aRect.GetHeight() ),
+ FSEND );
+
for( sal_uInt16 i = 0; i < rPolyPolygon.Count(); i ++ )
{
const tools::Polygon& rPoly = rPolyPolygon[ i ];
- Rectangle aRect( rPoly.GetBoundRect() );
-
- mpFS->startElementNS( XML_a, XML_path,
- XML_w, I64S( aRect.GetWidth() ),
- XML_h, I64S( aRect.GetHeight() ),
- FSEND );
if( rPoly.GetSize() > 0 )
{
@@ -2611,9 +2614,8 @@ void DrawingML::WritePolyPolygon( const tools::PolyPolygon& rPolyPolygon )
mpFS->endElementNS( XML_a, XML_lnTo );
}
}
-
- mpFS->endElementNS( XML_a, XML_path );
}
+ mpFS->endElementNS( XML_a, XML_path );
mpFS->endElementNS( XML_a, XML_pathLst );
diff --git a/sd/qa/unit/data/odp/tdf59046.odp b/sd/qa/unit/data/odp/tdf59046.odp
new file mode 100755
index 000000000000..5c56acb95c76
--- /dev/null
+++ b/sd/qa/unit/data/odp/tdf59046.odp
Binary files differ
diff --git a/sd/qa/unit/export-tests-ooxml2.cxx b/sd/qa/unit/export-tests-ooxml2.cxx
index 26e5685b1f40..05ef4aa700aa 100644
--- a/sd/qa/unit/export-tests-ooxml2.cxx
+++ b/sd/qa/unit/export-tests-ooxml2.cxx
@@ -102,6 +102,7 @@ public:
void testAuthorField();
void testTdf99224();
void testTdf92076();
+ void testTdf59046();
CPPUNIT_TEST_SUITE(SdOOXMLExportTest2);
@@ -127,6 +128,7 @@ public:
CPPUNIT_TEST(testAuthorField);
CPPUNIT_TEST(testTdf99224);
CPPUNIT_TEST(testTdf92076);
+ CPPUNIT_TEST(testTdf59046);
CPPUNIT_TEST_SUITE_END();
@@ -747,6 +749,16 @@ void SdOOXMLExportTest2::testTdf92076()
xShell->DoClose();
}
+void SdOOXMLExportTest2::testTdf59046()
+{
+ sd::DrawDocShellRef xShell = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/odp/tdf59046.odp"), ODP);
+ utl::TempFile tempFile;
+ xShell = saveAndReload(xShell.get(), PPTX, &tempFile);
+ xShell->DoClose();
+ xmlDocPtr pXmlDocRels = parseExport(tempFile, "ppt/slides/slide1.xml");
+ assertXPath(pXmlDocRels, "/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:custGeom/a:pathLst/a:path", 1);
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(SdOOXMLExportTest2);
CPPUNIT_PLUGIN_IMPLEMENT();