From b7c542b5085374f1d031183cb86ceeefcf24964d Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Wed, 29 Mar 2023 09:00:47 +0200 Subject: [PATCH] tdf#154363 sd: fix line connectors regression of mirrored shapes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit caused by commit cbf66ec3e60d07efb7c3cceed9b4f0fb4f0510c8 (tdf#89449 PPTX import: fix line connectors). Note: partial revert of commit 9ab16e2738b4b9bd324c9aded8acb2ecba0fd2b0 "oox: fix crash in lcl_GetGluePointId by removing unused code". Change-Id: Icc45c93c4fa3a22c0f34866ccb64ea6b9037d936 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149676 Reviewed-by: László Németh Tested-by: László Németh --- oox/source/export/shapes.cxx | 37 ++++++++++++++++++++++------ oox/source/ppt/slidepersist.cxx | 15 +++++++---- sd/qa/unit/data/pptx/tdf154363.pptx | Bin 0 -> 33847 bytes sd/qa/unit/import-tests.cxx | 24 ++++++++++++++++++ 4 files changed, 63 insertions(+), 13 deletions(-) create mode 100644 sd/qa/unit/data/pptx/tdf154363.pptx diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx index 372b4376fe22..eab82a86336d 100644 --- a/oox/source/export/shapes.cxx +++ b/oox/source/export/shapes.cxx @@ -1640,17 +1640,38 @@ static void lcl_GetConnectorAdjustValue(const Reference& xShape, tools:: } } -static sal_Int32 lcl_GetGluePointId(sal_Int32 nGluePointId) +static sal_Int32 lcl_GetGluePointId(const Reference& xShape, sal_Int32 nGluePointId) { if (nGluePointId > 3) return nGluePointId - 4; else { - // change id of the bounding box (1 <-> 3) - if (nGluePointId == 1) - return 3; // Right - else if (nGluePointId == 3) - return 1; // Left + bool bFlipH = false; + bool bFlipV = false; + Reference xShapeProps(xShape, UNO_QUERY); + if (xShapeProps->getPropertySetInfo()->hasPropertyByName("CustomShapeGeometry")) + { + Sequence aGeometrySeq; + xShapeProps->getPropertyValue("CustomShapeGeometry") >>= aGeometrySeq; + for (int i = 0; i < aGeometrySeq.getLength(); i++) + { + const PropertyValue& rProp = aGeometrySeq[i]; + if (rProp.Name == "MirroredX") + rProp.Value >>= bFlipH; + + if (rProp.Name == "MirroredY") + rProp.Value >>= bFlipV; + } + } + + if ((!bFlipH && !bFlipV) || (bFlipH && bFlipV)) + { + // change id of the bounding box (1 <-> 3) + if (nGluePointId == 1) + nGluePointId = 3; // Right + else if (nGluePointId == 3) + nGluePointId = 1; // Left + } } return nGluePointId; @@ -1708,12 +1729,12 @@ ShapeExport& ShapeExport::WriteConnectorShape( const Reference< XShape >& xShape if (GetProperty(rXPropSet, "StartGluePointIndex")) mAny >>= nStartGlueId; if (nStartGlueId != -1) - nStartGlueId = lcl_GetGluePointId(nStartGlueId); + nStartGlueId = lcl_GetGluePointId(rXShapeA, nStartGlueId); if (GetProperty(rXPropSet, "EndGluePointIndex")) mAny >>= nEndGlueId; if (nEndGlueId != -1) - nEndGlueId = lcl_GetGluePointId(nEndGlueId); + nEndGlueId = lcl_GetGluePointId(rXShapeB, nEndGlueId); // Position is relative to group in Word, but relative to anchor of group in API. if (GetDocumentType() == DOCUMENT_DOCX && !mbUserShapes && m_xParent.is()) diff --git a/oox/source/ppt/slidepersist.cxx b/oox/source/ppt/slidepersist.cxx index bb673b52442e..0f7479e8ede9 100644 --- a/oox/source/ppt/slidepersist.cxx +++ b/oox/source/ppt/slidepersist.cxx @@ -659,11 +659,16 @@ void SlidePersist::createConnectorShapeConnection() nGlueId += 4; else { - // change id of the left and right glue points of the bounding box (1 <-> 3) - if (nGlueId == 1) - nGlueId = 3; // Right - else if (nGlueId == 3) - nGlueId = 1; // Left + bool bFlipH = pShape->second->getFlipH(); + bool bFlipV = pShape->second->getFlipV(); + if ((!bFlipH && !bFlipV) || (bFlipH && bFlipV)) + { + // change id of the left and right glue points of the bounding box (1 <-> 3) + if (nGlueId == 1) + nGlueId = 3; // Right + else if (nGlueId == 3) + nGlueId = 1; // Left + } } bool bStart = aConnectorShapeProperties[j].mbStartShape; diff --git a/sd/qa/unit/data/pptx/tdf154363.pptx b/sd/qa/unit/data/pptx/tdf154363.pptx new file mode 100644 index 0000000000000000000000000000000000000000..b549fda90135f4cca5d06ece9212ae4d21e9dd1a GIT binary patch literal 33847 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

$1B=xTTg5723~^wyfbM8`G^kw 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 I{Oz~@0rh5k%>V!Z literal 0 HcmV?d00001 diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index d934b963f6ef..8bd818d442ea 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -191,6 +191,30 @@ CPPUNIT_TEST_FIXTURE(SdImportTest, testDocumentLayout) } } +CPPUNIT_TEST_FIXTURE(SdImportTest, testTdf154363) +{ + sal_Int32 nGlueId; + createSdImpressDoc("pptx/tdf154363.pptx"); + { + uno::Reference xConnector1(getShapeFromPage(1, 0), uno::UNO_SET_THROW); + uno::Reference xConnector2(getShapeFromPage(3, 0), uno::UNO_SET_THROW); + nGlueId = xConnector1->getPropertyValue("StartGluePointIndex").get(); + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), nGlueId); + nGlueId = xConnector2->getPropertyValue("EndGluePointIndex").get(); + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), nGlueId); + } + + saveAndReload("Impress MS PowerPoint 2007 XML"); + { + uno::Reference xConnector1(getShapeFromPage(1, 0), uno::UNO_SET_THROW); + uno::Reference xConnector2(getShapeFromPage(3, 0), uno::UNO_SET_THROW); + nGlueId = xConnector1->getPropertyValue("StartGluePointIndex").get(); + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), nGlueId); + nGlueId = xConnector2->getPropertyValue("EndGluePointIndex").get(); + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), nGlueId); + } +} + CPPUNIT_TEST_FIXTURE(SdImportTest, testTdf153466) { createSdImpressDoc("pptx/tdf153466.pptx");